From patchwork Sat Sep 10 19:51:01 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philip Langdale X-Patchwork-Id: 535 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.134 with SMTP id o128csp907699vsd; Sat, 10 Sep 2016 13:01:51 -0700 (PDT) X-Received: by 10.28.158.1 with SMTP id h1mr4103166wme.94.1473537711054; Sat, 10 Sep 2016 13:01:51 -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 j20si8525813wjq.182.2016.09.10.13.01.42; Sat, 10 Sep 2016 13:01:51 -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=@overt.org; dkim=neutral (body hash did not verify) header.i=@overt.org; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C0ED6689F4F; Sat, 10 Sep 2016 23:01:29 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from rs224.mailgun.us (rs224.mailgun.us [209.61.151.224]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D4E84689D9E for ; Sat, 10 Sep 2016 23:01:22 +0300 (EEST) DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=overt.org; q=dns/txt; s=k1; t=1473537692; h=Message-Id: Date: Subject: Cc: To: From: Sender; bh=t2DXj6IMXEOseFq/1yPD3N7jfYsf9914YCOAxCwTaec=; b=d1L3KjlMLdEVbgTv/8YSn8NeyRGMrG0E3ih6J81B2rBYOA/kOLE5vlhJdojK7+TaNbJZapOD 9xgjTypR2fNmotvmVTE8mdR0oeQkhlpbViCSxRpMXKAjigIOSVTAbS9rL15J5t/lp2XNkGcF mVlCbnhbgJU6I8onP+8IcVP9e0I= DomainKey-Signature: a=rsa-sha1; c=nofws; d=overt.org; s=k1; q=dns; h=Sender: From: To: Cc: Subject: Date: Message-Id; b=HO/DYj6Gf2g8yPTwPyJ6GvGPgVggSunHyEqKO4d9uTpNsrgU8M+NRPtAjeSaXmVYpFi/ua TqzpvhMQgUPsNoOoQ3p8iUT+lHqvGqJqWFIvEVMbSRwGEKqqjzM9di8dAtuPhUd0mjXg/2sR lPvkvndnGyh0dLmzOE++g+x51jAYk= X-Mailgun-Sending-Ip: 209.61.151.224 X-Mailgun-Sid: WyIyM2Q3MCIsICJmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZyIsICI0YTg5NjEiXQ== Received: from mail.overt.org (155.208.178.107.bc.googleusercontent.com [107.178.208.155]) by mxa.mailgun.org with ESMTP id 57d4642a.7fc6fb9ff688-in3; Sat, 10 Sep 2016 19:51:06 -0000 (UTC) Received: from authenticated-user (mail.overt.org [107.178.208.155]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by mail.overt.org (Postfix) with ESMTPSA id 94D4762620; Sat, 10 Sep 2016 19:51:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=overt.org; s=mail; t=1473537065; bh=rOrgmIo70q8mQVySkWwTipEg3MVpzn2kfuh1ncL8qzU=; h=From:To:Cc:Subject:Date:From; b=ryzcsN4O5KerGWFfXPnWYlxEYm1lenWfM60AEiVfMnwJVDmcEdQNbjMDXBZe4fBci g4ynyMxAz90BEB4pA/U3jCj7btu7DW7fa6GhNOUai4m1AGxHWgBlVDRZ+0RYyFHb9n 8c7GaLrWm/U8fds3dB4Tz82nwNs81DNJsFF7847RoXRY7qybILHF5RwINA6cNWAt2v +Qyq6+b+iTBk6j/NBpN4jDH8jaSP/O17nimiEc358ik+LemZT/afJQFNX+yEj35ru9 dfmHjiE8QBGKMx4yjojdnP23B/NQwJfC1Or0li1yXywJn0jR9FOSXi9ULp4g//vtDS nI6BzCV6Ryn8Q== From: Philip Langdale To: ffmpeg-devel@ffmpeg.org Date: Sat, 10 Sep 2016 12:51:01 -0700 Message-Id: <1473537061-28490-1-git-send-email-philipl@overt.org> Subject: [FFmpeg-devel] [PATCH] cuvid: Always check for internal errors during parsing 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: Philip Langdale MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The cuvid parser is basically undocumented, and although you'd think that a failed callback would result in the overall parse call returning an error, that is not true. So, we end up silently trying to keep going as if nothing is wrong, which doesn't achieve anything. Solution: check the internal error flag every time. Signed-off-by: Philip Langdale --- libavcodec/cuvid.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libavcodec/cuvid.c b/libavcodec/cuvid.c index de75960..19a7772 100644 --- a/libavcodec/cuvid.c +++ b/libavcodec/cuvid.c @@ -272,8 +272,13 @@ static int cuvid_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, av_packet_unref(&filtered_packet); if (ret < 0) { - if (ctx->internal_error) - ret = ctx->internal_error; + goto error; + } + + // cuvidParseVideoData doesn't return an error just because stuff failed... + if (ctx->internal_error) { + av_log(avctx, AV_LOG_ERROR, "cuvid decode callback error\n"); + ret = ctx->internal_error; goto error; }