From patchwork Mon May 1 00:36:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Muhammad Faiz X-Patchwork-Id: 3529 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.3.129 with SMTP id 123csp1205504vsd; Sun, 30 Apr 2017 17:37:06 -0700 (PDT) X-Received: by 10.223.157.29 with SMTP id k29mr15009893wre.156.1493599026519; Sun, 30 Apr 2017 17:37:06 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id u128si7333034wmf.91.2017.04.30.17.37.05; Sun, 30 Apr 2017 17:37:06 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2ED06689898; Mon, 1 May 2017 03:36:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f66.google.com (mail-pg0-f66.google.com [74.125.83.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4C0FD6883B0 for ; Mon, 1 May 2017 03:36:52 +0300 (EEST) Received: by mail-pg0-f66.google.com with SMTP id v1so14037216pgv.3 for ; Sun, 30 Apr 2017 17:36:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=toSi1PlmMs9GuhkM3DUsfH38iOeDPogP/xqQ+SJpabY=; b=KHG1i0twJB8hsdvhO7o9lFaR0MeuJlw2uTjA/GwC5S6oUvMhMgqUTG7v1ncZOHva0d 0Dx+vvQ8WnK7WEaFfQ6479FsfMfiHVOKkHJmn0MeByz8pCBy2Uad3Hvz39960qB/lFyH C6ZHvTSPbx4DxYewY9GLq9Zh9iV2LmgetCDJOfO/ZRPnU1IQ8iwOVexXIvjSwR9q43X9 Rvgo181PFDqVjVmHGygKtiZz6N8hO3FgZKYYRDFBzba+l8qbWzxoo1fe9dkA48iDhUL0 ftZ9O4KqT8cw1Ym2kXet0c2MV8QAM6QURdzZMQQopLCHvfoRnnR1G8SHzfBkH547sbXV itWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=toSi1PlmMs9GuhkM3DUsfH38iOeDPogP/xqQ+SJpabY=; b=ad4hxQUXru/IKbGou6ySfgeDNlUbEuUDUtfxmE4VrE8qcHe3aLANM0F5gkuWnrRPgq 9lBNN8sllY5Tqmf2NYdLx8PpWyEWoo1s9m3ysnbpDKZcfyGM2/0kHYjfEYoTOOTH8LHM k+0ApoDJ9Mvj7DqBE52BcT5Aq8oeWUKjLWpFZ6rvWgd4RGbvAmeM73DtQ6AesJiUscV8 uH6MiJRqmrtVxITxyh3wodo9XZYFo3KwWgU2oesAFN92XsJEPpQs8WUkB4hhQO1TKyY2 +gYUAAMh0s+jiZ7SKl5LfU4d95LsE9KMy38N4vTv5We4NXvjFLIQzkkeY9QtAaEdzIni UM0A== X-Gm-Message-State: AN3rC/6y5/Xe2hA+YtChdMv+/9107gSORj0muoGxPxdbgVtYXQe66PQY FYmmPLXS0e9oqw== X-Received: by 10.98.193.65 with SMTP id i62mr23271118pfg.149.1493599013912; Sun, 30 Apr 2017 17:36:53 -0700 (PDT) Received: from localhost.localdomain ([114.120.232.119]) by smtp.gmail.com with ESMTPSA id h7sm27180690pfc.99.2017.04.30.17.36.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 30 Apr 2017 17:36:53 -0700 (PDT) From: Muhammad Faiz To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 May 2017 07:36:35 +0700 Message-Id: <20170501003635.17241-1-mfcc64@gmail.com> X-Mailer: git-send-email 2.9.3 Subject: [FFmpeg-devel] [PATCH v2] avcodec/decode: do not treat discarded frames as eof when draining X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Muhammad Faiz MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Fix fate failures: make fate-mov THREADS=32 Signed-off-by: Muhammad Faiz --- libavcodec/decode.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libavcodec/decode.c b/libavcodec/decode.c index edfae55..e330f14 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -369,7 +369,7 @@ static int decode_simple_internal(AVCodecContext *avctx, AVFrame *frame) AVPacket *pkt = ds->in_pkt; // copy to ensure we do not change pkt AVPacket tmp; - int got_frame, did_split; + int got_frame, actual_got_frame, did_split; int ret; if (!pkt->data && !avci->draining) { @@ -431,6 +431,7 @@ FF_ENABLE_DEPRECATION_WARNINGS } } emms_c(); + actual_got_frame = got_frame; if (avctx->codec->type == AVMEDIA_TYPE_VIDEO) { if (frame->flags & AV_FRAME_FLAG_DISCARD) @@ -568,8 +569,9 @@ FF_ENABLE_DEPRECATION_WARNINGS avctx->time_base = av_inv_q(av_mul_q(avctx->framerate, (AVRational){avctx->ticks_per_frame, 1})); #endif - /* do not stop draining when got_frame != 0 or ret < 0 */ - if (avctx->internal->draining && !got_frame) { + /* do not stop draining when actual_got_frame != 0 or ret < 0 */ + /* got_frame == 0 but actual_got_frame != 0 when frame is discarded */ + if (avctx->internal->draining && !actual_got_frame) { if (ret < 0) { /* prevent infinite loop if a decoder wrongly always return error on draining */ /* reasonable nb_errors_max = maximum b frames + thread count */