@ -345,6 +345,18 @@ static void null_draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) {
static void null_end_frame ( AVFilterLink * inlink ) { }
static void null_end_frame ( AVFilterLink * inlink ) { }
static int poll_frame ( AVFilterLink * link )
{
AVFilterContext * s = link - > src ;
OverlayContext * over = s - > priv ;
int ret = avfilter_poll_frame ( s - > inputs [ OVERLAY ] ) ;
if ( ret = = AVERROR_EOF )
ret = ! ! over - > overpicref ;
return ret & & avfilter_poll_frame ( s - > inputs [ MAIN ] ) ;
}
AVFilter avfilter_vf_overlay = {
AVFilter avfilter_vf_overlay = {
. name = " overlay " ,
. name = " overlay " ,
. description = NULL_IF_CONFIG_SMALL ( " Overlay a video source on top of the input. " ) ,
. description = NULL_IF_CONFIG_SMALL ( " Overlay a video source on top of the input. " ) ,
@ -376,6 +388,7 @@ AVFilter avfilter_vf_overlay = {
{ . name = NULL } } ,
{ . name = NULL } } ,
. outputs = ( AVFilterPad [ ] ) { { . name = " default " ,
. outputs = ( AVFilterPad [ ] ) { { . name = " default " ,
. type = AVMEDIA_TYPE_VIDEO ,
. type = AVMEDIA_TYPE_VIDEO ,
. config_props = config_output , } ,
. config_props = config_output ,
. poll_frame = poll_frame } ,
{ . name = NULL } } ,
{ . name = NULL } } ,
} ;
} ;