| Index: patched-ffmpeg-mt/libavcodec/aac_ac3_parser.c
|
| ===================================================================
|
| --- patched-ffmpeg-mt/libavcodec/aac_ac3_parser.c (revision 41250)
|
| +++ patched-ffmpeg-mt/libavcodec/aac_ac3_parser.c (working copy)
|
| @@ -71,24 +71,32 @@
|
| *poutbuf_size = buf_size;
|
|
|
| /* update codec info */
|
| - avctx->sample_rate = s->sample_rate;
|
| if(s->codec_id)
|
| avctx->codec_id = s->codec_id;
|
|
|
| - /* allow downmixing to stereo (or mono for AC-3) */
|
| - if(avctx->request_channels > 0 &&
|
| - avctx->request_channels < s->channels &&
|
| - (avctx->request_channels <= 2 ||
|
| - (avctx->request_channels == 1 &&
|
| - (avctx->codec_id == CODEC_ID_AC3 ||
|
| - avctx->codec_id == CODEC_ID_EAC3)))) {
|
| - avctx->channels = avctx->request_channels;
|
| - } else if (avctx->codec_id != CODEC_ID_AAC || s->channels) {
|
| - avctx->channels = s->channels;
|
| - avctx->channel_layout = s->channel_layout;
|
| + /* Due to backwards compatible HE-AAC the sample rate, channel count,
|
| + and total number of samples found in an AAC ADTS header are not
|
| + reliable. Bit rate is still accurate because the total frame duration in
|
| + seconds is still correct (as is the number of bits in the frame). */
|
| + if (avctx->codec_id != CODEC_ID_AAC) {
|
| + avctx->sample_rate = s->sample_rate;
|
| +
|
| + /* allow downmixing to stereo (or mono for AC-3) */
|
| + if(avctx->request_channels > 0 &&
|
| + avctx->request_channels < s->channels &&
|
| + (avctx->request_channels <= 2 ||
|
| + (avctx->request_channels == 1 &&
|
| + (avctx->codec_id == CODEC_ID_AC3 ||
|
| + avctx->codec_id == CODEC_ID_EAC3)))) {
|
| + avctx->channels = avctx->request_channels;
|
| + } else {
|
| + avctx->channels = s->channels;
|
| + avctx->channel_layout = s->channel_layout;
|
| + }
|
| + avctx->frame_size = s->samples;
|
| }
|
| +
|
| avctx->bit_rate = s->bit_rate;
|
| - avctx->frame_size = s->samples;
|
|
|
| return i;
|
| }
|
|
|