comparison dca.c @ 8102:04295cbc0e9b libavcodec

Change multichannel API define prefix from "CHANNEL_" to "CH_".
author andoma
date Sun, 02 Nov 2008 21:04:28 +0000
parents 38c1cbbb4245
children 069d7a8e2e75
comparison
equal deleted inserted replaced
8101:38c1cbbb4245 8102:04295cbc0e9b
64 * are never used so complete accuracy is not needed. 64 * are never used so complete accuracy is not needed.
65 * 65 *
66 * L = left, R = right, C = center, S = surround, F = front, R = rear, T = total, OV = overhead. 66 * L = left, R = right, C = center, S = surround, F = front, R = rear, T = total, OV = overhead.
67 * S -> back, when both rear and back are configured move one of them to the side channel 67 * S -> back, when both rear and back are configured move one of them to the side channel
68 * OV -> center back 68 * OV -> center back
69 * All 2 channel configurations -> CHANNEL_LAYOUT_STEREO 69 * All 2 channel configurations -> CH_LAYOUT_STEREO
70 */ 70 */
71 71
72 static const int64_t dca_core_channel_layout[] = { 72 static const int64_t dca_core_channel_layout[] = {
73 CHANNEL_FRONT_CENTER, ///< 1, A 73 CH_FRONT_CENTER, ///< 1, A
74 CHANNEL_LAYOUT_STEREO, ///< 2, A + B (dual mono) 74 CH_LAYOUT_STEREO, ///< 2, A + B (dual mono)
75 CHANNEL_LAYOUT_STEREO, ///< 2, L + R (stereo) 75 CH_LAYOUT_STEREO, ///< 2, L + R (stereo)
76 CHANNEL_LAYOUT_STEREO, ///< 2, (L+R) + (L-R) (sum-difference) 76 CH_LAYOUT_STEREO, ///< 2, (L+R) + (L-R) (sum-difference)
77 CHANNEL_LAYOUT_STEREO, ///< 2, LT +RT (left and right total) 77 CH_LAYOUT_STEREO, ///< 2, LT +RT (left and right total)
78 CHANNEL_LAYOUT_STEREO|CHANNEL_FRONT_CENTER, ///< 3, C+L+R 78 CH_LAYOUT_STEREO|CH_FRONT_CENTER, ///< 3, C+L+R
79 CHANNEL_LAYOUT_STEREO|CHANNEL_BACK_CENTER, ///< 3, L+R+S 79 CH_LAYOUT_STEREO|CH_BACK_CENTER, ///< 3, L+R+S
80 CHANNEL_LAYOUT_STEREO|CHANNEL_FRONT_CENTER|CHANNEL_BACK_CENTER, ///< 4, C + L + R+ S 80 CH_LAYOUT_STEREO|CH_FRONT_CENTER|CH_BACK_CENTER, ///< 4, C + L + R+ S
81 CHANNEL_LAYOUT_STEREO|CHANNEL_BACK_LEFT|CHANNEL_BACK_RIGHT, ///< 4, L + R+ SL+SR 81 CH_LAYOUT_STEREO|CH_BACK_LEFT|CH_BACK_RIGHT, ///< 4, L + R+ SL+SR
82 CHANNEL_LAYOUT_STEREO|CHANNEL_FRONT_CENTER|CHANNEL_BACK_LEFT|CHANNEL_BACK_RIGHT, ///< 5, C + L + R+ SL+SR 82 CH_LAYOUT_STEREO|CH_FRONT_CENTER|CH_BACK_LEFT|CH_BACK_RIGHT, ///< 5, C + L + R+ SL+SR
83 CHANNEL_LAYOUT_STEREO|CHANNEL_BACK_LEFT|CHANNEL_BACK_RIGHT|CHANNEL_FRONT_LEFT_OF_CENTER|CHANNEL_FRONT_RIGHT_OF_CENTER, ///< 6, CL + CR + L + R + SL + SR 83 CH_LAYOUT_STEREO|CH_BACK_LEFT|CH_BACK_RIGHT|CH_FRONT_LEFT_OF_CENTER|CH_FRONT_RIGHT_OF_CENTER, ///< 6, CL + CR + L + R + SL + SR
84 CHANNEL_LAYOUT_STEREO|CHANNEL_BACK_LEFT|CHANNEL_BACK_RIGHT|CHANNEL_FRONT_CENTER|CHANNEL_BACK_CENTER, ///< 6, C + L + R+ LR + RR + OV 84 CH_LAYOUT_STEREO|CH_BACK_LEFT|CH_BACK_RIGHT|CH_FRONT_CENTER|CH_BACK_CENTER, ///< 6, C + L + R+ LR + RR + OV
85 CHANNEL_FRONT_CENTER|CHANNEL_FRONT_RIGHT_OF_CENTER|CHANNEL_FRONT_LEFT_OF_CENTER|CHANNEL_BACK_CENTER|CHANNEL_BACK_LEFT|CHANNEL_BACK_RIGHT, ///< 6, CF+ CR+LF+ RF+LR + RR 85 CH_FRONT_CENTER|CH_FRONT_RIGHT_OF_CENTER|CH_FRONT_LEFT_OF_CENTER|CH_BACK_CENTER|CH_BACK_LEFT|CH_BACK_RIGHT, ///< 6, CF+ CR+LF+ RF+LR + RR
86 CHANNEL_FRONT_LEFT_OF_CENTER|CHANNEL_FRONT_CENTER|CHANNEL_FRONT_RIGHT_OF_CENTER|CHANNEL_LAYOUT_STEREO|CHANNEL_BACK_LEFT|CHANNEL_BACK_RIGHT, ///< 7, CL + C + CR + L + R + SL + SR 86 CH_FRONT_LEFT_OF_CENTER|CH_FRONT_CENTER|CH_FRONT_RIGHT_OF_CENTER|CH_LAYOUT_STEREO|CH_BACK_LEFT|CH_BACK_RIGHT, ///< 7, CL + C + CR + L + R + SL + SR
87 CHANNEL_FRONT_LEFT_OF_CENTER|CHANNEL_FRONT_RIGHT_OF_CENTER|CHANNEL_LAYOUT_STEREO|CHANNEL_SIDE_LEFT|CHANNEL_SIDE_RIGHT|CHANNEL_BACK_LEFT|CHANNEL_BACK_RIGHT, ///< 8, CL + CR + L + R + SL1 + SL2+ SR1 + SR2 87 CH_FRONT_LEFT_OF_CENTER|CH_FRONT_RIGHT_OF_CENTER|CH_LAYOUT_STEREO|CH_SIDE_LEFT|CH_SIDE_RIGHT|CH_BACK_LEFT|CH_BACK_RIGHT, ///< 8, CL + CR + L + R + SL1 + SL2+ SR1 + SR2
88 CHANNEL_FRONT_LEFT_OF_CENTER|CHANNEL_FRONT_CENTER|CHANNEL_FRONT_RIGHT_OF_CENTER|CHANNEL_LAYOUT_STEREO|CHANNEL_BACK_LEFT|CHANNEL_BACK_CENTER|CHANNEL_BACK_RIGHT, ///< 8, CL + C+ CR + L + R + SL + S+ SR 88 CH_FRONT_LEFT_OF_CENTER|CH_FRONT_CENTER|CH_FRONT_RIGHT_OF_CENTER|CH_LAYOUT_STEREO|CH_BACK_LEFT|CH_BACK_CENTER|CH_BACK_RIGHT, ///< 8, CL + C+ CR + L + R + SL + S+ SR
89 89
90 /* The following entries adds the LFE layouts, this way we can reuse the table for the AVCodec channel_layouts member*/ 90 /* The following entries adds the LFE layouts, this way we can reuse the table for the AVCodec channel_layouts member*/
91 CHANNEL_FRONT_CENTER|CHANNEL_LOW_FREQUENCY, 91 CH_FRONT_CENTER|CH_LOW_FREQUENCY,
92 CHANNEL_LAYOUT_STEREO|CHANNEL_LOW_FREQUENCY, 92 CH_LAYOUT_STEREO|CH_LOW_FREQUENCY,
93 CHANNEL_LAYOUT_STEREO|CHANNEL_FRONT_CENTER|CHANNEL_LOW_FREQUENCY, 93 CH_LAYOUT_STEREO|CH_FRONT_CENTER|CH_LOW_FREQUENCY,
94 CHANNEL_LAYOUT_STEREO|CHANNEL_BACK_CENTER|CHANNEL_LOW_FREQUENCY, 94 CH_LAYOUT_STEREO|CH_BACK_CENTER|CH_LOW_FREQUENCY,
95 CHANNEL_LAYOUT_STEREO|CHANNEL_FRONT_CENTER|CHANNEL_BACK_CENTER|CHANNEL_LOW_FREQUENCY, 95 CH_LAYOUT_STEREO|CH_FRONT_CENTER|CH_BACK_CENTER|CH_LOW_FREQUENCY,
96 CHANNEL_LAYOUT_STEREO|CHANNEL_BACK_LEFT|CHANNEL_BACK_RIGHT|CHANNEL_LOW_FREQUENCY, 96 CH_LAYOUT_STEREO|CH_BACK_LEFT|CH_BACK_RIGHT|CH_LOW_FREQUENCY,
97 CHANNEL_LAYOUT_STEREO|CHANNEL_FRONT_CENTER|CHANNEL_BACK_LEFT|CHANNEL_BACK_RIGHT|CHANNEL_LOW_FREQUENCY, 97 CH_LAYOUT_STEREO|CH_FRONT_CENTER|CH_BACK_LEFT|CH_BACK_RIGHT|CH_LOW_FREQUENCY,
98 CHANNEL_LAYOUT_STEREO|CHANNEL_BACK_LEFT|CHANNEL_BACK_RIGHT|CHANNEL_FRONT_LEFT_OF_CENTER|CHANNEL_FRONT_RIGHT_OF_CENTER|CHANNEL_LOW_FREQUENCY, 98 CH_LAYOUT_STEREO|CH_BACK_LEFT|CH_BACK_RIGHT|CH_FRONT_LEFT_OF_CENTER|CH_FRONT_RIGHT_OF_CENTER|CH_LOW_FREQUENCY,
99 CHANNEL_LAYOUT_STEREO|CHANNEL_BACK_LEFT|CHANNEL_BACK_RIGHT|CHANNEL_FRONT_CENTER|CHANNEL_BACK_CENTER|CHANNEL_LOW_FREQUENCY, 99 CH_LAYOUT_STEREO|CH_BACK_LEFT|CH_BACK_RIGHT|CH_FRONT_CENTER|CH_BACK_CENTER|CH_LOW_FREQUENCY,
100 CHANNEL_FRONT_CENTER|CHANNEL_FRONT_RIGHT_OF_CENTER|CHANNEL_FRONT_LEFT_OF_CENTER|CHANNEL_BACK_CENTER|CHANNEL_BACK_LEFT|CHANNEL_BACK_RIGHT|CHANNEL_LOW_FREQUENCY, 100 CH_FRONT_CENTER|CH_FRONT_RIGHT_OF_CENTER|CH_FRONT_LEFT_OF_CENTER|CH_BACK_CENTER|CH_BACK_LEFT|CH_BACK_RIGHT|CH_LOW_FREQUENCY,
101 CHANNEL_FRONT_LEFT_OF_CENTER|CHANNEL_FRONT_CENTER|CHANNEL_FRONT_RIGHT_OF_CENTER|CHANNEL_LAYOUT_STEREO|CHANNEL_BACK_LEFT|CHANNEL_BACK_RIGHT|CHANNEL_LOW_FREQUENCY, 101 CH_FRONT_LEFT_OF_CENTER|CH_FRONT_CENTER|CH_FRONT_RIGHT_OF_CENTER|CH_LAYOUT_STEREO|CH_BACK_LEFT|CH_BACK_RIGHT|CH_LOW_FREQUENCY,
102 CHANNEL_FRONT_LEFT_OF_CENTER|CHANNEL_FRONT_RIGHT_OF_CENTER|CHANNEL_LAYOUT_STEREO|CHANNEL_SIDE_LEFT|CHANNEL_SIDE_RIGHT|CHANNEL_BACK_LEFT|CHANNEL_BACK_RIGHT|CHANNEL_LOW_FREQUENCY, 102 CH_FRONT_LEFT_OF_CENTER|CH_FRONT_RIGHT_OF_CENTER|CH_LAYOUT_STEREO|CH_SIDE_LEFT|CH_SIDE_RIGHT|CH_BACK_LEFT|CH_BACK_RIGHT|CH_LOW_FREQUENCY,
103 CHANNEL_FRONT_LEFT_OF_CENTER|CHANNEL_FRONT_CENTER|CHANNEL_FRONT_RIGHT_OF_CENTER|CHANNEL_LAYOUT_STEREO|CHANNEL_BACK_LEFT|CHANNEL_BACK_CENTER|CHANNEL_BACK_RIGHT|CHANNEL_LOW_FREQUENCY, 103 CH_FRONT_LEFT_OF_CENTER|CH_FRONT_CENTER|CH_FRONT_RIGHT_OF_CENTER|CH_LAYOUT_STEREO|CH_BACK_LEFT|CH_BACK_CENTER|CH_BACK_RIGHT|CH_LOW_FREQUENCY,
104 0, 104 0,
105 }; 105 };
106 106
107 107
108 #define DCA_DOLBY 101 /* FIXME */ 108 #define DCA_DOLBY 101 /* FIXME */
1209 1209
1210 channels = s->prim_channels + !!s->lfe; 1210 channels = s->prim_channels + !!s->lfe;
1211 if(avctx->request_channels == 2 && s->prim_channels > 2) { 1211 if(avctx->request_channels == 2 && s->prim_channels > 2) {
1212 channels = 2; 1212 channels = 2;
1213 s->output = DCA_STEREO; 1213 s->output = DCA_STEREO;
1214 avctx->channel_layout = CHANNEL_LAYOUT_STEREO; 1214 avctx->channel_layout = CH_LAYOUT_STEREO;
1215 } 1215 }
1216 if (s->amode<16) 1216 if (s->amode<16)
1217 avctx->channel_layout = dca_core_channel_layout[s->amode]; 1217 avctx->channel_layout = dca_core_channel_layout[s->amode];
1218 1218
1219 if (s->lfe) avctx->channel_layout |= CHANNEL_LOW_FREQUENCY; 1219 if (s->lfe) avctx->channel_layout |= CH_LOW_FREQUENCY;
1220 1220
1221 /* There is nothing that prevents a dts frame to change channel configuration 1221 /* There is nothing that prevents a dts frame to change channel configuration
1222 but FFmpeg doesn't support that so only set the channels if it is previously 1222 but FFmpeg doesn't support that so only set the channels if it is previously
1223 unset. Ideally during the first probe for channels the crc should be checked 1223 unset. Ideally during the first probe for channels the crc should be checked
1224 and only set avctx->channels when the crc is ok. Right now the decoder could 1224 and only set avctx->channels when the crc is ok. Right now the decoder could