mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-12-08 06:09:50 +00:00
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>
This commit is contained in:
parent
82bf41f3ab
commit
cde7818d9f
2 changed files with 19 additions and 14 deletions
|
|
@ -277,14 +277,12 @@ int attribute_align_arg avcodec_encode_video2(AVCodecContext *avctx,
|
|||
return AVERROR(ENOSYS);
|
||||
}
|
||||
|
||||
if(CONFIG_FRAME_THREAD_ENCODER &&
|
||||
avctx->internal->frame_thread_encoder && (avctx->active_thread_type&FF_THREAD_FRAME))
|
||||
return ff_thread_video_encode_frame(avctx, avpkt, frame, got_packet_ptr);
|
||||
|
||||
if ((avctx->flags&AV_CODEC_FLAG_PASS1) && avctx->stats_out)
|
||||
avctx->stats_out[0] = '\0';
|
||||
|
||||
if (!(avctx->codec->capabilities & AV_CODEC_CAP_DELAY) && !frame) {
|
||||
if (!frame &&
|
||||
!(avctx->codec->capabilities & AV_CODEC_CAP_DELAY ||
|
||||
(avctx->internal->frame_thread_encoder && avctx->active_thread_type & FF_THREAD_FRAME))) {
|
||||
av_packet_unref(avpkt);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -299,7 +297,15 @@ int attribute_align_arg avcodec_encode_video2(AVCodecContext *avctx,
|
|||
|
||||
av_assert0(avctx->codec->encode2);
|
||||
|
||||
ret = avctx->codec->encode2(avctx, avpkt, frame, got_packet_ptr);
|
||||
|
||||
if (CONFIG_FRAME_THREAD_ENCODER &&
|
||||
avctx->internal->frame_thread_encoder && (avctx->active_thread_type & FF_THREAD_FRAME))
|
||||
ret = ff_thread_video_encode_frame(avctx, avpkt, frame, got_packet_ptr);
|
||||
else {
|
||||
ret = avctx->codec->encode2(avctx, avpkt, frame, got_packet_ptr);
|
||||
if (*got_packet_ptr && !(avctx->codec->capabilities & AV_CODEC_CAP_DELAY))
|
||||
avpkt->pts = avpkt->dts = frame->pts;
|
||||
}
|
||||
av_assert0(ret <= 0);
|
||||
|
||||
emms_c();
|
||||
|
|
@ -326,8 +332,6 @@ int attribute_align_arg avcodec_encode_video2(AVCodecContext *avctx,
|
|||
if (!ret) {
|
||||
if (!*got_packet_ptr)
|
||||
avpkt->size = 0;
|
||||
else if (!(avctx->codec->capabilities & AV_CODEC_CAP_DELAY))
|
||||
avpkt->pts = avpkt->dts = frame->pts;
|
||||
|
||||
if (needs_realloc && avpkt->data) {
|
||||
ret = av_buffer_realloc(&avpkt->buf, avpkt->size + AV_INPUT_BUFFER_PADDING_SIZE);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue