KONAさん
以前こちらで報告した api.alsa.headroom = 2048 の件について、buffer capacity修正後の状態で改めて確認してみました。
当時はPipeWire経由の44.1kHz再生で、最初に一瞬だけ音が出たあと停止する症状があり、DirettaのALSAノードに
api.alsa.headroom = 2048
を設定すると正常に連続再生できるようになっていました。
https://groups.google.com/g/konalinux/c/LsQ7HCQQ_Jg/m/Sho-HCL0BgAJ
今回、先日報告したbuffer state / capacity問題の修正後のKONA Linuxで確認したところ、現在もWirePlumber側にはこの headroom=2048 の設定が残っており、実際のDirettaノードにも2048が適用されていました。
そこで、buffer修正後の状態はそのままにして、api.alsa.headroom だけを 2048 → 0 に変更して再検証しました。
現在の条件は、
です。
この状態でPipeWire経由の44.1kHzを再生したところ、以前の「一瞬だけ鳴って停止する」症状は再現しませんでした。
pw-play で44.1kHzを再生し、pw-top ではDiretta Sinkも44100Hz、ERR=0を確認しています。
さらに、
まで確認できました。
そのため、少なくとも現在のbuffer capacity修正後のKONA Linuxでは、44.1kHz再生のために api.alsa.headroom=2048 は必須ではなさそうです。
時系列から考えると、以前 headroom=2048 で改善していた症状には、後から見つかったbuffer state leakが関係しており、headroom設定がその影響を回避するworkaroundとして効いていた可能性もあるように思います。
もちろん当時から現在までに他の変更も入っているため、これだけで単一原因と断定はできませんが、少なくとも現在は headroom=0 のまま44.1kHzネイティブ再生、レート切替、Spotify再生まで正常でした。
もし現在のKONA側で headroom=2048 を以前の対策として残しているのであれば、buffer修正後は不要になっている可能性がありますので、参考までに追加報告します。
KONAさん
先ほどの件ですが、追加で確認したところ訂正があります。
buffer capacity修正後のKONA Linuxで api.alsa.headroom = 0 にして確認したところ、最初は44.1kHz再生、連続OPEN/CLOSE、44.1→192→44.1kHzの切替、Spotify再生まで正常だったため、一旦はheadroom設定が不要になった可能性を考えていました。
ただ、そのまま使用を続けたところ、以前と同じ「最初に一瞬だけ音が出て、その後止まる」症状が再発しました。
再発時のPipeWireログでは、
spa.alsa: hw:0p: snd_pcm_avail after recover: Broken pipe
が繰り返し出ていました。
その後、WirePlumberのDiretta用設定を元の
api.alsa.headroom = 2048
に戻してWirePlumberを再起動したところ、Spotify再生もすぐ正常に戻りました。
そのため、今回確認した範囲では、
・buffer capacity / state leakの問題
・PipeWireで必要になる api.alsa.headroom = 2048
は別の問題として考えた方がよさそうです。
buffer capacity修正後でも headroom=0 では同じ症状が再発したため、KONA Linux側では現在の headroom=2048 設定は残しておいた方がよいと思います。
途中で「capacity修正後はheadroom不要かもしれない」と考えましたが、継続確認で再発したため訂正します。
参考までに、再発時はMMAP有効(api.alsa.disable-mmap=false)でした。