Module: libav
Branch: master
Commit: 7433feb82f75827884d909de34d341a1c4401d4a

Author:    Mark Thompson <[email protected]>
Committer: Mark Thompson <[email protected]>
Date:      Mon Oct 31 22:14:04 2016 +0000

lavfi: Make default get_video_buffer work with hardware frames

---

 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);
 

_______________________________________________
libav-commits mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-commits

Reply via email to