comparison ac3dec.c @ 9512:ba5d9a97ab2f libavcodec

Add channel layout support to the AC-3 decoder and AC-3 parser.
author jbr
date Sun, 19 Apr 2009 15:05:32 +0000
parents 7db61b0d21f9
children 93029f1a4c14
comparison
equal deleted inserted replaced
9511:c2dba7ed94dc 9512:ba5d9a97ab2f
283 return err; 283 return err;
284 284
285 /* get decoding parameters from header info */ 285 /* get decoding parameters from header info */
286 s->bit_alloc_params.sr_code = hdr.sr_code; 286 s->bit_alloc_params.sr_code = hdr.sr_code;
287 s->channel_mode = hdr.channel_mode; 287 s->channel_mode = hdr.channel_mode;
288 s->channel_layout = hdr.channel_layout;
288 s->lfe_on = hdr.lfe_on; 289 s->lfe_on = hdr.lfe_on;
289 s->bit_alloc_params.sr_shift = hdr.sr_shift; 290 s->bit_alloc_params.sr_shift = hdr.sr_shift;
290 s->sample_rate = hdr.sample_rate; 291 s->sample_rate = hdr.sample_rate;
291 s->bit_rate = hdr.bit_rate; 292 s->bit_rate = hdr.bit_rate;
292 s->channels = hdr.channels; 293 s->channels = hdr.channels;
1305 s->output_mode |= AC3_OUTPUT_LFEON; 1306 s->output_mode |= AC3_OUTPUT_LFEON;
1306 if (avctx->request_channels > 0 && avctx->request_channels <= 2 && 1307 if (avctx->request_channels > 0 && avctx->request_channels <= 2 &&
1307 avctx->request_channels < s->channels) { 1308 avctx->request_channels < s->channels) {
1308 s->out_channels = avctx->request_channels; 1309 s->out_channels = avctx->request_channels;
1309 s->output_mode = avctx->request_channels == 1 ? AC3_CHMODE_MONO : AC3_CHMODE_STEREO; 1310 s->output_mode = avctx->request_channels == 1 ? AC3_CHMODE_MONO : AC3_CHMODE_STEREO;
1311 s->channel_layout = ff_ac3_channel_layout_tab[s->output_mode];
1310 } 1312 }
1311 avctx->channels = s->out_channels; 1313 avctx->channels = s->out_channels;
1314 avctx->channel_layout = s->channel_layout;
1312 1315
1313 /* set downmixing coefficients if needed */ 1316 /* set downmixing coefficients if needed */
1314 if(s->channels != s->out_channels && !((s->output_mode & AC3_OUTPUT_LFEON) && 1317 if(s->channels != s->out_channels && !((s->output_mode & AC3_OUTPUT_LFEON) &&
1315 s->fbw_channels == s->out_channels)) { 1318 s->fbw_channels == s->out_channels)) {
1316 set_downmix_coeffs(s); 1319 set_downmix_coeffs(s);