summaryrefslogtreecommitdiff
path: root/libavcodec/nvenc.h
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-01-08 17:08:39 +0100
committerAnton Khirnov <anton@khirnov.net>2016-01-12 09:23:38 +0100
commitc59fec783d6540dd96540b079d753ee4a6ad2e58 (patch)
tree0e1428c34d28a4e69dbcc83f3db942a209017248 /libavcodec/nvenc.h
parent9d36cab4c0dc5089c023661aef9aeb8b009048fd (diff)
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.
Diffstat (limited to 'libavcodec/nvenc.h')
-rw-r--r--libavcodec/nvenc.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/libavcodec/nvenc.h b/libavcodec/nvenc.h
index 8819b3ca32..32d3345414 100644
--- a/libavcodec/nvenc.h
+++ b/libavcodec/nvenc.h
@@ -112,7 +112,10 @@ typedef struct NVENCContext {
AVFifoBuffer *timestamps;
AVFifoBuffer *pending, *ready;
- int64_t last_dts;
+ /* timestamps of the first two frames, for computing the first dts
+ * when b-frames are present */
+ int64_t initial_pts[2];
+ int first_packet_output;
void *nvenc_ctx;