Столкнулся со странной проблемой BZ2 имеет отрицательный КПД, тоесть сжатые файлы весят больше чем обычные. PHP: bool CommpressBuff( char *destbuff, unsigned int *destbufflen, char *sourcebuff, int sourcebufflen ) { int res = BZ2_bzBuffToBuffCompress( destbuff, destbufflen, sourcebuff, sourcebufflen, 9, 0, 30 ); if(res) { LogPrintf( "Error compressing buff: %d\n", res ); return false; } return true; } filedata_t pFilebuff = FileRead( pFileName ); if(!pFilebuff.filelen) { LogPrintf( "Error: can't open file: %s\n", pFileName ); return 0; } char *pCompresBuff = (char *)malloc(pFilebuff.filelen * 2); unsigned int comprbufflen = pFilebuff.filelen * 2; CommpressBuff( pCompresBuff, &comprbufflen, pFilebuff.filebuf, pFilebuff.filelen ); LogPrintf( "File %s successfully compression: %d -> %d\n", pFileName, pFilebuff.filelen, comprbufflen ); Пример: File test.jpg successfully compression: 126225 -> 126259 В чем причина?
Попробуй сжимать файлы с низкой энтропией, например, текстовики, бинарники, документы. Картинки практически несжимаемы.
GRRRL Power, только что попробовал сжать frenzy.bsp Результат: File frenzy.bsp successfully compression: 662356 -> 252636 Похоже, что отрицательный кпд действительно получался из-за несжимаемых форматов.