試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

x86_64上で起きるTTA(The True Audio)のGStreamerプラグインのノイズ問題に対処するためのebuild修正と、メモリ使用量の問題について

TTA CLI encoder(「ttaenc」というパッケージ名のTTAエンコーダ/デコーダ)は、本家の(3.4系への)バージョンアップにより、x86_64でのみ起こる不具合が修正されているが、GStreamerプラグインで(x86_64上でのみ)再生がノイズになる不具合は、gst-plugins-bad-0.10.5の時点では修正されていない。
以下は、「x86_64上でのみ起きていた、TTAのGStreamerプラグインのノイズ問題に対処」の修正作業をebuild上で行うための修正。ebuildファイルを修正後には「sudo ebuild /usr/portage/media-libs/gst-plugins-bad/gst-plugins-bad-0.10.5.ebuild digest」をしてからインストールする。ローカルOverlayにコピーして入れてもよい。

--- /usr/portage/media-libs/gst-plugins-bad/gst-plugins-bad-0.10.5.ebuild.orig
+++ /usr/portage/media-libs/gst-plugins-bad/gst-plugins-bad-0.10.5.ebuild
@@ -19,6 +19,11 @@
 
 src_unpack() {
 	unpack ${A}
+
+	# fix noise problem on x86_64
+	local x
+	sed -i -e 's/unsigned long long/u_int64_t/g' "${S}"/gst/tta/ttadec.h
+	for x in "${S}"/gst/tta/*.[ch]; do sed -i -e 's/long/int/g' ${x}; done
 }
 
 src_compile() {

これにより、emergeによる通常のインストールの流れだけで、x86_64環境でもGStreamer対応のプレーヤーからTTAファイルを正常に再生できるようになる。しかし、このプラグインには「メモリを大量に消費してしまう」という問題があり、現状では、よほどメモリに余裕がなければ、使用を推奨することはできない。

放っておくと、いくらでもメモリを食っていく。上の画像はRhythmbox上でTTAファイルを再生し続けてメモリを食っている状態をGNOMEシステム・モニタで表示したもの。