Mercurial > libavcodec.hg
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); |