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.
This commit is contained in:
parent
ecd0a7c5bd
commit
926f355aff
2
configure
vendored
2
configure
vendored
@ -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
|
||||
|
||||
|
@ -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");
|
||||
|
Loading…
Reference in New Issue
Block a user