vlc | branch: master | Steve Lhomme <[email protected]> | Wed Nov 13 09:35:38 2019 +0100| [9715aeb70f78b5bce3980db6042bf2668f272324] | committer: Steve Lhomme
vaapi: chroma: don't keep the decoder device after we put it in the vctx > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9715aeb70f78b5bce3980db6042bf2668f272324 --- modules/hw/vaapi/chroma.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/modules/hw/vaapi/chroma.c b/modules/hw/vaapi/chroma.c index c860de4d73..38b904ed20 100644 --- a/modules/hw/vaapi/chroma.c +++ b/modules/hw/vaapi/chroma.c @@ -39,7 +39,6 @@ typedef struct { - vlc_decoder_device *dec_device; VADisplay dpy; picture_pool_t * dest_pics; VASurfaceID * va_surface_ids; @@ -345,16 +344,22 @@ vlc_vaapi_OpenChroma(vlc_object_t *obj) filter_sys->image_fallback_failed = false; if (is_upload) { - filter_sys->dec_device = filter_HoldDecoderDeviceType( filter, VLC_DECODER_DEVICE_VAAPI ); - if (filter_sys->dec_device == NULL) + vlc_decoder_device *dec_device = filter_HoldDecoderDeviceType( filter, VLC_DECODER_DEVICE_VAAPI ); + if (dec_device == NULL) { free(filter_sys); return VLC_EGENERIC; } - filter_sys->dpy = filter_sys->dec_device->opaque; + filter->vctx_out = vlc_video_context_Create( dec_device, VLC_VIDEO_CONTEXT_VAAPI, 0, NULL ); + vlc_decoder_device_Release(dec_device); + if (!filter->vctx_out) + { + free(filter_sys); + return VLC_EGENERIC; + } - filter->vctx_out = vlc_video_context_Create( filter_sys->dec_device, VLC_VIDEO_CONTEXT_VAAPI, 0, NULL ); + filter_sys->dpy = dec_device->opaque; filter_sys->dest_pics = vlc_vaapi_PoolNew(obj, filter->vctx_out, filter_sys->dpy, @@ -362,7 +367,6 @@ vlc_vaapi_OpenChroma(vlc_object_t *obj) &filter->fmt_out.video); if (!filter_sys->dest_pics) { - vlc_decoder_device_Release(filter_sys->dec_device); vlc_video_context_Release(filter->vctx_out); filter->vctx_out = NULL; free(filter_sys); @@ -373,7 +377,6 @@ vlc_vaapi_OpenChroma(vlc_object_t *obj) { /* Don't fetch the vaapi instance since it may be not created yet at * this point (in case of cpu rendering) */ - filter_sys->dec_device = NULL; filter_sys->dpy = NULL; filter_sys->dest_pics = NULL; } @@ -384,7 +387,6 @@ vlc_vaapi_OpenChroma(vlc_object_t *obj) if (is_upload) { picture_pool_Release(filter_sys->dest_pics); - vlc_decoder_device_Release(filter_sys->dec_device); vlc_video_context_Release(filter->vctx_out); filter->vctx_out = NULL; } @@ -410,8 +412,6 @@ vlc_vaapi_CloseChroma(vlc_object_t *obj) if (filter_sys->dest_pics) picture_pool_Release(filter_sys->dest_pics); - if (filter_sys->dec_device != NULL) - vlc_decoder_device_Release(filter_sys->dec_device); CopyCleanCache(&filter_sys->cache); if (filter->vctx_out) vlc_video_context_Release(filter->vctx_out); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
