[vlc-commits] va: mostly remove the setup callback

Rémi Denis-Courmont git at videolan.org
Sun Sep 27 21:57:46 CEST 2015


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sun Sep 27 16:01:52 2015 +0300| [0ce8fcaeb1050c323ecaeef3b25c548698597799] | committer: Rémi Denis-Courmont

va: mostly remove the setup callback

The coded video size is already fixed by the decoder when creating the
vidoe acceleration plugin, while the chroma is fixed by
vlc_va_GetChroma(). This callback is useless.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=0ce8fcaeb1050c323ecaeef3b25c548698597799
---

 modules/codec/avcodec/va.c    |   10 ++++++++++
 modules/codec/avcodec/va.h    |   12 +++---------
 modules/codec/avcodec/vaapi.c |    6 ------
 modules/codec/avcodec/vda.c   |    7 -------
 modules/codec/avcodec/video.c |    2 --
 modules/hw/vdpau/avcodec.c    |   21 ---------------------
 6 files changed, 13 insertions(+), 45 deletions(-)

diff --git a/modules/codec/avcodec/va.c b/modules/codec/avcodec/va.c
index 8c13e55..f534f89 100644
--- a/modules/codec/avcodec/va.c
+++ b/modules/codec/avcodec/va.c
@@ -109,6 +109,16 @@ vlc_va_t *vlc_va_New(vlc_object_t *obj, AVCodecContext *avctx,
     if (va->module == NULL)
     {
         vlc_object_release(va);
+#ifdef _WIN32
+        return NULL;
+    }
+
+    vlc_fourcc_t chroma;
+    va->setup(va, &chroma);
+    if (chroma != vlc_va_GetChroma(pix_fmt, AV_PIX_FMT_YUV420P))
+    {   /* Mismatch, cannot work, fail */
+        vlc_va_Delete(va, avctx);
+#endif
         va = NULL;
     }
     return va;
diff --git a/modules/codec/avcodec/va.h b/modules/codec/avcodec/va.h
index 5dc8b0a..e697118 100644
--- a/modules/codec/avcodec/va.h
+++ b/modules/codec/avcodec/va.h
@@ -36,7 +36,10 @@ struct vlc_va_t {
     module_t *module;
     const char *description;
 
+#ifdef _WIN32
+    VLC_DEPRECATED
     void (*setup)(vlc_va_t *, vlc_fourcc_t *output);
+#endif
     int  (*get)(vlc_va_t *, picture_t *pic, uint8_t **data);
     void (*release)(void *pic, uint8_t *surface);
     int  (*extract)(vlc_va_t *, picture_t *pic, uint8_t *data);
@@ -62,15 +65,6 @@ vlc_va_t *vlc_va_New(vlc_object_t *obj, AVCodecContext *,
                      picture_sys_t *p_sys);
 
 /**
- * Initializes the acceleration video decoding back-end for libavcodec.
- * @param output pointer to video chroma output by the back-end [OUT]
- */
-static inline void vlc_va_Setup(vlc_va_t *va, vlc_fourcc_t *output)
-{
-    va->setup(va, output);
-}
-
-/**
  * Allocates a hardware video surface for a libavcodec frame.
  * The surface will be used as output for the hardware decoder, and possibly
  * also as a reference frame to decode other surfaces.
diff --git a/modules/codec/avcodec/vaapi.c b/modules/codec/avcodec/vaapi.c
index 24ddda4..c4dc52a 100644
--- a/modules/codec/avcodec/vaapi.c
+++ b/modules/codec/avcodec/vaapi.c
@@ -187,11 +187,6 @@ static void Release( void *opaque, uint8_t *data )
     (void) data;
 }
 
-static void Setup( vlc_va_t *va, vlc_fourcc_t *pi_chroma )
-{
-    *pi_chroma = VLC_CODEC_YV12;
-}
-
 static void Delete( vlc_va_t *va, AVCodecContext *avctx )
 {
     vlc_va_sys_t *sys = va->sys;
@@ -462,7 +457,6 @@ static int Create( vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat pix_fmt,
     ctx->hwaccel_context = &sys->hw_ctx;
     va->sys = sys;
     va->description = vaQueryVendorString(sys->hw_ctx.display);
-    va->setup = Setup;
     va->get = Get;
     va->release = Release;
     va->extract = Extract;
diff --git a/modules/codec/avcodec/vda.c b/modules/codec/avcodec/vda.c
index 979b882..2f248d2 100644
--- a/modules/codec/avcodec/vda.c
+++ b/modules/codec/avcodec/vda.c
@@ -48,7 +48,6 @@
 static int Open( vlc_va_t *, AVCodecContext *, enum PixelFormat,
                  const es_format_t *, picture_sys_t * );
 static void Close( vlc_va_t * , AVCodecContext *);
-static void Setup( vlc_va_t *, vlc_fourcc_t *);
 static int Get( vlc_va_t *, picture_t *, uint8_t ** );
 static int Extract( vlc_va_t *, picture_t *, uint8_t * );
 static void Release( void *opaque, uint8_t *data );
@@ -160,7 +159,6 @@ static int Open(vlc_va_t *va,
 
     va->sys = sys;
     va->description = (char *)"VDA";
-    va->setup = Setup;
     va->get = Get;
     va->release = Release;
     va->extract = Extract;
@@ -174,11 +172,6 @@ static void Close( vlc_va_t *va, AVCodecContext *avctx )
     (void) va;
 }
 
-static void Setup( vlc_va_t *va, vlc_fourcc_t *pi_chroma )
-{
-    *pi_chroma = VLC_CODEC_I420;
-}
-
 // Never called
 static int Get( vlc_va_t *va, picture_t *p_picture, uint8_t **data )
 {
diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
index 4f6a0e2..c8841e4 100644
--- a/modules/codec/avcodec/video.c
+++ b/modules/codec/avcodec/video.c
@@ -1133,8 +1133,6 @@ static enum PixelFormat ffmpeg_GetFormat( AVCodecContext *p_context,
             picture_Release(test_pic);
         if (va == NULL)
             continue; /* Unsupported codec profile or such */
-
-        vlc_va_Setup(va, &p_dec->fmt_out.video.i_chroma);
         post_mt(p_sys);
 
         if (va->description != NULL)
diff --git a/modules/hw/vdpau/avcodec.c b/modules/hw/vdpau/avcodec.c
index 0db483f..71c17dd 100644
--- a/modules/hw/vdpau/avcodec.c
+++ b/modules/hw/vdpau/avcodec.c
@@ -140,26 +140,6 @@ static int Copy(vlc_va_t *va, picture_t *pic, uint8_t *data)
     return VLC_SUCCESS;
 }
 
-static void Setup(vlc_va_t *va, vlc_fourcc_t *chromap)
-{
-    vlc_va_sys_t *sys = va->sys;
-
-    switch (sys->type)
-    {
-        case VDP_CHROMA_TYPE_420:
-            *chromap = VLC_CODEC_VDPAU_VIDEO_420;
-            break;
-        case VDP_CHROMA_TYPE_422:
-            *chromap = VLC_CODEC_VDPAU_VIDEO_422;
-            break;
-        case VDP_CHROMA_TYPE_444:
-            *chromap = VLC_CODEC_VDPAU_VIDEO_444;
-            break;
-        default:
-            vlc_assert_unreachable();
-    }
-}
-
 static int Open(vlc_va_t *va, AVCodecContext *avctx, enum PixelFormat pix_fmt,
                 const es_format_t *fmt, picture_sys_t *p_sys)
 {
@@ -336,7 +316,6 @@ static int Open(vlc_va_t *va, AVCodecContext *avctx, enum PixelFormat pix_fmt,
         infos = "VDPAU";
 
     va->description = infos;
-    va->setup = Setup;
     va->get = Lock;
     va->release = NULL;
     va->extract = Copy;



More information about the vlc-commits mailing list