summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2012-11-16 07:05:57 +0000
committermav <mav@FreeBSD.org>2012-11-16 07:05:57 +0000
commit94ab185bfb54474f2717c567bd0643288c5c9492 (patch)
treef77bb7f5065fd9d46ca26af254cb24713c0ac5f0
parent8f8f99d37a6fd13f0b152a5a24dc01f82ba74580 (diff)
downloadFreeBSD-src-94ab185bfb54474f2717c567bd0643288c5c9492.zip
FreeBSD-src-94ab185bfb54474f2717c567bd0643288c5c9492.tar.gz
For some more completeness add matrixes for 3.1 and 7.0 channel setups.
-rw-r--r--sys/dev/sound/pcm/channel.c2
-rw-r--r--sys/dev/sound/pcm/feeder_matrix.c2
-rw-r--r--sys/dev/sound/pcm/matrix.h22
-rw-r--r--sys/dev/sound/pcm/matrix_map.h105
4 files changed, 121 insertions, 10 deletions
diff --git a/sys/dev/sound/pcm/channel.c b/sys/dev/sound/pcm/channel.c
index 4135311..75b02d0 100644
--- a/sys/dev/sound/pcm/channel.c
+++ b/sys/dev/sound/pcm/channel.c
@@ -1037,12 +1037,14 @@ static const struct {
{ "2.0", "2", "stereo", SND_CHN_MATRIX_2_0 },
{ "2.1", NULL, NULL, SND_CHN_MATRIX_2_1 },
{ "3.0", "3", NULL, SND_CHN_MATRIX_3_0 },
+ { "3.1", NULL, NULL, SND_CHN_MATRIX_3_1 },
{ "4.0", "4", "quad", SND_CHN_MATRIX_4_0 },
{ "4.1", NULL, NULL, SND_CHN_MATRIX_4_1 },
{ "5.0", "5", NULL, SND_CHN_MATRIX_5_0 },
{ "5.1", "6", NULL, SND_CHN_MATRIX_5_1 },
{ "6.0", NULL, NULL, SND_CHN_MATRIX_6_0 },
{ "6.1", "7", NULL, SND_CHN_MATRIX_6_1 },
+ { "7.0", NULL, NULL, SND_CHN_MATRIX_7_0 },
{ "7.1", "8", NULL, SND_CHN_MATRIX_7_1 },
{ NULL, NULL, NULL, SND_CHN_MATRIX_UNKNOWN }
};
diff --git a/sys/dev/sound/pcm/feeder_matrix.c b/sys/dev/sound/pcm/feeder_matrix.c
index d2d9595..e59c124 100644
--- a/sys/dev/sound/pcm/feeder_matrix.c
+++ b/sys/dev/sound/pcm/feeder_matrix.c
@@ -86,12 +86,14 @@ static struct pcmchan_matrix feeder_matrix_maps[SND_CHN_MATRIX_MAX] = {
[SND_CHN_MATRIX_2_0] = SND_CHN_MATRIX_MAP_2_0,
[SND_CHN_MATRIX_2_1] = SND_CHN_MATRIX_MAP_2_1,
[SND_CHN_MATRIX_3_0] = SND_CHN_MATRIX_MAP_3_0,
+ [SND_CHN_MATRIX_3_1] = SND_CHN_MATRIX_MAP_3_1,
[SND_CHN_MATRIX_4_0] = SND_CHN_MATRIX_MAP_4_0,
[SND_CHN_MATRIX_4_1] = SND_CHN_MATRIX_MAP_4_1,
[SND_CHN_MATRIX_5_0] = SND_CHN_MATRIX_MAP_5_0,
[SND_CHN_MATRIX_5_1] = SND_CHN_MATRIX_MAP_5_1,
[SND_CHN_MATRIX_6_0] = SND_CHN_MATRIX_MAP_6_0,
[SND_CHN_MATRIX_6_1] = SND_CHN_MATRIX_MAP_6_1,
+ [SND_CHN_MATRIX_7_0] = SND_CHN_MATRIX_MAP_7_0,
[SND_CHN_MATRIX_7_1] = SND_CHN_MATRIX_MAP_7_1
};
diff --git a/sys/dev/sound/pcm/matrix.h b/sys/dev/sound/pcm/matrix.h
index e33d986..6ff1074 100644
--- a/sys/dev/sound/pcm/matrix.h
+++ b/sys/dev/sound/pcm/matrix.h
@@ -134,29 +134,31 @@
#define SND_CHN_MATRIX_3_0 3
#define SND_CHN_MATRIX_3 SND_CHN_MATRIX_3_0
-/* 4 @ 4.0 Quadraphonic */
-#define SND_CHN_MATRIX_4_0 4
+/* 4 @ 3.1 (lfe), 4.0 (Quadraphonic, DEFAULT) */
+#define SND_CHN_MATRIX_3_1 4
+#define SND_CHN_MATRIX_4_0 5
#define SND_CHN_MATRIX_4 SND_CHN_MATRIX_4_0
/* 5 @ 4.1 (lfe), 5.0 (center, DEFAULT) */
-#define SND_CHN_MATRIX_4_1 5
-#define SND_CHN_MATRIX_5_0 6
+#define SND_CHN_MATRIX_4_1 6
+#define SND_CHN_MATRIX_5_0 7
#define SND_CHN_MATRIX_5 SND_CHN_MATRIX_5_0
/* 6 @ 5.1 (lfe, DEFAULT), 6.0 (rear center) */
-#define SND_CHN_MATRIX_5_1 7
-#define SND_CHN_MATRIX_6_0 8
+#define SND_CHN_MATRIX_5_1 8
+#define SND_CHN_MATRIX_6_0 9
#define SND_CHN_MATRIX_6 SND_CHN_MATRIX_5_1
-/* 7 @ 6.1 (lfe) */
-#define SND_CHN_MATRIX_6_1 9
+/* 7 @ 6.1 (lfe, DEFAULT), 7.0 */
+#define SND_CHN_MATRIX_6_1 10
+#define SND_CHN_MATRIX_7_0 11
#define SND_CHN_MATRIX_7 SND_CHN_MATRIX_6_1
/* 8 @ 7.1 (lfe) */
-#define SND_CHN_MATRIX_7_1 10
+#define SND_CHN_MATRIX_7_1 12
#define SND_CHN_MATRIX_8 SND_CHN_MATRIX_7_1
-#define SND_CHN_MATRIX_MAX 11
+#define SND_CHN_MATRIX_MAX 13
#define SND_CHN_MATRIX_BEGIN SND_CHN_MATRIX_1_0
#define SND_CHN_MATRIX_END SND_CHN_MATRIX_7_1
diff --git a/sys/dev/sound/pcm/matrix_map.h b/sys/dev/sound/pcm/matrix_map.h
index c13a051..ff79e95 100644
--- a/sys/dev/sound/pcm/matrix_map.h
+++ b/sys/dev/sound/pcm/matrix_map.h
@@ -195,6 +195,49 @@
-1, -1, -1, -1, -1, -1, -1, -1, -1 } \
}
+#define SND_CHN_MATRIX_MAP_3_1 { \
+ .id = SND_CHN_MATRIX_3_1, \
+ .channels = 4, \
+ .ext = 1, \
+ .map = { \
+ /* Left */ \
+ [0] = { \
+ .type = SND_CHN_T_FL, \
+ .members = \
+ SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FC | \
+ SND_CHN_T_MASK_SL \
+ }, \
+ /* Right */ \
+ [1] = { \
+ .type = SND_CHN_T_FR, \
+ .members = \
+ SND_CHN_T_MASK_FR | SND_CHN_T_MASK_FC | \
+ SND_CHN_T_MASK_SR \
+ }, \
+ /* LFE */ \
+ [2] = { \
+ .type = SND_CHN_T_LF, \
+ .members = SND_CHN_T_MASK_LF \
+ }, \
+ /* Rear Center */ \
+ [3] = { \
+ .type = SND_CHN_T_BC, \
+ .members = \
+ SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR | \
+ SND_CHN_T_MASK_BC | \
+ SND_CHN_T_MASK_SL | SND_CHN_T_MASK_SR \
+ }, \
+ [4] = { \
+ .type = SND_CHN_T_MAX, \
+ .members = 0 \
+ } \
+ }, \
+ .mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR | \
+ SND_CHN_T_MASK_LF | SND_CHN_T_MASK_BC, \
+ .offset = { 0, 1, -1, 2, -1, -1, -1, -1, 3, \
+ -1, -1, -1, -1, -1, -1, -1, -1, -1 } \
+}
+
#define SND_CHN_MATRIX_MAP_4_0 { \
.id = SND_CHN_MATRIX_4_0, \
.channels = 4, \
@@ -504,6 +547,68 @@
-1, -1, -1, -1, -1, -1, -1, -1, -1 } \
}
+#define SND_CHN_MATRIX_MAP_7_0 { \
+ .id = SND_CHN_MATRIX_7_0, \
+ .channels = 7, \
+ .ext = 0, \
+ .map = { \
+ /* Left */ \
+ [0] = { \
+ .type = SND_CHN_T_FL, \
+ .members = \
+ SND_CHN_T_MASK_FL | SND_CHN_T_MASK_LF \
+ }, \
+ /* Right */ \
+ [1] = { \
+ .type = SND_CHN_T_FR, \
+ .members = \
+ SND_CHN_T_MASK_FR | SND_CHN_T_MASK_LF \
+ }, \
+ /* Rear Left */ \
+ [2] = { \
+ .type = SND_CHN_T_BL, \
+ .members = \
+ SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BC | \
+ SND_CHN_T_MASK_LF \
+ }, \
+ /* Rear Right */ \
+ [3] = { \
+ .type = SND_CHN_T_BR, \
+ .members = \
+ SND_CHN_T_MASK_BR | SND_CHN_T_MASK_BC | \
+ SND_CHN_T_MASK_LF \
+ }, \
+ /* Center */ \
+ [4] = { \
+ .type = SND_CHN_T_FC, \
+ .members = \
+ SND_CHN_T_MASK_FC | SND_CHN_T_MASK_LF \
+ }, \
+ /* Side Left */ \
+ [5] = { \
+ .type = SND_CHN_T_SL, \
+ .members = \
+ SND_CHN_T_MASK_SL | SND_CHN_T_MASK_LF \
+ }, \
+ /* Side Right */ \
+ [6] = { \
+ .type = SND_CHN_T_SR, \
+ .members = \
+ SND_CHN_T_MASK_SR | SND_CHN_T_MASK_LF \
+ }, \
+ [7] = { \
+ .type = SND_CHN_T_MAX, \
+ .members = 0 \
+ } \
+ }, \
+ .mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR | \
+ SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR | \
+ SND_CHN_T_MASK_FC | \
+ SND_CHN_T_MASK_SL | SND_CHN_T_MASK_SR, \
+ .offset = { 0, 1, 4, -1, 2, 3, -1, -1, -1, \
+ 5, 6, -1, -1, -1, -1, -1, -1, -1 } \
+}
+
#define SND_CHN_MATRIX_MAP_7_1 { \
.id = SND_CHN_MATRIX_7_1, \
.channels = 8, \
OpenPOWER on IntegriCloud