From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> To: ffmpeg-devel@ffmpeg.org Cc: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Subject: [FFmpeg-devel] [PATCH 3/4] avcodec/avcodec: Don't reset decoder-fields for encoders when flushing Date: Wed, 13 Apr 2022 16:49:51 +0200 Message-ID: <AS8PR01MB79446CA20AC237C1CAC32F588FEC9@AS8PR01MB7944.eurprd01.prod.exchangelabs.com> (raw) In-Reply-To: <AS8PR01MB794407382EC42678297ECB248FEC9@AS8PR01MB7944.eurprd01.prod.exchangelabs.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- Needs to be applied before https://ffmpeg.org/pipermail/ffmpeg-devel/2022-March/294507.html or flushing an encoder will segfault. Btw: All this stuff is unused by subtitle decoders, so one could condition the else on that and avoid the allocations. libavcodec/avcodec.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index ded6b5b307..0d971a61d4 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -422,6 +422,17 @@ void avcodec_flush_buffers(AVCodecContext *avctx) } if (avci->in_frame) av_frame_unref(avci->in_frame); + } else { + av_packet_unref(avci->last_pkt_props); + while (av_fifo_read(avci->pkt_props, avci->last_pkt_props, 1) >= 0) + av_packet_unref(avci->last_pkt_props); + + av_packet_unref(avci->in_pkt); + + avctx->pts_correction_last_pts = + avctx->pts_correction_last_dts = INT64_MIN; + + av_bsf_flush(avci->bsf); } avci->draining = 0; @@ -430,22 +441,10 @@ void avcodec_flush_buffers(AVCodecContext *avctx) av_frame_unref(avci->buffer_frame); av_packet_unref(avci->buffer_pkt); - av_packet_unref(avci->last_pkt_props); - while (av_fifo_read(avci->pkt_props, avci->last_pkt_props, 1) >= 0) - av_packet_unref(avci->last_pkt_props); - - av_packet_unref(avci->in_pkt); - if (HAVE_THREADS && avctx->active_thread_type & FF_THREAD_FRAME) ff_thread_flush(avctx); else if (ffcodec(avctx->codec)->flush) ffcodec(avctx->codec)->flush(avctx); - - avctx->pts_correction_last_pts = - avctx->pts_correction_last_dts = INT64_MIN; - - if (avci->bsf) - av_bsf_flush(avci->bsf); } void avsubtitle_free(AVSubtitle *sub) -- 2.32.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2022-04-13 14:50 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-04-13 14:43 [FFmpeg-devel] [PATCH 1/4] avcodec/encode: Fix check for encoders impl. encode-simple API Andreas Rheinhardt 2022-04-13 14:49 ` [FFmpeg-devel] [PATCH 2/4] avcodec/avcodec: Avoid av_frame_unref(NULL) Andreas Rheinhardt 2022-04-13 14:49 ` Andreas Rheinhardt [this message] 2022-04-13 15:48 ` [FFmpeg-devel] [PATCH 3/4] avcodec/avcodec: Don't reset decoder-fields for encoders when flushing Anton Khirnov 2022-04-13 15:58 ` Andreas Rheinhardt 2022-04-13 16:01 ` Anton Khirnov 2022-04-13 14:49 ` [FFmpeg-devel] [PATCH 4/4] avcodec/avcodec: Simplify accessing AVSubtitleRect via dedicated pointer Andreas Rheinhardt
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=AS8PR01MB79446CA20AC237C1CAC32F588FEC9@AS8PR01MB7944.eurprd01.prod.exchangelabs.com \ --to=andreas.rheinhardt@outlook.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git