xref: /dflybsd-src/sys/dev/sound/pcm/matrix_map.h (revision 2a1ad637466621af45d5a17185b33f3dcaaa1b1c)
1*2a1ad637SFrançois Tigeot /*-
2*2a1ad637SFrançois Tigeot  * Copyright (c) 2009 Ariff Abdullah <ariff@FreeBSD.org>
3*2a1ad637SFrançois Tigeot  * All rights reserved.
4*2a1ad637SFrançois Tigeot  *
5*2a1ad637SFrançois Tigeot  * Redistribution and use in source and binary forms, with or without
6*2a1ad637SFrançois Tigeot  * modification, are permitted provided that the following conditions
7*2a1ad637SFrançois Tigeot  * are met:
8*2a1ad637SFrançois Tigeot  * 1. Redistributions of source code must retain the above copyright
9*2a1ad637SFrançois Tigeot  *    notice, this list of conditions and the following disclaimer.
10*2a1ad637SFrançois Tigeot  * 2. Redistributions in binary form must reproduce the above copyright
11*2a1ad637SFrançois Tigeot  *    notice, this list of conditions and the following disclaimer in the
12*2a1ad637SFrançois Tigeot  *    documentation and/or other materials provided with the distribution.
13*2a1ad637SFrançois Tigeot  *
14*2a1ad637SFrançois Tigeot  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15*2a1ad637SFrançois Tigeot  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16*2a1ad637SFrançois Tigeot  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17*2a1ad637SFrançois Tigeot  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18*2a1ad637SFrançois Tigeot  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19*2a1ad637SFrançois Tigeot  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20*2a1ad637SFrançois Tigeot  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21*2a1ad637SFrançois Tigeot  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22*2a1ad637SFrançois Tigeot  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23*2a1ad637SFrançois Tigeot  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24*2a1ad637SFrançois Tigeot  * SUCH DAMAGE.
25*2a1ad637SFrançois Tigeot  *
26*2a1ad637SFrançois Tigeot  * $FreeBSD: head/sys/dev/sound/pcm/matrix_map.h 243138 2012-11-16 07:05:57Z mav $
27*2a1ad637SFrançois Tigeot  */
28*2a1ad637SFrançois Tigeot 
29*2a1ad637SFrançois Tigeot #ifndef _SND_MATRIX_MAP_H_
30*2a1ad637SFrançois Tigeot #define _SND_MATRIX_MAP_H_
31*2a1ad637SFrançois Tigeot 
32*2a1ad637SFrançois Tigeot /*
33*2a1ad637SFrançois Tigeot  * Standard matrix maps:
34*2a1ad637SFrançois Tigeot  *
35*2a1ad637SFrançois Tigeot  * struct pcmchan_matrix {
36*2a1ad637SFrançois Tigeot  * 	.id = Matrix identity (see matrix.h). Custom defined should use
37*2a1ad637SFrançois Tigeot  * 	      one of SND_CHN_MATRIX_MISC (for whatever purposes) or
38*2a1ad637SFrançois Tigeot  * 	      SND_CHN_MATRIX_DRV (hardware driver).
39*2a1ad637SFrançois Tigeot  * 	.channels = Total number of channels, including whatever 'extended'
40*2a1ad637SFrançois Tigeot  * 		    (the X.ext notions, mostly LFE).
41*2a1ad637SFrançois Tigeot  * 	.ext = Total number of extended channels (LFE).
42*2a1ad637SFrançois Tigeot  * 	.map = {
43*2a1ad637SFrançois Tigeot  * 		Sequences of channel type and interleave structure.
44*2a1ad637SFrançois Tigeot  * 		[interleave offset] = {
45*2a1ad637SFrançois Tigeot  * 			.type = channel type (see matrix.h).
46*2a1ad637SFrançois Tigeot  * 			.members = Masks of channels that is acceptable as a
47*2a1ad637SFrançois Tigeot  * 				   member of this channel type.
48*2a1ad637SFrançois Tigeot  * 		},
49*2a1ad637SFrançois Tigeot  * 		[total channels] = {
50*2a1ad637SFrançois Tigeot  * 			.type = Maximum channels marker (SND_CHN_T_MAX).
51*2a1ad637SFrançois Tigeot  * 			.members = 0 (no channels allowed here).
52*2a1ad637SFrançois Tigeot  * 		},
53*2a1ad637SFrançois Tigeot  * 	},
54*2a1ad637SFrançois Tigeot  * 	.mask = Mask of channels that exist in this map.
55*2a1ad637SFrançois Tigeot  * 	.offset = {
56*2a1ad637SFrançois Tigeot  * 		channel offset that directly translate to the above interleave
57*2a1ad637SFrançois Tigeot  * 		offset according to SND_CHN_T_* definitions.
58*2a1ad637SFrançois Tigeot  * 	}
59*2a1ad637SFrançois Tigeot  * };
60*2a1ad637SFrançois Tigeot  *
61*2a1ad637SFrançois Tigeot  * Rule of thumb: Avoid using SND_CHN_T_* that is marked with XXX (matrix.h),
62*2a1ad637SFrançois Tigeot  *                or be prepared for the horror to come.
63*2a1ad637SFrançois Tigeot  *
64*2a1ad637SFrançois Tigeot  */
65*2a1ad637SFrançois Tigeot 
66*2a1ad637SFrançois Tigeot #define SND_CHN_MATRIX_MAP_1_0	{					\
67*2a1ad637SFrançois Tigeot 	.id = SND_CHN_MATRIX_1_0,					\
68*2a1ad637SFrançois Tigeot 	.channels = 1,							\
69*2a1ad637SFrançois Tigeot 	.ext = 0,							\
70*2a1ad637SFrançois Tigeot 	.map = {							\
71*2a1ad637SFrançois Tigeot 		/* Mono, center, etc. */				\
72*2a1ad637SFrançois Tigeot 		[0] = {							\
73*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FL,				\
74*2a1ad637SFrançois Tigeot 			.members =					\
75*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR |	\
76*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FC | SND_CHN_T_MASK_LF |	\
77*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR |	\
78*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BC | SND_CHN_T_MASK_SL |	\
79*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SR				\
80*2a1ad637SFrançois Tigeot 		},							\
81*2a1ad637SFrançois Tigeot 		[1] = {							\
82*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_MAX,				\
83*2a1ad637SFrançois Tigeot 			.members = 0					\
84*2a1ad637SFrançois Tigeot 		}							\
85*2a1ad637SFrançois Tigeot 	},								\
86*2a1ad637SFrançois Tigeot 	.mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR |			\
87*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_FC,					\
88*2a1ad637SFrançois Tigeot 	.offset = {  0,  0,  0,  0,  0,  0, -1, -1,  0,			\
89*2a1ad637SFrançois Tigeot 		     0,  0, -1, -1, -1, -1, -1, -1, -1  }		\
90*2a1ad637SFrançois Tigeot }
91*2a1ad637SFrançois Tigeot 
92*2a1ad637SFrançois Tigeot #define SND_CHN_MATRIX_MAP_2_0	{					\
93*2a1ad637SFrançois Tigeot 	.id = SND_CHN_MATRIX_2_0,					\
94*2a1ad637SFrançois Tigeot 	.channels = 2,							\
95*2a1ad637SFrançois Tigeot 	.ext = 0,							\
96*2a1ad637SFrançois Tigeot 	.map = {							\
97*2a1ad637SFrançois Tigeot 		/* Left */						\
98*2a1ad637SFrançois Tigeot 		[0] = {							\
99*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FL,				\
100*2a1ad637SFrançois Tigeot 			.members =					\
101*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FC |	\
102*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_LF | SND_CHN_T_MASK_BL |	\
103*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BC | SND_CHN_T_MASK_SL	\
104*2a1ad637SFrançois Tigeot 		},							\
105*2a1ad637SFrançois Tigeot 		/* Right */						\
106*2a1ad637SFrançois Tigeot 		[1] = {							\
107*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FR,				\
108*2a1ad637SFrançois Tigeot 			.members =					\
109*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FR | SND_CHN_T_MASK_FC |	\
110*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_LF | SND_CHN_T_MASK_BR |	\
111*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BC | SND_CHN_T_MASK_SR	\
112*2a1ad637SFrançois Tigeot 		},							\
113*2a1ad637SFrançois Tigeot 		[2] = {							\
114*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_MAX,				\
115*2a1ad637SFrançois Tigeot 			.members = 0					\
116*2a1ad637SFrançois Tigeot 		}							\
117*2a1ad637SFrançois Tigeot 	},								\
118*2a1ad637SFrançois Tigeot 	.mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR,			\
119*2a1ad637SFrançois Tigeot 	.offset = {  0,  1, -1, -1, -1, -1, -1, -1, -1,			\
120*2a1ad637SFrançois Tigeot 		    -1, -1, -1, -1, -1, -1, -1, -1, -1  }		\
121*2a1ad637SFrançois Tigeot }
122*2a1ad637SFrançois Tigeot 
123*2a1ad637SFrançois Tigeot #define SND_CHN_MATRIX_MAP_2_1	{					\
124*2a1ad637SFrançois Tigeot 	.id = SND_CHN_MATRIX_2_1,					\
125*2a1ad637SFrançois Tigeot 	.channels = 3,							\
126*2a1ad637SFrançois Tigeot 	.ext = 1,							\
127*2a1ad637SFrançois Tigeot 	.map = {							\
128*2a1ad637SFrançois Tigeot 		/* Left */						\
129*2a1ad637SFrançois Tigeot 		[0] = {							\
130*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FL,				\
131*2a1ad637SFrançois Tigeot 			.members =					\
132*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FC |	\
133*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BC |	\
134*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SL				\
135*2a1ad637SFrançois Tigeot 		},							\
136*2a1ad637SFrançois Tigeot 		/* Right */						\
137*2a1ad637SFrançois Tigeot 		[1] = {							\
138*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FR,				\
139*2a1ad637SFrançois Tigeot 			.members =					\
140*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FR | SND_CHN_T_MASK_FC |	\
141*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BR | SND_CHN_T_MASK_BC |	\
142*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SR				\
143*2a1ad637SFrançois Tigeot 		},							\
144*2a1ad637SFrançois Tigeot 		/* LFE */						\
145*2a1ad637SFrançois Tigeot 		[2] = {							\
146*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_LF,				\
147*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_LF			\
148*2a1ad637SFrançois Tigeot 		},							\
149*2a1ad637SFrançois Tigeot 		[3] = {							\
150*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_MAX,				\
151*2a1ad637SFrançois Tigeot 			.members = 0					\
152*2a1ad637SFrançois Tigeot 		}							\
153*2a1ad637SFrançois Tigeot 	},								\
154*2a1ad637SFrançois Tigeot 	.mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR |			\
155*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_LF,					\
156*2a1ad637SFrançois Tigeot 	.offset = {  0,  1, -1,  2, -1, -1, -1, -1, -1,			\
157*2a1ad637SFrançois Tigeot 		    -1, -1, -1, -1, -1, -1, -1, -1, -1  }		\
158*2a1ad637SFrançois Tigeot }
159*2a1ad637SFrançois Tigeot 
160*2a1ad637SFrançois Tigeot #define SND_CHN_MATRIX_MAP_3_0	{	/* 3 channels default */	\
161*2a1ad637SFrançois Tigeot 	.id = SND_CHN_MATRIX_3_0,					\
162*2a1ad637SFrançois Tigeot 	.channels = 3,							\
163*2a1ad637SFrançois Tigeot 	.ext = 0,							\
164*2a1ad637SFrançois Tigeot 	.map = {							\
165*2a1ad637SFrançois Tigeot 		/* Left */						\
166*2a1ad637SFrançois Tigeot 		[0] = {							\
167*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FL,				\
168*2a1ad637SFrançois Tigeot 			.members =					\
169*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FC |	\
170*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_LF | SND_CHN_T_MASK_SL	\
171*2a1ad637SFrançois Tigeot 		},							\
172*2a1ad637SFrançois Tigeot 		/* Right */						\
173*2a1ad637SFrançois Tigeot 		[1] = {							\
174*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FR,				\
175*2a1ad637SFrançois Tigeot 			.members =					\
176*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FR | SND_CHN_T_MASK_FC |	\
177*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_LF | SND_CHN_T_MASK_SR	\
178*2a1ad637SFrançois Tigeot 		},							\
179*2a1ad637SFrançois Tigeot 		/* Rear Center */					\
180*2a1ad637SFrançois Tigeot 		[2] = {							\
181*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BC,				\
182*2a1ad637SFrançois Tigeot 			.members =					\
183*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_LF | SND_CHN_T_MASK_BL |	\
184*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BR | SND_CHN_T_MASK_BC |	\
185*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SL | SND_CHN_T_MASK_SR	\
186*2a1ad637SFrançois Tigeot 		},							\
187*2a1ad637SFrançois Tigeot 		[3] = {							\
188*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_MAX,				\
189*2a1ad637SFrançois Tigeot 			.members = 0					\
190*2a1ad637SFrançois Tigeot 		}							\
191*2a1ad637SFrançois Tigeot 	},								\
192*2a1ad637SFrançois Tigeot 	.mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR |			\
193*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_BC,					\
194*2a1ad637SFrançois Tigeot 	.offset = {  0,  1, -1, -1, -1, -1, -1, -1,  2,			\
195*2a1ad637SFrançois Tigeot 		    -1, -1, -1, -1, -1, -1, -1, -1, -1  }		\
196*2a1ad637SFrançois Tigeot }
197*2a1ad637SFrançois Tigeot 
198*2a1ad637SFrançois Tigeot #define SND_CHN_MATRIX_MAP_3_1	{					\
199*2a1ad637SFrançois Tigeot 	.id = SND_CHN_MATRIX_3_1,					\
200*2a1ad637SFrançois Tigeot 	.channels = 4,							\
201*2a1ad637SFrançois Tigeot 	.ext = 1,							\
202*2a1ad637SFrançois Tigeot 	.map = {							\
203*2a1ad637SFrançois Tigeot 		/* Left */						\
204*2a1ad637SFrançois Tigeot 		[0] = {							\
205*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FL,				\
206*2a1ad637SFrançois Tigeot 			.members =					\
207*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FC |	\
208*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SL				\
209*2a1ad637SFrançois Tigeot 		},							\
210*2a1ad637SFrançois Tigeot 		/* Right */						\
211*2a1ad637SFrançois Tigeot 		[1] = {							\
212*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FR,				\
213*2a1ad637SFrançois Tigeot 			.members =					\
214*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FR | SND_CHN_T_MASK_FC |	\
215*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SR				\
216*2a1ad637SFrançois Tigeot 		},							\
217*2a1ad637SFrançois Tigeot 		/* LFE */						\
218*2a1ad637SFrançois Tigeot 		[2] = {							\
219*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_LF,				\
220*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_LF			\
221*2a1ad637SFrançois Tigeot 		},							\
222*2a1ad637SFrançois Tigeot 		/* Rear Center */					\
223*2a1ad637SFrançois Tigeot 		[3] = {							\
224*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BC,				\
225*2a1ad637SFrançois Tigeot 			.members =					\
226*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR |	\
227*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BC |				\
228*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SL | SND_CHN_T_MASK_SR	\
229*2a1ad637SFrançois Tigeot 		},							\
230*2a1ad637SFrançois Tigeot 		[4] = {							\
231*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_MAX,				\
232*2a1ad637SFrançois Tigeot 			.members = 0					\
233*2a1ad637SFrançois Tigeot 		}							\
234*2a1ad637SFrançois Tigeot 	},								\
235*2a1ad637SFrançois Tigeot 	.mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR |			\
236*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_LF | SND_CHN_T_MASK_BC,			\
237*2a1ad637SFrançois Tigeot 	.offset = {  0,  1, -1,  2, -1, -1, -1, -1,  3,			\
238*2a1ad637SFrançois Tigeot 		    -1, -1, -1, -1, -1, -1, -1, -1, -1  }		\
239*2a1ad637SFrançois Tigeot }
240*2a1ad637SFrançois Tigeot 
241*2a1ad637SFrançois Tigeot #define SND_CHN_MATRIX_MAP_4_0	{					\
242*2a1ad637SFrançois Tigeot 	.id = SND_CHN_MATRIX_4_0,					\
243*2a1ad637SFrançois Tigeot 	.channels = 4,							\
244*2a1ad637SFrançois Tigeot 	.ext = 0,							\
245*2a1ad637SFrançois Tigeot 	.map = {							\
246*2a1ad637SFrançois Tigeot 		/* Left */						\
247*2a1ad637SFrançois Tigeot 		[0] = {							\
248*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FL,				\
249*2a1ad637SFrançois Tigeot 			.members =					\
250*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FC |	\
251*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_LF | SND_CHN_T_MASK_SL	\
252*2a1ad637SFrançois Tigeot 		},							\
253*2a1ad637SFrançois Tigeot 		/* Right */						\
254*2a1ad637SFrançois Tigeot 		[1] = {							\
255*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FR,				\
256*2a1ad637SFrançois Tigeot 			.members =					\
257*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FR | SND_CHN_T_MASK_FC |	\
258*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_LF | SND_CHN_T_MASK_SR	\
259*2a1ad637SFrançois Tigeot 		},							\
260*2a1ad637SFrançois Tigeot 		/* Rear Left */						\
261*2a1ad637SFrançois Tigeot 		[2] = {							\
262*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BL,				\
263*2a1ad637SFrançois Tigeot 			.members =					\
264*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_LF | SND_CHN_T_MASK_BL |	\
265*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BC | SND_CHN_T_MASK_SL	\
266*2a1ad637SFrançois Tigeot 		},							\
267*2a1ad637SFrançois Tigeot 		/* Rear Right */					\
268*2a1ad637SFrançois Tigeot 		[3] = {							\
269*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BR,				\
270*2a1ad637SFrançois Tigeot 			.members =					\
271*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_LF | SND_CHN_T_MASK_BR |	\
272*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BC | SND_CHN_T_MASK_SR	\
273*2a1ad637SFrançois Tigeot 		},							\
274*2a1ad637SFrançois Tigeot 		[4] = {							\
275*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_MAX,				\
276*2a1ad637SFrançois Tigeot 			.members = 0					\
277*2a1ad637SFrançois Tigeot 		}							\
278*2a1ad637SFrançois Tigeot 	},								\
279*2a1ad637SFrançois Tigeot 	.mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR |			\
280*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR,			\
281*2a1ad637SFrançois Tigeot 	.offset = {  0,  1, -1, -1,  2,  3, -1, -1, -1,			\
282*2a1ad637SFrançois Tigeot 		    -1, -1, -1, -1, -1, -1, -1, -1, -1  }		\
283*2a1ad637SFrançois Tigeot }
284*2a1ad637SFrançois Tigeot 
285*2a1ad637SFrançois Tigeot #define SND_CHN_MATRIX_MAP_4_1	{					\
286*2a1ad637SFrançois Tigeot 	.id = SND_CHN_MATRIX_4_1,					\
287*2a1ad637SFrançois Tigeot 	.channels = 5,							\
288*2a1ad637SFrançois Tigeot 	.ext = 1,							\
289*2a1ad637SFrançois Tigeot 	.map = {							\
290*2a1ad637SFrançois Tigeot 		/* Left */						\
291*2a1ad637SFrançois Tigeot 		[0] = {							\
292*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FL,				\
293*2a1ad637SFrançois Tigeot 			.members =					\
294*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FC |	\
295*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SL				\
296*2a1ad637SFrançois Tigeot 		},							\
297*2a1ad637SFrançois Tigeot 		/* Right */						\
298*2a1ad637SFrançois Tigeot 		[1] = {							\
299*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FR,				\
300*2a1ad637SFrançois Tigeot 			.members =					\
301*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FR | SND_CHN_T_MASK_FC |	\
302*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SR				\
303*2a1ad637SFrançois Tigeot 		},							\
304*2a1ad637SFrançois Tigeot 		/* Rear Left */						\
305*2a1ad637SFrançois Tigeot 		[2] = {							\
306*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BL,				\
307*2a1ad637SFrançois Tigeot 			.members =					\
308*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BC |	\
309*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SL				\
310*2a1ad637SFrançois Tigeot 		},							\
311*2a1ad637SFrançois Tigeot 		/* Rear Right */					\
312*2a1ad637SFrançois Tigeot 		[3] = {							\
313*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BR,				\
314*2a1ad637SFrançois Tigeot 			.members =					\
315*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BR | SND_CHN_T_MASK_BC |	\
316*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SR				\
317*2a1ad637SFrançois Tigeot 		},							\
318*2a1ad637SFrançois Tigeot 		/* LFE */						\
319*2a1ad637SFrançois Tigeot 		[4] = {							\
320*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_LF,				\
321*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_LF			\
322*2a1ad637SFrançois Tigeot 		},							\
323*2a1ad637SFrançois Tigeot 		[5] = {							\
324*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_MAX,				\
325*2a1ad637SFrançois Tigeot 			.members = 0					\
326*2a1ad637SFrançois Tigeot 		}							\
327*2a1ad637SFrançois Tigeot 	},								\
328*2a1ad637SFrançois Tigeot 	.mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR |			\
329*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR |			\
330*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_LF,					\
331*2a1ad637SFrançois Tigeot 	.offset = {  0,  1, -1,  4,  2,  3, -1, -1, -1,			\
332*2a1ad637SFrançois Tigeot 		    -1, -1, -1, -1, -1, -1, -1, -1, -1  }		\
333*2a1ad637SFrançois Tigeot }
334*2a1ad637SFrançois Tigeot 
335*2a1ad637SFrançois Tigeot #define SND_CHN_MATRIX_MAP_5_0	{	/* 5 channels default */	\
336*2a1ad637SFrançois Tigeot 	.id = SND_CHN_MATRIX_5_0,					\
337*2a1ad637SFrançois Tigeot 	.channels = 5,							\
338*2a1ad637SFrançois Tigeot 	.ext = 0,							\
339*2a1ad637SFrançois Tigeot 	.map = {							\
340*2a1ad637SFrançois Tigeot 		/* Left */						\
341*2a1ad637SFrançois Tigeot 		[0] = {							\
342*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FL,				\
343*2a1ad637SFrançois Tigeot 			.members =					\
344*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FL | SND_CHN_T_MASK_LF |	\
345*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SL				\
346*2a1ad637SFrançois Tigeot 		},							\
347*2a1ad637SFrançois Tigeot 		/* Right */						\
348*2a1ad637SFrançois Tigeot 		[1] = {							\
349*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FR,				\
350*2a1ad637SFrançois Tigeot 			.members =					\
351*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FR | SND_CHN_T_MASK_LF |	\
352*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SR				\
353*2a1ad637SFrançois Tigeot 		},							\
354*2a1ad637SFrançois Tigeot 		/* Rear Left */						\
355*2a1ad637SFrançois Tigeot 		[2] = {							\
356*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BL,				\
357*2a1ad637SFrançois Tigeot 			.members =					\
358*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_LF | SND_CHN_T_MASK_BL |	\
359*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BC | SND_CHN_T_MASK_SL	\
360*2a1ad637SFrançois Tigeot 		},							\
361*2a1ad637SFrançois Tigeot 		/* Rear Right */					\
362*2a1ad637SFrançois Tigeot 		[3] = {							\
363*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BR,				\
364*2a1ad637SFrançois Tigeot 			.members =					\
365*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_LF | SND_CHN_T_MASK_BR |	\
366*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BC | SND_CHN_T_MASK_SR	\
367*2a1ad637SFrançois Tigeot 		},							\
368*2a1ad637SFrançois Tigeot 		/* Center */						\
369*2a1ad637SFrançois Tigeot 		[4] = {							\
370*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FC,				\
371*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_FC			\
372*2a1ad637SFrançois Tigeot 		},							\
373*2a1ad637SFrançois Tigeot 		[5] = {							\
374*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_MAX,				\
375*2a1ad637SFrançois Tigeot 			.members = 0					\
376*2a1ad637SFrançois Tigeot 		}							\
377*2a1ad637SFrançois Tigeot 	},								\
378*2a1ad637SFrançois Tigeot 	.mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR |			\
379*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR |			\
380*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_FC,					\
381*2a1ad637SFrançois Tigeot 	.offset = {  0,  1,  4, -1,  2,  3, -1, -1, -1,			\
382*2a1ad637SFrançois Tigeot 		    -1, -1, -1, -1, -1, -1, -1, -1, -1  }		\
383*2a1ad637SFrançois Tigeot }
384*2a1ad637SFrançois Tigeot 
385*2a1ad637SFrançois Tigeot #define SND_CHN_MATRIX_MAP_5_1	{	/* 6 channels default */	\
386*2a1ad637SFrançois Tigeot 	.id = SND_CHN_MATRIX_5_1,					\
387*2a1ad637SFrançois Tigeot 	.channels = 6,							\
388*2a1ad637SFrançois Tigeot 	.ext = 1,							\
389*2a1ad637SFrançois Tigeot 	.map = {							\
390*2a1ad637SFrançois Tigeot 		/* Left */						\
391*2a1ad637SFrançois Tigeot 		[0] = {							\
392*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FL,				\
393*2a1ad637SFrançois Tigeot 			.members =					\
394*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FL | SND_CHN_T_MASK_SL	\
395*2a1ad637SFrançois Tigeot 		},							\
396*2a1ad637SFrançois Tigeot 		/* Right */						\
397*2a1ad637SFrançois Tigeot 		[1] = {							\
398*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FR,				\
399*2a1ad637SFrançois Tigeot 			.members =					\
400*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FR | SND_CHN_T_MASK_SR	\
401*2a1ad637SFrançois Tigeot 		},							\
402*2a1ad637SFrançois Tigeot 		/* Rear Left */						\
403*2a1ad637SFrançois Tigeot 		[2] = {							\
404*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BL,				\
405*2a1ad637SFrançois Tigeot 			.members =					\
406*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BC |	\
407*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SL				\
408*2a1ad637SFrançois Tigeot 		},							\
409*2a1ad637SFrançois Tigeot 		/* Rear Right */					\
410*2a1ad637SFrançois Tigeot 		[3] = {							\
411*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BR,				\
412*2a1ad637SFrançois Tigeot 			.members =					\
413*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BR | SND_CHN_T_MASK_BC |	\
414*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SR				\
415*2a1ad637SFrançois Tigeot 		},							\
416*2a1ad637SFrançois Tigeot 		/* Center */						\
417*2a1ad637SFrançois Tigeot 		[4] = {							\
418*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FC,				\
419*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_FC			\
420*2a1ad637SFrançois Tigeot 		},							\
421*2a1ad637SFrançois Tigeot 		/* LFE */						\
422*2a1ad637SFrançois Tigeot 		[5] = {							\
423*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_LF,				\
424*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_LF			\
425*2a1ad637SFrançois Tigeot 		},							\
426*2a1ad637SFrançois Tigeot 		[6] = {							\
427*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_MAX,				\
428*2a1ad637SFrançois Tigeot 			.members = 0					\
429*2a1ad637SFrançois Tigeot 		}							\
430*2a1ad637SFrançois Tigeot 	},								\
431*2a1ad637SFrançois Tigeot 	.mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR |			\
432*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR |			\
433*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_FC | SND_CHN_T_MASK_LF,			\
434*2a1ad637SFrançois Tigeot 	.offset = {  0,  1,  4,  5,  2,  3, -1, -1, -1,			\
435*2a1ad637SFrançois Tigeot 		    -1, -1, -1, -1, -1, -1, -1, -1, -1  }		\
436*2a1ad637SFrançois Tigeot }
437*2a1ad637SFrançois Tigeot 
438*2a1ad637SFrançois Tigeot #define SND_CHN_MATRIX_MAP_6_0	{					\
439*2a1ad637SFrançois Tigeot 	.id = SND_CHN_MATRIX_6_0,					\
440*2a1ad637SFrançois Tigeot 	.channels = 6,							\
441*2a1ad637SFrançois Tigeot 	.ext = 0,							\
442*2a1ad637SFrançois Tigeot 	.map  = {							\
443*2a1ad637SFrançois Tigeot 		/* Left */						\
444*2a1ad637SFrançois Tigeot 		[0] = {							\
445*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FL,				\
446*2a1ad637SFrançois Tigeot 			.members =					\
447*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FL | SND_CHN_T_MASK_LF |	\
448*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SL				\
449*2a1ad637SFrançois Tigeot 		},							\
450*2a1ad637SFrançois Tigeot 		/* Right */						\
451*2a1ad637SFrançois Tigeot 		[1] = {							\
452*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FR,				\
453*2a1ad637SFrançois Tigeot 			.members =					\
454*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FR | SND_CHN_T_MASK_LF |	\
455*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SR				\
456*2a1ad637SFrançois Tigeot 		},							\
457*2a1ad637SFrançois Tigeot 		/* Rear Left */						\
458*2a1ad637SFrançois Tigeot 		[2] = {							\
459*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BL,				\
460*2a1ad637SFrançois Tigeot 			.members =					\
461*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BL | SND_CHN_T_MASK_LF |	\
462*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SL				\
463*2a1ad637SFrançois Tigeot 		},							\
464*2a1ad637SFrançois Tigeot 		/* Rear Right */					\
465*2a1ad637SFrançois Tigeot 		[3] = {							\
466*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BR,				\
467*2a1ad637SFrançois Tigeot 			.members =					\
468*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BR | SND_CHN_T_MASK_LF |	\
469*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SR				\
470*2a1ad637SFrançois Tigeot 		},							\
471*2a1ad637SFrançois Tigeot 		/* Center */						\
472*2a1ad637SFrançois Tigeot 		[4] = {							\
473*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FC,				\
474*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_FC			\
475*2a1ad637SFrançois Tigeot 		},							\
476*2a1ad637SFrançois Tigeot 		/* Rear Center */					\
477*2a1ad637SFrançois Tigeot 		[5] = {							\
478*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BC,				\
479*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_BC			\
480*2a1ad637SFrançois Tigeot 		},							\
481*2a1ad637SFrançois Tigeot 		[6] = {							\
482*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_MAX,				\
483*2a1ad637SFrançois Tigeot 			.members = 0					\
484*2a1ad637SFrançois Tigeot 		}							\
485*2a1ad637SFrançois Tigeot 	},								\
486*2a1ad637SFrançois Tigeot 	.mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR |			\
487*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR |			\
488*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_FC | SND_CHN_T_MASK_BC,			\
489*2a1ad637SFrançois Tigeot 	.offset = {  0,  1,  4, -1,  2,  3, -1, -1,  5,			\
490*2a1ad637SFrançois Tigeot 		    -1, -1, -1, -1, -1, -1, -1, -1, -1  }		\
491*2a1ad637SFrançois Tigeot }
492*2a1ad637SFrançois Tigeot 
493*2a1ad637SFrançois Tigeot #define SND_CHN_MATRIX_MAP_6_1	{					\
494*2a1ad637SFrançois Tigeot 	.id = SND_CHN_MATRIX_6_1,					\
495*2a1ad637SFrançois Tigeot 	.channels = 7,							\
496*2a1ad637SFrançois Tigeot 	.ext = 1,							\
497*2a1ad637SFrançois Tigeot 	.map = {							\
498*2a1ad637SFrançois Tigeot 		/* Left */						\
499*2a1ad637SFrançois Tigeot 		[0] = {							\
500*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FL,				\
501*2a1ad637SFrançois Tigeot 			.members =					\
502*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FL | SND_CHN_T_MASK_SL	\
503*2a1ad637SFrançois Tigeot 		},							\
504*2a1ad637SFrançois Tigeot 		/* Right */						\
505*2a1ad637SFrançois Tigeot 		[1] = {							\
506*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FR,				\
507*2a1ad637SFrançois Tigeot 			.members =					\
508*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FR | SND_CHN_T_MASK_SR	\
509*2a1ad637SFrançois Tigeot 		},							\
510*2a1ad637SFrançois Tigeot 		/* Rear Left */						\
511*2a1ad637SFrançois Tigeot 		[2] = {							\
512*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BL,				\
513*2a1ad637SFrançois Tigeot 			.members =					\
514*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BL | SND_CHN_T_MASK_SL	\
515*2a1ad637SFrançois Tigeot 		},							\
516*2a1ad637SFrançois Tigeot 		/* Rear Right */					\
517*2a1ad637SFrançois Tigeot 		[3] = {							\
518*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BR,				\
519*2a1ad637SFrançois Tigeot 			.members =					\
520*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BR | SND_CHN_T_MASK_SR	\
521*2a1ad637SFrançois Tigeot 		},							\
522*2a1ad637SFrançois Tigeot 		/* Center */						\
523*2a1ad637SFrançois Tigeot 		[4] = {							\
524*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FC,				\
525*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_FC			\
526*2a1ad637SFrançois Tigeot 		},							\
527*2a1ad637SFrançois Tigeot 		/* LFE */						\
528*2a1ad637SFrançois Tigeot 		[5] = {							\
529*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_LF,				\
530*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_LF			\
531*2a1ad637SFrançois Tigeot 		},							\
532*2a1ad637SFrançois Tigeot 		/* Rear Center */					\
533*2a1ad637SFrançois Tigeot 		[6] = {							\
534*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BC,				\
535*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_BC			\
536*2a1ad637SFrançois Tigeot 		},							\
537*2a1ad637SFrançois Tigeot 		[7] = {							\
538*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_MAX,				\
539*2a1ad637SFrançois Tigeot 			.members = 0					\
540*2a1ad637SFrançois Tigeot 		}							\
541*2a1ad637SFrançois Tigeot 	},								\
542*2a1ad637SFrançois Tigeot 	.mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR |			\
543*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR |			\
544*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_FC | SND_CHN_T_MASK_LF |			\
545*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_BC,					\
546*2a1ad637SFrançois Tigeot 	.offset = {  0,  1,  4,  5,  2,  3, -1, -1,  6,			\
547*2a1ad637SFrançois Tigeot 		    -1, -1, -1, -1, -1, -1, -1, -1, -1  }		\
548*2a1ad637SFrançois Tigeot }
549*2a1ad637SFrançois Tigeot 
550*2a1ad637SFrançois Tigeot #define SND_CHN_MATRIX_MAP_7_0	{					\
551*2a1ad637SFrançois Tigeot 	.id = SND_CHN_MATRIX_7_0,					\
552*2a1ad637SFrançois Tigeot 	.channels = 7,							\
553*2a1ad637SFrançois Tigeot 	.ext = 0,							\
554*2a1ad637SFrançois Tigeot 	.map = {							\
555*2a1ad637SFrançois Tigeot 		/* Left */						\
556*2a1ad637SFrançois Tigeot 		[0] = {							\
557*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FL,				\
558*2a1ad637SFrançois Tigeot 			.members =					\
559*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FL | SND_CHN_T_MASK_LF	\
560*2a1ad637SFrançois Tigeot 		},							\
561*2a1ad637SFrançois Tigeot 		/* Right */						\
562*2a1ad637SFrançois Tigeot 		[1] = {							\
563*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FR,				\
564*2a1ad637SFrançois Tigeot 			.members =					\
565*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FR | SND_CHN_T_MASK_LF	\
566*2a1ad637SFrançois Tigeot 		},							\
567*2a1ad637SFrançois Tigeot 		/* Rear Left */						\
568*2a1ad637SFrançois Tigeot 		[2] = {							\
569*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BL,				\
570*2a1ad637SFrançois Tigeot 			.members =					\
571*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BC |	\
572*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_LF				\
573*2a1ad637SFrançois Tigeot 		},							\
574*2a1ad637SFrançois Tigeot 		/* Rear Right */					\
575*2a1ad637SFrançois Tigeot 		[3] = {							\
576*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BR,				\
577*2a1ad637SFrançois Tigeot 			.members =					\
578*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BR | SND_CHN_T_MASK_BC |	\
579*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_LF				\
580*2a1ad637SFrançois Tigeot 		},							\
581*2a1ad637SFrançois Tigeot 		/* Center */						\
582*2a1ad637SFrançois Tigeot 		[4] = {							\
583*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FC,				\
584*2a1ad637SFrançois Tigeot 			.members =					\
585*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_FC | SND_CHN_T_MASK_LF	\
586*2a1ad637SFrançois Tigeot 		},							\
587*2a1ad637SFrançois Tigeot 		/* Side Left */						\
588*2a1ad637SFrançois Tigeot 		[5] = {							\
589*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_SL,				\
590*2a1ad637SFrançois Tigeot 			.members =					\
591*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SL | SND_CHN_T_MASK_LF	\
592*2a1ad637SFrançois Tigeot 		},							\
593*2a1ad637SFrançois Tigeot 		/* Side Right */					\
594*2a1ad637SFrançois Tigeot 		[6] = {							\
595*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_SR,				\
596*2a1ad637SFrançois Tigeot 			.members =					\
597*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_SR | SND_CHN_T_MASK_LF	\
598*2a1ad637SFrançois Tigeot 		},							\
599*2a1ad637SFrançois Tigeot 		[7] = {							\
600*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_MAX,				\
601*2a1ad637SFrançois Tigeot 			.members = 0					\
602*2a1ad637SFrançois Tigeot 		}							\
603*2a1ad637SFrançois Tigeot 	},								\
604*2a1ad637SFrançois Tigeot 	.mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR |			\
605*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR |			\
606*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_FC |					\
607*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_SL | SND_CHN_T_MASK_SR,			\
608*2a1ad637SFrançois Tigeot 	.offset = {  0,  1,  4, -1,  2,  3, -1, -1, -1,			\
609*2a1ad637SFrançois Tigeot 		     5,  6, -1, -1, -1, -1, -1, -1, -1  }		\
610*2a1ad637SFrançois Tigeot }
611*2a1ad637SFrançois Tigeot 
612*2a1ad637SFrançois Tigeot #define SND_CHN_MATRIX_MAP_7_1	{					\
613*2a1ad637SFrançois Tigeot 	.id = SND_CHN_MATRIX_7_1,					\
614*2a1ad637SFrançois Tigeot 	.channels = 8,							\
615*2a1ad637SFrançois Tigeot 	.ext = 1,							\
616*2a1ad637SFrançois Tigeot 	.map = {							\
617*2a1ad637SFrançois Tigeot 		/* Left */						\
618*2a1ad637SFrançois Tigeot 		[0] = {							\
619*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FL,				\
620*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_FL			\
621*2a1ad637SFrançois Tigeot 		},							\
622*2a1ad637SFrançois Tigeot 		/* Right */						\
623*2a1ad637SFrançois Tigeot 		[1] = {							\
624*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FR,				\
625*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_FR			\
626*2a1ad637SFrançois Tigeot 		},							\
627*2a1ad637SFrançois Tigeot 		/* Rear Left */						\
628*2a1ad637SFrançois Tigeot 		[2] = {							\
629*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BL,				\
630*2a1ad637SFrançois Tigeot 			.members =					\
631*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BC	\
632*2a1ad637SFrançois Tigeot 		},							\
633*2a1ad637SFrançois Tigeot 		/* Rear Right */					\
634*2a1ad637SFrançois Tigeot 		[3] = {							\
635*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_BR,				\
636*2a1ad637SFrançois Tigeot 			.members =					\
637*2a1ad637SFrançois Tigeot 			    SND_CHN_T_MASK_BR | SND_CHN_T_MASK_BC	\
638*2a1ad637SFrançois Tigeot 		},							\
639*2a1ad637SFrançois Tigeot 		/* Center */						\
640*2a1ad637SFrançois Tigeot 		[4] = {							\
641*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_FC,				\
642*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_FC			\
643*2a1ad637SFrançois Tigeot 		},							\
644*2a1ad637SFrançois Tigeot 		/* LFE */						\
645*2a1ad637SFrançois Tigeot 		[5] = {							\
646*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_LF,				\
647*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_LF			\
648*2a1ad637SFrançois Tigeot 		},							\
649*2a1ad637SFrançois Tigeot 		/* Side Left */						\
650*2a1ad637SFrançois Tigeot 		[6] = {							\
651*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_SL,				\
652*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_SL			\
653*2a1ad637SFrançois Tigeot 		},							\
654*2a1ad637SFrançois Tigeot 		/* Side Right */					\
655*2a1ad637SFrançois Tigeot 		[7] = {							\
656*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_SR,				\
657*2a1ad637SFrançois Tigeot 			.members = SND_CHN_T_MASK_SR			\
658*2a1ad637SFrançois Tigeot 		},							\
659*2a1ad637SFrançois Tigeot 		[8] = {							\
660*2a1ad637SFrançois Tigeot 			.type = SND_CHN_T_MAX,				\
661*2a1ad637SFrançois Tigeot 			.members = 0					\
662*2a1ad637SFrançois Tigeot 		}							\
663*2a1ad637SFrançois Tigeot 	},								\
664*2a1ad637SFrançois Tigeot 	.mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR |			\
665*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR |			\
666*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_FC | SND_CHN_T_MASK_LF |			\
667*2a1ad637SFrançois Tigeot 		SND_CHN_T_MASK_SL | SND_CHN_T_MASK_SR,			\
668*2a1ad637SFrançois Tigeot 	.offset = {  0,  1,  4,  5,  2,  3, -1, -1, -1,			\
669*2a1ad637SFrançois Tigeot 		     6,  7, -1, -1, -1, -1, -1, -1, -1  }		\
670*2a1ad637SFrançois Tigeot }
671*2a1ad637SFrançois Tigeot 
672*2a1ad637SFrançois Tigeot #endif	/* !_SND_MATRIX_MAP_H_ */
673