diff mbox series

[FFmpeg-devel] configure: Check for DXGI_OUTDUPL_FRAME_INFO for the ddagrab filter

Message ID 20220801123543.3873437-1-martin@martin.st
State Accepted
Commit 8e6759f10c788ce25f89e7e692d24e8e4ce527f2
Headers show
Series [FFmpeg-devel] configure: Check for DXGI_OUTDUPL_FRAME_INFO for the ddagrab filter | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Martin Storsjö Aug. 1, 2022, 12:35 p.m. UTC
The DXGI_OUTDUPL_FRAME_INFO type isn't available in Windows API
subsets other than "desktop", while the IDXGIOutput1 interface is
available for all API subsets.

This fixes compilation for UWP/"Windows Store" configurations (and
older API subsets like Windows Phone).

Signed-off-by: Martin Storsjö <martin@martin.st>
---
 configure | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Timo Rothenpieler Aug. 1, 2022, 12:36 p.m. UTC | #1
Very weird decision by Microsoft there for sure.
Patch LGTM
Hendrik Leppkes Aug. 1, 2022, 12:48 p.m. UTC | #2
On Mon, Aug 1, 2022 at 2:36 PM Martin Storsjö <martin@martin.st> wrote:
>
> The DXGI_OUTDUPL_FRAME_INFO type isn't available in Windows API
> subsets other than "desktop", while the IDXGIOutput1 interface is
> available for all API subsets.
>
> This fixes compilation for UWP/"Windows Store" configurations (and
> older API subsets like Windows Phone).

The entire desktop duplication API is not present on Phone targets
(its called "desktop" duplication afterall). I think it would be
better to check for a primary DDA function, instead of some auxiliary
structure.

- Hendrik
Martin Storsjö Aug. 1, 2022, 12:56 p.m. UTC | #3
On Mon, 1 Aug 2022, Hendrik Leppkes wrote:

> On Mon, Aug 1, 2022 at 2:36 PM Martin Storsjö <martin@martin.st> wrote:
>>
>> The DXGI_OUTDUPL_FRAME_INFO type isn't available in Windows API
>> subsets other than "desktop", while the IDXGIOutput1 interface is
>> available for all API subsets.
>>
>> This fixes compilation for UWP/"Windows Store" configurations (and
>> older API subsets like Windows Phone).
>
> The entire desktop duplication API is not present on Phone targets
> (its called "desktop" duplication afterall). I think it would be
> better to check for a primary DDA function, instead of some auxiliary
> structure.

FWIW, based on the MSVC error output 
(http://fate.ffmpeg.org/log.cgi?log=compile&slot=arm-msvc2019-phone&time=20220730152801), 
the only hard errors it listed were the undefined types 
(DXGI_OUTDUPL_POINTER_SHAPE_INFO and DXGI_OUTDUPL_FRAME_INFO) - but I 
presume that IDXGIOutputDuplication_AcquireNextFrame and 
IDXGIOutputDuplication_ReleaseFrame could be good candidates for checking 
too - I don't see anything else in that error log that one could check 
for?

// Martin
Hendrik Leppkes Aug. 1, 2022, 1:49 p.m. UTC | #4
On Mon, Aug 1, 2022 at 2:56 PM Martin Storsjö <martin@martin.st> wrote:
>
> On Mon, 1 Aug 2022, Hendrik Leppkes wrote:
>
> > On Mon, Aug 1, 2022 at 2:36 PM Martin Storsjö <martin@martin.st> wrote:
> >>
> >> The DXGI_OUTDUPL_FRAME_INFO type isn't available in Windows API
> >> subsets other than "desktop", while the IDXGIOutput1 interface is
> >> available for all API subsets.
> >>
> >> This fixes compilation for UWP/"Windows Store" configurations (and
> >> older API subsets like Windows Phone).
> >
> > The entire desktop duplication API is not present on Phone targets
> > (its called "desktop" duplication afterall). I think it would be
> > better to check for a primary DDA function, instead of some auxiliary
> > structure.
>
> FWIW, based on the MSVC error output
> (http://fate.ffmpeg.org/log.cgi?log=compile&slot=arm-msvc2019-phone&time=20220730152801),
> the only hard errors it listed were the undefined types
> (DXGI_OUTDUPL_POINTER_SHAPE_INFO and DXGI_OUTDUPL_FRAME_INFO) - but I
> presume that IDXGIOutputDuplication_AcquireNextFrame and
> IDXGIOutputDuplication_ReleaseFrame could be good candidates for checking
> too - I don't see anything else in that error log that one could check
> for?

I guess it doesn't really matter what we check for, and checking for
types seems easier then those macro'ed COM function wrappers. It just
felt slightly odd. But since its in already, no need to worry.

- Hendrik
Timo Rothenpieler Aug. 1, 2022, 1:52 p.m. UTC | #5
Yeah, doesn't really matter what of the two we check for.
Type and DDA API should always exist in tandem.
diff mbox series

Patch

diff --git a/configure b/configure
index 8c7e8c9d1d..eb413a6716 100755
--- a/configure
+++ b/configure
@@ -3158,7 +3158,7 @@  overlay_cuda_filter_deps="ffnvcodec"
 overlay_cuda_filter_deps_any="cuda_nvcc cuda_llvm"
 sharpen_npp_filter_deps="ffnvcodec libnpp"
 
-ddagrab_filter_deps="d3d11va IDXGIOutput1"
+ddagrab_filter_deps="d3d11va IDXGIOutput1 DXGI_OUTDUPL_FRAME_INFO"
 
 amf_deps_any="libdl LoadLibrary"
 nvenc_deps="ffnvcodec"
@@ -6395,6 +6395,7 @@  check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
 check_type "windows.h dxva.h" "DXVA_PicParams_AV1" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
 check_type "windows.h dxva.h" "DXVA_PicParams_HEVC" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
 check_type "windows.h dxva.h" "DXVA_PicParams_VP9" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
+check_type "windows.h dxgi1_2.h" "DXGI_OUTDUPL_FRAME_INFO"
 check_type "windows.h dxgi1_2.h" "IDXGIOutput1"
 check_type "windows.h dxgi1_5.h" "IDXGIOutput5"
 check_type "windows.h d3d11.h" "ID3D11VideoDecoder"