[FFmpeg-cvslog] avcodec/videotoolboxenc: don't wait when flushing data
Tian Qi
git at videolan.org
Tue Sep 29 04:50:43 EEST 2020
ffmpeg | branch: master | Tian Qi <tianqi at kuaishou.com> | Thu Aug 27 10:53:27 2020 +0800| [1cbea3f9caa8d8641f749219a0c207320908778f] | committer: Rick Kern
avcodec/videotoolboxenc: don't wait when flushing data
because there is run in thread mode, few times will block
the workflow at the wait, so check the status is flushing data,
don't wait when flushing data.
Signed-off-by: Tian Qi <tianqi at kuaishou.com>
Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
Signed-off-by: Rick Kern <kernrj at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1cbea3f9caa8d8641f749219a0c207320908778f
---
libavcodec/videotoolboxenc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c
index ea13845232..a99a224bfc 100644
--- a/libavcodec/videotoolboxenc.c
+++ b/libavcodec/videotoolboxenc.c
@@ -294,7 +294,7 @@ static int vtenc_q_pop(VTEncContext *vtctx, bool wait, CMSampleBufferRef *buf, E
return 0;
}
- while (!vtctx->q_head && !vtctx->async_error && wait) {
+ while (!vtctx->q_head && !vtctx->async_error && wait && !vtctx->flushing) {
pthread_cond_wait(&vtctx->cv_sample_sent, &vtctx->lock);
}
@@ -310,6 +310,7 @@ static int vtenc_q_pop(VTEncContext *vtctx, bool wait, CMSampleBufferRef *buf, E
vtctx->q_tail = NULL;
}
+ vtctx->frame_ct_out++;
pthread_mutex_unlock(&vtctx->lock);
*buf = info->cm_buffer;
@@ -321,7 +322,6 @@ static int vtenc_q_pop(VTEncContext *vtctx, bool wait, CMSampleBufferRef *buf, E
}
av_free(info);
- vtctx->frame_ct_out++;
return 0;
}
More information about the ffmpeg-cvslog
mailing list