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