From patchwork Fri Nov 2 13:30:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: hwren X-Patchwork-Id: 10896 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id C8F6944DF86 for ; Fri, 2 Nov 2018 15:30:22 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 49A6468A9CD; Fri, 2 Nov 2018 15:29:54 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from m15-112.126.com (m15-112.126.com [220.181.15.112]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 575DE68A989 for ; Fri, 2 Nov 2018 15:29:45 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=From:Subject:Date:Message-Id; bh=1ErwVyfnchLj/54KZl ZBDIe1JXBuRd9a2NzT6T9QKzU=; b=aGF5DEDLIXLgx/l2aBXvqo3aV8xJcruTin 415WJ0s/F2emzv+OyHIHt9/QvQh9Vk3cTOPSIZ8OI5muCvbGtR7DjJ6YieMNUpg6 UsGR3gGu45cXG1KGEzaDcON4SMQvhYhFJJO5SVv/B7mofITJDL0pBI4xJ2o1Q5Ln Pnb8kjKuI= Received: from localhost.localdomain (unknown [223.71.83.109]) by smtp2 (Coremail) with SMTP id DMmowAAHa0lkUdxbihHaCQ--.37249S6; Fri, 02 Nov 2018 21:30:14 +0800 (CST) From: hwren To: ffmpeg-devel@ffmpeg.org Date: Fri, 2 Nov 2018 21:30:11 +0800 Message-Id: <1541165411-4524-4-git-send-email-hwrenx@126.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1541165411-4524-1-git-send-email-hwrenx@126.com> References: <1541165411-4524-1-git-send-email-hwrenx@126.com> X-CM-TRANSID: DMmowAAHa0lkUdxbihHaCQ--.37249S6 X-Coremail-Antispam: 1Uf129KBjvJXoW7Ar47tw1rJw1UGr1fZr47urg_yoW8AF4xpw 47tF98tF15JFs3Ar1rJr4Fva95JrZ7KF47tr47Ar10g3y5Aryjqr4Iyryruasa9FWkJa47 CF4DtryUZ3WqgaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07j3l1gUUUUU= X-Originating-IP: [223.71.83.109] X-CM-SenderInfo: pkzuv0b06rjloofrz/1tbiTwvy6VpD63MBdQAAsq Subject: [FFmpeg-devel] [PATCH v5 4/4] lavc/libdavs2: fix wrong return value 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: hwren --- libavcodec/libdavs2.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/libavcodec/libdavs2.c b/libavcodec/libdavs2.c index 3e59d41..6e4bd50 100644 --- a/libavcodec/libdavs2.c +++ b/libavcodec/libdavs2.c @@ -147,15 +147,17 @@ static int davs2_decode_frame(AVCodecContext *avctx, void *data, if (!buf_size) { ret = davs2_decoder_flush(cad->decoder, &cad->headerset, &cad->out_frame); if (ret == DAVS2_END) { - return 0; + ret = 0; } else if (ret == DAVS2_GOT_FRAME) { - *got_frame = davs2_dump_frames(avctx, &cad->out_frame, &cad->headerset, ret, frame); + ret = davs2_dump_frames(avctx, &cad->out_frame, &cad->headerset, ret, frame); davs2_decoder_frame_unref(cad->decoder, &cad->out_frame); - return ret; + if (ret == 0 || ret == 1) { + *got_frame = ret; + } } else { - av_log(avctx, AV_LOG_ERROR, "Decoder error: dump frames failed\n"); - return AVERROR_EXTERNAL; + av_log(avctx, AV_LOG_ERROR, "Decoder error: flush frames failed\n"); } + return ret; } cad->packet.data = buf_ptr; @@ -174,8 +176,14 @@ static int davs2_decode_frame(AVCodecContext *avctx, void *data, ret = davs2_decoder_recv_frame(cad->decoder, &cad->headerset, &cad->out_frame); if (ret != DAVS2_DEFAULT) { - *got_frame = davs2_dump_frames(avctx, &cad->out_frame, &cad->headerset, ret, frame); + ret = davs2_dump_frames(avctx, &cad->out_frame, &cad->headerset, ret, frame); davs2_decoder_frame_unref(cad->decoder, &cad->out_frame); + if (ret == 0 || ret == 1) { + *got_frame = ret; + } else { + av_log(avctx, AV_LOG_ERROR, "Decoder error: dump frames failed\n"); + return ret; + } } return buf_size;