[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