372 lines
8.1 KiB
Diff
372 lines
8.1 KiB
Diff
From 0d37174c3b629235867e288b4ab9f32cf8c2e80f Mon Sep 17 00:00:00 2001
|
|
From: chewitt <christianshewitt@gmail.com>
|
|
Date: Thu, 14 May 2020 13:31:34 +0000
|
|
Subject: [PATCH 1/3] WIP: add AMLOGIC-HDMI and AMLOGIC-HDMI-SPDIF confs
|
|
|
|
---
|
|
src/conf/cards/AMLOGIC-HDMI-SPDIF.conf | 174 +++++++++++++++++++++++++
|
|
src/conf/cards/AMLOGIC-HDMI.conf | 170 ++++++++++++++++++++++++
|
|
2 files changed, 344 insertions(+)
|
|
create mode 100644 src/conf/cards/AMLOGIC-HDMI-SPDIF.conf
|
|
create mode 100644 src/conf/cards/AMLOGIC-HDMI.conf
|
|
|
|
diff --git a/src/conf/cards/AMLOGIC-HDMI-SPDIF.conf b/src/conf/cards/AMLOGIC-HDMI-SPDIF.conf
|
|
new file mode 100644
|
|
index 00000000..d2783edc
|
|
--- /dev/null
|
|
+++ b/src/conf/cards/AMLOGIC-HDMI-SPDIF.conf
|
|
@@ -0,0 +1,174 @@
|
|
+# SPDX-License-Identifier: GPL-2.0
|
|
+# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv)
|
|
+
|
|
+#
|
|
+# All PCM must be 24-bit for easy kernel conversion.
|
|
+# IEC958 formatted output can be sent directly.
|
|
+#
|
|
+# Direct-to-hardware converting to 24-bit output.
|
|
+#
|
|
+AMLOGIC-HDMI-SPDIF.pcm.hw-s24le {
|
|
+ @args [ CARD ]
|
|
+ @args.CARD { type string }
|
|
+ type linear
|
|
+ slave.pcm {
|
|
+ type hw
|
|
+ card $CARD
|
|
+ }
|
|
+ slave.format S24_LE
|
|
+}
|
|
+
|
|
+#
|
|
+# Common output path for front and surround outputs
|
|
+#
|
|
+AMLOGIC-HDMI-SPDIF.pcm.common.0 {
|
|
+ @args [ CARD ]
|
|
+ @args.CARD { type string }
|
|
+ type asym
|
|
+ playback.pcm {
|
|
+ type softvol
|
|
+ slave.pcm {
|
|
+ @func refer name {
|
|
+ @func concat strings [
|
|
+ "cards."
|
|
+ { @func card_driver card $CARD }
|
|
+ ".pcm.hw-s24le:CARD=" $CARD
|
|
+ ]
|
|
+ }
|
|
+ }
|
|
+ control {
|
|
+ name "PCM Playback Volume"
|
|
+ card $CARD
|
|
+ }
|
|
+ }
|
|
+}
|
|
+
|
|
+<confdir:pcm/front.conf>
|
|
+
|
|
+AMLOGIC-HDMI-SPDIF.pcm.front.0 cards.AMLOGIC-HDMI-SPDIF.pcm.common.0
|
|
+
|
|
+# The mapping of ALSA channels to surround channels is very imprecise.
|
|
+# ALSA uses a different terminology and speaker placement to the CEA
|
|
+# surround positioning. CEA has the positioning of:
|
|
+#
|
|
+# LFE
|
|
+# FL FLC FC FRC FR
|
|
+#
|
|
+# RL RLC RC RRC RR
|
|
+#
|
|
+# ALSA's idea is:
|
|
+#
|
|
+# LFE
|
|
+# FL C FR
|
|
+#
|
|
+# SL SR
|
|
+#
|
|
+# RL RR
|
|
+#
|
|
+# We do our best to map between these representations.
|
|
+
|
|
+<confdir:pcm/surround40.conf>
|
|
+
|
|
+AMLOGIC-HDMI-SPDIF.pcm.surround40.0 {
|
|
+ @args [ CARD ]
|
|
+ @args.CARD { type string }
|
|
+ type empty
|
|
+ slave.pcm {
|
|
+ @func refer
|
|
+ name {
|
|
+ @func concat strings [
|
|
+ "cards.AMLOGIC-HDMI-SPDIF.pcm.common.0:CARD="
|
|
+ $CARD
|
|
+ ]
|
|
+ }
|
|
+ }
|
|
+}
|
|
+
|
|
+# surround 41 and surround50 are (annoyingly) mapped to surround51
|
|
+# We could do without stacking two 'route' plugins on top of each other
|
|
+
|
|
+<confdir:pcm/surround41.conf>
|
|
+<confdir:pcm/surround50.conf>
|
|
+<confdir:pcm/surround51.conf>
|
|
+
|
|
+AMLOGIC-HDMI-SPDIF.pcm.surround51.0 {
|
|
+ @args [ CARD ]
|
|
+ @args.CARD { type string }
|
|
+ type route
|
|
+ slave.pcm {
|
|
+ @func refer
|
|
+ name {
|
|
+ @func concat strings [
|
|
+ "cards.AMLOGIC-HDMI-SPDIF.pcm.common.0:CARD="
|
|
+ $CARD
|
|
+ ]
|
|
+ }
|
|
+ }
|
|
+ ttable.0.0 1.0 # FL -> slave 0 -> hdmi 0 FL
|
|
+ ttable.1.1 1.0 # FR -> slave 1 -> hdmi 1 FR
|
|
+ ttable.2.4 1.0 # RL -> slave 4 -> hdmi 4 RL
|
|
+ ttable.3.5 1.0 # RR -> slave 5 -> hdmi 5 RR
|
|
+ ttable.4.3 1.0 # C -> slave 3 -> hdmi 3 FC
|
|
+ ttable.5.2 1.0 # LFE -> slave 2 -> hdmi 2 LFE
|
|
+}
|
|
+
|
|
+<confdir:pcm/surround71.conf>
|
|
+
|
|
+AMLOGIC-HDMI-SPDIF.pcm.surround71.0 {
|
|
+ @args [ CARD ]
|
|
+ @args.CARD { type string }
|
|
+ type route
|
|
+ slave.pcm {
|
|
+ @func refer
|
|
+ name {
|
|
+ @func concat strings [
|
|
+ "cards.AMLOGIC-HDMI-SPDIF.pcm.common.0:CARD="
|
|
+ $CARD
|
|
+ ]
|
|
+ }
|
|
+ }
|
|
+ slave.channels 8
|
|
+ ttable.0.0 1.0 # FL -> slave 0 -> hdmi 0 FL
|
|
+ ttable.1.1 1.0 # FR -> slave 1 -> hdmi 1 FR
|
|
+ ttable.2.6 1.0 # RL -> slave 6 -> hdmi 6 RLC/FLC
|
|
+ ttable.3.7 1.0 # RR -> slave 7 -> hdmi 7 RRC/FRC
|
|
+ ttable.4.3 1.0 # C -> slave 3 -> hdmi 3 FC
|
|
+ ttable.5.2 1.0 # LFE -> slave 2 -> hdmi 2 LFE
|
|
+ ttable.6.4 1.0 # SL -> slave 4 -> hdmi 4 RL
|
|
+ ttable.7.5 1.0 # SR -> slave 5 -> hdmi 5 RR
|
|
+}
|
|
+
|
|
+#<confdir:pcm/hdmi.conf>
|
|
+#
|
|
+#AMLOGIC-HDMI-SPDIF.pcm.hdmi.0 {
|
|
+# @args [ CARD AES0 AES1 AES2 AES3 ]
|
|
+# @args.CARD {
|
|
+# type string
|
|
+# }
|
|
+# @args.AES0 {
|
|
+# type integer
|
|
+# }
|
|
+# @args.AES1 {
|
|
+# type integer
|
|
+# }
|
|
+# @args.AES2 {
|
|
+# type integer
|
|
+# }
|
|
+# @args.AES3 {
|
|
+# type integer
|
|
+# default 0x01 # IEC958_AES3_CON_FS_NOTID
|
|
+# }
|
|
+# type iec958
|
|
+# slave.pcm {
|
|
+# type hw
|
|
+# card $CARD
|
|
+# }
|
|
+# slave.format IEC958_SUBFRAME_LE
|
|
+# # $AES3 must be correct for some AV receivers to accept the stream
|
|
+# status [ $AES0 $AES1 $AES2 $AES3 ]
|
|
+# hdmi_mode true
|
|
+#}
|
|
+#
|
|
+#<confdir:pcm/iec958.conf>
|
|
+#
|
|
+#AMLOGIC-HDMI-SPDIF.pcm.iec958.0 AMLOGIC-HDMI-SPDIF.pcm.hdmi.0
|
|
diff --git a/src/conf/cards/AMLOGIC-HDMI.conf b/src/conf/cards/AMLOGIC-HDMI.conf
|
|
new file mode 100644
|
|
index 00000000..8e410c4d
|
|
--- /dev/null
|
|
+++ b/src/conf/cards/AMLOGIC-HDMI.conf
|
|
@@ -0,0 +1,170 @@
|
|
+# SPDX-License-Identifier: GPL-2.0
|
|
+# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv)
|
|
+
|
|
+#
|
|
+# All PCM must be 24-bit for easy kernel conversion.
|
|
+# IEC958 formatted output can be sent directly.
|
|
+#
|
|
+# Direct-to-hardware converting to 24-bit output.
|
|
+#
|
|
+AMLOGIC-HDMI.pcm.hw-s24le {
|
|
+ @args [ CARD ]
|
|
+ @args.CARD { type string }
|
|
+ type linear
|
|
+ slave.pcm {
|
|
+ type hw
|
|
+ card $CARD
|
|
+ }
|
|
+ slave.format S24_LE
|
|
+}
|
|
+
|
|
+#
|
|
+# Common output path for front and surround outputs
|
|
+#
|
|
+AMLOGIC-HDMI.pcm.common.0 {
|
|
+ @args [ CARD ]
|
|
+ @args.CARD { type string }
|
|
+ type asym
|
|
+ playback.pcm {
|
|
+ type softvol
|
|
+ slave.pcm {
|
|
+ @func refer name {
|
|
+ @func concat strings [
|
|
+ "cards."
|
|
+ { @func card_driver card $CARD }
|
|
+ ".pcm.hw-s24le:CARD=" $CARD
|
|
+ ]
|
|
+ }
|
|
+ }
|
|
+ control {
|
|
+ name "PCM Playback Volume"
|
|
+ card $CARD
|
|
+ }
|
|
+ }
|
|
+}
|
|
+
|
|
+<confdir:pcm/front.conf>
|
|
+
|
|
+AMLOGIC-HDMI.pcm.front.0 cards.AMLOGIC-HDMI.pcm.common.0
|
|
+
|
|
+# The mapping of ALSA channels to surround channels is very imprecise.
|
|
+# ALSA uses a different terminology and speaker placement to the CEA
|
|
+# surround positioning. CEA has the positioning of:
|
|
+#
|
|
+# LFE
|
|
+# FL FLC FC FRC FR#
|
|
+#
|
|
+# RL RLC RC RRC RR
|
|
+#
|
|
+# ALSA's idea is:
|
|
+#
|
|
+# LFE
|
|
+# FL C FR
|
|
+#
|
|
+# SL SR
|
|
+#
|
|
+# RL RR
|
|
+#
|
|
+# We do our best to map between these representations.
|
|
+
|
|
+<confdir:pcm/surround40.conf>
|
|
+
|
|
+AMLOGIC-HDMI.pcm.surround40.0 {
|
|
+ @args [ CARD ]
|
|
+ @args.CARD { type string }
|
|
+ type empty
|
|
+ slave.pcm {
|
|
+ @func refer
|
|
+ name {
|
|
+ @func concat strings [
|
|
+ "cards.AMLOGIC-HDMI.pcm.common.0:CARD="
|
|
+ $CARD
|
|
+ ]
|
|
+ }
|
|
+ }
|
|
+}
|
|
+
|
|
+# surround 41 and surround50 are (annoyingly) mapped to surround51
|
|
+# We could do without stacking two 'route' plugins on top of each other
|
|
+
|
|
+<confdir:pcm/surround41.conf>
|
|
+<confdir:pcm/surround50.conf>
|
|
+<confdir:pcm/surround51.conf>
|
|
+
|
|
+AMLOGIC-HDMI.pcm.surround51.0 {
|
|
+ @args [ CARD ]
|
|
+ @args.CARD { type string }
|
|
+ type route
|
|
+ slave.pcm {
|
|
+ @func refer
|
|
+ name {
|
|
+ @func concat strings [
|
|
+ "cards.AMLOGIC-HDMI.pcm.common.0:CARD="
|
|
+ $CARD
|
|
+ ]
|
|
+ }
|
|
+ }
|
|
+ ttable.0.0 1.0 # FL -> slave 0 -> hdmi 0 FL
|
|
+ ttable.1.1 1.0 # FR -> slave 1 -> hdmi 1 FR
|
|
+ ttable.2.4 1.0 # RL -> slave 4 -> hdmi 4 RL
|
|
+ ttable.3.5 1.0 # RR -> slave 5 -> hdmi 5 RR
|
|
+ ttable.4.3 1.0 # C -> slave 3 -> hdmi 3 FC
|
|
+ ttable.5.2 1.0 # LFE -> slave 2 -> hdmi 2 LFE
|
|
+}
|
|
+
|
|
+<confdir:pcm/surround71.conf>
|
|
+
|
|
+AMLOGIC-HDMI.pcm.surround71.0 {
|
|
+ @args [ CARD ]
|
|
+ @args.CARD { type string }
|
|
+ type route
|
|
+ slave.pcm {
|
|
+ @func refer
|
|
+ name {
|
|
+ @func concat strings [
|
|
+ "cards.AMLOGIC-HDMI.pcm.common.0:CARD="
|
|
+ $CARD
|
|
+ ]
|
|
+ }
|
|
+ }
|
|
+ slave.channels 8
|
|
+ ttable.0.0 1.0 # FL -> slave 0 -> hdmi 0 FL
|
|
+ ttable.1.1 1.0 # FR -> slave 1 -> hdmi 1 FR
|
|
+ ttable.2.6 1.0 # RL -> slave 6 -> hdmi 6 RLC/FLC
|
|
+ ttable.3.7 1.0 # RR -> slave 7 -> hdmi 7 RRC/FRC
|
|
+ ttable.4.3 1.0 # C -> slave 3 -> hdmi 3 FC
|
|
+ ttable.5.2 1.0 # LFE -> slave 2 -> hdmi 2 LFE
|
|
+ ttable.6.4 1.0 # SL -> slave 4 -> hdmi 4 RL
|
|
+ ttable.7.5 1.0 # SR -> slave 5 -> hdmi 5 RR
|
|
+}
|
|
+
|
|
+#<confdir:pcm/hdmi.conf>
|
|
+#
|
|
+#AMLOGIC-HDMI.pcm.hdmi.0 {
|
|
+# @args [ CARD AES0 AES1 AES2 AES3 ]
|
|
+# @args.CARD {
|
|
+# type string
|
|
+# }
|
|
+# @args.AES0 {
|
|
+# type integer
|
|
+# }
|
|
+# @args.AES1 {
|
|
+# type integer
|
|
+# }
|
|
+# @args.AES2 {
|
|
+# type integer
|
|
+# }
|
|
+# @args.AES3 {
|
|
+# type integer
|
|
+# default 0x01 # IEC958_AES3_CON_FS_NOTID
|
|
+# }
|
|
+# type iec958
|
|
+# slave.pcm {
|
|
+# type hw
|
|
+# card $CARD
|
|
+# }
|
|
+# slave.format IEC958_SUBFRAME_LE
|
|
+# # $AES3 must be correct for some AV receivers to accept the stream
|
|
+# status [ $AES0 $AES1 $AES2 $AES3 ]
|
|
+# hdmi_mode true
|
|
+#}
|
|
--
|
|
2.17.1
|
|
|