Merge commit '1b90433f79de857550d4d8c35c89fbe954920594'
authorHendrik Leppkes <h.leppkes@gmail.com>
Tue, 18 Aug 2015 07:05:54 +0000 (09:05 +0200)
committerHendrik Leppkes <h.leppkes@gmail.com>
Tue, 18 Aug 2015 07:05:54 +0000 (09:05 +0200)
* commit '1b90433f79de857550d4d8c35c89fbe954920594':
  libfdk-aacdec: Always decode into an intermediate buffer

Conflicts:
libavcodec/libfdk-aacdec.c

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
1  2 
libavcodec/libfdk-aacdec.c

@@@ -41,10 -41,10 +41,10 @@@ enum ConcealMethod 
  typedef struct FDKAACDecContext {
      const AVClass *class;
      HANDLE_AACDECODER handle;
-     int initialized;
      uint8_t *decoder_buffer;
+     int decoder_buffer_size;
      uint8_t *anc_buffer;
 -    enum ConcealMethod conceal_method;
 +    int conceal_method;
      int drc_level;
      int drc_boost;
      int drc_heavy;
@@@ -364,26 -345,17 +345,16 @@@ static int fdk_aac_decode_frame(AVCodec
          goto end;
      }
  
-     if (!s->initialized) {
-         if ((ret = get_stream_info(avctx)) < 0)
-             goto end;
-         s->initialized = 1;
-         frame->nb_samples = avctx->frame_size;
-     }
+     if ((ret = get_stream_info(avctx)) < 0)
+         goto end;
+     frame->nb_samples = avctx->frame_size;
  
-     if (tmpptr) {
-         frame->nb_samples = avctx->frame_size;
-         if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
-             goto end;
-     }
-     if (s->decoder_buffer) {
-         memcpy(frame->extended_data[0], buf,
-                avctx->channels * avctx->frame_size *
-                av_get_bytes_per_sample(avctx->sample_fmt));
 -    if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) {
 -        av_log(avctx, AV_LOG_ERROR, "ff_get_buffer() failed\n");
++    if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
+         goto end;
 -    }
 +
-         if (!s->anc_buffer)
-             av_freep(&s->decoder_buffer);
-     }
+     memcpy(frame->extended_data[0], s->decoder_buffer,
+            avctx->channels * avctx->frame_size *
+            av_get_bytes_per_sample(avctx->sample_fmt));
  
      *got_frame_ptr = 1;
      ret = avpkt->size - valid;