summaryrefslogtreecommitdiffstats
path: root/libavcodec/dxva2.c
diff options
context:
space:
mode:
authorwm4 <nfxjfg@googlemail.com>2017-06-22 14:52:59 +0200
committerLuca Barbato <lu_zero@gentoo.org>2017-06-27 00:23:12 +0200
commit068eaa534e7ddb2155e2830818d5c3f1069c68d8 (patch)
treeec76a0fbfcdc07992456efe446c1ea3bcdd0c514 /libavcodec/dxva2.c
parentcfc9e7c94eafa33e7f109099664ec4fb57ac5ca3 (diff)
downloadffmpeg-streaming-068eaa534e7ddb2155e2830818d5c3f1069c68d8.zip
ffmpeg-streaming-068eaa534e7ddb2155e2830818d5c3f1069c68d8.tar.gz
dxva: verbose-log decoder GUID list
Helpful for debugging. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Diffstat (limited to 'libavcodec/dxva2.c')
-rw-r--r--libavcodec/dxva2.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/libavcodec/dxva2.c b/libavcodec/dxva2.c
index 79b7715..a60604a 100644
--- a/libavcodec/dxva2.c
+++ b/libavcodec/dxva2.c
@@ -196,12 +196,59 @@ static int dxva_check_codec_compatibility(AVCodecContext *avctx, const dxva_mode
return 1;
}
+static void dxva_list_guids_debug(AVCodecContext *avctx, void *service,
+ unsigned guid_count, const GUID *guid_list)
+{
+ FFDXVASharedContext *sctx = DXVA_SHARED_CONTEXT(avctx);
+ int i;
+
+ av_log(avctx, AV_LOG_VERBOSE, "Decoder GUIDs reported as supported:\n");
+
+ for (i = 0; i < guid_count; i++) {
+ const GUID *guid = &guid_list[i];
+
+ av_log(avctx, AV_LOG_VERBOSE,
+ "{%8.8x-%4.4x-%4.4x-%2.2x%2.2x-%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x}",
+ (unsigned) guid->Data1, guid->Data2, guid->Data3,
+ guid->Data4[0], guid->Data4[1],
+ guid->Data4[2], guid->Data4[3],
+ guid->Data4[4], guid->Data4[5],
+ guid->Data4[6], guid->Data4[7]);
+
+#if CONFIG_D3D11VA
+ if (sctx->pix_fmt == AV_PIX_FMT_D3D11) {
+ DXGI_FORMAT format;
+ // We don't know the maximum valid DXGI_FORMAT, so use 200 as
+ // arbitrary upper bound (that could become outdated).
+ for (format = 0; format < 200; format++) {
+ if (d3d11va_validate_output(service, *guid, &format))
+ av_log(avctx, AV_LOG_VERBOSE, " %d", (int)format);
+ }
+ }
+#endif
+#if CONFIG_DXVA2
+ if (sctx->pix_fmt == AV_PIX_FMT_DXVA2_VLD) {
+ const D3DFORMAT formats[] = {MKTAG('N', 'V', '1', '2'),
+ MKTAG('P', '0', '1', '0')};
+ int i;
+ for (i = 0; i < FF_ARRAY_ELEMS(formats); i++) {
+ if (dxva2_validate_output(service, *guid, &formats[i]))
+ av_log(avctx, AV_LOG_VERBOSE, " %d", i);
+ }
+ }
+#endif
+ av_log(avctx, AV_LOG_VERBOSE, "\n");
+ }
+}
+
static int dxva_get_decoder_guid(AVCodecContext *avctx, void *service, void *surface_format,
unsigned guid_count, const GUID *guid_list, GUID *decoder_guid)
{
FFDXVASharedContext *sctx = DXVA_SHARED_CONTEXT(avctx);
unsigned i, j;
+ dxva_list_guids_debug(avctx, service, guid_count, guid_list);
+
*decoder_guid = ff_GUID_NULL;
for (i = 0; dxva_modes[i].guid; i++) {
const dxva_mode *mode = &dxva_modes[i];
OpenPOWER on IntegriCloud