vlc | branch: master | Steve Lhomme <[email protected]> | Fri Sep 20 09:29:57 2019 +0200| [22969b60ac5e7033a0bb4c53432c5af1d00d1087] | committer: Steve Lhomme
d3d9: use a helper to get the proper type of the D3D9 decoder device > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=22969b60ac5e7033a0bb4c53432c5af1d00d1087 --- modules/video_chroma/d3d9_fmt.h | 22 ++++++++++++++++++++++ modules/video_output/win32/direct3d9.c | 9 +++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/modules/video_chroma/d3d9_fmt.h b/modules/video_chroma/d3d9_fmt.h index 94fe506405..eef89fa3c4 100644 --- a/modules/video_chroma/d3d9_fmt.h +++ b/modules/video_chroma/d3d9_fmt.h @@ -24,6 +24,7 @@ #define VLC_VIDEOCHROMA_D3D9_FMT_H_ #include <vlc_picture.h> +#include <vlc_codec.h> #define COBJMACROS #include <d3d9.h> @@ -84,6 +85,27 @@ static inline bool is_d3d9_opaque(vlc_fourcc_t chroma) } } +static inline d3d9_decoder_device_t *GetD3D9OpaqueDevice(vlc_decoder_device *device) +{ + if (device == NULL || device->type != VLC_DECODER_DEVICE_DXVA2) + return NULL; + return device->opaque; +} + +static inline d3d9_decoder_device_t *GetD3D9OpaqueContext(vlc_video_context *vctx) +{ + vlc_decoder_device *device = vctx ? vctx->device : NULL; + if (unlikely(device == NULL)) + return NULL; + d3d9_decoder_device_t *res = NULL; + if (device->type == VLC_DECODER_DEVICE_DXVA2) + { + assert(device->opaque != NULL); + res = GetD3D9OpaqueDevice(device); + } + return res; +} + static inline void AcquireD3D9PictureSys(picture_sys_d3d9_t *p_sys) { IDirect3DSurface9_AddRef(p_sys->surface); diff --git a/modules/video_output/win32/direct3d9.c b/modules/video_output/win32/direct3d9.c index 1a3e3db8e1..23d2c067bb 100644 --- a/modules/video_output/win32/direct3d9.c +++ b/modules/video_output/win32/direct3d9.c @@ -41,7 +41,6 @@ #include <vlc_common.h> #include <vlc_plugin.h> -#include <vlc_codec.h> #include <vlc_vout_display.h> #include <vlc/libvlc.h> @@ -1655,9 +1654,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg, sys->startEndRenderingCb = NULL; } - d3d9_decoder_device_t *d3d9_decoder = NULL; - if ( context && context->device->type == VLC_DECODER_DEVICE_DXVA2 ) - d3d9_decoder = context->device->opaque; + d3d9_decoder_device_t *d3d9_decoder = GetD3D9OpaqueContext(context); if ( d3d9_decoder == NULL ) { // No d3d9 device, we create one @@ -1922,9 +1919,9 @@ GLConvOpen(vlc_object_t *obj) HRESULT hr; int adapter = -1; - if (tc->dec_device->type == VLC_DECODER_DEVICE_DXVA2) + d3d9_decoder_device_t *d3d9_decoder = GetD3D9OpaqueDevice( tc->dec_device ); + if ( d3d9_decoder != NULL ) { - d3d9_decoder_device_t *d3d9_decoder = tc->dec_device->opaque; D3D9_CloneExternal(&priv->hd3d, d3d9_decoder->device); adapter = d3d9_decoder->adapter; } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
