avcodec/nvenc: surface allocation reduction
authorBen Chang <benc@nvidia.com>
Tue, 25 Apr 2017 21:57:56 +0000 (14:57 -0700)
committerTimo Rothenpieler <timo@rothenpieler.org>
Wed, 26 Apr 2017 19:57:54 +0000 (21:57 +0200)
commit8de3458a07376b0a96772e586b6dba5e93432f52
tree1349f65fd1d08cdc1f1dc7372cf4027b8a2d3af4
parent78a5fc4579deb63e1e6b93cd4d6e2ec2dceff931
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>
libavcodec/nvenc.c
libavcodec/nvenc.h
libavcodec/nvenc_h264.c
libavcodec/nvenc_hevc.c