Я использую LZ4 compressor C lib. Некоторые из файлов, которые я сжимаю, это JPG и PNG. По какой-то причине, которую я не в состоянии понять, методLZ4: сжатие сжатых форматов изображений
int compressedSize = LZ4_compress_default((char*)data,
compressedData, uncompressedSize, uncompressedSize);
Иногда возвращает отрицательные значения для изображений (или ноль), которые я сжимающие.
Например, я сжимаю два стандартных изображения JPG. Один возвращается со значением «-236», а второй возвращает штраф за количество сжатых байтов, что означает, что первый не смог сжать. Возврат нулевого значения LZ4 не удалось сжать. Я понятия не имею, что значит -236. Это потому, что исходные данные уже сжаты до некоторой степени?
Я бы предположил, что сжатая версия на самом деле была больше оригинала (что не редкость с JPEG, попробуйте закрепить jpeg-изображение и увидеть результаты для себя) и, следовательно, отрицательное число. – kuruczgyurci
Вы проверили на экзамене @ https://github.com/lz4/lz4/blob/dev/examples/compress_functions.c после строки 248. ie использование maxcompsize – HRgiger
Я думал, что функция вернула количество байтов, которые были получены с помощью сжатие (original_size - compress_size), но похоже, что я ошибался. В руководстве lz4 говорится о возвращаемом значении: _return: количество байтов, записанных в буфер «dest» (обязательно <= maxOutputSize) или 0, если сжатие сбой_. Он, кажется, не упоминает отрицательные значения. – kuruczgyurci