Browse Source

va: use operations structure

pull/94/head
Rémi Denis-Courmont 7 years ago
parent
commit
bbbdc5ca6c
  1. 6
      modules/codec/avcodec/d3d11va.c
  2. 5
      modules/codec/avcodec/dxva2.c
  3. 4
      modules/codec/avcodec/va.c
  4. 10
      modules/codec/avcodec/va.h
  5. 5
      modules/codec/avcodec/vaapi.c
  6. 5
      modules/hw/vdpau/avcodec.c

6
modules/codec/avcodec/d3d11va.c

@ -308,6 +308,8 @@ static void Close(vlc_va_t *va, void **ctx)
free(sys);
}
static const struct vlc_va_operations ops = { Get, Close, };
static int Open(vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat pix_fmt,
const es_format_t *fmt, picture_sys_d3d11_t *p_sys)
{
@ -409,9 +411,7 @@ static int Open(vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat pix_fmt,
ctx->hwaccel_context = &sys->hw;
va->get = Get;
va->close = Close;
va->ops = &ops;
return VLC_SUCCESS;
error:

5
modules/codec/avcodec/dxva2.c

@ -253,6 +253,8 @@ static void Close(vlc_va_t *va, void **ctx)
free(sys);
}
static const struct vlc_va_operations ops = { Get, Close, };
static int Open(vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat pix_fmt,
const es_format_t *fmt, picture_sys_d3d9_t *p_sys)
{
@ -337,8 +339,7 @@ static int Open(vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat pix_fmt,
ctx->hwaccel_context = &sys->hw;
va->get = Get;
va->close = Close;
va->ops = &ops;
return VLC_SUCCESS;
error:

4
modules/codec/avcodec/va.c

@ -125,7 +125,7 @@ vlc_va_t *vlc_va_New(vlc_object_t *obj, AVCodecContext *avctx,
void vlc_va_Delete(vlc_va_t *va, void **hwctx)
{
if (va->close != NULL)
va->close(va, hwctx);
if (va->ops->close != NULL)
va->ops->close(va, hwctx);
vlc_object_delete(va);
}

10
modules/codec/avcodec/va.h

@ -28,12 +28,16 @@
typedef struct vlc_va_t vlc_va_t;
typedef struct vlc_va_sys_t vlc_va_sys_t;
struct vlc_va_operations {
int (*get)(vlc_va_t *, picture_t *pic, uint8_t **surface);
void (*close)(vlc_va_t *, void **hwctx);
};
struct vlc_va_t {
struct vlc_object_t obj;
vlc_va_sys_t *sys;
int (*get)(vlc_va_t *, picture_t *pic, uint8_t **surface);
void (*close)(vlc_va_t *, void **hwctx);
const struct vlc_va_operations *ops;
};
/**
@ -75,7 +79,7 @@ vlc_va_t *vlc_va_New(vlc_object_t *obj, AVCodecContext *,
*/
static inline int vlc_va_Get(vlc_va_t *va, picture_t *pic, uint8_t **surface)
{
return va->get(va, pic, surface);
return va->ops->get(va, pic, surface);
}
/**

5
modules/codec/avcodec/vaapi.c

@ -145,6 +145,8 @@ static void Delete(vlc_va_t *va, void **hwctx)
free(sys);
}
static const struct vlc_va_operations ops = { Get, Delete, };
static int Create(vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat pix_fmt,
const es_format_t *fmt, void *p_sys)
{
@ -201,8 +203,7 @@ static int Create(vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat pix_fmt,
ctx->hwaccel_context = &sys->hw_ctx;
va->sys = sys;
va->get = Get;
va->close = Delete;
va->ops = &ops;
return VLC_SUCCESS;
error:

5
modules/hw/vdpau/avcodec.c

@ -128,6 +128,8 @@ static void Close(vlc_va_t *va, void **hwctx)
free(sys);
}
static const struct vlc_va_operations ops = { Lock, Close, };
static int Open(vlc_va_t *va, AVCodecContext *avctx, enum PixelFormat pix_fmt,
const es_format_t *fmt, void *p_sys)
{
@ -215,8 +217,7 @@ static int Open(vlc_va_t *va, AVCodecContext *avctx, enum PixelFormat pix_fmt,
if (vdp_get_information_string(sys->vdp, &infos) == VDP_STATUS_OK)
msg_Info(va, "Using %s", infos);
va->get = Lock;
va->close = Close;
va->ops = &ops;
return VLC_SUCCESS;
error:

Loading…
Cancel
Save