x86_64版ttaenc-3.3を動作するように修正する
(2007/9/22)バージョン3.4系では、特に修正をすることなく、x86_64でも問題なく動作しているので、最新版にすることを推奨。公式サイトの3.4リリースのところにも、対応したことが書かれている。
www.altlinux.com/index.php?module=sisyphus&package=ttaenc (リンク切れ)
に、「fixed x86_64 build」と書かれているRPMパッケージがあるのを発見し、ソースRPMのspecファイルを拝見すると、次のような記述がされていた。
[引用] ファイル名: ttaenc-3.3-alt3.spec
subst 's/unsigned long long/u_int64_t/g' %name.h subst 's/long/int/g' %name.c *.h
この情報をもとに、置換を行った後でビルドしたところ、無事にx86_64版のttaencがまともに動作するようになった。→「x86_64なGNU/LinuxにおけるTTA(The True Audio)対応の現状[2007/6/19]」
修正からインストールまでの手順
sedコマンドにより置換フィルタをかける。
また、このパッケージは、「sudo make install」実行時にstripも行ってくれるので、手動で実行する必要はない。その代わり、install-stripターゲットは存在しない。
$ mkdir ttaenc-3.3 $ cd ttaenc-3.3 $ unzip [ttaenc-3.3-src.zipの場所] $ sed -i -e 's/unsigned long long/u_int64_t/g' ttaenc.h $ for i in *.[ch]; do sed -i -e 's/long/int/g' $i; done $ make $ sudo make install
動作確認結果: 良好
コマンドからのテストは成功。
$ ttaenc -t sample_44_2_16.tta TTA1 lossless audio encoder/decoder, release 3.3 Copyright (c) 2005 Alexander Djourik. All rights reserved. For more information see http://tta.sourceforge.net ------------------------------------------------------------ File: [sample_44_2_16.tta] ------------------------------------------------------------ Total: [1/1] succeeded, time: 0'00 ------------------------------------------------------------
$ md5sum sample_44_2_16.tta e045db4070889c1136b1982ef24ebba3 sample_44_2_16.tta
TTAをWAVにデコード。成功
$ ttaenc -d sample_44_2_16.tta TTA1 lossless audio encoder/decoder, release 3.3 Copyright (c) 2005 Alexander Djourik. All rights reserved. For more information see http://tta.sourceforge.net ------------------------------------------------------------ File: [sample_44_2_16.tta] Decode: wrote 3454688 bytes, done, ratio: 1.60, time: 0 time: 0 ------------------------------------------------------------ Total: [1/1, 3.3/2.1 Mb], ratio: 1.598, time: 0'00 ------------------------------------------------------------
元のTTAファイルの削除をした後で、WAVからTTAにエンコード。成功
$ rm sample_44_2_16.tta rm: remove 通常ファイル `sample_44_2_16.tta'? y $ ttaenc -e sample_44_2_16.wav TTA1 lossless audio encoder/decoder, release 3.3 Copyright (c) 2005 Alexander Djourik. All rights reserved. For more information see http://tta.sourceforge.net ------------------------------------------------------------ File: [sample_44_2_16.wav] Encode: wrote 2161961 bytes, done, ratio: 0.63, time: 1 time: 1 ------------------------------------------------------------ Total: [1/1, 2.1/3.3 Mb], ratio: 0.626, time: 0'01 ------------------------------------------------------------
MD5が合っていることを確認。
$ md5sum sample_44_2_16.tta e045db4070889c1136b1982ef24ebba3 sample_44_2_16.tta
x86版との性能比較
TiMidity++で、再生時間が長めの曲を低速再生WAV出力したものを用意して、比較実験を行ってみた。極端な差は出なかったが、x86_64版のほうが速いことは間違いない。
x86版の結果
Total: [1/1, 469.4/896.6 Mb], ratio: 0.524, time: 1'20
x86_64版の結果
Total: [1/1, 469.4/896.6 Mb], ratio: 0.524, time: 1'13
注意点:
- 今回の実験では、x86_64版が速いことを実証するべく、エンコード時間を長くする意図で、ファイルサイズの大きな(900MiB近い)素材を用意したのだが、音楽CDから吸い出したデータのエンコードなどでは、体感的な差はさほどないと思われる。
- 使用した素材(MIDIデータの演奏をWAV化したもの)の特性からか、圧縮率が高めに出ているが、CDの曲などでは6〜7割程度が目安とされる。
同じファイルをFLACでもエンコードしてみたが、最速(低圧縮率)設定では上の時間より短いものの、圧縮率を上げるとエンコード時間では歯が立たなくなる。TTAの大きな特長である、「エンコード速度と圧縮率のバランス」を実感させられる。