@ -48,7 +48,10 @@ typedef struct SVCContext {
int max_nal_size ;
int skip_frames ;
int skipped ;
int cabac ;
# if FF_API_OPENH264_CABAC
int cabac ; // deprecated
# endif
int coder ;
// rate control mode
int rc_mode ;
@ -83,7 +86,15 @@ static const AVOption options[] = {
# undef PROFILE
{ " max_nal_size " , " set maximum NAL size in bytes " , OFFSET ( max_nal_size ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , INT_MAX , VE } ,
{ " allow_skip_frames " , " allow skipping frames to hit the target bitrate " , OFFSET ( skip_frames ) , AV_OPT_TYPE_BOOL , { . i64 = 0 } , 0 , 1 , VE } ,
{ " cabac " , " Enable cabac " , OFFSET ( cabac ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , 1 , VE } ,
# if FF_API_OPENH264_CABAC
{ " cabac " , " Enable cabac(deprecated, use coder) " , OFFSET ( cabac ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , 1 , VE | DEPRECATED } ,
# endif
{ " coder " , " Coder type " , OFFSET ( coder ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , 1 , VE , " coder " } ,
{ " default " , NULL , 0 , AV_OPT_TYPE_CONST , { . i64 = - 1 } , INT_MIN , INT_MAX , VE , " coder " } ,
{ " cavlc " , NULL , 0 , AV_OPT_TYPE_CONST , { . i64 = 0 } , INT_MIN , INT_MAX , VE , " coder " } ,
{ " cabac " , NULL , 0 , AV_OPT_TYPE_CONST , { . i64 = 1 } , INT_MIN , INT_MAX , VE , " coder " } ,
{ " vlc " , NULL , 0 , AV_OPT_TYPE_CONST , { . i64 = 0 } , INT_MIN , INT_MAX , VE , " coder " } ,
{ " ac " , NULL , 0 , AV_OPT_TYPE_CONST , { . i64 = 1 } , INT_MIN , INT_MAX , VE , " coder " } ,
{ " rc_mode " , " Select rate control mode " , OFFSET ( rc_mode ) , AV_OPT_TYPE_INT , { . i64 = RC_QUALITY_MODE } , RC_OFF_MODE , RC_TIMESTAMP_MODE , VE , " rc_mode " } ,
{ " off " , " bit rate control off " , 0 , AV_OPT_TYPE_CONST , { . i64 = RC_OFF_MODE } , 0 , 0 , VE , " rc_mode " } ,
@ -145,13 +156,6 @@ static av_cold int svc_encode_init(AVCodecContext *avctx)
( * s - > encoder ) - > GetDefaultParams ( s - > encoder , & param ) ;
# if FF_API_CODER_TYPE
FF_DISABLE_DEPRECATION_WARNINGS
if ( ! s - > cabac )
s - > cabac = avctx - > coder_type = = FF_CODER_TYPE_AC ;
FF_ENABLE_DEPRECATION_WARNINGS
# endif
param . fMaxFrameRate = 1 / av_q2d ( avctx - > time_base ) ;
param . iPicWidth = avctx - > width ;
param . iPicHeight = avctx - > height ;
@ -197,12 +201,22 @@ FF_ENABLE_DEPRECATION_WARNINGS
break ;
}
if ( s - > profile = = FF_PROFILE_UNKNOWN )
s - > profile = ! s - > cabac ? FF_PROFILE_H264_CONSTRAINED_BASELINE :
# if FF_API_CODER_TYPE && FF_API_OPENH264_CABAC
FF_DISABLE_DEPRECATION_WARNINGS
if ( s - > coder < 0 & & avctx - > coder_type = = FF_CODER_TYPE_AC )
s - > coder = 1 ;
if ( s - > coder < 0 )
s - > coder = s - > cabac ;
FF_ENABLE_DEPRECATION_WARNINGS
# endif
if ( s - > profile = = FF_PROFILE_UNKNOWN & & s - > coder > = 0 )
s - > profile = s - > coder = = 0 ? FF_PROFILE_H264_CONSTRAINED_BASELINE :
# if OPENH264_VER_AT_LEAST(1, 8)
FF_PROFILE_H264_HIGH ;
FF_PROFILE_H264_HIGH ;
# else
FF_PROFILE_H264_MAIN ;
FF_PROFILE_H264_MAIN ;
# endif
switch ( s - > profile ) {