vlc | branch: master | Steve Lhomme <[email protected]> | Fri Jun 16 14:29:04 2017 +0200| [2a399242d98110f7542857ef5a8ad601f9623c87] | committer: Jean-Baptiste Kempf
dxva2: move the device check in dxva since it's the only one that supports it Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2a399242d98110f7542857ef5a8ad601f9623c87 --- modules/codec/avcodec/d3d11va.c | 19 ------------------ modules/codec/avcodec/dxva2.c | 31 ++++++++++++----------------- modules/codec/avcodec/va_surface.c | 4 ---- modules/codec/avcodec/va_surface_internal.h | 5 ----- 4 files changed, 13 insertions(+), 46 deletions(-) diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c index 5389584bc2..1623cfb331 100644 --- a/modules/codec/avcodec/d3d11va.c +++ b/modules/codec/avcodec/d3d11va.c @@ -183,24 +183,6 @@ static int Extract(vlc_va_t *va, picture_t *output, uint8_t *data) return VLC_SUCCESS; } -static int CheckDevice(vlc_va_t *va) -{ - VLC_UNUSED(va); -#ifdef TODO - /* Check the device */ - /* see MFCreateDXGIDeviceManager in mfplat.dll, not avail in Win7 */ - HRESULT hr = IDirect3DDeviceManager9_TestDevice(sys->devmng, sys->device); - if (hr == DXVA2_E_NEW_VIDEO_DEVICE) { - if (DxResetVideoDecoder(va)) - return VLC_EGENERIC; - } else if (FAILED(hr)) { - msg_Err(va, "IDirect3DDeviceManager9_TestDevice %u", (unsigned)hr); - return VLC_EGENERIC; - } -#endif - return VLC_SUCCESS; -} - static void d3d11_pic_context_destroy(struct picture_context_t *opaque) { struct va_pic_context *pic_ctx = (struct va_pic_context*)opaque; @@ -383,7 +365,6 @@ static int Open(vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat pix_fmt, dx_sys = &sys->dx_sys; - dx_sys->va_pool.pf_check_device = CheckDevice; dx_sys->va_pool.pf_create_device = D3dCreateDevice; dx_sys->va_pool.pf_destroy_device = D3dDestroyDevice; dx_sys->va_pool.pf_create_video_service = DxCreateVideoService; diff --git a/modules/codec/avcodec/dxva2.c b/modules/codec/avcodec/dxva2.c index 6b431a924a..7795ec5f41 100644 --- a/modules/codec/avcodec/dxva2.c +++ b/modules/codec/avcodec/dxva2.c @@ -182,22 +182,6 @@ static int Extract(vlc_va_t *va, picture_t *picture, uint8_t *data) return VLC_SUCCESS; } -static int CheckDevice(vlc_va_t *va) -{ - vlc_va_sys_t *sys = va->sys; - - /* Check the device */ - HRESULT hr = IDirect3DDeviceManager9_TestDevice(sys->devmng, sys->device); - if (hr == DXVA2_E_NEW_VIDEO_DEVICE) { - if (DxResetVideoDecoder(va)) - return VLC_EGENERIC; - } else if (FAILED(hr)) { - msg_Err(va, "IDirect3DDeviceManager9_TestDevice %u", (unsigned)hr); - return VLC_EGENERIC; - } - return VLC_SUCCESS; -} - static void d3d9_pic_context_destroy(struct picture_context_t *opaque) { struct va_pic_context *pic_ctx = (struct va_pic_context*)opaque; @@ -233,7 +217,19 @@ static struct picture_context_t *CreatePicContext(vlc_va_surface_t *va_surface) static int Get(vlc_va_t *va, picture_t *pic, uint8_t **data) { - vlc_va_surface_t *va_surface = va_pool_Get(va, &va->sys->dx_sys.va_pool); + vlc_va_sys_t *sys = va->sys; + + /* Check the device */ + HRESULT hr = IDirect3DDeviceManager9_TestDevice(sys->devmng, sys->device); + if (hr == DXVA2_E_NEW_VIDEO_DEVICE) { + if (DxResetVideoDecoder(va)) + return VLC_EGENERIC; + } else if (FAILED(hr)) { + msg_Err(va, "IDirect3DDeviceManager9_TestDevice %u", (unsigned)hr); + return VLC_EGENERIC; + } + + vlc_va_surface_t *va_surface = va_pool_Get(va, &sys->dx_sys.va_pool); if (unlikely(va_surface==NULL)) return VLC_EGENERIC; pic->context = CreatePicContext(va_surface); @@ -304,7 +300,6 @@ static int Open(vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat pix_fmt, dx_sys = &sys->dx_sys; - dx_sys->va_pool.pf_check_device = CheckDevice; dx_sys->va_pool.pf_create_device = D3dCreateDevice; dx_sys->va_pool.pf_destroy_device = D3dDestroyDevice; dx_sys->va_pool.pf_create_device_manager = D3dCreateDeviceManager; diff --git a/modules/codec/avcodec/va_surface.c b/modules/codec/avcodec/va_surface.c index 795f9690e0..ae893defbd 100644 --- a/modules/codec/avcodec/va_surface.c +++ b/modules/codec/avcodec/va_surface.c @@ -128,10 +128,6 @@ static vlc_va_surface_t *GetSurface(va_pool_t *va_pool) vlc_va_surface_t *va_pool_Get(vlc_va_t *va, va_pool_t *va_pool) { - /* Check the device */ - if (va_pool->pf_check_device(va)!=VLC_SUCCESS) - return NULL; - unsigned tries = (CLOCK_FREQ + VOUT_OUTMEM_SLEEP) / VOUT_OUTMEM_SLEEP; vlc_va_surface_t *field; diff --git a/modules/codec/avcodec/va_surface_internal.h b/modules/codec/avcodec/va_surface_internal.h index 0f41406df2..7ae3f36e7b 100644 --- a/modules/codec/avcodec/va_surface_internal.h +++ b/modules/codec/avcodec/va_surface_internal.h @@ -47,11 +47,6 @@ typedef struct vlc_va_surface_t *surface[MAX_SURFACE_COUNT]; D3D_DecoderSurface *hw_surface[MAX_SURFACE_COUNT]; - /** - * Check that the decoder device is still available - */ - int (*pf_check_device)(vlc_va_t *); - int (*pf_create_device)(vlc_va_t *); void (*pf_destroy_device)(vlc_va_t *); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
