diff options
author | James Almer <jamrial@gmail.com> | 2020-05-15 20:24:19 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2020-05-25 12:46:22 -0300 |
commit | cde7818d9f1774e2114b4fa3f051546fbed603f6 (patch) | |
tree | 0b51812b40d9cc0f9519dba1dd991c70e5c2c290 /libavcodec/frame_thread_encoder.c | |
parent | 82bf41f3abce4a13e7c6ad1606eb708f371de87f (diff) | |
download | ffmpeg-cde7818d9f1774e2114b4fa3f051546fbed603f6.tar.gz |
avcodec/frame_thread_encoder: remove usage of avcodec_encode_video2()
Call the encoder's internal AVCodec.encode2() function instead.
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/frame_thread_encoder.c')
-rw-r--r-- | libavcodec/frame_thread_encoder.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/libavcodec/frame_thread_encoder.c b/libavcodec/frame_thread_encoder.c index bb4b5d7341..83229f620a 100644 --- a/libavcodec/frame_thread_encoder.c +++ b/libavcodec/frame_thread_encoder.c @@ -66,7 +66,7 @@ static void * attribute_align_arg worker(void *v){ AVPacket *pkt = NULL; while (!atomic_load(&c->exit)) { - int got_packet, ret; + int got_packet = 0, ret; AVFrame *frame; Task task; @@ -86,19 +86,20 @@ static void * attribute_align_arg worker(void *v){ pthread_mutex_unlock(&c->task_fifo_mutex); frame = task.indata; - ret = avcodec_encode_video2(avctx, pkt, frame, &got_packet); - pthread_mutex_lock(&c->buffer_mutex); - av_frame_unref(frame); - pthread_mutex_unlock(&c->buffer_mutex); - av_frame_free(&frame); + ret = avctx->codec->encode2(avctx, pkt, frame, &got_packet); if(got_packet) { int ret2 = av_packet_make_refcounted(pkt); if (ret >= 0 && ret2 < 0) ret = ret2; + pkt->pts = pkt->dts = frame->pts; } else { pkt->data = NULL; pkt->size = 0; } + pthread_mutex_lock(&c->buffer_mutex); + av_frame_unref(frame); + pthread_mutex_unlock(&c->buffer_mutex); + av_frame_free(&frame); pthread_mutex_lock(&c->finished_task_mutex); c->finished_tasks[task.index].outdata = pkt; pkt = NULL; c->finished_tasks[task.index].return_code = ret; |