@ -33,6 +33,8 @@ typedef struct AACContext {
int afterburner ;
int eld_sbr ;
int signaling ;
int latm ;
int header_period ;
AudioFrameQueue afq ;
} AACContext ;
@ -45,6 +47,8 @@ static const AVOption aac_enc_options[] = {
{ " implicit " , " Implicit backwards compatible signaling " , 0 , AV_OPT_TYPE_CONST , { 0 } , 0 , 0 , AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM , " signaling " } ,
{ " explicit_sbr " , " Explicit SBR, implicit PS signaling " , 0 , AV_OPT_TYPE_CONST , { 1 } , 0 , 0 , AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM , " signaling " } ,
{ " explicit_hierarchical " , " Explicit hierarchical signaling " , 0 , AV_OPT_TYPE_CONST , { 2 } , 0 , 0 , AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM , " signaling " } ,
{ " latm " , " Output LATM/LOAS encapsulated data " , offsetof ( AACContext , latm ) , AV_OPT_TYPE_INT , { 0 } , 0 , 1 , AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM } ,
{ " header_period " , " StreamMuxConfig and PCE repetition period (in frames) " , offsetof ( AACContext , header_period ) , AV_OPT_TYPE_INT , { 0 } , 0 , 0xffff , AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM } ,
{ NULL }
} ;
@ -204,12 +208,21 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
/* Choose bitstream format - if global header is requested, use
* raw access units , otherwise use ADTS . */
if ( ( err = aacEncoder_SetParam ( s - > handle , AACENC_TRANSMUX ,
avctx - > flags & CODEC_FLAG_GLOBAL_HEADER ? 0 : 2 ) ) ! = AACENC_OK ) {
avctx - > flags & CODEC_FLAG_GLOBAL_HEADER ? 0 : s - > latm ? 10 : 2 ) ) ! = AACENC_OK ) {
av_log ( avctx , AV_LOG_ERROR , " Unable to set the transmux format: %s \n " ,
aac_get_error ( err ) ) ;
goto error ;
}
if ( s - > latm & & s - > header_period ) {
if ( ( err = aacEncoder_SetParam ( s - > handle , AACENC_HEADER_PERIOD ,
s - > header_period ) ) ! = AACENC_OK ) {
av_log ( avctx , AV_LOG_ERROR , " Unable to set header period: %s \n " ,
aac_get_error ( err ) ) ;
goto error ;
}
}
/* If no signaling mode is chosen, use explicit hierarchical signaling
* if using mp4 mode ( raw access units , with global header ) and
* implicit signaling if using ADTS . */