]> git.sesse.net Git - ffmpeg/commit
lavc/pthread_frame: Update user context in ff_frame_thread_free
authorLinjie Fu <linjie.fu@intel.com>
Fri, 27 Dec 2019 08:47:35 +0000 (16:47 +0800)
committerAnton Khirnov <anton@khirnov.net>
Fri, 27 Mar 2020 09:57:40 +0000 (10:57 +0100)
commit091341f2ab5bd35ca1a2aae90503adc74f8d3523
tree3756dacd3a9e853c67826d80792b605607a54cd5
parentddbd77da904ca48b8cbec19037860a3a305eccd0
lavc/pthread_frame: Update user context in ff_frame_thread_free

Resolution/format changes lead to re-initialization of hardware
accelerations(vaapi/dxva2/..) with new hwaccel_priv_data in
the worker-thread. But hwaccel_priv_data in user context won't
be updated until the resolution changing frame is output.

A termination with "-vframes" just after the reinit will lead to:
    1. memory leak in worker-thread.
    2. double free in user-thread.

Update user context in ff_frame_thread_free with the last thread
submit_packet() was called on.

To reproduce:
ffmpeg -hwaccel vaapi(dxva2) -v verbose -i
    fate-suite/h264/reinit-large_420_8-to-small_420_8.h264 -pix_fmt nv12
    -f rawvideo -vsync passthrough -vframes 47 -y out.yuv

Signed-off-by: Linjie Fu <linjie.fu@intel.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
libavcodec/pthread_frame.c