タイトル | : IMA ADPCM形式WAVEからのエンコードの際の問題と修正 |
記事No | : 612 |
投稿日 | : 2002/08/16(Fri) 04:22 |
投稿者 | : ふわふわ |
始めまして。ふわふわと申します。IMA ADPCMでエンコードされたWAVEファイルからmp3にエンコードする際に発生する問題を発見しましたので、報告させていただきます。
午後のこ〜だ本体の問題ではないと思われますので、こちらに書き込んでよいものか迷いましたが、もしよろしければ対応いただけたら幸いです。
症状としましては、読み込んだIMA ADPCM形式のファイルの中で、隣接するサンプルA,B間に32768以上大きさの差があると、サンプルBおよびその後続値が異常な値として出力され、ノイズとして聞こえてしまうというものです。
原因を調べましたところ、 petit310pl3\file_io\libsnd\wav_ima_adpcm.c の219行目 で変数diffがshort型として定義されているのが問題のようです。このために、286行目付近でdiffに32768以上の値をセットすると負の値になってしまい、上記症状を起こしているようです。
修正として、diffをint型で定義し直したところ、正常に出力されるようになりました。
サンプルとして、以下のファイルを置いておきました。
午後のこ〜だへの入力ファイル http://www.aq.wakwak.com/~nishida/snd/ima.wav 修正前の出力ファイル http://www.aq.wakwak.com/~nishida/snd/err.mp3 修正後の出力ファイル http://www.aq.wakwak.com/~nishida/snd/ok.mp3
以上、あまり本体と関係のないところで恐縮ですが、修正いただければ幸いです。
http://www.aq.wakwak.com/~nishida/
|