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ヘッダーは削除されています)。あなたの元テキストに基づいて
申し訳ありませんが、私はそれが同じデータであることをどのように把握しましたか?私はそれを元に戻すのを忘れてしまった。値は圧縮後の 'after'のサイズになるので、ファイルはまだ小さいはずです – Ben
はい成功の値を返しました – Ben
書かれたバイト数を示すので、 'fwrite()'の最初の形式が望ましいです。 2番目の形式では、部分的な書き込みについては教えられません。 – EJP