@ -25,6 +25,7 @@
# include "libavutil/avassert.h"
# include "libavutil/buffer.h"
# include "libavutil/hwcontext.h"
# include "libavutil/imgutils.h"
# include "libavutil/mem.h"
@ -47,6 +48,21 @@ AVFrame *ff_default_get_video_buffer(AVFilterLink *link, int w, int h)
int pool_align = 0 ;
enum AVPixelFormat pool_format = AV_PIX_FMT_NONE ;
if ( link - > hw_frames_ctx & &
( ( AVHWFramesContext * ) link - > hw_frames_ctx - > data ) - > format = = link - > format ) {
int ret ;
AVFrame * frame = av_frame_alloc ( ) ;
if ( ! frame )
return NULL ;
ret = av_hwframe_get_buffer ( link - > hw_frames_ctx , frame , 0 ) ;
if ( ret < 0 )
av_frame_free ( & frame ) ;
return frame ;
}
if ( ! link - > frame_pool ) {
link - > frame_pool = ff_frame_pool_video_init ( av_buffer_allocz , w , h ,
link - > format , BUFFER_ALIGN ) ;