Merge commit 'ffb9b7a6bab6c6bfd3dd9a7c32e3724209824999'
authorJames Almer <jamrial@gmail.com>
Tue, 11 Sep 2018 17:11:39 +0000 (14:11 -0300)
committerJames Almer <jamrial@gmail.com>
Tue, 11 Sep 2018 17:11:39 +0000 (14:11 -0300)
* commit 'ffb9b7a6bab6c6bfd3dd9a7c32e3724209824999':
  libfdk-aac: Consistently use a proper version check macro for detecting features

Merged-by: James Almer <jamrial@gmail.com>
1  2 
libavcodec/libfdk-aacdec.c
libavcodec/libfdk-aacenc.c

@@@ -2,7 -2,7 +2,7 @@@
   * AAC decoder wrapper
   * Copyright (c) 2012 Martin Storsjo
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
   * Permission to use, copy, modify, and/or distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
  #include "avcodec.h"
  #include "internal.h"
  
- /* The version macro is introduced the same time as the setting enum was
-  * changed, so this check should suffice. */
- #ifndef AACDECODER_LIB_VL0
+ #define FDKDEC_VER_AT_LEAST(vl0, vl1) \
+     (defined(AACDECODER_LIB_VL0) && \
+         ((AACDECODER_LIB_VL0 > vl0) || \
+          (AACDECODER_LIB_VL0 == vl0 && AACDECODER_LIB_VL1 >= vl1)))
+ #if !FDKDEC_VER_AT_LEAST(2, 5) // < 2.5.10
  #define AAC_PCM_MAX_OUTPUT_CHANNELS AAC_PCM_OUTPUT_CHANNELS
  #endif
  
@@@ -44,7 -47,7 +47,7 @@@ typedef struct FDKAACDecContext 
      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;
@@@ -72,7 -75,7 +75,7 @@@ static const AVOption fdk_aac_dec_optio
                       OFFSET(drc_level),      AV_OPT_TYPE_INT,   { .i64 = -1},  -1, 127, AD, NULL    },
      { "drc_heavy", "Dynamic Range Control: heavy compression, where [1] is on (RF mode) and [0] is off",
                       OFFSET(drc_heavy),      AV_OPT_TYPE_INT,   { .i64 = -1},  -1, 1,   AD, NULL    },
- #ifdef AACDECODER_LIB_VL0
+ #if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
      { "level_limit", "Signal level limiting", OFFSET(level_limit), AV_OPT_TYPE_INT, { .i64 = 0 }, -1, 1, AD },
  #endif
      { NULL }
@@@ -82,7 -85,7 +85,7 @@@ static const AVClass fdk_aac_dec_class 
      .class_name = "libfdk-aac decoder",
      .item_name  = av_default_item_name,
      .option     = fdk_aac_dec_options,
 -    .version    = LIBAVUTIL_VERSION_INT
 +    .version    = LIBAVUTIL_VERSION_INT,
  };
  
  static int get_stream_info(AVCodecContext *avctx)
@@@ -202,8 -205,8 +205,8 @@@ static av_cold int fdk_aac_decode_close
  
      if (s->handle)
          aacDecoder_Close(s->handle);
 -    av_free(s->decoder_buffer);
 -    av_free(s->anc_buffer);
 +    av_freep(&s->decoder_buffer);
 +    av_freep(&s->anc_buffer);
  
      return 0;
  }
@@@ -296,7 -299,7 +299,7 @@@ static av_cold int fdk_aac_decode_init(
          }
      }
  
- #ifdef AACDECODER_LIB_VL0
+ #if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
      if (aacDecoder_SetParam(s->handle, AAC_PCM_LIMITER_ENABLE, s->level_limit) != AAC_DEC_OK) {
          av_log(avctx, AV_LOG_ERROR, "Unable to set in signal level limiting in the decoder\n");
          return AVERROR_UNKNOWN;
@@@ -344,9 -347,10 +347,9 @@@ static int fdk_aac_decode_frame(AVCodec
          goto end;
      frame->nb_samples = avctx->frame_size;
  
 -    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;
 -    }
 +
      memcpy(frame->extended_data[0], s->decoder_buffer,
             avctx->channels * avctx->frame_size *
             av_get_bytes_per_sample(avctx->sample_fmt));
@@@ -2,7 -2,7 +2,7 @@@
   * AAC encoder wrapper
   * Copyright (c) 2012 Martin Storsjo
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
   * Permission to use, copy, modify, and/or distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
@@@ -159,7 -159,7 +159,7 @@@ static av_cold int aac_encode_init(AVCo
      case 6: mode = MODE_1_2_2_1; sce = 2; cpe = 2; break;
  /* The version macro is introduced the same time as the 7.1 support, so this
     should suffice. */
- #ifdef AACENCODER_LIB_VL0
+ #if FDKENC_VER_AT_LEAST(3, 4) // 3.4.12
      case 8:
          sce = 2;
          cpe = 3;
          }
          if ((err = aacEncoder_SetParam(s->handle, AACENC_BITRATE,
                                         avctx->bit_rate)) != AACENC_OK) {
 -            av_log(avctx, AV_LOG_ERROR, "Unable to set the bitrate %d: %s\n",
 +            av_log(avctx, AV_LOG_ERROR, "Unable to set the bitrate %"PRId64": %s\n",
                     avctx->bit_rate, aac_get_error(err));
              goto error;
          }
      }
  
      avctx->frame_size = info.frameLength;
- #if FDKENC_VER_AT_LEAST(4, 0)
+ #if FDKENC_VER_AT_LEAST(4, 0) // 4.0.0
      avctx->initial_padding = info.nDelay;
  #else
      avctx->initial_padding = info.encoderDelay;
@@@ -362,8 -362,10 +362,8 @@@ static int aac_encode_frame(AVCodecCont
      in_buf.bufElSizes        = &in_buffer_element_size;
  
      /* The maximum packet size is 6144 bits aka 768 bytes per channel. */
 -    if ((ret = ff_alloc_packet(avpkt, FFMAX(8192, 768 * avctx->channels)))) {
 -        av_log(avctx, AV_LOG_ERROR, "Error getting output packet\n");
 +    if ((ret = ff_alloc_packet2(avctx, avpkt, FFMAX(8192, 768 * avctx->channels), 0)) < 0)
          return ret;
 -    }
  
      out_ptr                   = avpkt->data;
      out_buffer_size           = avpkt->size;
@@@ -416,7 -418,7 +416,7 @@@ static const uint64_t aac_channel_layou
      AV_CH_LAYOUT_4POINT0,
      AV_CH_LAYOUT_5POINT0_BACK,
      AV_CH_LAYOUT_5POINT1_BACK,
- #ifdef AACENCODER_LIB_VL0
+ #if FDKENC_VER_AT_LEAST(3, 4) // 3.4.12
      AV_CH_LAYOUT_7POINT1_WIDE_BACK,
      AV_CH_LAYOUT_7POINT1,
  #endif