aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas George <nicola.george@normalesup.org>2007-05-02 13:49:08 +0000
committerBenoit Fouet <benoit.fouet@free.fr>2007-05-02 13:49:08 +0000
commit4f2c36ac4f3e6d7de02c95a484a005ea8cd561bf (patch)
tree9c43752623b1307298b768cdf856b0ed790c8895
parent711737af8eecd76ee001375884c83d5e91724135 (diff)
downloadffmpeg-4f2c36ac4f3e6d7de02c95a484a005ea8cd561bf.tar.gz
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
-rw-r--r--libavcodec/avcodec.h4
-rw-r--r--libavcodec/faac.c20
-rw-r--r--libavcodec/utils.c4
3 files changed, 27 insertions, 1 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 3a90098dd4..85d7712479 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -1820,6 +1820,10 @@ typedef struct AVCodecContext {
*/
int profile;
#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
diff --git a/libavcodec/faac.c b/libavcodec/faac.c
index 9ff9f5ed0a..ae1db1f39a 100644
--- a/libavcodec/faac.c
+++ b/libavcodec/faac.c
@@ -54,7 +54,25 @@ static int Faac_encode_init(AVCodecContext *avctx)
}
/* put the options in the configuration struct */
- faac_cfg->aacObjectType = LOW;
+ 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;
+ 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->useTns = 0;
faac_cfg->allowMidside = 1;
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index d1b1f6a716..b17c4563cd 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -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},
{"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"},
+{"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"},
{"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},