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