[vlc-devel] [PATCH 32/48] vaapi: use the decoder device to get the VADisplay
Steve Lhomme
robux4 at ycbcr.xyz
Fri Oct 11 15:35:05 CEST 2019
And remove the locally held decoder device that used to come from the
picture_sys_t.
---
modules/codec/avcodec/vaapi.c | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)
diff --git a/modules/codec/avcodec/vaapi.c b/modules/codec/avcodec/vaapi.c
index 87c67b79aab..2b2783e559e 100644
--- a/modules/codec/avcodec/vaapi.c
+++ b/modules/codec/avcodec/vaapi.c
@@ -50,7 +50,6 @@
struct vlc_va_sys_t
{
- vlc_decoder_device *dec_device;
struct vaapi_context hw_ctx;
};
@@ -139,7 +138,6 @@ static void Delete(vlc_va_t *va)
vlc_vaapi_DestroyContext(o, sys->hw_ctx.display, sys->hw_ctx.context_id);
vlc_vaapi_DestroyConfig(o, sys->hw_ctx.display, sys->hw_ctx.config_id);
- vlc_decoder_device_Release(sys->dec_device);
free(sys);
}
@@ -147,10 +145,11 @@ static const struct vlc_va_operations ops = { Get, Delete, };
static int Create(vlc_va_t *va, AVCodecContext *ctx, const AVPixFmtDescriptor *desc,
enum PixelFormat pix_fmt,
- const es_format_t *fmt, void *p_sys, vlc_decoder_device *device)
+ const es_format_t *fmt, void *p_sys, vlc_decoder_device *dec_device)
{
VLC_UNUSED(desc);
- if (pix_fmt != AV_PIX_FMT_VAAPI_VLD || p_sys == NULL)
+ if (pix_fmt != AV_PIX_FMT_VAAPI_VLD || dec_device == NULL ||
+ dec_device->type != VLC_DECODER_DEVICE_VAAPI)
return VLC_EGENERIC;
vlc_va_sys_t *sys = malloc(sizeof *sys);
@@ -162,10 +161,7 @@ static int Create(vlc_va_t *va, AVCodecContext *ctx, const AVPixFmtDescriptor *d
int ret = VLC_EGENERIC;
- /* The picture must be allocated by the vout */
- VADisplay va_dpy;
- vlc_decoder_device *dec_device =
- vlc_vaapi_PicSysHoldInstance(p_sys, &va_dpy);
+ VADisplay va_dpy = dec_device->opaque;
VASurfaceID *render_targets;
unsigned num_render_targets;
@@ -183,7 +179,6 @@ static int Create(vlc_va_t *va, AVCodecContext *ctx, const AVPixFmtDescriptor *d
goto error;
/* */
- sys->dec_device = dec_device;
sys->hw_ctx.display = va_dpy;
sys->hw_ctx.config_id = VA_INVALID_ID;
sys->hw_ctx.context_id = VA_INVALID_ID;
@@ -215,7 +210,6 @@ error:
if (sys->hw_ctx.config_id != VA_INVALID_ID)
vlc_vaapi_DestroyConfig(o, sys->hw_ctx.display, sys->hw_ctx.config_id);
free(sys);
- vlc_decoder_device_Release(dec_device);
return ret;
}
--
2.17.1
More information about the vlc-devel
mailing list