[vlc-commits] codec: vt_utils: change cvpxpic_attach_with_cb args

Thomas Guillem git at videolan.org
Tue Jan 16 14:17:23 CET 2018


vlc/vlc-3.0 | branch: master | Thomas Guillem <thomas at gllm.fr> | Tue Jan 16 10:51:58 2018 +0100| [978f1eaf694d1eac47aeac25aa17bd82f73a899a] | committer: Thomas Guillem

codec: vt_utils: change cvpxpic_attach_with_cb args

Add CVPixelBufferRef and numbers of picture fields.

(cherry picked from commit 5e57c4ecbad4bba9c6da5b3cd3228510dab8046a)
Signed-off-by: Thomas Guillem <thomas at gllm.fr>

> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=978f1eaf694d1eac47aeac25aa17bd82f73a899a
---

 modules/codec/videotoolbox.m |  3 ++-
 modules/codec/vt_utils.c     | 11 +++++++----
 modules/codec/vt_utils.h     |  2 +-
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/modules/codec/videotoolbox.m b/modules/codec/videotoolbox.m
index 58a8eee663..5688b89cc3 100644
--- a/modules/codec/videotoolbox.m
+++ b/modules/codec/videotoolbox.m
@@ -1976,7 +1976,8 @@ static int UpdateVideoFormat(decoder_t *p_dec, CVPixelBufferRef imageBuffer)
     return 0;
 }
 
-static void pic_holder_on_cvpx_released(void *data)
+static void
+pic_holder_on_cvpx_released(CVPixelBufferRef cvpx, void *data, unsigned nb_fields)
 {
     struct pic_holder *pic_holder = data;
 
diff --git a/modules/codec/vt_utils.c b/modules/codec/vt_utils.c
index 0b428fabda..f36b11003a 100644
--- a/modules/codec/vt_utils.c
+++ b/modules/codec/vt_utils.c
@@ -46,9 +46,10 @@ struct cvpxpic_ctx
 {
     picture_context_t s;
     CVPixelBufferRef cvpx;
+    unsigned nb_fields;
 
     atomic_uint ref_count;
-    void (*on_released_cb)(void *);
+    void (*on_released_cb)(CVPixelBufferRef, void *, unsigned);
     void *on_released_data;
 };
 
@@ -61,7 +62,7 @@ cvpxpic_destroy_cb(picture_context_t *opaque)
     {
         CFRelease(ctx->cvpx);
         if (ctx->on_released_cb)
-            ctx->on_released_cb(ctx->on_released_data);
+            ctx->on_released_cb(ctx->cvpx, ctx->on_released_data, ctx->nb_fields);
         free(opaque);
     }
 }
@@ -77,7 +78,8 @@ cvpxpic_copy_cb(struct picture_context_t *opaque)
 static int
 cvpxpic_attach_common(picture_t *p_pic, CVPixelBufferRef cvpx,
                       void (*pf_destroy)(picture_context_t *),
-                      void (*on_released_cb)(void *), void *on_released_data)
+                      void (*on_released_cb)(CVPixelBufferRef, void *, unsigned),
+                      void *on_released_data)
 {
     struct cvpxpic_ctx *ctx = malloc(sizeof(struct cvpxpic_ctx));
     if (ctx == NULL)
@@ -88,6 +90,7 @@ cvpxpic_attach_common(picture_t *p_pic, CVPixelBufferRef cvpx,
     ctx->s.destroy = pf_destroy;
     ctx->s.copy = cvpxpic_copy_cb;
     ctx->cvpx = CVPixelBufferRetain(cvpx);
+    ctx->nb_fields = p_pic->i_nb_fields;
     atomic_init(&ctx->ref_count, 1);
 
     ctx->on_released_cb = on_released_cb;
@@ -105,7 +108,7 @@ cvpxpic_attach(picture_t *p_pic, CVPixelBufferRef cvpx)
 }
 
 int cvpxpic_attach_with_cb(picture_t *p_pic, CVPixelBufferRef cvpx,
-                           void (*on_released_cb)(void *),
+                           void (*on_released_cb)(CVPixelBufferRef, void *, unsigned),
                            void *on_released_data)
 {
     return cvpxpic_attach_common(p_pic, cvpx, cvpxpic_destroy_cb, on_released_cb,
diff --git a/modules/codec/vt_utils.h b/modules/codec/vt_utils.h
index f2f31c3914..24cd4aa898 100644
--- a/modules/codec/vt_utils.h
+++ b/modules/codec/vt_utils.h
@@ -37,7 +37,7 @@ void cfdict_set_int32(CFMutableDictionaryRef dict, CFStringRef key, int value);
 int cvpxpic_attach(picture_t *p_pic, CVPixelBufferRef cvpx);
 
 int cvpxpic_attach_with_cb(picture_t *p_pic, CVPixelBufferRef cvpx,
-                           void (*on_released_cb)(void *),
+                           void (*on_released_cb)(CVPixelBufferRef, void *, unsigned nb_fields),
                            void *on_released_data);
 
 /*



More information about the vlc-commits mailing list