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

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

Mandriva Linux 2010.0のKDE4(Phonon)ではオーディオ出力先でPulseAudio以外を優先できない?(前半)

  1. PulseAudioの動作中は他の出力先が選択できない?
  2. Mandrivaの修正
  3. 該当部分をオリジナルのままにしてビルド,インストールすると...
  4. 修正後、Phononの設定が動作しない?

PulseAudioの動作中は他の出力先が選択できない?

Mandriva Linux 2010.0ではKDEシステム設定の「マルチメディア」のサウンド出力(Phononのオーディオ出力設定)では出力先一覧にPulseAudioのみが表示されることが多い。

Phononではバックエンドにxineライブラリを用いる*1と(「xine-jack」パッケージにより)JACK Audio Connection Kitが使用可能だが、PulseAudioが動いていると上のようにPulseAudioだけが表示され、他の項目が選択できない。
PulseAudioが止まっているときには

のように出力先が選択可能になり、JACKから音が出るようにはなるが、PulseAudioを(module-jack-sinkを用いて)JACKへ出力する設定で起動すると、またPulseAudioだけに出力される状態となってしまう。

Mandrivaの修正

この挙動はおかしいと思ったのだが、どうやらMandriva LinuxのPhononにはPulseAudio統合の目的で手が加えられているようで、ソースRPMから.specファイルを取り出すと
[引用] (phonon 4.3.50-18.2mdv2010.0の)phonon.spec より

* Mon Feb 23 2009 (中略) 1:4.3.0-2mdv2009.1
+ Revision: 344017
- Do not list any other devices when pulseaudio is enabled
- Pulseaudio is not an advanced output (patch seems to have been misconceived)

という記述を見つけた。この他、Phononのソースツリーに対してPulseAudio統合のために当てられるパッチがソースRPM内にあって、結構な規模の修正としてPhononの挙動を変えているようだということも分かった。

2010.0のリリースノートにもこの統合についてが書かれている。

該当部分をオリジナルのままにしてビルド,インストールすると...

.specファイルから該当パッチの適用部分(とPulseAudio関係の依存)を削ったものをビルドして

  • lib(64)phononexperimental4
  • lib(64)phonon4
  • phonon-gstreamer
  • phonon-xine
  • phonon-devel

の各パッケージを全て置き換えてみたところ、上記のようなおかしな挙動はなくなって、(module-jack-sinkでJACKへ出力する設定の)PulseAudio動作中にもJACKへの出力が行えるようになった。一方でPulseAudioをPhononの出力先にすることもできている。具体的な修正点は後半に貼り付ける。

修正後、Phononの設定が動作しない?

しかし、システム設定の「マルチメディア」を開こうとすると落ちる(開かない)ようになってしまい、端末から実行してみると、落ちるタイミングで

systemsettings: symbol lookup error: /usr/lib64/kde4/kcm_phonon.so: undefined symbol: _ZNK6Phonon12GlobalConfig22getHideAdvancedDevicesEv

と表示されていた。

使用したバージョン:

  • phonon 4.3.50-18.2mdv2010.0
  • kdebase4-runtime 4.3.2-10mdv2010.0

*1:パッケージ「phonon-xine」が必要