Commit ba014d62 authored by Jean-Paul Saman's avatar Jean-Paul Saman

Add option to encode aac low, main, sbr or ltp profiles.

parent 7c12daab
...@@ -141,6 +141,7 @@ struct encoder_sys_t ...@@ -141,6 +141,7 @@ struct encoder_sys_t
int i_quality; /* for VBR */ int i_quality; /* for VBR */
float f_lumi_masking, f_dark_masking, f_p_masking, f_border_masking; float f_lumi_masking, f_dark_masking, f_p_masking, f_border_masking;
int i_luma_elim, i_chroma_elim; int i_luma_elim, i_chroma_elim;
int i_aac_profile; /* AAC profile to use.*/
/* Used to work around stupid timestamping behaviour in libavcodec */ /* Used to work around stupid timestamping behaviour in libavcodec */
uint64_t i_framenum; uint64_t i_framenum;
...@@ -153,7 +154,7 @@ static const char *ppsz_enc_options[] = { ...@@ -153,7 +154,7 @@ static const char *ppsz_enc_options[] = {
"interlace", "i-quant-factor", "noise-reduction", "mpeg4-matrix", "interlace", "i-quant-factor", "noise-reduction", "mpeg4-matrix",
"trellis", "qscale", "strict", "lumi-masking", "dark-masking", "trellis", "qscale", "strict", "lumi-masking", "dark-masking",
"p-masking", "border-masking", "luma-elim-threshold", "p-masking", "border-masking", "luma-elim-threshold",
"chroma-elim-threshold", NULL "chroma-elim-threshold", "aac-profile", NULL
}; };
static const uint16_t mpa_bitrate_tab[2][15] = static const uint16_t mpa_bitrate_tab[2][15] =
...@@ -187,7 +188,6 @@ static const uint16_t mpeg4_default_non_intra_matrix[64] = { ...@@ -187,7 +188,6 @@ static const uint16_t mpeg4_default_non_intra_matrix[64] = {
23, 24, 25, 27, 28, 30, 31, 33, 23, 24, 25, 27, 28, 30, 31, 33,
}; };
/***************************************************************************** /*****************************************************************************
* OpenEncoder: probe the encoder * OpenEncoder: probe the encoder
*****************************************************************************/ *****************************************************************************/
...@@ -333,6 +333,7 @@ int E_(OpenEncoder)( vlc_object_t *p_this ) ...@@ -333,6 +333,7 @@ int E_(OpenEncoder)( vlc_object_t *p_this )
p_sys->i_quality = (int)(FF_QP2LAMBDA * val.f_float + 0.5); p_sys->i_quality = (int)(FF_QP2LAMBDA * val.f_float + 0.5);
var_Get( p_enc, ENC_CFG_PREFIX "hq", &val ); var_Get( p_enc, ENC_CFG_PREFIX "hq", &val );
p_sys->i_hq = FF_MB_DECISION_RD;
if( val.psz_string && *val.psz_string ) if( val.psz_string && *val.psz_string )
{ {
if( !strcmp( val.psz_string, "rd" ) ) if( !strcmp( val.psz_string, "rd" ) )
...@@ -344,8 +345,6 @@ int E_(OpenEncoder)( vlc_object_t *p_this ) ...@@ -344,8 +345,6 @@ int E_(OpenEncoder)( vlc_object_t *p_this )
else else
p_sys->i_hq = FF_MB_DECISION_RD; p_sys->i_hq = FF_MB_DECISION_RD;
} }
else
p_sys->i_hq = FF_MB_DECISION_RD;
if( val.psz_string ) free( val.psz_string ); if( val.psz_string ) free( val.psz_string );
var_Get( p_enc, ENC_CFG_PREFIX "qmin", &val ); var_Get( p_enc, ENC_CFG_PREFIX "qmin", &val );
...@@ -372,6 +371,26 @@ int E_(OpenEncoder)( vlc_object_t *p_this ) ...@@ -372,6 +371,26 @@ int E_(OpenEncoder)( vlc_object_t *p_this )
var_Get( p_enc, ENC_CFG_PREFIX "chroma-elim-threshold", &val ); var_Get( p_enc, ENC_CFG_PREFIX "chroma-elim-threshold", &val );
p_sys->i_chroma_elim = val.i_int; p_sys->i_chroma_elim = val.i_int;
var_Get( p_enc, ENC_CFG_PREFIX "aac-profile", &val );
p_sys->i_aac_profile = FF_PROFILE_UNKNOWN;
if( val.psz_string && *val.psz_string )
{
if( !strncmp( val.psz_string, "main", 4 ) )
p_sys->i_aac_profile = FF_PROFILE_AAC_MAIN;
else if( !strncmp( val.psz_string, "low", 3 ) )
p_sys->i_aac_profile = FF_PROFILE_AAC_LOW;
#if 0 /* Not supported by FAAC encoder */
else if( !strncmp( val.psz_string, "ssr", 3 ) )
p_sys->i_aac_profile = FF_PROFILE_AAC_SSR;
#endif
else if( !strncmp( val.psz_string, "ltp", 3 ) )
p_sys->i_aac_profile = FF_PROFILE_AAC_LTP;
else
p_sys->i_aac_profile = FF_PROFILE_UNKNOWN;
msg_Info( p_enc, "AAC profile %s", val.psz_string );
}
if( val.psz_string ) free( val.psz_string );
if( p_enc->fmt_in.i_cat == VIDEO_ES ) if( p_enc->fmt_in.i_cat == VIDEO_ES )
{ {
int i_aspect_num, i_aspect_den; int i_aspect_num, i_aspect_den;
...@@ -536,6 +555,9 @@ int E_(OpenEncoder)( vlc_object_t *p_this ) ...@@ -536,6 +555,9 @@ int E_(OpenEncoder)( vlc_object_t *p_this )
p_enc->fmt_in.i_codec = AOUT_FMT_S16_NE; p_enc->fmt_in.i_codec = AOUT_FMT_S16_NE;
p_context->sample_rate = p_enc->fmt_in.audio.i_rate; p_context->sample_rate = p_enc->fmt_in.audio.i_rate;
p_context->channels = p_enc->fmt_in.audio.i_channels; p_context->channels = p_enc->fmt_in.audio.i_channels;
if( p_enc->fmt_out.i_codec == VLC_FOURCC('m', 'p', '4', 'a') )
p_context->profile = p_sys->i_aac_profile;
} }
/* Misc parameters */ /* Misc parameters */
......
...@@ -198,7 +198,12 @@ vlc_module_begin(); ...@@ -198,7 +198,12 @@ vlc_module_begin();
add_integer( ENC_CFG_PREFIX "chroma-elim-threshold", 0, NULL, add_integer( ENC_CFG_PREFIX "chroma-elim-threshold", 0, NULL,
ENC_CHROMA_ELIM_TEXT, ENC_CHROMA_ELIM_LONGTEXT, VLC_TRUE ); ENC_CHROMA_ELIM_TEXT, ENC_CHROMA_ELIM_LONGTEXT, VLC_TRUE );
/* Audio AAC encoder profile */
add_string( ENC_CFG_PREFIX "aac-profile", "main", NULL,
ENC_PROFILE_TEXT, ENC_PROFILE_LONGTEXT, VLC_TRUE );
#if defined(HAVE_LIBAVFORMAT_AVFORMAT_H) || defined(HAVE_FFMPEG_AVFORMAT_H) || defined(HAVE_LIBAVFORMAT_TREE) #if defined(HAVE_LIBAVFORMAT_AVFORMAT_H) || defined(HAVE_FFMPEG_AVFORMAT_H) || defined(HAVE_LIBAVFORMAT_TREE)
/* demux submodule */ /* demux submodule */
add_submodule(); add_submodule();
set_description( _("FFmpeg demuxer" ) ); set_description( _("FFmpeg demuxer" ) );
......
...@@ -306,6 +306,11 @@ N_("<filterName>[:<option>[:<option>...]][[,|/][-]<filterName>[:<option>...]]... ...@@ -306,6 +306,11 @@ N_("<filterName>[:<option>[:<option>...]][[,|/][-]<filterName>[:<option>...]]...
"the PSNR isn't much changed (default: 0.0). The H264 specification " \ "the PSNR isn't much changed (default: 0.0). The H264 specification " \
"recommends 7." ) "recommends 7." )
#define ENC_PROFILE_TEXT N_( "Specify AAC audio profile to use" )
#define ENC_PROFILE_LONGTEXT N_( "Specify the AAC audio profile to use " \
"for encoding the audio bitstream. It takes the following options: " \
"main, low, ssr (not supported) and ltp (default: main)" )
#define SCALEMODE_TEXT N_("Scaling mode") #define SCALEMODE_TEXT N_("Scaling mode")
#define SCALEMODE_LONGTEXT N_("Scaling mode to use.") #define SCALEMODE_LONGTEXT N_("Scaling mode to use.")
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment