Commit c358dd00 authored by Steve Lhomme's avatar Steve Lhomme Committed by Jean-Baptiste Kempf

d3d11va: better logging of decoder configuration

Signed-off-by: Jean-Baptiste Kempf's avatarJean-Baptiste Kempf <jb@videolan.org>
parent fabb0362
......@@ -638,16 +638,18 @@ static int DxSetupOutput(vlc_va_t *va, const GUID *input)
processorInput[idx++] = DXGI_FORMAT_NV12;
processorInput[idx++] = DXGI_FORMAT_UNKNOWN;
char *psz_decoder_name = directx_va_GetDecoderName(input);
/* */
for (idx = 0; processorInput[idx] != DXGI_FORMAT_UNKNOWN; ++idx)
{
BOOL is_supported = false;
hr = ID3D11VideoDevice_CheckVideoDecoderFormat((ID3D11VideoDevice*) dx_sys->d3ddec, input, processorInput[idx], &is_supported);
if (SUCCEEDED(hr) && is_supported)
msg_Dbg(va, "%s is supported for output", DxgiFormatToStr(processorInput[idx]));
msg_Dbg(va, "%s output is supported for decoder %s.", DxgiFormatToStr(processorInput[idx]), psz_decoder_name);
else
{
msg_Dbg(va, "Can't get a decoder for output format %s.", DxgiFormatToStr(processorInput[idx]));
msg_Dbg(va, "Can't get a decoder output format %s for decoder %s.", DxgiFormatToStr(processorInput[idx]), psz_decoder_name);
continue;
}
......@@ -664,10 +666,13 @@ static int DxSetupOutput(vlc_va_t *va, const GUID *input)
if ( !b_needsProcessor )
{
msg_Dbg(va, "Using output format %s for decoder %s", DxgiFormatToStr(processorInput[idx]), psz_decoder_name);
va->sys->render = processorInput[idx];
free(psz_decoder_name);
return VLC_SUCCESS;
}
}
free(psz_decoder_name);
msg_Dbg(va, "Output format from picture source not supported.");
return VLC_EGENERIC;
......
......@@ -242,13 +242,17 @@ static void DestroyVideoService(vlc_va_t *, directx_sys_t *);
static void DestroyDeviceManager(vlc_va_t *, directx_sys_t *);
static void DestroyDevice(vlc_va_t *, directx_sys_t *);
static const directx_va_mode_t *FindDxvaMode(const GUID *guid)
char *directx_va_GetDecoderName(const GUID *guid)
{
for (unsigned i = 0; DXVA_MODES[i].name; i++) {
if (IsEqualGUID(DXVA_MODES[i].guid, guid))
return &DXVA_MODES[i];
return strdup(DXVA_MODES[i].name);
}
return NULL;
char *psz_name = malloc(36);
if (likely(psz_name))
asprintf(&psz_name, "Unknown decoder " GUID_FMT, GUID_PRINT(*guid));
return psz_name;
}
/* */
......@@ -517,12 +521,9 @@ static int FindVideoServiceConversion(vlc_va_t *va, directx_sys_t *dx_sys, const
/* Retreive supported modes from the decoder service */
for (unsigned i = 0; i < p_list.count; i++) {
const GUID *g = &p_list.list[i];
const directx_va_mode_t *mode = FindDxvaMode(g);
if (mode) {
msg_Dbg(va, "- '%s' is supported by hardware", mode->name);
} else {
msg_Warn(va, "- Unknown GUID = " GUID_FMT, GUID_PRINT( *g ) );
}
char *psz_decoder_name = directx_va_GetDecoderName(g);
msg_Dbg(va, "- '%s' is supported by hardware", psz_decoder_name);
free(psz_decoder_name);
}
/* Try all supported mode by our priority */
......
......@@ -139,5 +139,6 @@ void directx_va_Close(vlc_va_t *, directx_sys_t *);
int directx_va_Setup(vlc_va_t *, directx_sys_t *, AVCodecContext *avctx);
int directx_va_Get(vlc_va_t *, directx_sys_t *, picture_t *pic, uint8_t **data);
void directx_va_Release(void *opaque, uint8_t *data);
char *directx_va_GetDecoderName(const GUID *guid);
#endif /* AVCODEC_DIRECTX_VA_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment