Mandriva Linux 2010.0のKDE4(Phonon)ではオーディオ出力先でPulseAudio以外を優先できない?(前半)
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」が必要