PulseAudio में, प्रत्येक साउंड कार्ड में एक प्रोफ़ाइल सेट जुड़ा होता है। एक प्रोफाइल सेट में कई प्रोफाइल होते हैं, और वे प्रोफाइल होते हैं जिन्हें आप कार्ड को सूचीबद्ध करते समय देखते हैं (या विभिन्न पल्सएडियो GUIs में देखते समय)।
एक default
प्रोफ़ाइल है, जिसमें मुख्य रूप से एनालॉग साउंड आउटपुट के लिए उपयोगी चीजें हैं। एक extra-hdmi
प्रोफ़ाइल भी है जो स्वचालित रूप से कुछ एचडीएमआई आउटपुट पर लागू होती है, और 5.1 तक विकल्प देगी। ये दोनों प्रोफ़ाइल दुर्भाग्य से हैं /usr/share/pulseaudio/alsa-mixer/profile-sets
, और इस प्रकार आप वास्तव में इन्हें संपादित नहीं कर सकते हैं (मैंने इसके बारे में डीबग बग 736708 दायर किया है ।) प्रलेखन के अनुसार, आप udev- आधारित ऑटोडिस्कवरी को अक्षम कर सकते हैं, और मैन्युअल रूप से सब कुछ कॉन्फ़िगर कर सकते हैं - जो आपको निर्दिष्ट करते हैं। एक प्रोफ़ाइल के लिए पूर्ण पथ। लेकिन यह पता चला है, कि जब यह प्रलेखित नहीं है, तो udv एक पूर्ण पथ भी निर्दिष्ट कर सकता है।
प्रोफ़ाइल सेट निर्दिष्ट करने के लिए एक udev नियम सेट करें
आप PULSE_PROFILE_SET
udev पर्यावरण चर सेट करके एक 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
।
Udv नियम बनाने के बाद, आप इसे तुरंत लागू कर सकते हैं udevadm trigger -ssound
। आप शायद अपने initramfs को फिर से बनाना चाहेंगे ( update-initramfs -u
)
पुष्टि करें कि udv नियम प्रभावी हुआ udevadm info --query=all --path /sys/class/sound/card0
(उपयुक्त कार्ड नंबर का उपयोग करें, निश्चित रूप से)। आपको E: PULSE_PROFILE_SET=/etc/pulse/my-hdmi.conf
आउटपुट में देखना चाहिए । यदि नहीं, तो जारी न रखें। यह काम नहीं करेगा। आपके udv नियमों में कुछ गड़बड़ है (या शायद आपने उन्हें ट्रिगर नहीं किया है - आप हमेशा रिबूट करने की कोशिश कर सकते हैं)।
/Etc/pulse/my-hdmi.conf फ़ाइल बनाएँ
नोट: चैनल का नक्शा स्पष्ट रूप से सिस्टम-विशिष्ट है। आपको इसे अपने सिस्टम के लिए सही करने के लिए प्रयोग करना होगा। मैं भाग्यशाली था, मेरे 7.1 लेआउट में केवल 5.1, 4.0, आदि के निर्माण के लिए अंतिम वस्तुओं को छोड़ना शामिल है। निर्देश नीचे दिए गए हैं।
यह ज्यादातर कॉपी और पेस्ट है। प्रत्येक अनुभाग में (ए) नाम, (बी) विवरण, (सी) चैनल मैप, (डी) [वैकल्पिक] प्राथमिकता में भिन्नता है।
[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 को पुनरारंभ करें:
pulseaudio -k
अपने सामान्य उपयोगकर्ता के रूप में, यह मानते हुए कि आप प्रति उपयोगकर्ता डेमॉन (डिफ़ॉल्ट) का उपयोग कर रहे हैं। इसे फिर से शुरू करें, यहां तक कि एक सरल aplay -l
भी काम करेगा।
- 7.1 प्रोफ़ाइल पर जाएं। व्यक्तिगत रूप से, मैं
pactl set-card-profile 0 "output:hdmi-surround-71"
ऐसा करता था, लेकिन एक GUI पूरी तरह से अच्छी तरह से काम करेगा।
- भागो
speaker-test -c 8 -t w
। इसे स्पीकर नामों की घोषणा शुरू करनी चाहिए, उम्मीद है कि प्रत्येक स्पीकर में से सही नाम। यदि यह नाम सही वक्ता से नहीं आते हैं, तो आपको उन्हें सही करने के लिए चैनल-नक्शा बदलना होगा। प्रत्येक चैनल मानचित्र परिवर्तन के बाद, आपको फिर से PulseAudio को पुनरारंभ करना होगा।
बक्शीश! अधिक उपयोगी सेटिंग्स
इसमें /etc/pulse/daemon.conf
, कुछ सेटिंग्स हैं जिन्हें आप बदलना चाहते हैं:
enable-remixing
- यदि यह चालू है, तो एक स्टीरियो सिग्नल में आपका बायाँ चैनल आपके तीनों बाएँ स्पीकर से खेला जाएगा, और इसका दायाँ चैनल आपके दाएं बोलने वालों से बाहर होगा। यदि बंद है, तो यह केवल सामने के दो बाहर आएगा। ध्यान दें कि आप प्रोफ़ाइल को स्टीरियो में भी बदल सकते हैं (केवल एचडीएमआई पोर्ट से स्टीरियो साउंड भेजने के लिए, और अपने रिसीवर को यह तय करने दें कि इसे स्पीकर को कैसे मैप किया जाए)।
enable-lfe-remixing
- समान, लेकिन LFE (सबवूफ़र) चैनल को रीमिक्स करने के लिए।
default-sample-format
- यदि आपका एचडीएमआई सेटअप 16-बिट ऑडियो से अधिक का समर्थन करता है, तो आप इसे s32le
(डिफ़ॉल्ट से s16le
) बढ़ाना चाह सकते हैं ।
default-sample-rate
, alternate-sample-rate
- यदि आप ज्यादातर डीवीडी स्रोत सामग्री का उपयोग करते हैं, जो आमतौर पर 48KHz है, तो आप इन (और शायद 44.1KHz को पूरी तरह से अक्षम कर सकते हैं) स्वैप करना चाहते हैं। या, यदि आपका एचडीएमआई रिसीवर इसका समर्थन करता है, तो आप 192KHz तक सभी तरह से जा सकते हैं। ध्यान दें कि 176KHz के पास 44.1 और 48KHz दोनों की एक से अधिक होने की अच्छी संपत्ति है। यह देखने के लिए कि आपका रिसीवर क्या समर्थन करता है, यह निर्धारित करने के लिए नीचे देखें
default-sample-channels
- वास्तव में बात नहीं लगती। प्रोफ़ाइल शायद इसे ओवरराइड करती है ...
स्वाभाविक रूप से, आपको इस फ़ाइल को बदलने के बाद PulseAudio को पुनरारंभ करना होगा।
फिर से बोनस! आपका रिसीवर क्या देख रहा है
ऐसी 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 और Dolby TrueHD को भी सपोर्ट करता है। इसलिए यदि मेरे पास उन फ़ाइलों को इनकोड किया गया है, तो मैं उन प्रारूपों से गुजर सकता हूं (यदि मेरा मीडिया प्लेयर इसका समर्थन करता है, तो निश्चित रूप से। mpv
शायद)।