[FFmpeg-cvslog] avcodec: Add NVENC encoder

2014-12-10 Thread Timo Rothenpieler
ffmpeg | branch: master | Timo Rothenpieler t...@rothenpieler.org | Sun Nov 
30 00:04:37 2014 +0100| [2a428db5e2c1d10ff5a7d5e8352eef8d195d440c] | committer: 
Michael Niedermayer

avcodec: Add NVENC encoder

Signed-off-by: Michael Niedermayer michae...@gmx.at

 http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2a428db5e2c1d10ff5a7d5e8352eef8d195d440c
---

 Changelog  |1 +
 MAINTAINERS|1 +
 configure  |6 +
 libavcodec/Makefile|1 +
 libavcodec/allcodecs.c |1 +
 libavcodec/nvenc.c | 1189 
 6 files changed, 1199 insertions(+)

diff --git a/Changelog b/Changelog
index c0bbbe2..4c122c4 100644
--- a/Changelog
+++ b/Changelog
@@ -2,6 +2,7 @@ Entries are sorted chronologically from oldest to youngest 
within each release,
 releases are sorted from youngest to oldest.
 
 version next:
+- nvenc encoder
 
 
 version 2.5:
diff --git a/MAINTAINERS b/MAINTAINERS
index 0f2faed..6e46280 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -226,6 +226,7 @@ Codecs:
   msvideo1.cMike Melanson
   nellymoserdec.c   Benjamin Larsson
   nuv.c Reimar Doeffinger
+  nvenc.c   Timo Rothenpieler
   paf.* Paul B Mahol
   pcx.c Ivo van Poorten
   pgssubdec.c   Reimar Doeffinger
diff --git a/configure b/configure
index c510ee4..e6257ca 100755
--- a/configure
+++ b/configure
@@ -263,6 +263,7 @@ External library support:
   --enable-libzvbi enable teletext support via libzvbi [no]
   --disable-lzma   disable lzma [autodetect]
   --enable-decklinkenable Blackmagick DeckLink I/O support [no]
+  --enable-nvenc   enable NVIDIA NVENC support [no]
   --enable-openal  enable OpenAL 1.1 capture support [no]
   --enable-opencl  enable OpenCL code
   --enable-opengl  enable OpenGL rendering [no]
@@ -1400,6 +1401,7 @@ EXTERNAL_LIBRARY_LIST=
 libzmq
 libzvbi
 lzma
+nvenc
 openal
 opencl
 opengl
@@ -2399,6 +2401,7 @@ libxvid_encoder_deps=libxvid
 libutvideo_decoder_deps=libutvideo
 libutvideo_encoder_deps=libutvideo
 libzvbi_teletext_decoder_deps=libzvbi
+nvenc_encoder_deps=nvenc
 
 # demuxers / muxers
 ac3_demuxer_select=ac3_parser
@@ -4357,6 +4360,7 @@ die_license_disabled gpl x11grab
 
 die_license_disabled nonfree libaacplus
 die_license_disabled nonfree libfaac
+die_license_disabled nonfree nvenc
 enabled gpl  die_license_disabled_gpl nonfree libfdk_aac
 enabled gpl  die_license_disabled_gpl nonfree openssl
 
@@ -4666,6 +4670,7 @@ fi
 frei0r_filter_extralibs='$ldl'
 frei0r_src_filter_extralibs='$ldl'
 ladspa_filter_extralibs='$ldl'
+nvenc_encoder_extralibs='$ldl'
 
 if ! disabled network; then
 check_func getaddrinfo $network_extralibs
@@ -4929,6 +4934,7 @@ enabled libxavsrequire libxavs xavs.h 
xavs_encoder_encode -lxavs
 enabled libxvidrequire libxvid xvid.h xvid_global -lxvidcore
 enabled libzmq require_pkg_config libzmq zmq.h zmq_ctx_new
 enabled libzvbirequire libzvbi libzvbi.h vbi_decoder_new -lzvbi
+enabled nvenc  { check_header nvEncodeAPI.h || die ERROR: 
nvEncodeAPI.h not found.; }
 enabled openal { { for al_libs in ${OPENAL_LIBS} -lopenal 
-lOpenAL32; do
check_lib 'AL/al.h' alGetError ${al_libs}  
break; done } ||
die ERROR: openal not found; } 
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 48c3a85..98bec64 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -347,6 +347,7 @@ OBJS-$(CONFIG_MXPEG_DECODER)   += mxpegdec.o
 OBJS-$(CONFIG_NELLYMOSER_DECODER)  += nellymoserdec.o nellymoser.o
 OBJS-$(CONFIG_NELLYMOSER_ENCODER)  += nellymoserenc.o nellymoser.o
 OBJS-$(CONFIG_NUV_DECODER) += nuv.o rtjpeg.o
+OBJS-$(CONFIG_NVENC_ENCODER)   += nvenc.o
 OBJS-$(CONFIG_ON2AVC_DECODER)  += on2avc.o on2avcdata.o
 OBJS-$(CONFIG_OPUS_DECODER)+= opusdec.o opus.o opus_celt.o \
   opus_imdct.o opus_silk.o \
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index 0d39d33..8ceee2f 100644
--- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c
@@ -223,6 +223,7 @@ void avcodec_register_all(void)
 REGISTER_DECODER(MVC2,  mvc2);
 REGISTER_DECODER(MXPEG, mxpeg);
 REGISTER_DECODER(NUV,   nuv);
+REGISTER_ENCODER(NVENC, nvenc);
 REGISTER_DECODER(PAF_VIDEO, paf_video);
 REGISTER_ENCDEC (PAM,   pam);
 REGISTER_ENCDEC (PBM,   pbm);
diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c
new file mode 100644
index 000..dc14594
--- /dev/null
+++ b/libavcodec/nvenc.c
@@ -0,0 +1,1189 @@
+/*
+ * H.264 hardware 

Re: [FFmpeg-cvslog] avcodec: Add NVENC encoder

2014-12-10 Thread Jean-Baptiste Kempf
On 11 Dec, Timo Rothenpieler wrote :
 +#if defined(_WIN32)  !defined(__CYGWIN__)
 +#include windows.h
 +#else
 +#include dlfcn.h
 +#endif
 +
 +/* NVENC API is stdcall in cygwin, as it's still Windows */
 +#if defined(__CYGWIN__)  !defined(_WIN32)
 +#define _WIN32
 +#define TEMP_WIN32
 +#endif
 +
 +#include nvEncodeAPI.h
 +
 +#if defined(TEMP_WIN32)
 +#undef _WIN32
 +#endif

How can you commit such things?
Defining symbols starting with _ + uppercase ? This is a violation of the C
standards.

Cygwin is very able to use windows.h functions. If not, it's their mess,
but this has nothing to do here.

With my kindest regards,

-- 
Jean-Baptiste Kempf
http://www.jbkempf.com/ - +33 672 704 734
Sent from my Electronic Device
___
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog