before = new unsigned char[mSizeNeeded*4];
uLong value = compressBound(mSizeNeeded*4);
after = new unsigned char[value];
compress(after, &value, before, mSizeNeeded*4);
fwrite(&after, 1, value, file);
'before' содержит кучу аудиоданных, хранящихся в нем, и я пытаюсь сжать его и сохранить его в 'after'. Затем я записываю его в файл. Файл имеет тот же размер, что и исходный файл, он также содержит те же данные, что и раньше (насколько я могу судить).Функция сжатия zlib не делает ничего. Зачем?
Сжатие также возвращает OK, поэтому я знаю, что сжатие не прерывается.
Хорошо, так что моя проблема только в сжатии (я думаю). Я могу запустить сжимать, а затем я могу распаковать и получить правильные данные. Кроме того, он записывает в файл, а fwrite возвращает 561152, но счет (значение) - 684964. Таким образом, похоже, что что-то не так с fwrite. Я посмотрел более внимательно, и после данных, отличных от данных перед.
561152 такой же размер, как и исходные аудиоданные в WAV-файле, который у меня (лишенный заголовков .wav, конечно).
Извините, что я понял, что это те же данные. Я просто забыл изменить его. Файл должен по-прежнему быть меньше, так как значение будет иметь значение «после» после сжатия – Ben
Да, оно вернуло значение успеха – Ben
. Первая форма 'fwrite()' предпочтительнее, потому что она сообщает вам, сколько байтов было написано. Вторая форма не может рассказать вам о частичной записи. – EJP