diff --git a/include/vlc_picture.h b/include/vlc_picture.h index 5aece95120..c37abed150 100644 --- a/include/vlc_picture.h +++ b/include/vlc_picture.h @@ -91,7 +91,7 @@ struct vlc_video_context_operations enum vlc_video_context_type { VLC_VIDEO_CONTEXT_VAAPI = 1, //!< private: vaapi_vctx* or empty - VLC_VIDEO_CONTEXT_VDPAU, //!< empty + VLC_VIDEO_CONTEXT_VDPAU, //!< private: chroma type (YUV) or empty (RGB) VLC_VIDEO_CONTEXT_DXVA2, //!< private: d3d9_video_context_t* VLC_VIDEO_CONTEXT_D3D11VA, //!< private: d3d11_video_context_t* VLC_VIDEO_CONTEXT_AWINDOW, //!< private: android_video_context_t* diff --git a/modules/hw/vdpau/avcodec.c b/modules/hw/vdpau/avcodec.c index 3f7f4f62ae..97d1a0d3cc 100644 --- a/modules/hw/vdpau/avcodec.c +++ b/modules/hw/vdpau/avcodec.c @@ -146,7 +146,7 @@ static int Open(vlc_va_t *va, AVCodecContext *avctx, enum AVPixelFormat hwfmt, c (void) desc; void *func; VdpStatus err; - VdpChromaType type; + VdpChromaType type, *chroma; uint32_t width, height; if (av_vdpau_get_surface_parameters(avctx, &type, &width, &height)) @@ -193,13 +193,16 @@ static int Open(vlc_va_t *va, AVCodecContext *avctx, enum AVPixelFormat hwfmt, c return VLC_ENOMEM; sys->vctx = vlc_video_context_Create(dec_device, VLC_VIDEO_CONTEXT_VDPAU, - 0, &vdpau_vctx_ops); + sizeof (VdpChromaType), + &vdpau_vctx_ops); if (sys->vctx == NULL) { free(sys); return VLC_ENOMEM; } + chroma = vlc_video_context_GetPrivate(sys->vctx, VLC_VIDEO_CONTEXT_VDPAU); + *chroma = type; sys->type = type; sys->width = width; sys->height = height;