@ -270,11 +270,9 @@ static void reconfig_encoder(AVCodecContext *ctx, const AVFrame *frame)
case AV_STEREO3D_FRAMESEQUENCE :
fpa_type = 5 ;
break ;
# if X264_BUILD >= 145
case AV_STEREO3D_2D :
fpa_type = 6 ;
break ;
# endif
default :
fpa_type = - 1 ;
break ;
@ -394,14 +392,14 @@ static int setup_mb_info(AVCodecContext *ctx, x264_picture_t *pic,
return 0 ;
}
static int setup_roi ( AVCodecContext * ctx , x264_picture_t * pic , int bit_depth ,
static int setup_roi ( AVCodecContext * ctx , x264_picture_t * pic ,
const AVFrame * frame , const uint8_t * data , size_t size )
{
X264Context * x4 = ctx - > priv_data ;
int mbx = ( frame - > width + MB_SIZE - 1 ) / MB_SIZE ;
int mby = ( frame - > height + MB_SIZE - 1 ) / MB_SIZE ;
int qp_range = 51 + 6 * ( bit_ depth - 8 ) ;
int qp_range = 51 + 6 * ( x4 - > params . i_ bitdepth - 8 ) ;
int nb_rois ;
const AVRegionOfInterest * roi ;
uint32_t roi_size ;
@ -476,7 +474,7 @@ static int setup_frame(AVCodecContext *ctx, const AVFrame *frame,
x264_sei_t * sei = & pic - > extra_sei ;
unsigned int sei_data_size = 0 ;
int64_t wallclock = 0 ;
int bit_depth , ret ;
int ret ;
AVFrameSideData * sd ;
AVFrameSideData * mbinfo_sd ;
@ -486,12 +484,7 @@ static int setup_frame(AVCodecContext *ctx, const AVFrame *frame,
x264_picture_init ( pic ) ;
pic - > img . i_csp = x4 - > params . i_csp ;
# if X264_BUILD >= 153
bit_depth = x4 - > params . i_bitdepth ;
# else
bit_depth = x264_bit_depth ;
# endif
if ( bit_depth > 8 )
if ( x4 - > params . i_bitdepth > 8 )
pic - > img . i_csp | = X264_CSP_HIGH_DEPTH ;
pic - > img . i_plane = av_pix_fmt_count_planes ( ctx - > pix_fmt ) ;
@ -564,7 +557,7 @@ static int setup_frame(AVCodecContext *ctx, const AVFrame *frame,
sd = av_frame_get_side_data ( frame , AV_FRAME_DATA_REGIONS_OF_INTEREST ) ;
if ( sd ) {
ret = setup_roi ( ctx , pic , bit_depth , frame , sd - > data , sd - > size ) ;
ret = setup_roi ( ctx , pic , frame , sd - > data , sd - > size ) ;
if ( ret < 0 )
goto fail ;
}
@ -1109,9 +1102,7 @@ static av_cold int X264_init(AVCodecContext *avctx)
x4 - > params . p_log_private = avctx ;
x4 - > params . i_log_level = X264_LOG_DEBUG ;
x4 - > params . i_csp = convert_pix_fmt ( avctx - > pix_fmt ) ;
# if X264_BUILD >= 153
x4 - > params . i_bitdepth = av_pix_fmt_desc_get ( avctx - > pix_fmt ) - > comp [ 0 ] . depth ;
# endif
PARSE_X264_OPT ( " weightp " , wpredp ) ;
@ -1180,11 +1171,10 @@ static av_cold int X264_init(AVCodecContext *avctx)
else if ( x4 - > params . i_level_idc > 0 ) {
int i ;
int mbn = AV_CEIL_RSHIFT ( avctx - > width , 4 ) * AV_CEIL_RSHIFT ( avctx - > height , 4 ) ;
int scale = X264_BUILD < 129 ? 384 : 1 ;
for ( i = 0 ; i < x264_levels [ i ] . level_idc ; i + + )
if ( x264_levels [ i ] . level_idc = = x4 - > params . i_level_idc )
x4 - > params . i_frame_reference = av_clip ( x264_levels [ i ] . dpb / mbn / scale , 1 , x4 - > params . i_frame_reference ) ;
x4 - > params . i_frame_reference = av_clip ( x264_levels [ i ] . dpb / mbn , 1 , x4 - > params . i_frame_reference ) ;
}
if ( avctx - > trellis > = 0 )
@ -1228,12 +1218,7 @@ static av_cold int X264_init(AVCodecContext *avctx)
x4 - > params . b_vfr_input = 0 ;
}
if ( x4 - > avcintra_class > = 0 )
# if X264_BUILD >= 142
x4 - > params . i_avcintra_class = x4 - > avcintra_class ;
# else
av_log ( avctx , AV_LOG_ERROR ,
" x264 too old for AVC Intra, at least version 142 needed \n " ) ;
# endif
if ( x4 - > avcintra_class > 200 ) {
# if X264_BUILD < 164
@ -1395,11 +1380,9 @@ FF_ENABLE_DEPRECATION_WARNINGS
}
}
# if X264_BUILD >= 142
/* Separate headers not supported in AVC-Intra mode */
if ( x4 - > avcintra_class > = 0 )
x4 - > params . b_repeat_headers = 1 ;
# endif
{
AVDictionaryEntry * en = NULL ;
@ -1513,18 +1496,6 @@ static const enum AVPixelFormat pix_fmts_8bit_rgb[] = {
} ;
# endif
# if X264_BUILD < 153
static av_cold void X264_init_static ( FFCodec * codec )
{
if ( x264_bit_depth = = 8 )
codec - > p . pix_fmts = pix_fmts_8bit ;
else if ( x264_bit_depth = = 9 )
codec - > p . pix_fmts = pix_fmts_9bit ;
else if ( x264_bit_depth = = 10 )
codec - > p . pix_fmts = pix_fmts_10bit ;
}
# endif
# define OFFSET(x) offsetof(X264Context, x)
# define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
static const AVOption options [ ] = {
@ -1544,9 +1515,7 @@ static const AVOption options[] = {
{ " none " , NULL , 0 , AV_OPT_TYPE_CONST , { . i64 = X264_AQ_NONE } , INT_MIN , INT_MAX , VE , . unit = " aq_mode " } ,
{ " variance " , " Variance AQ (complexity mask) " , 0 , AV_OPT_TYPE_CONST , { . i64 = X264_AQ_VARIANCE } , INT_MIN , INT_MAX , VE , . unit = " aq_mode " } ,
{ " autovariance " , " Auto-variance AQ " , 0 , AV_OPT_TYPE_CONST , { . i64 = X264_AQ_AUTOVARIANCE } , INT_MIN , INT_MAX , VE , . unit = " aq_mode " } ,
# if X264_BUILD >= 144
{ " autovariance-biased " , " Auto-variance AQ with bias to dark scenes " , 0 , AV_OPT_TYPE_CONST , { . i64 = X264_AQ_AUTOVARIANCE_BIASED } , INT_MIN , INT_MAX , VE , . unit = " aq_mode " } ,
# endif
{ " aq-strength " , " AQ strength. Reduces blocking and blurring in flat and textured areas. " , OFFSET ( aq_strength ) , AV_OPT_TYPE_FLOAT , { . dbl = - 1 } , - 1 , FLT_MAX , VE } ,
{ " psy " , " Use psychovisual optimizations. " , OFFSET ( psy ) , AV_OPT_TYPE_BOOL , { . i64 = - 1 } , - 1 , 1 , VE } ,
{ " psy-rd " , " Strength of psychovisual optimization, in <psy-rd>:<psy-trellis> format. " , OFFSET ( psy_rd ) , AV_OPT_TYPE_STRING , { 0 } , 0 , 0 , VE } ,
@ -1644,10 +1613,7 @@ static const AVClass x264_class = {
. version = LIBAVUTIL_VERSION_INT ,
} ;
# if X264_BUILD >= 153
const
# endif
FFCodec ff_libx264_encoder = {
const FFCodec ff_libx264_encoder = {
. p . name = " libx264 " ,
CODEC_LONG_NAME ( " libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 " ) ,
. p . type = AVMEDIA_TYPE_VIDEO ,
@ -1665,11 +1631,7 @@ FFCodec ff_libx264_encoder = {
. flush = X264_flush ,
. close = X264_close ,
. defaults = x264_defaults ,
# if X264_BUILD < 153
. init_static_data = X264_init_static ,
# else
. p . pix_fmts = pix_fmts_all ,
# endif
. caps_internal = FF_CODEC_CAP_INIT_CLEANUP | FF_CODEC_CAP_AUTO_THREADS
# if X264_BUILD < 158
| FF_CODEC_CAP_NOT_INIT_THREADSAFE