mirror of https://git.ffmpeg.org/ffmpeg.git
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>
This commit is contained in:
parent
d80d91d213
commit
1cbea3f9ca
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue