diff options
author | Maxym Dmytrychenko <maxim.d33@gmail.com> | 2018-09-18 09:47:52 +0200 |
---|---|---|
committer | Maxym Dmytrychenko <maxim.d33@gmail.com> | 2018-09-18 17:53:37 +0200 |
commit | a2041a6522642859ce64af1c618d6fb90a50d4af (patch) | |
tree | 94bda3f0a29c06aeb427ac6fdb7826f7118f432d /libavcodec/qsvenc.c | |
parent | 2a9e1c122eed66be1b26b747342b848300b226c7 (diff) | |
download | ffmpeg-a2041a6522642859ce64af1c618d6fb90a50d4af.tar.gz |
qsvenc: AV_PIX_FMT_QSV path should release frame
Fixes high memory usage and prevents over allocation of the frames via
proper unref.
Can be checked as:
-hwaccel qsv -c:v h264_qsv -i ../h264-conformance/CANL2_Sony_E.jsv -c:v
h264_qsv -b:v 2000k -y qsv.mp4
Diffstat (limited to 'libavcodec/qsvenc.c')
-rw-r--r-- | libavcodec/qsvenc.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index 611449cbeb..17a0559f36 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -1028,6 +1028,9 @@ static void clear_unused_frames(QSVEncContext *q) QSVFrame *cur = q->work_frames; while (cur) { if (cur->used && !cur->surface.Data.Locked) { + if (cur->frame->format == AV_PIX_FMT_QSV) { + av_frame_unref(cur->frame); + } cur->used = 0; } cur = cur->next; |