Commit aa413b81 authored by Rick Kern's avatar Rick Kern

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: 's avatarRick Kern <kernrj@gmail.com>
parent 9ea91e41
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment