mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
lavc/videotoolboxenc: flush/free frames on close
Prevents encode callback from running after codec is closed. Fixes a crash when an error is returned. Signed-off-by: Rick Kern <kernrj@gmail.com>
This commit is contained in:
parent
9ea91e4114
commit
aa413b810a
@ -145,6 +145,11 @@ static void set_async_error(VTEncContext *vtctx, int err)
|
||||
pthread_mutex_unlock(&vtctx->lock);
|
||||
}
|
||||
|
||||
static void clear_frame_queue(VTEncContext *vtctx)
|
||||
{
|
||||
set_async_error(vtctx, 0);
|
||||
}
|
||||
|
||||
static int vtenc_q_pop(VTEncContext *vtctx, bool wait, CMSampleBufferRef *buf, ExtraSEI **sei)
|
||||
{
|
||||
BufNode *info;
|
||||
@ -1966,6 +1971,9 @@ static av_cold int vtenc_close(AVCodecContext *avctx)
|
||||
|
||||
if(!vtctx->session) return 0;
|
||||
|
||||
VTCompressionSessionCompleteFrames(vtctx->session,
|
||||
kCMTimeIndefinite);
|
||||
clear_frame_queue(vtctx);
|
||||
pthread_cond_destroy(&vtctx->cv_sample_sent);
|
||||
pthread_mutex_destroy(&vtctx->lock);
|
||||
CFRelease(vtctx->session);
|
||||
|
Loading…
Reference in New Issue
Block a user