From 7433feb82f75827884d909de34d341a1c4401d4a Mon Sep 17 00:00:00 2001 From: Mark Thompson Date: Mon, 31 Oct 2016 22:14:04 +0000 Subject: lavfi: Make default get_video_buffer work with hardware frames --- libavfilter/video.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'libavfilter') diff --git a/libavfilter/video.c b/libavfilter/video.c index cadac50..533946a 100644 --- a/libavfilter/video.c +++ b/libavfilter/video.c @@ -20,6 +20,7 @@ #include #include "libavutil/buffer.h" +#include "libavutil/hwcontext.h" #include "libavutil/imgutils.h" #include "libavutil/mem.h" @@ -43,11 +44,16 @@ AVFrame *ff_default_get_video_buffer(AVFilterLink *link, int w, int h) if (!frame) return NULL; - frame->width = w; - frame->height = h; - frame->format = link->format; + if (link->hw_frames_ctx && + ((AVHWFramesContext*)link->hw_frames_ctx->data)->format == link->format) { + ret = av_hwframe_get_buffer(link->hw_frames_ctx, frame, 0); + } else { + frame->width = w; + frame->height = h; + frame->format = link->format; - ret = av_frame_get_buffer(frame, 32); + ret = av_frame_get_buffer(frame, 32); + } if (ret < 0) av_frame_free(&frame); -- cgit v1.1