[FFmpeg-cvslog] avcodec/vble: add frame threading support

Paul B Mahol git at videolan.org
Thu May 26 13:38:44 CEST 2016


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Sat May 21 23:21:17 2016 +0200| [d93495c95411b95cfc5c050dbabfcdff1c10890a] | committer: Paul B Mahol

avcodec/vble: add frame threading support

Signed-off-by: Paul B Mahol <onemda at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d93495c95411b95cfc5c050dbabfcdff1c10890a
---

 libavcodec/vble.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/libavcodec/vble.c b/libavcodec/vble.c
index bb9c81c..0340cad 100644
--- a/libavcodec/vble.c
+++ b/libavcodec/vble.c
@@ -33,6 +33,7 @@
 #include "huffyuvdsp.h"
 #include "internal.h"
 #include "mathops.h"
+#include "thread.h"
 
 typedef struct VBLEContext {
     AVCodecContext *avctx;
@@ -125,6 +126,7 @@ static int vble_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
     int offset = 0;
     int width_uv = avctx->width / 2, height_uv = avctx->height / 2;
     int ret;
+    ThreadFrame frame = { .f = data };
 
     if (avpkt->size < 4 || avpkt->size - 4 > INT_MAX/8) {
         av_log(avctx, AV_LOG_ERROR, "Invalid packet size\n");
@@ -132,7 +134,7 @@ static int vble_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
     }
 
     /* Allocate buffer */
-    if ((ret = ff_get_buffer(avctx, pic, 0)) < 0)
+    if ((ret = ff_thread_get_buffer(avctx, &frame, 0)) < 0)
         return ret;
 
     /* Set flags */
@@ -212,5 +214,6 @@ AVCodec ff_vble_decoder = {
     .init           = vble_decode_init,
     .close          = vble_decode_close,
     .decode         = vble_decode_frame,
-    .capabilities   = AV_CODEC_CAP_DR1,
+    .capabilities   = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS,
+    .init_thread_copy = ONLY_IF_THREADS_ENABLED(vble_decode_init),
 };



More information about the ffmpeg-cvslog mailing list