[FFmpeg-cvslog] avfilter/vsrc_ddagrab: check for existence of DPI_AWARENESS_CONTEXT

Timo Rothenpieler git at videolan.org
Tue Jul 19 15:19:42 EEST 2022


ffmpeg | branch: master | Timo Rothenpieler <timo at rothenpieler.org> | Tue Jul 19 13:44:58 2022 +0200| [926f355aff8fdf0a077d948e961f79d2c5daf58e] | committer: Timo Rothenpieler

avfilter/vsrc_ddagrab: check for existence of DPI_AWARENESS_CONTEXT

Apparently some (broken?) Windows SDK versions define IDXGIOutput5
but not DPI_AWARENESS_CONTEXT. So we need to explicitly check for its
existence.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=926f355aff8fdf0a077d948e961f79d2c5daf58e
---

 configure                  | 2 ++
 libavfilter/vsrc_ddagrab.c | 8 ++++----
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/configure b/configure
index 91444cdc53..4888792015 100755
--- a/configure
+++ b/configure
@@ -2352,6 +2352,7 @@ TOOLCHAIN_FEATURES="
 "
 
 TYPES_LIST="
+    DPI_AWARENESS_CONTEXT
     IDXGIOutput5
     kCMVideoCodecType_HEVC
     kCMVideoCodecType_HEVCWithAlpha
@@ -6398,6 +6399,7 @@ check_type "windows.h dxgi1_2.h" "IDXGIOutput1"
 check_type "windows.h dxgi1_5.h" "IDXGIOutput5"
 check_type "windows.h d3d11.h" "ID3D11VideoDecoder"
 check_type "windows.h d3d11.h" "ID3D11VideoContext"
+check_type "windows.h" "DPI_AWARENESS_CONTEXT" -D_WIN32_WINNT=0x0A00
 check_type "d3d9.h dxva2api.h" DXVA2_ConfigPictureDecode -D_WIN32_WINNT=0x0602
 check_func_headers mfapi.h MFCreateAlignedMemoryBuffer -lmfplat
 
diff --git a/libavfilter/vsrc_ddagrab.c b/libavfilter/vsrc_ddagrab.c
index 5668eda051..98daec1d04 100644
--- a/libavfilter/vsrc_ddagrab.c
+++ b/libavfilter/vsrc_ddagrab.c
@@ -18,9 +18,9 @@
 
 #include "config.h"
 
-#if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0602
+#if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0A00
 #undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0602
+#define _WIN32_WINNT 0x0A00
 #endif
 #define WIN32_LEAN_AND_MEAN
 
@@ -151,7 +151,7 @@ static av_cold int init_dxgi_dda(AVFilterContext *avctx)
     IDXGIAdapter *dxgi_adapter = NULL;
     IDXGIOutput *dxgi_output = NULL;
     IDXGIOutput1 *dxgi_output1 = NULL;
-#if HAVE_IDXGIOUTPUT5
+#if HAVE_IDXGIOUTPUT5 && HAVE_DPI_AWARENESS_CONTEXT
     IDXGIOutput5 *dxgi_output5 = NULL;
 
     typedef DPI_AWARENESS_CONTEXT (*set_thread_dpi_t)(DPI_AWARENESS_CONTEXT);
@@ -190,7 +190,7 @@ static av_cold int init_dxgi_dda(AVFilterContext *avctx)
         return AVERROR_EXTERNAL;
     }
 
-#if HAVE_IDXGIOUTPUT5
+#if HAVE_IDXGIOUTPUT5 && HAVE_DPI_AWARENESS_CONTEXT
     user32_module = dlopen("user32.dll", 0);
     if (!user32_module) {
         av_log(avctx, AV_LOG_ERROR, "Failed loading user32.dll\n");



More information about the ffmpeg-cvslog mailing list