summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorAlex Converse <alex.converse@gmail.com>2009-05-13 17:57:58 +0000
committerAlex Converse <alex.converse@gmail.com>2009-05-13 17:57:58 +0000
commit90350d73f8b6bb281d9028ad1adf4805a8bce717 (patch)
tree5d578c80d73a85c29ff0eabb386aeed7b9bb53f0 /libavcodec
parentee373ddffd2b2eb223804db5d7c35e692146f7cc (diff)
Allow parsing and decoding of ADTS AAC files with channel config = 0
Originally committed as revision 18815 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/aac.c6
-rw-r--r--libavcodec/aac_ac3_parser.c2
-rw-r--r--libavcodec/aac_parser.c3
3 files changed, 2 insertions, 9 deletions
diff --git a/libavcodec/aac.c b/libavcodec/aac.c
index 5c3e2aade1..5427d7c672 100644
--- a/libavcodec/aac.c
+++ b/libavcodec/aac.c
@@ -162,9 +162,6 @@ static int output_configure(AACContext *ac, enum ChannelPosition che_pos[4][MAX_
AVCodecContext *avctx = ac->avccontext;
int i, type, channels = 0;
- if(!memcmp(che_pos, new_che_pos, 4 * MAX_ELEM_ID * sizeof(new_che_pos[0][0])))
- return 0; /* no change */
-
memcpy(che_pos, new_che_pos, 4 * MAX_ELEM_ID * sizeof(new_che_pos[0][0]));
/* Allocate or free elements depending on if they are in the
@@ -458,9 +455,6 @@ static av_cold int aac_decode_init(AVCodecContext * avccontext) {
if(output_configure(ac, ac->che_pos, new_che_pos, 1))
return -1;
ac->m4ac.sample_rate = avccontext->sample_rate;
- } else {
- ff_log_missing_feature(ac->avccontext, "Implicit channel configuration is", 0);
- return -1;
}
avccontext->sample_fmt = SAMPLE_FMT_S16;
diff --git a/libavcodec/aac_ac3_parser.c b/libavcodec/aac_ac3_parser.c
index b51f1769f7..90cbb9535c 100644
--- a/libavcodec/aac_ac3_parser.c
+++ b/libavcodec/aac_ac3_parser.c
@@ -84,8 +84,10 @@ get_next:
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;
+ }
}
avctx->bit_rate = s->bit_rate;
avctx->frame_size = s->samples;
diff --git a/libavcodec/aac_parser.c b/libavcodec/aac_parser.c
index ab8e092dda..30ce04d4ad 100644
--- a/libavcodec/aac_parser.c
+++ b/libavcodec/aac_parser.c
@@ -44,9 +44,6 @@ int ff_aac_parse_header(GetBitContext *gbc, AACADTSHeaderInfo *hdr)
skip_bits1(gbc); /* private_bit */
ch = get_bits(gbc, 3); /* channel_configuration */
- if(!ff_mpeg4audio_channels[ch])
- return AAC_AC3_PARSE_ERROR_CHANNEL_CFG;
-
skip_bits1(gbc); /* original/copy */
skip_bits1(gbc); /* home */