X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fthirdparty%2Fsrc%2Fffmpeg.git.patchC;fp=cinelerra-5.1%2Fthirdparty%2Fsrc%2Fffmpeg.git.patchC;h=bce5202ef8ab5a1e3d0647e944af15386eb0f3d2;hb=5f4783cf32ed1dd15dc023668284e95028080403;hp=0000000000000000000000000000000000000000;hpb=8a5c77cd787cd083c94a8f538dbbc0d548460646;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg.git.patchC b/cinelerra-5.1/thirdparty/src/ffmpeg.git.patchC new file mode 100644 index 00000000..bce5202e --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/ffmpeg.git.patchC @@ -0,0 +1,41 @@ +--- a/libavcodec/encode.c ++++ b/libavcodec/encode.c +@@ -191,7 +191,7 @@ + } + + if (!frame->buf[0]) { +- if (!(avctx->codec->capabilities & AV_CODEC_CAP_DELAY || ++ if (avci->draining && !(avctx->codec->capabilities & AV_CODEC_CAP_DELAY || + (avci->frame_thread_encoder && avctx->active_thread_type & FF_THREAD_FRAME))) + return AVERROR_EOF; + +@@ -243,8 +243,10 @@ + avpkt->flags |= avci->intra_only_flag; + } + +- if (avci->draining && !got_packet) ++ if (avci->draining && !got_packet) { ++ fflush(stderr); + avci->draining_done = 1; ++ } + + end: + if (ret < 0 || !got_packet) +@@ -365,10 +367,16 @@ + if (avci->draining) + return AVERROR_EOF; + +- if (avci->buffer_frame->buf[0]) ++ if (avci->buffer_frame->buf[0]) { ++ if (!frame) { ++ fflush(stderr); ++ av_frame_unref(avci->buffer_frame); ++ } + return AVERROR(EAGAIN); ++ } + + if (!frame) { ++ fflush(stderr); + avci->draining = 1; + } else { + ret = encode_send_frame_internal(avctx, frame);