1193640Sariff/*- 2193640Sariff * Copyright (c) 2009 Ariff Abdullah <ariff@FreeBSD.org> 3193640Sariff * All rights reserved. 4193640Sariff * 5193640Sariff * Redistribution and use in source and binary forms, with or without 6193640Sariff * modification, are permitted provided that the following conditions 7193640Sariff * are met: 8193640Sariff * 1. Redistributions of source code must retain the above copyright 9193640Sariff * notice, this list of conditions and the following disclaimer. 10193640Sariff * 2. Redistributions in binary form must reproduce the above copyright 11193640Sariff * notice, this list of conditions and the following disclaimer in the 12193640Sariff * documentation and/or other materials provided with the distribution. 13193640Sariff * 14193640Sariff * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15193640Sariff * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16193640Sariff * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17193640Sariff * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18193640Sariff * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19193640Sariff * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20193640Sariff * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21193640Sariff * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22193640Sariff * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23193640Sariff * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24193640Sariff * SUCH DAMAGE. 25193640Sariff * 26193640Sariff * $FreeBSD$ 27193640Sariff */ 28193640Sariff 29193640Sariff#ifndef _SND_MATRIX_MAP_H_ 30193640Sariff#define _SND_MATRIX_MAP_H_ 31193640Sariff 32193640Sariff/* 33193640Sariff * Standard matrix maps: 34193640Sariff * 35193640Sariff * struct pcmchan_matrix { 36193640Sariff * .id = Matrix identity (see matrix.h). Custom defined should use 37193640Sariff * one of SND_CHN_MATRIX_MISC (for whatever purposes) or 38193640Sariff * SND_CHN_MATRIX_DRV (hardware driver). 39193640Sariff * .channels = Total number of channels, including whatever 'extended' 40193640Sariff * (the X.ext notions, mostly LFE). 41193640Sariff * .ext = Total number of extended channels (LFE). 42193640Sariff * .map = { 43193640Sariff * Sequences of channel type and interleave structure. 44193640Sariff * [interleave offset] = { 45193640Sariff * .type = channel type (see matrix.h). 46193640Sariff * .members = Masks of channels that is acceptable as a 47193640Sariff * member of this channel type. 48193640Sariff * }, 49193640Sariff * [total channels] = { 50193640Sariff * .type = Maximum channels marker (SND_CHN_T_MAX). 51193640Sariff * .members = 0 (no channels allowed here). 52193640Sariff * }, 53193640Sariff * }, 54193640Sariff * .mask = Mask of channels that exist in this map. 55193640Sariff * .offset = { 56193640Sariff * channel offset that directly translate to the above interleave 57193640Sariff * offset according to SND_CHN_T_* definitions. 58193640Sariff * } 59193640Sariff * }; 60193640Sariff * 61193640Sariff * Rule of thumb: Avoid using SND_CHN_T_* that is marked with XXX (matrix.h), 62193640Sariff * or be prepared for the horror to come. 63193640Sariff * 64193640Sariff */ 65193640Sariff 66193640Sariff#define SND_CHN_MATRIX_MAP_1_0 { \ 67193640Sariff .id = SND_CHN_MATRIX_1_0, \ 68193640Sariff .channels = 1, \ 69193640Sariff .ext = 0, \ 70193640Sariff .map = { \ 71193640Sariff /* Mono, center, etc. */ \ 72193640Sariff [0] = { \ 73193640Sariff .type = SND_CHN_T_FL, \ 74193640Sariff .members = \ 75193640Sariff SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR | \ 76193640Sariff SND_CHN_T_MASK_FC | SND_CHN_T_MASK_LF | \ 77193640Sariff SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR | \ 78193640Sariff SND_CHN_T_MASK_BC | SND_CHN_T_MASK_SL | \ 79193640Sariff SND_CHN_T_MASK_SR \ 80193640Sariff }, \ 81193640Sariff [1] = { \ 82193640Sariff .type = SND_CHN_T_MAX, \ 83193640Sariff .members = 0 \ 84193640Sariff } \ 85193640Sariff }, \ 86193640Sariff .mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR | \ 87193640Sariff SND_CHN_T_MASK_FC, \ 88193640Sariff .offset = { 0, 0, 0, 0, 0, 0, -1, -1, 0, \ 89193640Sariff 0, 0, -1, -1, -1, -1, -1, -1, -1 } \ 90193640Sariff} 91193640Sariff 92193640Sariff#define SND_CHN_MATRIX_MAP_2_0 { \ 93193640Sariff .id = SND_CHN_MATRIX_2_0, \ 94193640Sariff .channels = 2, \ 95193640Sariff .ext = 0, \ 96193640Sariff .map = { \ 97193640Sariff /* Left */ \ 98193640Sariff [0] = { \ 99193640Sariff .type = SND_CHN_T_FL, \ 100193640Sariff .members = \ 101193640Sariff SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FC | \ 102193640Sariff SND_CHN_T_MASK_LF | SND_CHN_T_MASK_BL | \ 103193640Sariff SND_CHN_T_MASK_BC | SND_CHN_T_MASK_SL \ 104193640Sariff }, \ 105193640Sariff /* Right */ \ 106193640Sariff [1] = { \ 107193640Sariff .type = SND_CHN_T_FR, \ 108193640Sariff .members = \ 109193640Sariff SND_CHN_T_MASK_FR | SND_CHN_T_MASK_FC | \ 110193640Sariff SND_CHN_T_MASK_LF | SND_CHN_T_MASK_BR | \ 111193640Sariff SND_CHN_T_MASK_BC | SND_CHN_T_MASK_SR \ 112193640Sariff }, \ 113193640Sariff [2] = { \ 114193640Sariff .type = SND_CHN_T_MAX, \ 115193640Sariff .members = 0 \ 116193640Sariff } \ 117193640Sariff }, \ 118193640Sariff .mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR, \ 119193640Sariff .offset = { 0, 1, -1, -1, -1, -1, -1, -1, -1, \ 120193640Sariff -1, -1, -1, -1, -1, -1, -1, -1, -1 } \ 121193640Sariff} 122193640Sariff 123193640Sariff#define SND_CHN_MATRIX_MAP_2_1 { \ 124193640Sariff .id = SND_CHN_MATRIX_2_1, \ 125193640Sariff .channels = 3, \ 126193640Sariff .ext = 1, \ 127193640Sariff .map = { \ 128193640Sariff /* Left */ \ 129193640Sariff [0] = { \ 130193640Sariff .type = SND_CHN_T_FL, \ 131193640Sariff .members = \ 132193640Sariff SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FC | \ 133193640Sariff SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BC | \ 134193640Sariff SND_CHN_T_MASK_SL \ 135193640Sariff }, \ 136193640Sariff /* Right */ \ 137193640Sariff [1] = { \ 138193640Sariff .type = SND_CHN_T_FR, \ 139193640Sariff .members = \ 140193640Sariff SND_CHN_T_MASK_FR | SND_CHN_T_MASK_FC | \ 141193640Sariff SND_CHN_T_MASK_BR | SND_CHN_T_MASK_BC | \ 142193640Sariff SND_CHN_T_MASK_SR \ 143193640Sariff }, \ 144193640Sariff /* LFE */ \ 145193640Sariff [2] = { \ 146193640Sariff .type = SND_CHN_T_LF, \ 147193640Sariff .members = SND_CHN_T_MASK_LF \ 148193640Sariff }, \ 149193640Sariff [3] = { \ 150193640Sariff .type = SND_CHN_T_MAX, \ 151193640Sariff .members = 0 \ 152193640Sariff } \ 153193640Sariff }, \ 154193640Sariff .mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR | \ 155193640Sariff SND_CHN_T_MASK_LF, \ 156193640Sariff .offset = { 0, 1, -1, 2, -1, -1, -1, -1, -1, \ 157193640Sariff -1, -1, -1, -1, -1, -1, -1, -1, -1 } \ 158193640Sariff} 159193640Sariff 160193640Sariff#define SND_CHN_MATRIX_MAP_3_0 { /* 3 channels default */ \ 161193640Sariff .id = SND_CHN_MATRIX_3_0, \ 162193640Sariff .channels = 3, \ 163193640Sariff .ext = 0, \ 164193640Sariff .map = { \ 165193640Sariff /* Left */ \ 166193640Sariff [0] = { \ 167193640Sariff .type = SND_CHN_T_FL, \ 168193640Sariff .members = \ 169193640Sariff SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FC | \ 170193640Sariff SND_CHN_T_MASK_LF | SND_CHN_T_MASK_SL \ 171193640Sariff }, \ 172193640Sariff /* Right */ \ 173193640Sariff [1] = { \ 174193640Sariff .type = SND_CHN_T_FR, \ 175193640Sariff .members = \ 176193640Sariff SND_CHN_T_MASK_FR | SND_CHN_T_MASK_FC | \ 177193640Sariff SND_CHN_T_MASK_LF | SND_CHN_T_MASK_SR \ 178193640Sariff }, \ 179193640Sariff /* Rear Center */ \ 180193640Sariff [2] = { \ 181193640Sariff .type = SND_CHN_T_BC, \ 182193640Sariff .members = \ 183193640Sariff SND_CHN_T_MASK_LF | SND_CHN_T_MASK_BL | \ 184193640Sariff SND_CHN_T_MASK_BR | SND_CHN_T_MASK_BC | \ 185193640Sariff SND_CHN_T_MASK_SL | SND_CHN_T_MASK_SR \ 186193640Sariff }, \ 187193640Sariff [3] = { \ 188193640Sariff .type = SND_CHN_T_MAX, \ 189193640Sariff .members = 0 \ 190193640Sariff } \ 191193640Sariff }, \ 192193640Sariff .mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR | \ 193193640Sariff SND_CHN_T_MASK_BC, \ 194193640Sariff .offset = { 0, 1, -1, -1, -1, -1, -1, -1, 2, \ 195193640Sariff -1, -1, -1, -1, -1, -1, -1, -1, -1 } \ 196193640Sariff} 197193640Sariff 198193640Sariff#define SND_CHN_MATRIX_MAP_4_0 { \ 199193640Sariff .id = SND_CHN_MATRIX_4_0, \ 200193640Sariff .channels = 4, \ 201193640Sariff .ext = 0, \ 202193640Sariff .map = { \ 203193640Sariff /* Left */ \ 204193640Sariff [0] = { \ 205193640Sariff .type = SND_CHN_T_FL, \ 206193640Sariff .members = \ 207193640Sariff SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FC | \ 208193640Sariff SND_CHN_T_MASK_LF | SND_CHN_T_MASK_SL \ 209193640Sariff }, \ 210193640Sariff /* Right */ \ 211193640Sariff [1] = { \ 212193640Sariff .type = SND_CHN_T_FR, \ 213193640Sariff .members = \ 214193640Sariff SND_CHN_T_MASK_FR | SND_CHN_T_MASK_FC | \ 215193640Sariff SND_CHN_T_MASK_LF | SND_CHN_T_MASK_SR \ 216193640Sariff }, \ 217193640Sariff /* Rear Left */ \ 218193640Sariff [2] = { \ 219193640Sariff .type = SND_CHN_T_BL, \ 220193640Sariff .members = \ 221193640Sariff SND_CHN_T_MASK_LF | SND_CHN_T_MASK_BL | \ 222193640Sariff SND_CHN_T_MASK_BC | SND_CHN_T_MASK_SL \ 223193640Sariff }, \ 224193640Sariff /* Rear Right */ \ 225193640Sariff [3] = { \ 226193640Sariff .type = SND_CHN_T_BR, \ 227193640Sariff .members = \ 228193640Sariff SND_CHN_T_MASK_LF | SND_CHN_T_MASK_BR | \ 229193640Sariff SND_CHN_T_MASK_BC | SND_CHN_T_MASK_SR \ 230193640Sariff }, \ 231193640Sariff [4] = { \ 232193640Sariff .type = SND_CHN_T_MAX, \ 233193640Sariff .members = 0 \ 234193640Sariff } \ 235193640Sariff }, \ 236193640Sariff .mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR | \ 237193640Sariff SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR, \ 238193640Sariff .offset = { 0, 1, -1, -1, 2, 3, -1, -1, -1, \ 239193640Sariff -1, -1, -1, -1, -1, -1, -1, -1, -1 } \ 240193640Sariff} 241193640Sariff 242193640Sariff#define SND_CHN_MATRIX_MAP_4_1 { \ 243193640Sariff .id = SND_CHN_MATRIX_4_1, \ 244193640Sariff .channels = 5, \ 245193640Sariff .ext = 1, \ 246193640Sariff .map = { \ 247193640Sariff /* Left */ \ 248193640Sariff [0] = { \ 249193640Sariff .type = SND_CHN_T_FL, \ 250193640Sariff .members = \ 251193640Sariff SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FC | \ 252193640Sariff SND_CHN_T_MASK_SL \ 253193640Sariff }, \ 254193640Sariff /* Right */ \ 255193640Sariff [1] = { \ 256193640Sariff .type = SND_CHN_T_FR, \ 257193640Sariff .members = \ 258193640Sariff SND_CHN_T_MASK_FR | SND_CHN_T_MASK_FC | \ 259193640Sariff SND_CHN_T_MASK_SR \ 260193640Sariff }, \ 261193640Sariff /* Rear Left */ \ 262193640Sariff [2] = { \ 263193640Sariff .type = SND_CHN_T_BL, \ 264193640Sariff .members = \ 265193640Sariff SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BC | \ 266193640Sariff SND_CHN_T_MASK_SL \ 267193640Sariff }, \ 268193640Sariff /* Rear Right */ \ 269193640Sariff [3] = { \ 270193640Sariff .type = SND_CHN_T_BR, \ 271193640Sariff .members = \ 272193640Sariff SND_CHN_T_MASK_BR | SND_CHN_T_MASK_BC | \ 273193640Sariff SND_CHN_T_MASK_SR \ 274193640Sariff }, \ 275193640Sariff /* LFE */ \ 276193640Sariff [4] = { \ 277193640Sariff .type = SND_CHN_T_LF, \ 278193640Sariff .members = SND_CHN_T_MASK_LF \ 279193640Sariff }, \ 280193640Sariff [5] = { \ 281193640Sariff .type = SND_CHN_T_MAX, \ 282193640Sariff .members = 0 \ 283193640Sariff } \ 284193640Sariff }, \ 285193640Sariff .mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR | \ 286193640Sariff SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR | \ 287193640Sariff SND_CHN_T_MASK_LF, \ 288193640Sariff .offset = { 0, 1, -1, 4, 2, 3, -1, -1, -1, \ 289193640Sariff -1, -1, -1, -1, -1, -1, -1, -1, -1 } \ 290193640Sariff} 291193640Sariff 292193640Sariff#define SND_CHN_MATRIX_MAP_5_0 { /* 5 channels default */ \ 293193640Sariff .id = SND_CHN_MATRIX_5_0, \ 294193640Sariff .channels = 5, \ 295193640Sariff .ext = 0, \ 296193640Sariff .map = { \ 297193640Sariff /* Left */ \ 298193640Sariff [0] = { \ 299193640Sariff .type = SND_CHN_T_FL, \ 300193640Sariff .members = \ 301193640Sariff SND_CHN_T_MASK_FL | SND_CHN_T_MASK_LF | \ 302193640Sariff SND_CHN_T_MASK_SL \ 303193640Sariff }, \ 304193640Sariff /* Right */ \ 305193640Sariff [1] = { \ 306193640Sariff .type = SND_CHN_T_FR, \ 307193640Sariff .members = \ 308193640Sariff SND_CHN_T_MASK_FR | SND_CHN_T_MASK_LF | \ 309193640Sariff SND_CHN_T_MASK_SR \ 310193640Sariff }, \ 311193640Sariff /* Rear Left */ \ 312193640Sariff [2] = { \ 313193640Sariff .type = SND_CHN_T_BL, \ 314193640Sariff .members = \ 315193640Sariff SND_CHN_T_MASK_LF | SND_CHN_T_MASK_BL | \ 316193640Sariff SND_CHN_T_MASK_BC | SND_CHN_T_MASK_SL \ 317193640Sariff }, \ 318193640Sariff /* Rear Right */ \ 319193640Sariff [3] = { \ 320193640Sariff .type = SND_CHN_T_BR, \ 321193640Sariff .members = \ 322193640Sariff SND_CHN_T_MASK_LF | SND_CHN_T_MASK_BR | \ 323193640Sariff SND_CHN_T_MASK_BC | SND_CHN_T_MASK_SR \ 324193640Sariff }, \ 325193640Sariff /* Center */ \ 326193640Sariff [4] = { \ 327193640Sariff .type = SND_CHN_T_FC, \ 328193640Sariff .members = SND_CHN_T_MASK_FC \ 329193640Sariff }, \ 330193640Sariff [5] = { \ 331193640Sariff .type = SND_CHN_T_MAX, \ 332193640Sariff .members = 0 \ 333193640Sariff } \ 334193640Sariff }, \ 335193640Sariff .mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR | \ 336193640Sariff SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR | \ 337193640Sariff SND_CHN_T_MASK_FC, \ 338193640Sariff .offset = { 0, 1, 4, -1, 2, 3, -1, -1, -1, \ 339193640Sariff -1, -1, -1, -1, -1, -1, -1, -1, -1 } \ 340193640Sariff} 341193640Sariff 342193640Sariff#define SND_CHN_MATRIX_MAP_5_1 { /* 6 channels default */ \ 343193640Sariff .id = SND_CHN_MATRIX_5_1, \ 344193640Sariff .channels = 6, \ 345193640Sariff .ext = 1, \ 346193640Sariff .map = { \ 347193640Sariff /* Left */ \ 348193640Sariff [0] = { \ 349193640Sariff .type = SND_CHN_T_FL, \ 350193640Sariff .members = \ 351193640Sariff SND_CHN_T_MASK_FL | SND_CHN_T_MASK_SL \ 352193640Sariff }, \ 353193640Sariff /* Right */ \ 354193640Sariff [1] = { \ 355193640Sariff .type = SND_CHN_T_FR, \ 356193640Sariff .members = \ 357193640Sariff SND_CHN_T_MASK_FR | SND_CHN_T_MASK_SR \ 358193640Sariff }, \ 359193640Sariff /* Rear Left */ \ 360193640Sariff [2] = { \ 361193640Sariff .type = SND_CHN_T_BL, \ 362193640Sariff .members = \ 363193640Sariff SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BC | \ 364193640Sariff SND_CHN_T_MASK_SL \ 365193640Sariff }, \ 366193640Sariff /* Rear Right */ \ 367193640Sariff [3] = { \ 368193640Sariff .type = SND_CHN_T_BR, \ 369193640Sariff .members = \ 370193640Sariff SND_CHN_T_MASK_BR | SND_CHN_T_MASK_BC | \ 371193640Sariff SND_CHN_T_MASK_SR \ 372193640Sariff }, \ 373193640Sariff /* Center */ \ 374193640Sariff [4] = { \ 375193640Sariff .type = SND_CHN_T_FC, \ 376193640Sariff .members = SND_CHN_T_MASK_FC \ 377193640Sariff }, \ 378193640Sariff /* LFE */ \ 379193640Sariff [5] = { \ 380193640Sariff .type = SND_CHN_T_LF, \ 381193640Sariff .members = SND_CHN_T_MASK_LF \ 382193640Sariff }, \ 383193640Sariff [6] = { \ 384193640Sariff .type = SND_CHN_T_MAX, \ 385193640Sariff .members = 0 \ 386193640Sariff } \ 387193640Sariff }, \ 388193640Sariff .mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR | \ 389193640Sariff SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR | \ 390193640Sariff SND_CHN_T_MASK_FC | SND_CHN_T_MASK_LF, \ 391193640Sariff .offset = { 0, 1, 4, 5, 2, 3, -1, -1, -1, \ 392193640Sariff -1, -1, -1, -1, -1, -1, -1, -1, -1 } \ 393193640Sariff} 394193640Sariff 395193640Sariff#define SND_CHN_MATRIX_MAP_6_0 { \ 396193640Sariff .id = SND_CHN_MATRIX_6_0, \ 397193640Sariff .channels = 6, \ 398193640Sariff .ext = 0, \ 399193640Sariff .map = { \ 400193640Sariff /* Left */ \ 401193640Sariff [0] = { \ 402193640Sariff .type = SND_CHN_T_FL, \ 403193640Sariff .members = \ 404193640Sariff SND_CHN_T_MASK_FL | SND_CHN_T_MASK_LF | \ 405193640Sariff SND_CHN_T_MASK_SL \ 406193640Sariff }, \ 407193640Sariff /* Right */ \ 408193640Sariff [1] = { \ 409193640Sariff .type = SND_CHN_T_FR, \ 410193640Sariff .members = \ 411193640Sariff SND_CHN_T_MASK_FR | SND_CHN_T_MASK_LF | \ 412193640Sariff SND_CHN_T_MASK_SR \ 413193640Sariff }, \ 414193640Sariff /* Rear Left */ \ 415193640Sariff [2] = { \ 416193640Sariff .type = SND_CHN_T_BL, \ 417193640Sariff .members = \ 418193640Sariff SND_CHN_T_MASK_BL | SND_CHN_T_MASK_LF | \ 419193640Sariff SND_CHN_T_MASK_SL \ 420193640Sariff }, \ 421193640Sariff /* Rear Right */ \ 422193640Sariff [3] = { \ 423193640Sariff .type = SND_CHN_T_BR, \ 424193640Sariff .members = \ 425193640Sariff SND_CHN_T_MASK_BR | SND_CHN_T_MASK_LF | \ 426193640Sariff SND_CHN_T_MASK_SR \ 427193640Sariff }, \ 428193640Sariff /* Center */ \ 429193640Sariff [4] = { \ 430193640Sariff .type = SND_CHN_T_FC, \ 431193640Sariff .members = SND_CHN_T_MASK_FC \ 432193640Sariff }, \ 433193640Sariff /* Rear Center */ \ 434193640Sariff [5] = { \ 435193640Sariff .type = SND_CHN_T_BC, \ 436193640Sariff .members = SND_CHN_T_MASK_BC \ 437193640Sariff }, \ 438193640Sariff [6] = { \ 439193640Sariff .type = SND_CHN_T_MAX, \ 440193640Sariff .members = 0 \ 441193640Sariff } \ 442193640Sariff }, \ 443193640Sariff .mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR | \ 444193640Sariff SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR | \ 445193640Sariff SND_CHN_T_MASK_FC | SND_CHN_T_MASK_BC, \ 446193640Sariff .offset = { 0, 1, 4, -1, 2, 3, -1, -1, 5, \ 447193640Sariff -1, -1, -1, -1, -1, -1, -1, -1, -1 } \ 448193640Sariff} 449193640Sariff 450193640Sariff#define SND_CHN_MATRIX_MAP_6_1 { \ 451193640Sariff .id = SND_CHN_MATRIX_6_1, \ 452193640Sariff .channels = 7, \ 453193640Sariff .ext = 1, \ 454193640Sariff .map = { \ 455193640Sariff /* Left */ \ 456193640Sariff [0] = { \ 457193640Sariff .type = SND_CHN_T_FL, \ 458193640Sariff .members = \ 459193640Sariff SND_CHN_T_MASK_FL | SND_CHN_T_MASK_SL \ 460193640Sariff }, \ 461193640Sariff /* Right */ \ 462193640Sariff [1] = { \ 463193640Sariff .type = SND_CHN_T_FR, \ 464193640Sariff .members = \ 465193640Sariff SND_CHN_T_MASK_FR | SND_CHN_T_MASK_SR \ 466193640Sariff }, \ 467193640Sariff /* Rear Left */ \ 468193640Sariff [2] = { \ 469193640Sariff .type = SND_CHN_T_BL, \ 470193640Sariff .members = \ 471193640Sariff SND_CHN_T_MASK_BL | SND_CHN_T_MASK_SL \ 472193640Sariff }, \ 473193640Sariff /* Rear Right */ \ 474193640Sariff [3] = { \ 475193640Sariff .type = SND_CHN_T_BR, \ 476193640Sariff .members = \ 477193640Sariff SND_CHN_T_MASK_BR | SND_CHN_T_MASK_SR \ 478193640Sariff }, \ 479193640Sariff /* Center */ \ 480193640Sariff [4] = { \ 481193640Sariff .type = SND_CHN_T_FC, \ 482193640Sariff .members = SND_CHN_T_MASK_FC \ 483193640Sariff }, \ 484193640Sariff /* LFE */ \ 485193640Sariff [5] = { \ 486193640Sariff .type = SND_CHN_T_LF, \ 487193640Sariff .members = SND_CHN_T_MASK_LF \ 488193640Sariff }, \ 489193640Sariff /* Rear Center */ \ 490193640Sariff [6] = { \ 491193640Sariff .type = SND_CHN_T_BC, \ 492193640Sariff .members = SND_CHN_T_MASK_BC \ 493193640Sariff }, \ 494193640Sariff [7] = { \ 495193640Sariff .type = SND_CHN_T_MAX, \ 496193640Sariff .members = 0 \ 497193640Sariff } \ 498193640Sariff }, \ 499193640Sariff .mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR | \ 500193640Sariff SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR | \ 501193640Sariff SND_CHN_T_MASK_FC | SND_CHN_T_MASK_LF | \ 502193640Sariff SND_CHN_T_MASK_BC, \ 503193640Sariff .offset = { 0, 1, 4, 5, 2, 3, -1, -1, 6, \ 504193640Sariff -1, -1, -1, -1, -1, -1, -1, -1, -1 } \ 505193640Sariff} 506193640Sariff 507193640Sariff#define SND_CHN_MATRIX_MAP_7_1 { \ 508193640Sariff .id = SND_CHN_MATRIX_7_1, \ 509193640Sariff .channels = 8, \ 510193640Sariff .ext = 1, \ 511193640Sariff .map = { \ 512193640Sariff /* Left */ \ 513193640Sariff [0] = { \ 514193640Sariff .type = SND_CHN_T_FL, \ 515193640Sariff .members = SND_CHN_T_MASK_FL \ 516193640Sariff }, \ 517193640Sariff /* Right */ \ 518193640Sariff [1] = { \ 519193640Sariff .type = SND_CHN_T_FR, \ 520193640Sariff .members = SND_CHN_T_MASK_FR \ 521193640Sariff }, \ 522193640Sariff /* Rear Left */ \ 523193640Sariff [2] = { \ 524193640Sariff .type = SND_CHN_T_BL, \ 525193640Sariff .members = \ 526193640Sariff SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BC \ 527193640Sariff }, \ 528193640Sariff /* Rear Right */ \ 529193640Sariff [3] = { \ 530193640Sariff .type = SND_CHN_T_BR, \ 531193640Sariff .members = \ 532193640Sariff SND_CHN_T_MASK_BR | SND_CHN_T_MASK_BC \ 533193640Sariff }, \ 534193640Sariff /* Center */ \ 535193640Sariff [4] = { \ 536193640Sariff .type = SND_CHN_T_FC, \ 537193640Sariff .members = SND_CHN_T_MASK_FC \ 538193640Sariff }, \ 539193640Sariff /* LFE */ \ 540193640Sariff [5] = { \ 541193640Sariff .type = SND_CHN_T_LF, \ 542193640Sariff .members = SND_CHN_T_MASK_LF \ 543193640Sariff }, \ 544193640Sariff /* Side Left */ \ 545193640Sariff [6] = { \ 546193640Sariff .type = SND_CHN_T_SL, \ 547193640Sariff .members = SND_CHN_T_MASK_SL \ 548193640Sariff }, \ 549193640Sariff /* Side Right */ \ 550193640Sariff [7] = { \ 551193640Sariff .type = SND_CHN_T_SR, \ 552193640Sariff .members = SND_CHN_T_MASK_SR \ 553193640Sariff }, \ 554193640Sariff [8] = { \ 555193640Sariff .type = SND_CHN_T_MAX, \ 556193640Sariff .members = 0 \ 557193640Sariff } \ 558193640Sariff }, \ 559193640Sariff .mask = SND_CHN_T_MASK_FL | SND_CHN_T_MASK_FR | \ 560193640Sariff SND_CHN_T_MASK_BL | SND_CHN_T_MASK_BR | \ 561193640Sariff SND_CHN_T_MASK_FC | SND_CHN_T_MASK_LF | \ 562193640Sariff SND_CHN_T_MASK_SL | SND_CHN_T_MASK_SR, \ 563193640Sariff .offset = { 0, 1, 4, 5, 2, 3, -1, -1, -1, \ 564193640Sariff 6, 7, -1, -1, -1, -1, -1, -1, -1 } \ 565193640Sariff} 566193640Sariff 567193640Sariff#endif /* !_SND_MATRIX_MAP_H_ */ 568