@ -676,6 +676,8 @@ static const AVOption avfilter_options[] = {
{ " enable " , " set enable expression " , OFFSET ( enable_str ) , AV_OPT_TYPE_STRING , { . str = NULL } , . flags = FLAGS } ,
{ " threads " , " Allowed number of threads " , OFFSET ( nb_threads ) , AV_OPT_TYPE_INT ,
{ . i64 = 0 } , 0 , INT_MAX , FLAGS } ,
{ " extra_hw_frames " , " Number of extra hardware frames to allocate for the user " ,
OFFSET ( extra_hw_frames ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , INT_MAX , FLAGS } ,
{ NULL } ,
} ;
@ -1663,3 +1665,24 @@ const AVClass *avfilter_get_class(void)
{
return & avfilter_class ;
}
int ff_filter_init_hw_frames ( AVFilterContext * avctx , AVFilterLink * link ,
int default_pool_size )
{
AVHWFramesContext * frames ;
// Must already be set by caller.
av_assert0 ( link - > hw_frames_ctx ) ;
frames = ( AVHWFramesContext * ) link - > hw_frames_ctx - > data ;
if ( frames - > initial_pool_size = = 0 ) {
// Dynamic allocation is necessarily supported.
} else if ( avctx - > extra_hw_frames > = 0 ) {
frames - > initial_pool_size + = avctx - > extra_hw_frames ;
} else {
frames - > initial_pool_size = default_pool_size ;
}
return 0 ;
}