Pulseaudio .includeメモ

http://www.pulseaudio.org/wiki/CLI

 pulseaduioを起動した時にdefault.paは次の順番で探す。
1. ~/.pulse/default.pa
2. /etc/pulse/default.pa

両方あった時場合は,1.がloadされ,2.は読むこととも2.を1.でオーバーライドする事もない。

・.include
/etc/pulse/default.paを引き継ぎ,さらに追記しようとすると次のようになる。

記述例:~/.pulse/default.pa
.include /etc/pulse/default.pa
.ifexists module-zeroconf-discover.so
load-module module-zeroconf-discover 
.endif

 includeは.include位置にされるので,前に書けば/etc/pulse/default.paが初めに実行され,後に書けば例:.ifexists module-zeroconf-discover.so後にincludeされ実行される。






pahdmiis 707.1a2

ひっぱってください∩∩


















































 HDMI audio出力できそうな場所を/proc/asoundから探しPulseaudioに
追加しDefault sinkを変更する。また,module-equalizerが使用可能であ
れば,それもloadする。

・ログ例
Pulseaudio HDMI connector IS Version 707.1a2
Detect:Card 1,Port 9 SMB2430H [0x1] FL/FR alsa_module_sink_hdmi_hw_1_9 HDMI_SMB2430H_FL/FR
Detect module-equalizer-sink
Change Default Sinks: alsa_module_sink_hdmi_hw_1_9_eq

・依存
 pacmdを必要とする。
 openSUSEの場合Pulseaudio-utilsパッケージに含まれる。

・自動起動例(KDE4)
 スクリプトを適当な所に入れて(~/binとか)おく。chmod +xしておくこと。
 KDE システム設定→システム管理→起動と終了→自動起動→スクリプトファ
イルに追加する。実行は起動時。で,openSUSE+KDE4ではPulseaudio起動
後にstartしているはずだが,他でどなっているかしらない。

・問題点
 同じディスプレイがある場合,ひょっとしたら2枚目以降はDetectしない可
能性がある(手抜き)。

・実験環境
openSUSE 12.1
GeFoece GT430
SMB2430H


download: Pahdmiis707.1a2.zip‎ (ファイルサイズ: 2 キロバイト, MIMEタイプ: application/zip)

sha1:260bacc479af9e4e8b26d1a90377d3eaa3786fe4

filesize:1947 byte



PulseaudioにHDMI音声出力できる可能性のあるportを追加するスクリプト alpha1

#! /usr/bin/python
# -*- coding: utf-8 -*-

import commands
import os
import glob 
(s, o) = commands.getstatusoutput('pacmd dump')
if s != 0: exit()
ports = []

for card in glob.glob('/proc/asound/card*'):
if card[-5:] == 'cards':
continue
cardnum = int(float(card.rsplit('card')[1]))

pcmlist = glob.glob(card+'/pcm*p')
pcmlist.sort(cmp=lambda x,y: cmp(x, y))
for eld in glob.glob(card+'/eld*'):
buf = open(eld,'r').read()
param = {}
for kv in buf.split('¥n'):
param[kv.split('¥t', 1)[0].strip()] = kv.rsplit('¥t', 1)[-1].strip()
if param['monitor_present'] == '0' and param['eld_valid'] == '0':
continue
if param['connection_type'] != 'HDMI':
continue

portnum = pcmlist[int(float(eld.rsplit('eld#')[1]))]
portnum = int(portnum.rsplit('pcm')[1][:-1])
sink_name = 'alsa_module_sink_hw_%i_%i' % (cardnum, portnum)
# load-module
cmd = 'pacmd load-module module-alsa-sink device=hw:%i,%i sink_name=%s'
(s, o) = commands.getstatusoutput(cmd % (cardnum, portnum, sink_name))

# update description
description = '%s_%s_%s' % (param['monitor_name'], 'HDMI', param['speakers'].split(' ',1)[1])
cmd = 'pacmd update-sink-proplist %s device.description="%s"'
(s, o) = commands.getstatusoutput(cmd % (sink_name, description))
# change default sink
cmd = 'pacmd set-default-sink %s'
print (cmd % sink_name)
(s, o) = commands.getstatusoutput(cmd % sink_name)
print s,o

--ここまで--
実験環境:
openSUSE 12.1
GeForce GT430+SAMSUNG SMB2430H
 あんまりテストをしていない。エラーチェックもしていない。users groupで実行可能。pacmdを必要とするのでopenSUSEの場合Pulseaudio-utilsパッケージがインストールされている必要がある。

 実行すると適当に出力できそうな物をmodule-alsa-sinkで追加し説明文?を変える(pavucontrolなどに表示される)。最後に検出したものをdefault sinkとして変更する(手抜き)。

 HDMI経由でディスプレイ名を取ってこれるならdescriptionはSMB2430H_HDMI_FL/FRなどとなる。

 KDE4の自動スクリプト付近に入れておけば起動時に動く可能性があるが何もチェックしていない。$ pacmd exitやPulseaudio再起動した場合,常駐チェックも何ももっていないので再度実行して追加する必要がある。




githubをソースにしてobsでbuildするメモ

例:pasystray

  次のように設定する。
1.Create a tar ball from SCM repository
url = https://github.com/christophgysin/pasystray
versionprefix = 0.1.1
filename = pasystray
scm = git
 
2.Change File Compression
file = *.tar
cimpression = gz

3.Update version in spec file

 1~3は順番に並べること。

 1.でobsのworker?がソースをダウンロードしてきて_service:tar_scm:filename-versionprefix.(何か).tarというtar ballが生成される。
 2.で1.をrecompressし_service:recompress:tar_scm:filename-versionprefix.(何か).tar.gzができる。
 3.でユーザが定義したpasystary.specのversion:を書き換え_service:set_version:pasystray.specを生成し,これを元にしてbuildが開始される。

 recompressすると元の.tarは削除される。逆にrecompressしなければ.tarのまま残る。



openSUSE用 pasystrayパッケージ

  とりあえずパッケージ作っただけなのでdocとか入っていない(後で入れる)。


 padevchooserがPulseaudio 1.0に対応していないので(libpabrowserとかなんかそんなに依存していた),代わりにできたセレクター。要gtk3。

openSUSE用パッケージ

・使用方法
 インストールして起動する。

・他サーバへの接続
 padevchooserは他サーバに直接接続しようとしていたが,pasystrayはlocalのpa serverのmodule-tunnel経由で接続する。なので,個々のストリームは一度ストリームを停止してサーバに再接続する事なく,シームレスにセレクトできるようになっている。

 サーバの認識はavahiとpulseaudio module-zeroconf-discoverを使う(client)。module-zeroconf-discoverはdefault.paに記述されていないので(openSUSE 12.1の場合),load-module module-zeroconf-discoverを加えるか,
$ pacmd load-module module-zeroconf-discover
を実行する。


・追記
 こっちのうが見栄えがいい。sink/sourceにしばらくカーソル置いておくと表示される。

・module-zeroconf-discover
 ちょっと違った。
 pasystray関係無しに,load-module module-zeroconf-discoverされると,拾ってこれれば拾ってきて自動的にmodule-tunnelで定義されるので,それ自体はpadevchooserでもできていた可能性があった。ただpadevchooserはserver selectする事を選んだだけだと思う。




minetest-c55

 https://build.opensuse.org/package/show?package=minetest&project=games

 gamesプロジェクトに移ってirrlich1.8用のパッチを当ててコンパイルされるようなったらしいので,うちでbuildするのは終了。




openSUSE 12.1 メモ1

 
> cat /etc/SuSE-release 
openSUSE 12.1 (x86_64)
VERSION = 12.1
CODENAME = Asparagus

・DVD版イメージ
 11.4まではsyslinuxパッケージ含まれるisohybridを使う事でDVD以外のUSBストレージから起動でいるイメージを生成するようになっていたのだが,12.1からはダウンロードしてきてそのままUSBメモリなりHDDに書けば起動できるイメージに変わった。USB-KEYの場合要8GB。
 ただし,nvidiaのVGAの場合,起動しない場合がある(gfxmenuでコケる)。

・インストール時の最小メモリ
 swap無しでインストールする場合,32bit/textインストーラー/text mode installで256MBだったのが,384MBに増やす必要がある。原因はkernel付近が大きくなったためで,download/展開に必要とし,256MBはその付近でコケる。

・text mode install後の初回起動
 初回起動後のコンソールでyastを起動すると罫線が文字化けする。
 この場合もう一度再起動するか,# resetとしてコンソールをリセットする事で解決する。

・64bit x11-ssh-askpass
 gnomeでもkdeでもなくX11版のx11-ssh-askpassを起動しようとするとエラーになる。
 具体的な原因は,sessionにあわせて分岐するスクリプトはnoarchなので/usr/lib/sshに入るのは問題はないのだが,呼び出すx11-ssh-askpassがバイナリなのになぜかlib64ではなくlibに入り,スクリプトはlib64/x11-ssh-askpassから起動させようとして失敗する。
 とりあえずの解決方法としては,

/usr/lib/ssh/ssh-askpass
line 47
元 X11_SSH_ASKPASS="/usr/lib64/ssh/x11-ssh-askpass"
改 X11_SSH_ASKPASS="/usr/lib/ssh/x11-ssh-askpass"
とする事で解決する。
 何に使うのかっていうのはあるが,virt-managerでsshログイン使用に使っていたりしてた。32bitでは問題がない。

・tmpfs
tmpfs                       1.3G   32M  1.2G    3% /dev/shm
tmpfs                       1.3G  432K  1.3G    1% /run
tmpfs                       1.3G     0  1.3G    0% /sys/fs/cgroup
tmpfs                       1.3G     0  1.3G    0% /media
tmpfs                       1.3G  432K  1.3G    1% /var/run
tmpfs                       1.3G  432K  1.3G    1% /var/lock
 あちこちに使われる。
 おおよそ認識量の50%を割り当てられるが,動的確保するので使用分しか消費しない事になっている。swapが確保されている場合,free/cacheを食い尽くすと早い段階でページアウトされるのがtmpfsだったような気がするのだが,詳しい挙動は忘れた。

・intel HD Graphics Driver
 kernelでは認識しモジュールもloadされるのだが,時々X11が起動する時に正常に認識されていなくて,glxinfoで見るとソフトウェアラスタライザになっている場合がある。ソフトウェアラスタライザの能力でも一応kwin4のeffectはそれなりにレンダリングできglxgearsも動くので,最近のCPU能力だと気づかない場合もある。
 一度ログアウトするとkdmはX11を再起動するのでそこで直る場合がある。

・k10railgun
 initととも絡むのだが,systemdの場合正常に起動していない可能性がある。まだ詳しく調べていない。起動順番の問題の気もする。

・nvidiaドライバ
 すでにコミュニティリポジトリから追加できるようになっている。

・radeonのリポジトリ
 待。

・grub
 マッチ部分が赤くなるようになった



openSUSE用 pulseaudio-module-equalizer

 今やっておかないと書き方自体を忘れそうなので,とりあえずいい加減なパッチ作って,pulseaudio-module-equalizerがインストールされていれば有効になり,なければ無効になるようにしておいた。追記したdefault.pa自体はpulseaudioに含まれる。
 全く確認していない所といえば,マルチサウンドデバイス環境だとequalizer-moduleがどうアタッチされるか不明なところか。


openSUSE用 pulseaudio-module-equalizer

https://build.opensuse.org/package/show?package=pulseaudio-equalizer&project=home%3Axkitty68

 モジュール部分とUIを,pulseaudio, pulseaudio-toolsに入れていたのだが,他のmoduleの習慣に従って,両方のファイルをpulseaudio-module-equalizerパッケージとして分離させてみた。

・/etc/pulse/default.paの設定
 どうやって書き換えようか考え中。
 試してみたところでは,

.ifexists module-equalizer-sink.so
load-module module-equalizer-sink sink_name=equalized
set-default-sink equalized
.endif

と書いておけば,pulseaudio-module-equalizerがインストールされていて,module-equalizer-sink.soが存在すれば,moduleを読んでsink_name=equalizedとし,default-sinkをequalizedとするが,なければスルーする。



(obs実験用) openSUSE用equalizer内蔵pulseaudioのbuild はじめました

 fftw3を使った動的変更可能なイコライザーを使えるようにする。

・元ネタ


・対象ディトリ
 openSUSE 12.1 / Factory / tumbleweed

・パッケージ
 multimedia:libsのpulseaudioのspecにパッチを当てる(正確にはブランチしてlocal homeでspecを書き換えたら差分が自動生成される事に気づいた)。

 元から増えたファイルは2つ。x86_64の場合はlib64。
/usr/bin/qpaeq
/usr/lib/pulse-1.1/modules/module-equalizer-sink.so

依存パッケージはfftw3がさらに増える。

・設定
 インストール後に以下の物を書き換える

/etc/pulse/default.pa

.ifexists module-equalizer-sink.so
load-module module-equalizer-sink sink_name=equalized
.endif

最後の方にでも追記する。

・qpaeq
 適当な場所からqpaeqを起動する。ショートカットが無いは手抜き。


 横に伸ばすと,
増える。

・接続
 特にdefault-sinkを指定しているわけでもないので,適当なクライアントを起動後にpavucontrolなりからsinkをFFT based equalizerに変更すると,クライアント→イコライザー→プライマsinkと通るようになる。
 デフォルトにしたい場合は/etc/pulse/default.paに

set-default-sink equalized

とか書いておくといいらしいのだが,未確認。

・pamanとpavucontrolの状態
 次のようにな表示になる。



・obsを使ったパッケージ build自体の実験
 multimedia:libsのpulseaudioのspec以外が変更されると,自動的に複製を作ってspecにイコライザー有効パッチを当てるというのを,ぶん投げておいても自動的にしてくれるはずなのだが,どうなるか観察。


calendar
1234567
891011121314
15161718192021
22232425262728
293031    
<< January 2012 >>
検索
いろいろ
google
selected entries
categories
archives
recent comment
recent trackback
recommend
links
profile
search this site.
others
mobile
qrcode
powered
無料ブログ作成サービス JUGEM