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