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
Lucas Cooper
fd55470c65
avcodec/nvenc: Add encoder stats
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-03-08 10:41:07 +01:00
Agatha Hu
362e05f1ea
avcodec/nvenc: Fix H264 and HEVC vui info update
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-03-04 10:49:33 +01:00
Anton Khirnov
871d0930d4
nvenc: support CUDA frames as input
2016-02-14 22:31:47 +01:00
Anton Khirnov
c51b2c79a7
Allow linking to CUDA dynamically instead of dlopen()ing it at runtime
2016-02-14 22:08:13 +01:00
Anton Khirnov
d005ccc630
nvenc: rename a misnamed function
...
This function copies the encoded bistream into the caller's packet,
calling it 'get_frame' is misleading.
2016-02-12 10:20:11 +01:00
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.
2016-02-12 10:19:40 +01:00
Anton Khirnov
28259c13db
nvenc: factor out the pixel format list
2016-02-12 10:19:26 +01:00
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.
2016-01-12 09:23:38 +01:00
Anton Khirnov
9d36cab4c0
nvenc: fix encoding with B-frames
...
When B-frames are enabled and the encoder returns success, all currently
pending buffers immediately become valid and can be returned to the
caller. We can only return one packet at a time, so all the other
pending buffers should be transferred to a new 'ready' fifo, from where
they can be returned in subsequent calls (in which the encoder does not
produce any new output). This bug was hidden by the incorrect testing of
the encoder return value (the return value was overwritten before it was
tested).
2016-01-12 09:23:38 +01:00
Anton Khirnov
aac7d6b284
nvenc: flush the encoder before closing it, as required by the docs
...
Otherwise, closing the encoder can crash.
2016-01-12 09:23:38 +01:00
Anton Khirnov
39571e86cb
nvenc: better error handling
...
Return proper error codes and print more descriptive error messages.
2016-01-12 09:12:40 +01:00
Hendrik Leppkes
5fc17edc7d
Merge commit '1520c6ff05d835da4b793318fc88bbbc129c86a1'
...
* commit '1520c6ff05d835da4b793318fc88bbbc129c86a1':
nvenc: export CPB props side data
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-12-17 13:41:29 +01:00
Agatha Hu
758be45756
avcodec/nvenc: clamp initial qp value to [1, 51]
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2015-12-14 10:34:59 +01:00
Agatha Hu
f1a8897375
avcodec/nvenc: set slice number to 1 to improve encoding quality
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2015-12-14 10:27:36 +01:00
Anton Khirnov
1520c6ff05
nvenc: export CPB props side data
2015-12-06 10:25:43 +01:00
Agatha Hu
ddbad15898
avcodec/nvenc: update nvenc default parameters
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2015-11-09 13:05:02 +01:00
Agatha Hu
20abda6b62
avcodec/nvenc: fix potential profile error when encoding yuv444p
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2015-10-31 16:00:39 +01:00
Agatha Hu
2b5dda3f48
avcodec/nvenc: fix b frame n_quant_offset
...
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2015-10-16 18:24:10 +02:00