[FFmpeg-devel] [PATCH] compat: remove in-tree NVidia headers

James Almer jamrial at gmail.com
Tue Feb 27 15:49:44 EET 2018


On 2/25/2018 9:20 PM, Marton Balint wrote:
> From: Timo Rothenpieler <timo at rothenpieler.org>
> 
> External headers are no longer welcome in the ffmpeg codebase because they
> increase the maintenance burden. However, in the NVidia case the vanilla
> headers need some modifications to be usable in ffmpeg therefore we still
> provide them, but in a separate repository.
> 
> The external headers can be found at
> https://git.videolan.org/?p=ffmpeg/nv-codec-headers.git
> 
> This patch squashes Timo's patches from Dec 4 last year, and also removes most
> part of compat/dynlink_loader.h because that was added to the headers repo as
> well.
> 
> Fate-source is updated because of the deleted files, and dynlink_loader.h
> license headers were updated with the standard FFmpeg headers.
> 
> Only compile tested and only on Linux.
> 
> Signed-off-by: Marton Balint <cus at passwd.hu>
> ---
>  Changelog                      |    2 +
>  compat/cuda/dynlink_cuda.h     |   98 --
>  compat/cuda/dynlink_cuviddec.h |  886 -----------
>  compat/cuda/dynlink_loader.h   |  273 +---
>  compat/cuda/dynlink_nvcuvid.h  |  356 -----
>  compat/nvenc/nvEncodeAPI.h     | 3324 ----------------------------------------
>  configure                      |    6 +-
>  libavcodec/nvenc.h             |    2 +-
>  tests/ref/fate/source          |    4 -
>  9 files changed, 27 insertions(+), 4924 deletions(-)
>  delete mode 100644 compat/cuda/dynlink_cuda.h
>  delete mode 100644 compat/cuda/dynlink_cuviddec.h
>  delete mode 100644 compat/cuda/dynlink_nvcuvid.h
>  delete mode 100644 compat/nvenc/nvEncodeAPI.h
> 

[...]

> diff --git a/configure b/configure
> index 1bdb7c1c2d..83bcb80283 100755
> --- a/configure
> +++ b/configure
> @@ -2675,6 +2675,7 @@ zmbv_encoder_deps="zlib"
>  
>  # hardware accelerators
>  crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
> +cuda_deps="ffnvcodec">  cuda_deps_any="libdl LoadLibrary"
>  cuvid_deps="cuda"
>  d3d11va_deps="dxva_h ID3D11VideoDecoder ID3D11VideoContext"
> @@ -5811,6 +5812,9 @@ check_type "va/va.h va/va_enc_vp9.h"  "VAEncPictureParameterBufferVP9"
>  
>  check_type "vdpau/vdpau.h" "VdpPictureInfoHEVC"
>  
> +check_pkg_config ffnvcodec "ffnvcodec >= 8.0" \

Instead of adding a new ffnvcodec module to configure, just use the
existing cuda one.

> +    "ffnvcodec/nvEncodeAPI.h ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h ffnvcodec/dynlink_nvcuvid.h" ""
> +
>  check_cpp_condition windows.h "!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)" && enable winrt || disable winrt
>  
>  if ! disabled w32threads && ! enabled pthreads; then
> @@ -6263,7 +6267,7 @@ fi
>  
>  enabled nvenc &&
>      check_cc -I$source_path <<EOF || disable nvenc
> -#include "compat/nvenc/nvEncodeAPI.h"
> +#include <ffnvcodec/nvEncodeAPI.h>
>  NV_ENCODE_API_FUNCTION_LIST flist;
>  void f(void) { struct { const GUID guid; } s[] = { { NV_ENC_PRESET_HQ_GUID } }; }
>  int main(void) { return 0; }
> diff --git a/libavcodec/nvenc.h b/libavcodec/nvenc.h
> index ab6825f633..bff25dfc3c 100644
> --- a/libavcodec/nvenc.h
> +++ b/libavcodec/nvenc.h
> @@ -28,7 +28,7 @@
>  typedef void ID3D11Device;
>  #endif
>  
> -#include "compat/nvenc/nvEncodeAPI.h"
> +#include <ffnvcodec/nvEncodeAPI.h>
>  
>  #include "compat/cuda/dynlink_loader.h"
>  #include "libavutil/fifo.h"
> diff --git a/tests/ref/fate/source b/tests/ref/fate/source
> index 2def03495b..809c4632d4 100644
> --- a/tests/ref/fate/source
> +++ b/tests/ref/fate/source
> @@ -23,12 +23,8 @@ compat/avisynth/avs/types.h
>  compat/avisynth/avxsynth_c.h
>  compat/avisynth/windowsPorts/basicDataTypeConversions.h
>  compat/avisynth/windowsPorts/windows2linux.h
> -compat/cuda/dynlink_cuda.h
> -compat/cuda/dynlink_cuviddec.h
>  compat/cuda/dynlink_loader.h
> -compat/cuda/dynlink_nvcuvid.h
>  compat/float/float.h
>  compat/float/limits.h
> -compat/nvenc/nvEncodeAPI.h
>  Use of av_clip() where av_clip_uintp2() could be used:
>  Use of av_clip() where av_clip_intp2() could be used:
> 



More information about the ffmpeg-devel mailing list