add the possibility to choose aac profile
patch by Nicolas George nicolas george chez normalesup org original thread: [Ffmpeg-devel] [PATCH] FAAC profile selection date: 04/27/2007 08:11 PM Originally committed as revision 8872 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:

committed by
Benoit Fouet

parent
711737af8e
commit
4f2c36ac4f
@@ -1820,6 +1820,10 @@ typedef struct AVCodecContext {
|
|||||||
*/
|
*/
|
||||||
int profile;
|
int profile;
|
||||||
#define FF_PROFILE_UNKNOWN -99
|
#define FF_PROFILE_UNKNOWN -99
|
||||||
|
#define FF_PROFILE_AAC_MAIN 0
|
||||||
|
#define FF_PROFILE_AAC_LOW 1
|
||||||
|
#define FF_PROFILE_AAC_SSR 2
|
||||||
|
#define FF_PROFILE_AAC_LTP 3
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* level
|
* level
|
||||||
|
@@ -54,7 +54,25 @@ static int Faac_encode_init(AVCodecContext *avctx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* put the options in the configuration struct */
|
/* put the options in the configuration struct */
|
||||||
|
switch(avctx->profile) {
|
||||||
|
case FF_PROFILE_AAC_MAIN:
|
||||||
|
faac_cfg->aacObjectType = MAIN;
|
||||||
|
break;
|
||||||
|
case FF_PROFILE_UNKNOWN:
|
||||||
|
case FF_PROFILE_AAC_LOW:
|
||||||
faac_cfg->aacObjectType = LOW;
|
faac_cfg->aacObjectType = LOW;
|
||||||
|
break;
|
||||||
|
case FF_PROFILE_AAC_SSR:
|
||||||
|
faac_cfg->aacObjectType = SSR;
|
||||||
|
break;
|
||||||
|
case FF_PROFILE_AAC_LTP:
|
||||||
|
faac_cfg->aacObjectType = LTP;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
av_log(avctx, AV_LOG_ERROR, "invalid AAC profile\n");
|
||||||
|
faacEncClose(s->faac_handle);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
faac_cfg->mpegVersion = MPEG4;
|
faac_cfg->mpegVersion = MPEG4;
|
||||||
faac_cfg->useTns = 0;
|
faac_cfg->useTns = 0;
|
||||||
faac_cfg->allowMidside = 1;
|
faac_cfg->allowMidside = 1;
|
||||||
|
@@ -670,6 +670,10 @@ static const AVOption options[]={
|
|||||||
{"skip_bottom", "number of macroblock rows at the bottom which are skipped", OFFSET(skip_bottom), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D},
|
{"skip_bottom", "number of macroblock rows at the bottom which are skipped", OFFSET(skip_bottom), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D},
|
||||||
{"profile", NULL, OFFSET(profile), FF_OPT_TYPE_INT, FF_PROFILE_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "profile"},
|
{"profile", NULL, OFFSET(profile), FF_OPT_TYPE_INT, FF_PROFILE_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "profile"},
|
||||||
{"unknown", NULL, 0, FF_OPT_TYPE_CONST, FF_PROFILE_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "profile"},
|
{"unknown", NULL, 0, FF_OPT_TYPE_CONST, FF_PROFILE_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "profile"},
|
||||||
|
{"aac_main", NULL, 0, FF_OPT_TYPE_CONST, FF_PROFILE_AAC_MAIN, INT_MIN, INT_MAX, A|E, "profile"},
|
||||||
|
{"aac_low", NULL, 0, FF_OPT_TYPE_CONST, FF_PROFILE_AAC_LOW, INT_MIN, INT_MAX, A|E, "profile"},
|
||||||
|
{"aac_ssr", NULL, 0, FF_OPT_TYPE_CONST, FF_PROFILE_AAC_SSR, INT_MIN, INT_MAX, A|E, "profile"},
|
||||||
|
{"aac_ltp", NULL, 0, FF_OPT_TYPE_CONST, FF_PROFILE_AAC_LTP, INT_MIN, INT_MAX, A|E, "profile"},
|
||||||
{"level", NULL, OFFSET(level), FF_OPT_TYPE_INT, FF_LEVEL_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "level"},
|
{"level", NULL, OFFSET(level), FF_OPT_TYPE_INT, FF_LEVEL_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "level"},
|
||||||
{"unknown", NULL, 0, FF_OPT_TYPE_CONST, FF_LEVEL_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "level"},
|
{"unknown", NULL, 0, FF_OPT_TYPE_CONST, FF_LEVEL_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "level"},
|
||||||
{"lowres", "decode at 1= 1/2, 2=1/4, 3=1/8 resolutions", OFFSET(lowres), FF_OPT_TYPE_INT, 0, 0, INT_MAX, V|D},
|
{"lowres", "decode at 1= 1/2, 2=1/4, 3=1/8 resolutions", OFFSET(lowres), FF_OPT_TYPE_INT, 0, 0, INT_MAX, V|D},
|
||||||
|
Reference in New Issue
Block a user