[FFmpeg-devel] [PATCH 1/3] aacenc: use constants to set AAC coder

Stefano Sabatini stefasab at gmail.com
Tue Sep 10 11:59:55 CEST 2013


On date Monday 2013-09-09 13:40:53 -0700, Timothy Gu encoded:
> On Mon, Sep 9, 2013 at 8:20 AM, Timothy Gu <timothygu99 at gmail.com> wrote:
> > On Sep 9, 2013 1:02 AM, "Stefano Sabatini" <stefasab at gmail.com> wrote:
[...]
> From 0fbccaf93e16759c7b0dc95f33b138a1c4d38ca5 Mon Sep 17 00:00:00 2001
> From: Timothy Gu <timothygu99 at gmail.com>
> Date: Sun, 8 Sep 2013 16:29:27 -0700
> Subject: [PATCH 1/3] aacenc: use constants to set AAC coder
> 
> The names of the constants comes from the ff_aac_coders array in aaccoder.c.
> 
> Signed-off-by: Timothy Gu <timothygu99 at gmail.com>
> ---
>  libavcodec/aacenc.c | 6 +++++-
>  libavcodec/aacenc.h | 7 ++++++-
>  2 files changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c
> index 362f02b..3227edb 100644
> --- a/libavcodec/aacenc.c
> +++ b/libavcodec/aacenc.c
> @@ -791,7 +791,11 @@ static const AVOption aacenc_options[] = {
>          {"auto",     "Selected by the Encoder", 0, AV_OPT_TYPE_CONST, {.i64 = -1 }, INT_MIN, INT_MAX, AACENC_FLAGS, "stereo_mode"},
>          {"ms_off",   "Disable Mid/Side coding", 0, AV_OPT_TYPE_CONST, {.i64 =  0 }, INT_MIN, INT_MAX, AACENC_FLAGS, "stereo_mode"},
>          {"ms_force", "Force Mid/Side for the whole frame if possible", 0, AV_OPT_TYPE_CONST, {.i64 =  1 }, INT_MIN, INT_MAX, AACENC_FLAGS, "stereo_mode"},
> -    {"aac_coder", "", offsetof(AACEncContext, options.aac_coder), AV_OPT_TYPE_INT, {.i64 = 2}, 0, AAC_CODER_NB-1, AACENC_FLAGS},
> +    {"aac_coder", "", offsetof(AACEncContext, options.aac_coder), AV_OPT_TYPE_INT, {.i64 = AAC_CODER_TWOLOOP}, 0, AAC_CODER_NB-1, AACENC_FLAGS, "aac_coder"},
> +        {"faac",     "FAAC-inspired method",      0, AV_OPT_TYPE_CONST, {.i64 = AAC_CODER_FAAC},    INT_MIN, INT_MAX, AACENC_FLAGS, "aac_coder"},
> +        {"anmr",     "ANMR method",               0, AV_OPT_TYPE_CONST, {.i64 = AAC_CODER_ANMR},    INT_MIN, INT_MAX, AACENC_FLAGS, "aac_coder"},
> +        {"twoloop",  "Two loop searching method", 0, AV_OPT_TYPE_CONST, {.i64 = AAC_CODER_TWOLOOP}, INT_MIN, INT_MAX, AACENC_FLAGS, "aac_coder"},
> +        {"fast",     "Constant quantizer",        0, AV_OPT_TYPE_CONST, {.i64 = AAC_CODER_FAST},    INT_MIN, INT_MAX, AACENC_FLAGS, "aac_coder"},
>      {NULL}
>  };
>  
> diff --git a/libavcodec/aacenc.h b/libavcodec/aacenc.h
> index cebdd18..19e442a 100644
> --- a/libavcodec/aacenc.h
> +++ b/libavcodec/aacenc.h
> @@ -30,7 +30,12 @@
>  #include "audio_frame_queue.h"
>  #include "psymodel.h"
>  
> -#define AAC_CODER_NB 4
> +#define AAC_CODER_FAAC    0
> +#define AAC_CODER_ANMR    1
> +#define AAC_CODER_TWOLOOP 2
> +#define AAC_CODER_FAST    3
> +
> +#define AAC_CODER_NB      4
>  
>  typedef struct AACEncOptions {
>      int stereo_mode;

Yes, and probably while at it also:

AACCoefficientsEncoder ff_aac_coders[AAC_CODER_NB] = {
    [AAC_CODER_FAAC] = {
        search_for_quantizers_faac,
        encode_window_bands_info,
        quantize_and_encode_band,
        search_for_ms,
    },
    [AAC_CODER_ANMR] = {
        search_for_quantizers_anmr,
        encode_window_bands_info,
        quantize_and_encode_band,
        search_for_ms,
    },
    ...

in aacoder.c, but this can also be done in a second patch.
-- 
FFmpeg = Forgiving and Fiendish Merciless Puristic Evil Glue


More information about the ffmpeg-devel mailing list