changeset 4891:8cd8fd35b6aa libavcodec

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
author benoit
date Wed, 02 May 2007 13:49:08 +0000
parents 7f2863536c79
children bfb1c49171b6
files avcodec.h faac.c utils.c
diffstat 3 files changed, 27 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/avcodec.h	Wed May 02 09:37:47 2007 +0000
+++ b/avcodec.h	Wed May 02 13:49:08 2007 +0000
@@ -1820,6 +1820,10 @@
      */
      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
--- a/faac.c	Wed May 02 09:37:47 2007 +0000
+++ b/faac.c	Wed May 02 13:49:08 2007 +0000
@@ -54,7 +54,25 @@
     }
 
     /* 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;
--- a/utils.c	Wed May 02 09:37:47 2007 +0000
+++ b/utils.c	Wed May 02 13:49:08 2007 +0000
@@ -670,6 +670,10 @@
 {"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},