Timo Rothenpieler
15b019e40a
avcodec/nvenc: fix double defined GUID on cygwin
7 years ago
Hendrik Leppkes
bff6d98ba3
nvenc: support d3d11 surface input
7 years ago
Timo Rothenpieler
a56d0497cb
avcodec/nvenc: migrate to new encode API
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
8 years ago
Timo Rothenpieler
a0b69e2b0a
avcodec/nvenc: add support for specifying entropy coding mode
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
8 years ago
Ben Chang
2e8d88ad52
nvenc: Use a fifo to manage the free surface pool
...
Previously, if a session allocates x surfaces, only x-1 surfaces are
used (due to combination of output delay and lock toggle logic).
8 years ago
Sumit Agarwal
01775730fd
avcodec/nvenc: add weighted prediction support
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
8 years ago
Ben Chang
18a659d1b6
avcodec/nvenc: add fractional CQ support
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
8 years ago
Timo Rothenpieler
cfbebe9dda
avcodec/nvenc: deprecated old rc modes, add new ones
8 years ago
Ben Chang
8de3458a07
avcodec/nvenc: surface allocation reduction
...
This patch aims to reduce the number of input/output surfaces
NVENC allocates per session. Previous default sets allocated surfaces to 32
(unless there is user specified param or lookahead involved). Having large
number of surfaces consumes extra video memory (esp for higher resolution
encoding). The patch changes the surfaces calculation for default, B-frames,
lookahead scenario respectively.
The other change involves surface selection. Previously, if a session
allocates x surfaces, only x-1 surfaces are used (due to combination
of output delay and lock toggle logic). To prevent unused surfaces,
changing surface rotation to using predefined fifo.
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
8 years ago
Timo Rothenpieler
7fb2a7afa1
avcodec/nvenc: Deprecate usage of global_quality, introducing qp
8 years ago
Konda Raju
f6790b5e10
add initial QP value options
...
Signed-off-by: Diego Biurrun <diego@biurrun.de>
8 years ago
Konda Raju
5f44a4a0a9
avcodec/nvenc: add initial QP value options
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
8 years ago
Luca Barbato
fb59f87ce7
nvenc: Explicitly push the cuda context on encoding
...
Make sure that NVENC does not misbehave if other cuda usages happen
in the application.
8 years ago
Miroslav Slugen
9b425bd24c
avcodec/nvenc: Add bluray_compat basic implementation
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
8 years ago
Miroslav Slugen
1841eda679
avcodec/nvenc: Make AUD optional for h264_nvenc and hevc_nvenc
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
8 years ago
Timo Rothenpieler
a66835bcb1
avcodec/nvenc: use dynamically loaded CUDA
8 years ago
Timo Rothenpieler
30c5587503
avcodec/nvenc: add support for forcing intra/idr frames
8 years ago
Yogender Gupta
facc19ef06
avcodec/nvenc: Extended rate-control support as provided by SDK 7
...
Merged from libav commit by Yogender Gupta:
https://git.libav.org/?p=libav.git;a=commitdiff;h=70de2ea4261f860457a04e3d0c58c5543f403325
8 years ago
Timo Rothenpieler
033f98c902
avcodec/nvenc: add HEVC REXT profile
8 years ago
Yogender Gupta
70de2ea426
nvenc: Extended rate-control support as provided by SDK 7
...
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Signed-off-by: Diego Biurrun <diego@biurrun.de>
8 years ago
Yogender Gupta
358c887a9f
nvenc: Add support for high bitdepth
...
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Signed-off-by: Diego Biurrun <diego@biurrun.de>
8 years ago
Yogender Gupta
e02e2515b2
nvenc: Add some easier to understand presets that match x264 terminology
...
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
8 years ago
Timo Rothenpieler
fa3ecad071
avcodec/nvenc: correctly set inputPitch
9 years ago
Timo Rothenpieler
df615efcf2
avcodec/nvenc: check maximum driver API version
9 years ago
Oliver Collyer
a81b398e86
avcodec/nvenc: added support for rate control lookahead
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
9 years ago
Oliver Collyer
d1bf8a3aa8
avcodec/nvenc: added support for 10 bit HEVC encoding
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
9 years ago
Timo Rothenpieler
325e56479f
avcodec/nvenc: include nvEncodeAPI v7 SDK header
...
As Nvidia has put the most recent Video Codec SDK behind a double
registration wall, of which one needs manual approval of a lenghty
application, bundling this header saves everyone trying to use NVENC
from that headache.
The header is still MIT licensed and thus fine to bundle with ffmpeg.
Not bundling this header would get ffmpeg stuck at SDK v6, which is
still freely available, holding back future development of the NVENC
encoder.
9 years ago
Timo Rothenpieler
e5babccfbc
avcodec/nvenc: Refactor timestamp generation logic
...
Directly adapted from libav
9 years ago
Andrey Turkin
0d021cc8b3
avcodec/nvenc: rework library load and GPU selection
...
Use explicit nvenc capability checks instead to determine usable devices
instead of SM versions.
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
9 years ago
Andrey Turkin
f052ef30ef
avcodec/nvenc: allow configuring number of surfaces
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
9 years ago
Andrey Turkin
f84dfbc74a
avcodec/nvenc: add rate control option
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
9 years ago
Andrey Turkin
40df468ab1
avcodec/nvenc: convert tier to AVOptions
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
9 years ago
Andrey Turkin
b0172873a8
avcodec/nvenc: convert levels to AVOptions
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
9 years ago
Andrey Turkin
9824321b32
avcodec/nvenc: convert profile parsing to AVOptions
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
9 years ago
Andrey Turkin
faffff88c2
avcodec/nvenc: use AVOptions to select presets
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
9 years ago
Andrey Turkin
7aa16d59bf
avcodec/nvenc: split H264/HEVC encoder definitions into separate files
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
9 years ago
Anton Khirnov
6f58b4dc47
nvenc: drop the hard dependency on CUDA
...
The code needs only a few definitions from cuda.h, so define them
directly when CUDA is not enabled. CUDA is still required for accepting
HW frames as input.
Based on the code by Timo Rothenpieler <timo@rothenpieler.org>.
9 years ago
Timo Rothenpieler
a1e215ea01
nvenc: Delay frame output to increase encoding speed
...
Signed-off-by: Anton Khirnov <anton@khirnov.net>
9 years ago
Vittorio Giovara
41ed7ab45f
cosmetics: Fix spelling mistakes
...
Signed-off-by: Diego Biurrun <diego@biurrun.de>
9 years ago
Anton Khirnov
871d0930d4
nvenc: support CUDA frames as input
9 years ago
Anton Khirnov
c51b2c79a7
Allow linking to CUDA dynamically instead of dlopen()ing it at runtime
9 years ago
Anton Khirnov
118beda355
nvenc: merge input and output surface structs
...
An input frame always corresponds to exactly one output packet, so there
is no point in complicating the situation by managing them separately.
9 years ago
Anton Khirnov
28259c13db
nvenc: factor out the pixel format list
9 years ago
Anton Khirnov
c59fec783d
nvenc: generate dts properly
...
When there is a non-zero decoding delay due to reordering, the first dts
should be lower than the first pts (since the first packet fed to the
decoder does not produce any output).
Use the same scheme used in mpegvideo_enc (which comes from x264
originally) -- wait for first two timestamps and extrapolate linearly to
the past to produce the first dts value.
9 years ago
Luca Barbato
b08caa87c3
nvenc: H264 and HEVC encoders
...
Partially based on the work of Timo Rothenpieler <timo@rothenpieler.org>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
10 years ago