summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorTian Qi <tianqi@kuaishou.com>2020-08-27 10:53:27 +0800
committerRick Kern <kernrj@gmail.com>2020-09-28 21:46:30 -0400
commit1cbea3f9caa8d8641f749219a0c207320908778f (patch)
tree61781f37aa5ef2f357f7c713b573f9f1755ff2ef /libavcodec
parentd80d91d2135e416a0e50ac7127d95ac995f805f6 (diff)
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@kuaishou.com> Signed-off-by: Steven Liu <lq@chinaffmpeg.org> Signed-off-by: Rick Kern <kernrj@gmail.com>
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/videotoolboxenc.c4
1 files 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;
}