]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Allow parsing and decoding of ADTS AAC files with channel config = 0
authoralexc <alexc@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Wed, 13 May 2009 17:57:58 +0000 (17:57 +0000)
committeralexc <alexc@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Wed, 13 May 2009 17:57:58 +0000 (17:57 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18815 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/aac.c
libavcodec/aac_ac3_parser.c
libavcodec/aac_parser.c

index 5c3e2aade1818593dbeea8b5b5d0553989b13abb..5427d7c672c51f131f4646c91c10280c21391434 100644 (file)
@@ -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;
index b51f1769f72fe8841dd545208749d1409dcc3170..90cbb9535c1a7c64f721a0a1e3f39783d17b58cf 100644 (file)
@@ -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;
index ab8e092ddaf050f155db9b419a1ce2dd9a493b88..30ce04d4ad7a62fc7c1f2e07a728219e19337792 100644 (file)
@@ -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 */