回答:
PulseAudioでは、各サウンドカードにプロファイルセットが関連付けられています。プロファイルセットには複数のプロファイルが含まれており、それらはカードを一覧表示するとき(またはさまざまなPulseAudio GUIで見るとき)に表示されるプロファイルです。
default
プロファイルがあり、主にアナログサウンド出力に役立つものが含まれています。extra-hdmi
一部のHDMI出力に自動的に適用されるプロファイルもあり、最大5.1のオプションを提供します。これらのプロファイルはどちらも残念ながらにあるため/usr/share/pulseaudio/alsa-mixer/profile-sets
、実際に編集することはできません(これについては、デバッグバグ736708を提出しました)。ドキュメントによると、udevベースの自動検出を無効にして、すべてを手動で設定することができます。プロファイルへの絶対パス。しかし、ドキュメントには記載されていませんが、udevではフルパスを指定することもできます。
udevルールでプロファイルセットを割り当てるには、PULSE_PROFILE_SET
udev環境変数を設定します。前述の/usr
サブディレクトリ内のファイルのみを取得するように文書化されていますが、フルパスも機能します。私の場合、私はこのルールを作成しました:
# cat /etc/udev/rules.d/95-local-pulseaudio.rules
ATTRS{vendor}=="0x8086", ATTRS{device}=="0x1c20", ENV{PULSE_PROFILE_SET}="/etc/pulse/my-hdmi.conf"
から簡単に取得できる適切なPCIベンダーとデバイス番号を使用する必要がありますlspci -nn
。
udevルールを作成したら、を使用してすぐに適用できますudevadm trigger -ssound
。おそらくinitramfsも再構築したいと思うでしょう(update-initramfs -u
)
udevルールが有効になったことを確認しudevadm info --query=all --path /sys/class/sound/card0
ます(もちろん、適切なカード番号を使用してください)。E: PULSE_PROFILE_SET=/etc/pulse/my-hdmi.conf
出力に表示されるはずです。そうでない場合は、続行しないでください。動作しません。udevルールに問題があります(または、トリガーしなかった可能性があります。いつでも再起動してみてください)。
注:チャネルマップは明らかにシステム固有です。ご使用のシステムに正しく合わせるには、実験する必要があります。私の幸運なことに、7.1のレイアウトでは、5.1、4.0などをビルドするための最終的なアイテムをドロップするだけです。手順は以下のとおりです。
これは、多くの場合、多くのコピーと貼り付けです。各セクションは、(a)名前、(b)説明、(c)チャネルマップ、(d)[オプション]優先順位が異なります。
[General]
auto-profiles = yes
[Mapping hdmi-stereo]
device-strings = hdmi:%f
channel-map = front-left,front-right
description = Digital Stereo (HDMI)
priority = 4
direction = output
paths-output = hdmi-output-0
[Mapping hdmi-surround-40]
device-strings = hdmi:%f
channel-map = front-left,front-right,rear-left,rear-right
description = Digital Quadrophonic (HDMI)
priority = 1
direction = output
paths-output = hdmi-output-0
[Mapping hdmi-surround-51]
device-strings = hdmi:%f
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
description = Digital Surround 5.1 (HDMI)
priority = 2
direction = output
paths-output = hdmi-output-0
[Mapping hdmi-surround-71]
description = Digital Surround 7.1 (HDMI)
device-strings = hdmi:%f
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
priority = 3
direction = output
paths-output = hdmi-output-0
これをテストするには:
pulseaudio -k
ユーザーごとのデーモン(デフォルト)を使用している場合は、通常のユーザーとしてPulseAudio:を再起動します。もう一度起動してくださいaplay -l
。単純なものでも機能します。pactl set-card-profile 0 "output:hdmi-surround-71"
はこれを使用していましたが、GUIも完全に機能します。speaker-test -c 8 -t w
。スピーカー名、できれば各スピーカーの正しい名前を発表し始めます。名前が正しい話者から来ていない場合は、チャンネルマップを変更して正しい名前にする必要があります。チャンネルマップを変更するたびに、PulseAudioを再起動する必要があります。では/etc/pulse/daemon.conf
、いくつかの設定を変更する必要があります。
enable-remixing
—これがオンの場合、ステレオ信号では、3つの左スピーカーすべてから左チャンネルが再生され、右スピーカーから右チャンネルが再生されます。オフの場合、前面の2つだけが出てきます。プロファイルをステレオに変更することもできます(HDMIポートからステレオサウンドのみを送信し、レシーバーにスピーカーへのマッピング方法を決定させる)。
enable-lfe-remixing
—同様ですが、LFE(サブウーファー)チャンネルへのリミックス用です。
default-sample-format
—お使いのHDMIセットアップが16ビット以上のオーディオをサポートしている場合は、これをs32le
(デフォルトからs16le
)に増やすことができます。
default-sample-rate
、alternate-sample-rate
—通常は48KHzのDVDソース素材をほとんど使用している場合は、これらを交換する必要があります(44.1KHzを完全に無効にすることもできます)。または、お使いのHDMIレシーバーがサポートしている場合は、192KHzまで使用できます。176KHzには44.1と48KHzの両方の偶数倍という優れた特性があることに注意してください。レシーバーがサポートするものを決定する方法については、以下を参照してください
default-sample-channels
—実際には重要ではないようです。プロファイルはおそらくそれを上書きします...
当然、このファイルを変更した後はPulseAudioを再起動する必要があります。
HDMIリンクのもう一方の端がサポートすると主張していることを伝えるeld.*
ファイルがあります/proc/asound
。例えば:
# cat /proc/asound/card0/eld#3.0
monitor_present 1
eld_valid 1
monitor_name TX-SR606
connection_type HDMI
eld_version [0x2] CEA-861D or below
edid_version [0x3] CEA-861-B, C or D
manufacture_id 0xcb3d
product_id 0x863
port_id 0x0
support_hdcp 0
support_ai 1
audio_sync_delay 0
speakers [0x4f] FL/FR LFE FC RL/RR RLC/RRC
sad_count 8
sad0_coding_type [0x1] LPCM
sad0_channels 2
sad0_rates [0x1ee0] 32000 44100 48000 88200 96000 176400 192000
sad0_bits [0xe0000] 16 20 24
sad1_coding_type [0x1] LPCM
sad1_channels 8
sad1_rates [0x1ee0] 32000 44100 48000 88200 96000 176400 192000
sad1_bits [0xe0000] 16 20 24
sad2_coding_type [0x2] AC-3
sad2_channels 8
sad2_rates [0xe0] 32000 44100 48000
sad2_max_bitrate 640000
sad3_coding_type [0x7] DTS
sad3_channels 8
sad3_rates [0xc0] 44100 48000
sad3_max_bitrate 1536000
sad4_coding_type [0x9] DSD (One Bit Audio)
sad4_channels 6
sad4_rates [0x40] 44100
sad5_coding_type [0xa] E-AC-3/DD+ (Dolby Digital Plus)
sad5_channels 8
sad5_rates [0xc0] 44100 48000
sad6_coding_type [0xb] DTS-HD
sad6_channels 8
sad6_rates [0x1ec0] 44100 48000 88200 96000 176400 192000
sad7_coding_type [0xc] MLP (Dolby TrueHD)
sad7_channels 8
sad7_rates [0x1480] 48000 96000 192000
したがって、私のレシーバーが最大8チャネル、192KHz、24ビットサウンドでLPCM(リニアPCM、つまり非圧縮オーディオ)をサポートしていることがわかります。AC3、DTS、DSD、DD +、DTS-HD、およびドルビーTrueHDもサポートしています。そのため、それらでエンコードされたファイルがある場合、それらの形式をパススルーできます(もちろん、メディアプレーヤーがサポートしている場合は、mpv
おそらくそうです)。