[vlc-devel] [PATCH 8/8] d3d11va: always enable multithreading as the vout is always in a different thread
Steve Lhomme
robux4 at videolabs.io
Tue Sep 6 11:52:40 CEST 2016
---
modules/codec/avcodec/d3d11va.c | 6 +++---
modules/codec/avcodec/directx_va.c | 2 +-
modules/codec/avcodec/directx_va.h | 2 +-
modules/codec/avcodec/dxva2.c | 6 ++----
4 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c
index abd0d65..c930be8 100644
--- a/modules/codec/avcodec/d3d11va.c
+++ b/modules/codec/avcodec/d3d11va.c
@@ -157,7 +157,7 @@ static void DxDestroyVideoService(vlc_va_t *);
static int DxGetInputList(vlc_va_t *, input_list_t *);
static int DxSetupOutput(vlc_va_t *, const GUID *, const video_format_t *);
-static int DxCreateDecoderSurfaces(vlc_va_t *, int codec_id, const video_format_t *fmt, bool b_threading);
+static int DxCreateDecoderSurfaces(vlc_va_t *, int codec_id, const video_format_t *fmt);
static void DxDestroySurfaces(vlc_va_t *);
static void SetupAVCodecContext(vlc_va_t *);
@@ -965,7 +965,7 @@ static int DxSetupOutput(vlc_va_t *va, const GUID *input, const video_format_t *
/**
* It creates a Direct3D11 decoder using the given video format
*/
-static int DxCreateDecoderSurfaces(vlc_va_t *va, int codec_id, const video_format_t *fmt, bool b_threading)
+static int DxCreateDecoderSurfaces(vlc_va_t *va, int codec_id, const video_format_t *fmt)
{
vlc_va_sys_t *sys = va->sys;
directx_sys_t *dx_sys = &va->sys->dx_sys;
@@ -974,7 +974,7 @@ static int DxCreateDecoderSurfaces(vlc_va_t *va, int codec_id, const video_forma
ID3D10Multithread *pMultithread;
hr = ID3D11Device_QueryInterface( (ID3D11Device*) dx_sys->d3ddev, &IID_ID3D10Multithread, (void **)&pMultithread);
if (SUCCEEDED(hr)) {
- ID3D10Multithread_SetMultithreadProtected(pMultithread, b_threading && dx_sys->thread_count > 1);
+ ID3D10Multithread_SetMultithreadProtected(pMultithread, TRUE);
ID3D10Multithread_Release(pMultithread);
}
diff --git a/modules/codec/avcodec/directx_va.c b/modules/codec/avcodec/directx_va.c
index 3c12e0c..251a845 100644
--- a/modules/codec/avcodec/directx_va.c
+++ b/modules/codec/avcodec/directx_va.c
@@ -332,7 +332,7 @@ int directx_va_Setup(vlc_va_t *va, directx_sys_t *dx_sys, AVCodecContext *avctx)
fmt.i_frame_rate = avctx->framerate.num;
fmt.i_frame_rate_base = avctx->framerate.den;
- if (dx_sys->pf_create_decoder_surfaces(va, dx_sys->codec_id, &fmt, avctx->active_thread_type & FF_THREAD_FRAME))
+ if (dx_sys->pf_create_decoder_surfaces(va, dx_sys->codec_id, &fmt))
return VLC_EGENERIC;
if (avctx->coded_width != dx_sys->surface_width ||
diff --git a/modules/codec/avcodec/directx_va.h b/modules/codec/avcodec/directx_va.h
index dcc4f6e..ad20ead 100644
--- a/modules/codec/avcodec/directx_va.h
+++ b/modules/codec/avcodec/directx_va.h
@@ -116,7 +116,7 @@ typedef struct
* Create the DirectX surfaces in hw_surface and the decoder in decoder
*/
int (*pf_create_decoder_surfaces)(vlc_va_t *, int codec_id,
- const video_format_t *fmt, bool b_threading);
+ const video_format_t *fmt);
/**
* Destroy resources allocated with the surfaces except from hw_surface objects
*/
diff --git a/modules/codec/avcodec/dxva2.c b/modules/codec/avcodec/dxva2.c
index 03f4a29..2b6a1fc 100644
--- a/modules/codec/avcodec/dxva2.c
+++ b/modules/codec/avcodec/dxva2.c
@@ -156,7 +156,7 @@ static int DxGetInputList(vlc_va_t *, input_list_t *);
static int DxSetupOutput(vlc_va_t *, const GUID *, const video_format_t *);
static int DxCreateVideoDecoder(vlc_va_t *,
- int codec_id, const video_format_t *, bool);
+ int codec_id, const video_format_t *);
static void DxDestroyVideoDecoder(vlc_va_t *);
static int DxResetVideoDecoder(vlc_va_t *);
static void SetupAVCodecContext(vlc_va_t *);
@@ -692,10 +692,8 @@ static int DxSetupOutput(vlc_va_t *va, const GUID *input, const video_format_t *
/**
* It creates a DXVA2 decoder using the given video format
*/
-static int DxCreateVideoDecoder(vlc_va_t *va, int codec_id, const video_format_t *fmt, bool b_threading)
+static int DxCreateVideoDecoder(vlc_va_t *va, int codec_id, const video_format_t *fmt)
{
- VLC_UNUSED(b_threading);
-
vlc_va_sys_t *p_sys = va->sys;
directx_sys_t *sys = &va->sys->dx_sys;
HRESULT hr;
--
2.8.2
More information about the vlc-devel
mailing list