From patchwork Fri Jun 24 04:04:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 36409 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp66479pzh; Thu, 23 Jun 2022 21:04:37 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tpO/LhGIqusLbKYTovv/23nv3OySDAenu4kaozZPi+Mr7c+o/Dk6qYqoQvEX6l/QDx7yBw X-Received: by 2002:a17:907:7285:b0:722:e371:72d5 with SMTP id dt5-20020a170907728500b00722e37172d5mr11540065ejc.731.1656043476874; Thu, 23 Jun 2022 21:04:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1656043476; cv=none; d=google.com; s=arc-20160816; b=dQvFW+AoI3DybWcJLWaUHPk3TOuyqo5Txq7fZWLV2OzksyorOOsBhebu3xYopLnlfM CsIbq8wuDNhMVooz7PcFHNHoTswyRrI+EpCFJJeeLC7uzQzh5eYD7EuijTUijdYSelWH iwvf1MH5oBZNK3I1galgf3OaKMpg/bXVq7jTelMcVEft7b95hNSVKO8YN4mE4hPkm9s5 2jBxVWxXB1QVBAyxVKdbONHMQQJ9JMkWGUIBf0N3ccF1jhJhvJC1WzEy1kfZ6Fvf5R4+ x4/1gv56wRuP/+n9IGLwTxt2SfcP0mvBahgvqe+VtMQY+dW1+uIIaYoS7PhSDcfyMlJS 4FVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:date:to:from:message-id :dkim-signature:delivered-to; bh=pN4axRWMqezwmbKNhj3Z95ejK16pzoH6ODDkhCR9Ibc=; b=ZnPOH3YBs5VT99ubcLB6kRinNVVhHcGef+Cbqyvpi70qE5a1uUfDpQcWR6Qsns/oxJ QLpnyn/7+fm61e1MFkLvGqBkVS0piW7OXdqgIYTj1zzZ6A2gDcrm85MzKTF6/LF26AlQ /5f4qpXJGLSOm+hNWJlB5UXX8KHAy6vTb1lpQyxGmit471uEArarbWNaFZNQdCOyxOuI qBNbRT61vv0AOLmOxwmxSvNt2e9ULb1OXV+WneNRoQKAPnUn/5dOeopFnqsZXpRR4A1y PJsdCnp1ElEBzoMAJVGAPqx6LtwbdvnpG8wslNN/ZVa01K//oeOlPBPpfOgM0Wfajgmd T6MA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=yrHG3WY4; 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=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w14-20020a170906d20e00b00711bd5bbe4bsi1225372ejz.585.2022.06.23.21.04.21; Thu, 23 Jun 2022 21:04:36 -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=@foxmail.com header.s=s201512 header.b=yrHG3WY4; 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=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 78C0368B701; Fri, 24 Jun 2022 07:04:18 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out162-62-57-252.mail.qq.com (out162-62-57-252.mail.qq.com [162.62.57.252]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7AB4C68B456 for ; Fri, 24 Jun 2022 07:04:11 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1656043447; bh=PAogDi5fqo/vAm+HynNTWBTe0Z9QJ0BvJT3UmEuonXU=; h=From:To:Cc:Subject:Date; b=yrHG3WY44DGtrT4cSTPAIIe/9ZAxMLFon3El4bax8qkMgmqxqPhs9MjzXecrVyobZ WhWlFJevyMHuAc+G1p0oudoNRfCg5W528k6qIrjr0OMd7oppiwBhomZ8YIyYSGPKQN TV1svsfeS0uyfNCOlSCjkHq+Q7hMg46oZcEv416c= Received: from ZHILIZHAO-PC2.localdomain ([113.108.77.72]) by newxmesmtplogicsvrszc11.qq.com (NewEsmtp) with SMTP id 10630671; Fri, 24 Jun 2022 12:04:06 +0800 X-QQ-mid: xmsmtpt1656043446twg3vebk5 Message-ID: X-QQ-XMAILINFO: OQhZ3T0tjf0aa9kxWSVqlt0rb+W6nnx9WFwlXKqPCGUZb6gXYyzNf8P3871twR 5w0Vl6B6cTUk8BrY9TC18Bu5lXuuFhChwrTR6DauQeSEIFLit2g170nA9HqQM2az/1GLWwU3PZ/b OscBUyF97SF2y7WGr8Ep62lRFGKqM/M7BugWX21SvPZR1xJByg+K+b+uFs1WWKxkcx5lbisaksgM ag023mIwmHGkyebfgXwo1DFZK6GwpJw0eZktYdiFNVw2jDmtCMXXv7js0gTnMs8WJ6XS4r1WUAx5 60EHlN0qRdqEOng1NvvSncGwaRu41JYRc4EONeKI5GP5hDdN6KFnkuE9iY+juGloiWpgm+S9Ysyl 0e3ezYBY/R0i2TkK/MoiISxAYMf3i7cUQd0NXVMohLULa72lmqHGuLX61NWQylBCOTLKW2dy5xl7 3+7bksFNmckLBZfmafVKY+3MlG4+8Eqo+KyuKuMoF6QOo78JKOxboBSUIW2ISNRqqK8nOGik3vCD HoNUao2EMih1y0CEdO+jnNbdZKJHBzKhA4rqgFtJ71R95lemZ71VhffZOcpq7lxZxXKuSFcYo9Ww vTFT+kDWvhNeMBTEv0uSZCMoWcjBTP+saQokv8j7kPM1Uf4B5BVEvt/VDLCHsk6Lof83Rl9aIMd7 aKLlm7xIAdLY/M7xXc4X1GgL8MCY0UgpNFWTU+09g1vOitie+BqZQa/Nz5caH/FArcyMShfFR54e A2VVMSKCGAu8MwnCHj60o1wrn4bFU/kQZu0iIXcgN4WTABq6uZU9ct8S4npa8DhYEHu9fIReGn1M I3RGZq92gEjeR1AZfTJBPwfZW539tLGDBEs7NkC46+JPgnKDori7HH8d4UO9xlYzwLoZB7fcmFB6 iktbuFG6CL4XfbKXHlRLIDZ1X8hhmZGQ== From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Jun 2022 12:04:04 +0800 X-OQ-MSGID: <20220624040404.2376-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/cuviddec: fix AV1 decoding error 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: gobQl9qEBayQ From: Zhao Zhili cuvidParseVideoData only supports pure OBUs, it report unknown error with AV1CodecConfigurationRecord. Check whether extradata is AV1CodecConfigurationRecord and skip the first 4 bytes to fix the issue. The bug is revealed in ffmpeg cmd since 45e3b6a68 and ffd1316e. --- libavcodec/cuviddec.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libavcodec/cuviddec.c b/libavcodec/cuviddec.c index cb3cda7e24..fc9c0515fe 100644 --- a/libavcodec/cuviddec.c +++ b/libavcodec/cuviddec.c @@ -953,6 +953,16 @@ static av_cold int cuvid_decode_init(AVCodecContext *avctx) extradata_size = avctx->extradata_size; } + // Check first bit to determine whether it's AV1CodecConfigurationRecord. + // Skip first 4 bytes of AV1CodecConfigurationRecord to keep configOBUs + // only, otherwise cuvidParseVideoData report unknown error. + if (avctx->codec->id == AV_CODEC_ID_AV1 && + extradata_size > 4 && + extradata && extradata[0] & 0x80) { + extradata += 4; + extradata_size -= 4; + } + ctx->cuparse_ext = av_mallocz(sizeof(*ctx->cuparse_ext) + FFMAX(extradata_size - (int)sizeof(ctx->cuparse_ext->raw_seqhdr_data), 0)); if (!ctx->cuparse_ext) {