タイトル | : 長文すみませんm(__)m |
記事No | : 177 |
投稿日 | : 2002/01/22(Tue) 10:44 |
投稿者 | : フロート |
動作報告のレポートです。
午後3.09(exe版)を使用してwaveファイルのエンコードを行ったのですが、 -q オプションの挙動が変なことに気づきました。
-q 0 を指定した場合 D:\WAVE>gogo -q 0 TEST.wav ..\MP3\TEST_Q0.mp3 { 12669/ 12669} 100.0% ( 19.78x) re:[00:00:00.00] to:[00:00:16.73]
-q 1 を指定した場合 D:\WAVE>gogo -q 1 TEST.wav ..\MP3\TEST_Q1.mp3 { 12669/ 12669} 100.0% ( 12.61x) re:[00:00:00.00] to:[00:00:26.24]
※使用した曲はCD2WAVで吸い出した5:30ほどの曲です。
上のとおり、-q 0 よりも -q 1 のほうがエンコードに時間がかかっています。 また、実際にエンコードしたファイルを聞き比べたところ、-q 1 のほうが 音像的に元のwaveに近い印象がしました。
もしやバグかと思い調べたところ、lame.cにおかしな部分を発見。 320行目からの lame_init_qval(void) というサブルーチンで -q オプションの数値を取得し、case文で振り分けているっぽいのですが、 そのなかに case 0: という部分が入っていませんでした(バグですかね?)
しょうがないので下記のように変更しました。
変更前(lame.cの348行目以降) case 2: RO.noise_shaping = 1; RO.noise_shaping_amp = 1; RO.noise_shaping_stop = 1; RO.use_best_huffman = 1; break;
case 1: RO.noise_shaping = 1; /* 2=usually lowers quality */ RO.noise_shaping_amp = 2; RO.noise_shaping_stop = 1; RO.use_best_huffman = 1; /* 2 not yet coded */ break;
変更後 case 2: case 1: RO.noise_shaping = 1; RO.noise_shaping_amp = 1; RO.noise_shaping_stop = 1; RO.use_best_huffman = 1; break; case 0: RO.noise_shaping = 1; /* 2=usually lowers quality */ RO.noise_shaping_amp = 2; RO.noise_shaping_stop = 1; RO.use_best_huffman = 1; /* 2 not yet coded */ break;
用は-q 1をそのまま-q 0にして、もとの-q 1を-q 2と同じにしたわけです(^^;;; これでコンパイルし、エンコードを行ったところ、今度は 予想通りの結果が返ってきました。
D:\WAVE>gogo -q 0 TEST.wav ..\MP3\TEST_Q0.mp3 { 12669/ 12669} 100.0% ( 12.61x) re:[00:00:00.00] to:[00:00:26.24]
D:\WAVE>gogo -q 1 TEST.wav ..\MP3\TEST_Q1.mp3 { 12669/ 12669} 100.0% ( 13.86x) re:[00:00:00.00] to:[00:00:23.87]
以上、動作報告のレポートでした。
|