From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 3D0374718C for ; Thu, 10 Aug 2023 16:54:52 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 215CE68C782; Thu, 10 Aug 2023 19:54:50 +0300 (EEST) Received: from out162-62-57-137.mail.qq.com (out162-62-57-137.mail.qq.com [162.62.57.137]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 44F3A68C323 for ; Thu, 10 Aug 2023 19:54:43 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1691686473; bh=rquMyDc1h9UpHpWow0zRPCNeSsstzXXSzF4Ax3yvFQo=; h=From:To:Cc:Subject:Date; b=R9E5o0KqBqFTqQruIz90ufc6MPfXv0qwsXBIkumsRjr5ioHbKRU6wbkVYdMieYrR7 UzdtdAY99HEkWnI5eD77uXthc/wvDfZ8IGPGJFop4y4u11/b5sVLMrJIg6/xsB7nqr DW/OHu3JoNPh6eg4C0Ygfz+Gv1/zgFjXGESKLHJs= Received: from ZHILIZHAO-PC4.localdomain ([121.35.184.176]) by newxmesmtplogicsvrsza10-0.qq.com (NewEsmtp) with SMTP id DA020E64; Fri, 11 Aug 2023 00:54:32 +0800 X-QQ-mid: xmsmtpt1691686472tsl910gs1 Message-ID: X-QQ-XMAILINFO: Mg/0DM1Zd+nHFez/gh82UBl6U0mmkOmYzn7bZ8zeA9gNl1ffcUZgNTEBpVo9Ee VPTmPdm0BtrtafJeekUYhgL05qdxTkhHqcsZ//TdhTg3Du0KJZe71wiF2ss+VKBFhHJ4WO4wPayn MixaKav4L57O28eGczIdnPon6DLwj01A95DXokzv171VXlZi1OtV7R2qpYb3F8Svtx/VqIFqoYmB tn4TLxs7szgBu6IeMZyX3DSB2fj+Vlc9pZWBPVoTM6rvqNWbDJ8NUtQOECD8w+xFyOifw6VM1CXT K+LFbS3bY2Y6LoSoGSEcUL+oaHgJIovQ4VGqAHK/UTZsxo59C3Yy8eZNCLYSh0EhV92JjeE29vfg aZ3PZg/MWkphev1wTTkoiC+mu0sNRKtCIb+Uy+/DQ56/UhE0QakdWmCCY2+qwj33DzW1c6nvrOKg I+lyeaoVBISXCSOV5EF6y4UCkd1UG+GZskUuZEBb+2+uqdTfVd5IWisCfRTRqXF0BMugixs/zpl7 bFn/B/M8tutoQZVuPixlmg7c6wUT4V/dy2+m8vogBrvwbfmOx0aTx/FeMIZC5tWKxMm11Y36QFiR R8Z4p+QVpBXrIAPcKIFlgbLMj8Hi5dfuZBhNZl/F7ENyBC4Ua040wZNHIbLnQyMdpJ00lHgEdy93 Q+rqGMw4ipYvCbXfRaOxmgcmmkFGv/8rGGBwwYg52LXi7U2Tygp8TMdEWDjSMt1hAGBOiPfv+4W7 Q+kPltpxe0hFQewB4DHrF9Ozzsv3/z2ZWADVmKT6VZH/hgnR/JcG6xWdGaGWWylQgysNHwPyMWtB avTAKePfyCr++IItDO73aKDPDMMeeiR23aM8mQM04L3kZW3McwDbn2u/yd6aap85CIirCkIv9f2K 2XUwVnparr1uVflMVZds8TmC5x5eXYS4lU46VAnbwEqyRshpo2qKHogGmW9OAuOu2CsnkRQ97Ljq 87Wgi1YAfVkqVPgCpqPg== X-QQ-XMRINFO: MPJ6Tf5t3I/ycC2BItcBVIA= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Fri, 11 Aug 2023 00:54:27 +0800 X-OQ-MSGID: <20230810165427.28513-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] examples/transcode: flush decoder on EOF X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Zhao Zhili Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: From: Zhao Zhili Signed-off-by: Zhao Zhili --- doc/examples/transcode.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/doc/examples/transcode.c b/doc/examples/transcode.c index 305181663c..ed6ac9fa03 100644 --- a/doc/examples/transcode.c +++ b/doc/examples/transcode.c @@ -585,11 +585,38 @@ int main(int argc, char **argv) av_packet_unref(packet); } - /* flush filters and encoders */ + /* flush decoders, filters and encoders */ for (i = 0; i < ifmt_ctx->nb_streams; i++) { - /* flush filter */ + StreamContext *stream; + if (!filter_ctx[i].filter_graph) continue; + + stream = &stream_ctx[i]; + + av_log(NULL, AV_LOG_INFO, "Flushing stream %u decoder\n", i); + + /* flush decoder */ + ret = avcodec_send_packet(stream->dec_ctx, NULL); + if (ret < 0) { + av_log(NULL, AV_LOG_ERROR, "Flushing decoding failed\n"); + goto end; + } + + while (ret >= 0) { + ret = avcodec_receive_frame(stream->dec_ctx, stream->dec_frame); + if (ret == AVERROR_EOF) + break; + else if (ret < 0) + goto end; + + stream->dec_frame->pts = stream->dec_frame->best_effort_timestamp; + ret = filter_encode_write_frame(stream->dec_frame, i); + if (ret < 0) + goto end; + } + + /* flush filter */ ret = filter_encode_write_frame(NULL, i); if (ret < 0) { av_log(NULL, AV_LOG_ERROR, "Flushing filter failed\n"); -- 2.34.1 _______________________________________________ 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".