[FFmpeg-devel] [PATCH] avcodec/nvenc: Include nvEncodeAPI v7 SDK header

James Almer jamrial at gmail.com
Tue Aug 30 01:13:10 EEST 2016


On 8/29/2016 5:31 PM, Timo Rothenpieler wrote:
> On 8/29/2016 8:43 PM, James Almer wrote:
>> On 8/27/2016 9:58 AM, Timo Rothenpieler wrote:
>>> @@ -5996,6 +5992,22 @@ enabled vdpau && enabled xlib &&
>>>      check_lib2 "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 -lvdpau &&
>>>      enable vdpau_x11
>>>  
>>> +case $target_os in
>>> +    mingw32*|mingw64*|win32|win64|linux|cygwin*)
>>> +        disabled nvenc || enable nvenc
>>> +        ;;
>>> +    *)
>>> +        disable nvenc
>>> +        ;;
>>> +esac
>>> +
>>> +if enabled nvenc; then
>>> +    {
>>> +        echo '#include "compat/nvenc/nvEncodeAPI.h"'
>>> +        echo 'int main(void) { return 0; }'
>>> +    } | check_cc -I$source_path || disable nvenc
>>
>> In what situation could this test fail? nvenc is only enabled if $target_os
>> is one of the supported ones, and the test does nothing but compile the
>> header.
> 
> Strange/broken compiler like ancient MinGW or Cygwin, or old MSVC.

I don't think anything in those could break compilation of this header. It
doesn't seem to use any api, define or struct from windows only headers
aside from RECT, GUID and __stdcall.
If any of the nvenc files from libavcodec depends on something that could
be missing in old and broken compilers then a more specific check should
be done for it.

> 
>> If it only supports x86 then you can just check "enabled x86" instead.
> 
> NVENC is not supported on FreeBSD or OSX for example.

I figured as much seeing the OS list above. What i meant was that if the
check was meant to make sure it's only enabled on x86 linux/windows
targets, and not for example ARM like when building for WinRT, then you
could simply check for supported OSes and x86 arch.

This test succeeds on every Linux/Windows target. It includes only
stdint.h, stdlib.h, windows.h if necessary, and defines RECT and GUID
on non-Windows platforms.
See http://fate.ffmpeg.org/. All the nvenc files are being compiled on
every platform (arm, aarch64, alpha, mips, etc).

> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 



More information about the ffmpeg-devel mailing list