[FFmpeg-cvslog] lavfi: Make default get_video_buffer work with hardware frames
Mark Thompson
git at videolan.org
Thu Mar 30 00:20:09 EEST 2017
ffmpeg | branch: master | Mark Thompson <sw at jkqxz.net> | Mon Oct 31 22:14:04 2016 +0000| [7433feb82f75827884d909de34d341a1c4401d4a] | committer: Mark Thompson
lavfi: Make default get_video_buffer work with hardware frames
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7433feb82f75827884d909de34d341a1c4401d4a
---
libavfilter/video.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
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 <stdio.h>
#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);
More information about the ffmpeg-cvslog
mailing list