[vlc-devel] [PATCH 1/3] avcodec: va: we need a pointer to a surface not a uint8_t*

Steve Lhomme robux4 at videolabs.io
Thu Dec 1 18:04:54 CET 2016


This avoids a dirty cast in each va module.
---
 modules/codec/avcodec/d3d11va.c    | 2 +-
 modules/codec/avcodec/directx_va.c | 4 ++--
 modules/codec/avcodec/directx_va.h | 2 +-
 modules/codec/avcodec/dxva2.c      | 2 +-
 modules/codec/avcodec/va.h         | 4 ++--
 modules/codec/avcodec/vaapi.c      | 2 +-
 modules/codec/avcodec/vda.c        | 4 ++--
 modules/codec/avcodec/video.c      | 2 +-
 modules/hw/vdpau/avcodec.c         | 2 +-
 9 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c
index e7ffbb0..4b346d5 100644
--- a/modules/codec/avcodec/d3d11va.c
+++ b/modules/codec/avcodec/d3d11va.c
@@ -365,7 +365,7 @@ static int CheckDevice(vlc_va_t *va)
     return VLC_SUCCESS;
 }
 
-static int Get(vlc_va_t *va, picture_t *pic, uint8_t **data)
+static int Get(vlc_va_t *va, picture_t *pic, void **data)
 {
     return directx_va_Get(va, &va->sys->dx_sys, pic, data);
 }
diff --git a/modules/codec/avcodec/directx_va.c b/modules/codec/avcodec/directx_va.c
index 6b07d2f..747c6d9 100644
--- a/modules/codec/avcodec/directx_va.c
+++ b/modules/codec/avcodec/directx_va.c
@@ -376,7 +376,7 @@ void DestroyVideoDecoder(vlc_va_t *va, directx_sys_t *dx_sys)
 }
 
 /* FIXME it is nearly common with VAAPI */
-int directx_va_Get(vlc_va_t *va, directx_sys_t *dx_sys, picture_t *pic, uint8_t **data)
+int directx_va_Get(vlc_va_t *va, directx_sys_t *dx_sys, picture_t *pic, void **data)
 {
     /* Check the device */
     if (dx_sys->pf_check_device(va)!=VLC_SUCCESS)
@@ -407,7 +407,7 @@ int directx_va_Get(vlc_va_t *va, directx_sys_t *dx_sys, picture_t *pic, uint8_t
 
     surface->refcount = 1;
     surface->order = ++dx_sys->surface_order;
-    *data = (void *)dx_sys->hw_surface[i];
+    *data = dx_sys->hw_surface[i];
     pic->context = surface;
 
     vlc_mutex_unlock( &dx_sys->surface_lock );
diff --git a/modules/codec/avcodec/directx_va.h b/modules/codec/avcodec/directx_va.h
index 700ecb1..fa29cf0 100644
--- a/modules/codec/avcodec/directx_va.h
+++ b/modules/codec/avcodec/directx_va.h
@@ -137,7 +137,7 @@ typedef struct
 int directx_va_Open(vlc_va_t *, directx_sys_t *, AVCodecContext *ctx, const es_format_t *fmt, bool b_dll);
 void directx_va_Close(vlc_va_t *, directx_sys_t *);
 int directx_va_Setup(vlc_va_t *, directx_sys_t *, AVCodecContext *avctx);
-int directx_va_Get(vlc_va_t *, directx_sys_t *, picture_t *pic, uint8_t **data);
+int directx_va_Get(vlc_va_t *, directx_sys_t *, picture_t *pic, void **data);
 void directx_va_Release(void *opaque);
 char *directx_va_GetDecoderName(const GUID *guid);
 
diff --git a/modules/codec/avcodec/dxva2.c b/modules/codec/avcodec/dxva2.c
index 2b6a1fc..2a5590e 100644
--- a/modules/codec/avcodec/dxva2.c
+++ b/modules/codec/avcodec/dxva2.c
@@ -296,7 +296,7 @@ static int CheckDevice(vlc_va_t *va)
     return VLC_SUCCESS;
 }
 
-static int Get(vlc_va_t *va, picture_t *pic, uint8_t **data)
+static int Get(vlc_va_t *va, picture_t *pic, void **data)
 {
     return directx_va_Get(va, &va->sys->dx_sys, pic, data);
 }
diff --git a/modules/codec/avcodec/va.h b/modules/codec/avcodec/va.h
index 4f7df66..da039f3 100644
--- a/modules/codec/avcodec/va.h
+++ b/modules/codec/avcodec/va.h
@@ -40,7 +40,7 @@ struct vlc_va_t {
     VLC_DEPRECATED
     void (*setup)(vlc_va_t *, vlc_fourcc_t *output);
 #endif
-    int  (*get)(vlc_va_t *, picture_t *pic, uint8_t **data);
+    int  (*get)(vlc_va_t *, picture_t *pic, void **data);
     void (*release)(void *pic);
     int  (*extract)(vlc_va_t *, picture_t *pic, uint8_t *data);
 };
@@ -78,7 +78,7 @@ vlc_va_t *vlc_va_New(vlc_object_t *obj, AVCodecContext *,
  *
  * @return VLC_SUCCESS on success, otherwise an error code.
  */
-static inline int vlc_va_Get(vlc_va_t *va, picture_t *pic, uint8_t **data)
+static inline int vlc_va_Get(vlc_va_t *va, picture_t *pic, void **data)
 {
     return va->get(va, pic, data);
 }
diff --git a/modules/codec/avcodec/vaapi.c b/modules/codec/avcodec/vaapi.c
index c9e51fe..68d9c06 100644
--- a/modules/codec/avcodec/vaapi.c
+++ b/modules/codec/avcodec/vaapi.c
@@ -144,7 +144,7 @@ error:
     return ret;
 }
 
-static int Get( vlc_va_t *va, picture_t *pic, uint8_t **data )
+static int Get( vlc_va_t *va, picture_t *pic, void **data )
 {
     vlc_va_sys_t *sys = va->sys;
     unsigned i = sys->count;
diff --git a/modules/codec/avcodec/vda.c b/modules/codec/avcodec/vda.c
index f864797..5afb59c 100644
--- a/modules/codec/avcodec/vda.c
+++ b/modules/codec/avcodec/vda.c
@@ -47,7 +47,7 @@
 static int Open( vlc_va_t *, AVCodecContext *, enum PixelFormat,
                  const es_format_t *, picture_sys_t * );
 static void Close( vlc_va_t * , AVCodecContext *);
-static int Get( vlc_va_t *, picture_t *, uint8_t ** );
+static int Get( vlc_va_t *, picture_t *, void ** );
 static int Extract( vlc_va_t *, picture_t *, uint8_t * );
 static void Release( void *opaque );
 
@@ -157,7 +157,7 @@ static void Close( vlc_va_t *va, AVCodecContext *avctx )
 }
 
 // Never called
-static int Get( vlc_va_t *va, picture_t *p_picture, uint8_t **data )
+static int Get( vlc_va_t *va, picture_t *p_picture, void **data )
 {
     VLC_UNUSED( va );
     (void) p_picture;
diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
index 19442d4..e9c2595 100644
--- a/modules/codec/avcodec/video.c
+++ b/modules/codec/avcodec/video.c
@@ -1119,7 +1119,7 @@ static int lavc_va_GetFrame(struct AVCodecContext *ctx, AVFrame *frame,
     decoder_t *dec = ctx->opaque;
     vlc_va_t *va = dec->p_sys->p_va;
 
-    if (vlc_va_Get(va, pic, &frame->data[0]))
+    if (vlc_va_Get(va, pic, (void**)&frame->data[0]))
     {
         msg_Err(dec, "hardware acceleration picture allocation failed");
         picture_Release(pic);
diff --git a/modules/hw/vdpau/avcodec.c b/modules/hw/vdpau/avcodec.c
index ac95dc9..209d471 100644
--- a/modules/hw/vdpau/avcodec.c
+++ b/modules/hw/vdpau/avcodec.c
@@ -95,7 +95,7 @@ static vlc_vdp_video_field_t *GetSurface(vlc_va_t *va)
     return NULL;
 }
 
-static int Lock(vlc_va_t *va, picture_t *pic, uint8_t **data)
+static int Lock(vlc_va_t *va, picture_t *pic, void **data)
 {
     vlc_vdp_video_field_t *field;
     unsigned tries = (CLOCK_FREQ + VOUT_OUTMEM_SLEEP) / VOUT_OUTMEM_SLEEP;
-- 
2.10.1



More information about the vlc-devel mailing list