[vlc-commits] fdkaac: reduce context size

Rafaël Carré git at videolan.org
Sat May 3 18:00:01 CEST 2014


vlc | branch: master | Rafaël Carré <funman at videolan.org> | Fri May  2 12:57:00 2014 +0200| [d069d1521e80b1cf618e897ad0f40e1905a26650] | committer: Rafaël Carré

fdkaac: reduce context size

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d069d1521e80b1cf618e897ad0f40e1905a26650
---

 modules/codec/fdkaac.c |   51 ++++++++++++++++++++++--------------------------
 1 file changed, 23 insertions(+), 28 deletions(-)

diff --git a/modules/codec/fdkaac.c b/modules/codec/fdkaac.c
index 77a61df..824fc74 100644
--- a/modules/codec/fdkaac.c
+++ b/modules/codec/fdkaac.c
@@ -135,15 +135,10 @@ struct encoder_sys_t
 {
     double d_compression_ratio;
     mtime_t i_pts_last;
-    int i_aot; /* This stores the aac profile chosen */
-    int i_vbr; /* cbr or vbr-quality value chosen */
-    int i_signaling; /* Library feature for backwards compatibility */
     int i_encoderdelay; /* Samples delay introduced by the profile */
     int i_frame_size;
     int i_maxoutputsize; /* Maximum buffer size for encoded output */
     HANDLE_AACENCODER handle;
-    bool b_afterburner; /* Library feature for additional quality */
-    bool b_eld_sbr; /* Spectral band replication option for ELD profile */
 };
 
 static const char *aac_get_errorstring(AACENC_ERROR erraac)
@@ -232,25 +227,24 @@ static int OpenEncoder( vlc_object_t *p_this )
 
     config_ChainParse( p_enc, ENC_CFG_PREFIX, ppsz_enc_options, p_enc->p_cfg );
 
+    int i_aot; /* This stores the aac profile chosen */
     if ( p_enc->fmt_out.i_codec == VLC_FOURCC( 'l', 'a', 'a', 'c' ) )
-        p_sys->i_aot = PROFILE_AAC_LC;
+        i_aot = PROFILE_AAC_LC;
     else if ( p_enc->fmt_out.i_codec == VLC_FOURCC( 'h', 'a', 'a', 'c' ) )
-        p_sys->i_aot = PROFILE_AAC_HE;
+        i_aot = PROFILE_AAC_HE;
     else if ( p_enc->fmt_out.i_codec == VLC_FOURCC( 's', 'a', 'a', 'c' ) )
-        p_sys->i_aot = PROFILE_AAC_HE_v2;
+        i_aot = PROFILE_AAC_HE_v2;
     else
-        p_sys->i_aot = var_InheritInteger( p_enc, ENC_CFG_PREFIX "profile" );
+        i_aot = var_InheritInteger( p_enc, ENC_CFG_PREFIX "profile" );
 
-    p_sys->b_eld_sbr = var_InheritBool( p_enc, ENC_CFG_PREFIX "sbr" );
-    p_sys->i_vbr = var_InheritInteger( p_enc, ENC_CFG_PREFIX "vbr" );
-    p_sys->b_afterburner = var_InheritBool( p_enc, ENC_CFG_PREFIX "afterburner" );
-    p_sys->i_signaling = var_InheritInteger( p_enc, ENC_CFG_PREFIX "signaling" );
+    bool b_eld_sbr = var_InheritBool( p_enc, ENC_CFG_PREFIX "sbr" );
+    int i_vbr = var_InheritInteger( p_enc, ENC_CFG_PREFIX "vbr" );
     p_sys->i_pts_last = 0;
 
-    if ((p_sys->i_aot == PROFILE_AAC_HE || p_sys->i_aot == PROFILE_AAC_HE_v2) && p_sys->i_vbr > 3)
+    if ((i_aot == PROFILE_AAC_HE || i_aot == PROFILE_AAC_HE_v2) && i_vbr > 3)
     {
         msg_Warn(p_enc, "Maximum VBR quality for this profile is 3, setting vbr=3");
-        p_sys->i_vbr = 3;
+        i_vbr = 3;
     }
     AACENC_ERROR erraac;
     if ((erraac = aacEncOpen(&p_sys->handle, 0, p_enc->fmt_in.audio.i_channels)) != AACENC_OK) {
@@ -258,21 +252,21 @@ static int OpenEncoder( vlc_object_t *p_this )
         free( p_sys );
         return VLC_EGENERIC;
     }
-    if ( p_sys->i_aot == PROFILE_AAC_HE_v2 && p_enc->fmt_in.audio.i_channels != 2 )
+    if ( i_aot == PROFILE_AAC_HE_v2 && p_enc->fmt_in.audio.i_channels != 2 )
     {
         msg_Err(p_enc, "The HE-AAC-v2 profile can only be used with stereo sources");
         goto error;
     }
-    if ( p_sys->i_aot == PROFILE_AAC_ELD && p_enc->fmt_in.audio.i_channels != 2 )
+    if ( i_aot == PROFILE_AAC_ELD && p_enc->fmt_in.audio.i_channels != 2 )
     {
         msg_Err(p_enc, "The ELD-AAC profile can only be used with stereo sources");
         goto error;
     }
-    if ((erraac = aacEncoder_SetParam(p_sys->handle, AACENC_AOT, p_sys->i_aot)) != AACENC_OK) {
-        msg_Err(p_enc, "Unable to set the Profile %i: %s", p_sys->i_aot, aac_get_errorstring(erraac));
+    if ((erraac = aacEncoder_SetParam(p_sys->handle, AACENC_AOT, i_aot)) != AACENC_OK) {
+        msg_Err(p_enc, "Unable to set the Profile %i: %s", i_aot, aac_get_errorstring(erraac));
         goto error;
     }
-    if (p_sys->i_aot == PROFILE_AAC_ELD && p_sys->b_eld_sbr) {
+    if (i_aot == PROFILE_AAC_ELD && b_eld_sbr) {
         if ((erraac = aacEncoder_SetParam(p_sys->handle, AACENC_SBR_MODE, 1)) != AACENC_OK) {
             msg_Err(p_enc, "Unable to set SBR mode for ELD: %s", aac_get_errorstring(erraac));
         goto error;
@@ -292,23 +286,23 @@ static int OpenEncoder( vlc_object_t *p_this )
         msg_Err(p_enc, "Unable to set the sound channel order: %s", aac_get_errorstring(erraac));
         goto error;
     }
-    if (p_sys->i_vbr != 0) {
+    if (i_vbr != 0) {
         if ((erraac = aacEncoder_SetParam(p_sys->handle,
-                         AACENC_BITRATEMODE, p_sys->i_vbr)) != AACENC_OK) {
+                         AACENC_BITRATEMODE, i_vbr)) != AACENC_OK) {
             msg_Err(p_enc, "Unable to set the VBR bitrate mode: %s", aac_get_errorstring(erraac));
             goto error;
         }
     } else {
         int i_bitrate;
         if (p_enc->fmt_out.i_bitrate == 0) {
-            if (p_sys->i_aot == PROFILE_AAC_HE_v2) {
+            if (i_aot == PROFILE_AAC_HE_v2) {
                 sce = 1;
                 cpe = 0;
             }
             i_bitrate = (96*sce + 128*cpe) * p_enc->fmt_out.audio.i_rate / 44;
-            if (p_sys->i_aot == PROFILE_AAC_HE ||
-                p_sys->i_aot == PROFILE_AAC_HE_v2 ||
-                p_sys->b_eld_sbr)
+            if (i_aot == PROFILE_AAC_HE ||
+                i_aot == PROFILE_AAC_HE_v2 ||
+                b_eld_sbr)
                 i_bitrate /= 2;
             p_enc->fmt_out.i_bitrate = i_bitrate;
             msg_Info(p_enc, "Setting optimal bitrate of %i", i_bitrate);
@@ -329,14 +323,15 @@ static int OpenEncoder( vlc_object_t *p_this )
         goto error;
     }
     if ((erraac = aacEncoder_SetParam(p_sys->handle, AACENC_SIGNALING_MODE,
-                                 (int)p_sys->i_signaling)) != AACENC_OK) {
+                    (int)var_InheritInteger( p_enc, ENC_CFG_PREFIX "signaling" ))) != AACENC_OK) {
       /* use explicit backward compatible =1 */
       /* use explicit hierarchical signaling =2 */
         msg_Err(p_enc, "Unable to set signaling mode: %s", aac_get_errorstring(erraac));
         goto error;
     }
     if ((erraac = aacEncoder_SetParam(p_sys->handle, AACENC_AFTERBURNER,
-                               (int)p_sys->b_afterburner)) != AACENC_OK) {
+                    !!var_InheritBool( p_enc, ENC_CFG_PREFIX "afterburner"))) !=
+                               AACENC_OK) {
         msg_Err(p_enc, "Unable to set the afterburner mode: %s", aac_get_errorstring(erraac));
         goto error;
     }



More information about the vlc-commits mailing list