114 Commits

Author SHA1 Message Date
Timo Rothenpieler
1f76235dd4 avcodec/nvenc: remove unnecessary alignment
Fixes #6260
2017-05-23 11:59:21 +02:00
Sven C. Dack
da4d0fa86b avcodec/nvenc: add test for Temporal AQ support
Adds a check to see if the hardware supports temporal aq.

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-10-19 12:41:41 +02:00
Timo Rothenpieler
30c5587503 avcodec/nvenc: add support for forcing intra/idr frames 2016-10-12 20:51:43 +02:00
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
2016-09-28 16:48:43 +02:00
Timo Rothenpieler
033f98c902 avcodec/nvenc: add HEVC REXT profile 2016-09-28 16:48:43 +02:00
Timo Rothenpieler
a81b000a39 avcodec/nvenc: Make sure that enum and array index match
Based on libav commits by Luca Barbato and Yogender Gupta:
https://git.libav.org/?p=libav.git;a=commit;h=352741b5ead1543d775ccf6040f33023e4491186
https://git.libav.org/?p=libav.git;a=commit;h=e02e2515b24bfc37ede6ca1744696230be55e50b
2016-09-28 16:48:43 +02:00
James Almer
dc48248ea8 avcodec/nvenc: use AVERROR_BUFFER_TOO_SMALL instead of ENOBUFS
Should fix compilation with mingw32

Reviewed-by: Timo Rothenpieler <timo@rothenpieler.org>
Signed-off-by: James Almer <jamrial@gmail.com>
2016-09-24 15:48:30 -03:00
Timo Rothenpieler
8ebe1dddfb avcodec/nvenc: use frame size instead of surface size 2016-09-08 19:08:31 +02:00
Sven C. Dack
4aeb7a88ec avcodec/nvenc: support RGB input
nvenc still encodes as yuv, but does the conversion internally which
brings some performance gains.

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-09-07 18:44:10 +02:00
Timo Rothenpieler
fa3ecad071 avcodec/nvenc: correctly set inputPitch 2016-09-07 18:44:10 +02:00
Timo Rothenpieler
96cba1c552 avcodec/nvenc: use av_image_copy for copying frame data 2016-09-07 18:44:10 +02:00
Timo Rothenpieler
cac2df230e avcodec/nvenc: update license header 2016-08-28 19:51:22 +02:00
Timo Rothenpieler
26a5cbd781 avcodec/nvenc: use proper soname for cuda/nvenc libraries 2016-08-28 19:49:56 +02:00
Timo Rothenpieler
df615efcf2 avcodec/nvenc: check maximum driver API version 2016-08-28 19:46:44 +02:00
Timo Rothenpieler
a19989cae5 avcodec/nvenc: fix potantially uninitialized free 2016-08-28 18:58:05 +02:00
Timo Rothenpieler
19e75fd883 avcodec/nvenc: fix library names on cygwin 2016-08-28 18:58:05 +02:00
Oliver Collyer
a81b398e86 avcodec/nvenc: added support for rate control lookahead
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-08-28 16:47:54 +02:00
Oliver Collyer
d1bf8a3aa8 avcodec/nvenc: added support for 10 bit HEVC encoding
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-08-28 16:47:54 +02:00
Clément Bœsch
8ef57a0d61 Merge commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb'
* commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb':
  cosmetics: Fix spelling mistakes

Merged-by: Clément Bœsch <u@pkh.me>
2016-06-21 21:55:34 +02:00
Timo Rothenpieler
808356c61c avcodec/nvenc: Check capabilities for interlaced encoding 2016-06-06 23:52:55 +02:00
Timo Rothenpieler
7c55f5d782 avcodec/nvenc: Don't set packet duration
It's not expected to be set on video packets and causes issues in
ffmpeg.c.
2016-06-04 12:20:59 +02:00
Timo Rothenpieler
e5babccfbc avcodec/nvenc: Refactor timestamp generation logic
Directly adapted from libav
2016-05-31 18:59:37 +02:00
Timo Rothenpieler
69c25c0ad7 avcodec/nvenc: forward frame duration 2016-05-31 18:39:28 +02:00
Timo Rothenpieler
971351b664 avcodec/nvenc: Handle minqp-only case in set_vbr 2016-05-31 17:00:07 +02:00
Timo Rothenpieler
eae4eba9cb avcodec/nvenc: twopass mode works in all modes 2016-05-31 16:55:24 +02:00
Timo Rothenpieler
1330a0f31f avcodec/nvenc: Fix forcing constqp rc mode
The CONSTQP enum value is 0, so this check failed for it.
2016-05-31 16:53:38 +02:00
Andrey Turkin
58c6dcb4b7 avcodec/nvenc: don't enqueue timestamps until a frame was accepted
Otherwise timestamps/pending FIFOs would go out of sync if nvEncodePicture ever fails.

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-05-31 16:50:45 +02:00
Andrey Turkin
2f53b5b74b avcodec/nvenc: refactor encode_frame a bit
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-05-31 16:47:07 +02:00
Andrey Turkin
d3463912c1 avcodec/nvenc: extract timestamp calculations into separate function
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-05-31 16:32:03 +02:00
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>
2016-05-31 16:04:53 +02:00
Andrey Turkin
f052ef30ef avcodec/nvenc: allow configuring number of surfaces
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-05-31 15:48:43 +02:00
Andrey Turkin
b69335304d avcodec/nvenc: use INIT_CLEANUP to deal with init failures
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-05-31 15:48:43 +02:00
Andrey Turkin
f84dfbc74a avcodec/nvenc: add rate control option
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-05-31 15:48:43 +02:00
Andrey Turkin
40df468ab1 avcodec/nvenc: convert tier to AVOptions
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-05-31 15:48:43 +02:00
Andrey Turkin
b0172873a8 avcodec/nvenc: convert levels to AVOptions
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-05-31 15:48:43 +02:00
Andrey Turkin
9824321b32 avcodec/nvenc: convert profile parsing to AVOptions
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-05-31 15:48:43 +02:00
Andrey Turkin
faffff88c2 avcodec/nvenc: use AVOptions to select presets
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-05-31 15:48:43 +02:00
Andrey Turkin
7aa16d59bf avcodec/nvenc: split H264/HEVC encoder definitions into separate files
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-05-31 11:15:19 +00:00
Timo Rothenpieler
24fcb23351 avcodec/nvenc: Require Maxwell for lossless 2016-05-25 12:16:54 +02:00
Andrey Turkin
a8cf25dd92 avcodec/nvenc: CUDA frames support
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-05-25 12:16:48 +02:00
Andrey Turkin
cfb49fc6f7 avcodec/nvenc: replace custom FIFOs with AVFifos
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-05-25 12:16:45 +02:00
Andrey Turkin
e1691c44f0 avcodec/nvenc: combine input and output surface structures
There is no point in separate structures as they have 1:1 relationship,
they are always used together and they have same lifetime.

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-05-25 12:16:40 +02:00
Andrey Turkin
82d705e245 avcodec/nvenc: split large functions into smaller ones
Functions names and scopes are from libav. This commit basically moves
code around without changing it; it shouldn't change any functionality
except some small leak fixes on error paths.

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-05-25 12:16:33 +02:00
Timo Rothenpieler
c921ca9b5d avcodec/nvenc: Write buffPeriod/picTime SEI in both CBR modes 2016-05-11 12:58:52 +02:00
Timo Rothenpieler
3a9df7dfec avcodec/nvenc: Generate bufferingPeriod/pictureTiming SEI
For some unknown reason enabling these causes propper CBR padding,
so as there are no known downsides just always enable them in CBR mode.
2016-05-11 10:34:31 +02:00
Timo Rothenpieler
31ce01bdb9 avcodec/nvenc: don't set profile in lossless mode 2016-05-06 10:15:29 +02:00
Vittorio Giovara
41ed7ab45f cosmetics: Fix spelling mistakes
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2016-05-04 18:16:21 +02:00
Timo Rothenpieler
c4312b1cf4 avcodec/nvenc: Add missing lossless presets to doc string 2016-04-27 22:22:29 +02:00
Timo Rothenpieler
b3557c79dc avcodec/nvenc: Generate AUD NAL units for better compatiblity 2016-03-30 12:03:59 +02:00
Timo Rothenpieler
f2bdf9d26a avcodec/nvenc: Fix typo and preset error message 2016-03-08 11:18:16 +01:00