From patchwork Tue Dec 28 13:49:29 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hendrik Leppkes X-Patchwork-Id: 32932 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp11185544iog; Tue, 28 Dec 2021 05:49:53 -0800 (PST) X-Google-Smtp-Source: ABdhPJwr3lRmoqdpy+oH/XORFrb6nfJ5p1S3irIgNQ4JyYUQXvrWVMHmHd4p8akXPGeSBXF3DTdw X-Received: by 2002:a05:6402:27cf:: with SMTP id c15mr14814862ede.390.1640699393700; Tue, 28 Dec 2021 05:49:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1640699393; cv=none; d=google.com; s=arc-20160816; b=Q/gD12YkQJVQcoPKHYzuMoe3LHGDxQVr8nUl923FF2GCd/mYoVEx3ptYPXceAIyW4q Su7aRxP8p+GRr2kVzTfa/hXfyoFuElgWOiSijGuJEBaFnD6yAGYJetU+zAO/B6QaWwKZ J5P6ksFcZPeD4eVAiAIRpL13hFubWuQQiCEXGRmzXsMCtxqjR4WEtRpayHJSYnC2q+mL t8vYebA726eL4jJQxUc9p/kEQU0G5iojm5tecy6jPnLV0Hhbc2rwmWxd/Ar70H06Oj0Q M3yJlQ8U4Q9Yu0l37MAkN79dznu5wrSMFxjJRm81lP11yVVE4fcPTW1V2kovuFqM6pdH ZotA== 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:message-id:date:to:from :dkim-signature:delivered-to; bh=N0Uh+Jl2T8PrQjnjlwESLHvsPkP10xBny/yfVO8fhIY=; b=radqWE6A4mHjcPIZayngxqMjLAU2CYVBFPyfKg67tsectf//ikIn9Bf0E14m6BvhJR HjDETiyzu4dOwq8ZEomKtqbdPGVLBjQhY6NYRJngY5eJ6nS98whBbBz7vmv5Pd7VJyXr FeM3PxQ8oUmEVYbJGAr+pE8JAGeivTOK2mX6XosXRW0yaj2BpKxt+BFQ/aVVTHpzsYV3 jr/p/zZJcQdWF3+j3i40L2RPi+rAQqP2Ao8tpn9Q8BhTa24+8lACveghBcJdmU9aKqZO SN5+BSQCNM5IYYMJUcmjC5IJAJ7Bi7Sr2xpLg+OuUt7aBzEBhrnO7eiGm40zKwY24x7R 9e7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=ASznYhrC; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id qw12si9805114ejc.929.2021.12.28.05.49.52; Tue, 28 Dec 2021 05:49:53 -0800 (PST) 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 header.s=20210112 header.b=ASznYhrC; 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=QUARANTINE 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 4296168AF42; Tue, 28 Dec 2021 15:49:49 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5528D68AEA3 for ; Tue, 28 Dec 2021 15:49:42 +0200 (EET) Received: by mail-ed1-f46.google.com with SMTP id y22so74162682edq.2 for ; Tue, 28 Dec 2021 05:49:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=8B4nkgemy9aiOHsXB4gvTCsYIPPtwqxQqVe4qok1pZE=; b=ASznYhrCGUv395MFv8p8qGASO9Zms7Ld5NRSw6ascSkGBAP2EgupTRveGpEGjiSkx6 XNljtfg7kgva7cEVGiobTlvVHuXLJsXBsCOfo9yNI0SbpMB25q106pyfLtP4XUV+FtWb 2WeSQiWUCpQZWaZOExFgR9ckZuYg9liaA6zJXL5SshwdR/FhQaHMDFJtr5Fju90FdjsS 0NRE5+Oy1MymQS2mZtGqdU5efTEZUrbmdVOdNntmzKo4lzZi0W2RIyvDq1NNLSsMP6oK AaqbjIiBlLD/mI/a4YiEeeLKgAgRJTb9luKJK2EK7QUeL4KXqYqAFarZSkgMD8SrfqoI qd4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=8B4nkgemy9aiOHsXB4gvTCsYIPPtwqxQqVe4qok1pZE=; b=Cmb13fJNCNKuK6NeEPetbmU2OOfhW+udhAIuj4fajIyw3KxxwBoU/sRVZgSdEBMzgF G39NOElzlW3jTrbBxkffyps+nFQUN2rAlKD7nZX2V/tlHmh01I7zbIjW+F85Q2y4obvY P1ahFSxNA8oo0DD7YKP7YXqrVyhtPfADdwH99C/fJooFsMMvbsEeBoJi35A7/2cfD+GE +bFwXhaSOMiHwwR2jhDUh290ONfXncPISEFdcmR9WOURqyQxIKvdeOXi7KYZ5SM3jTHq oC6CptX6n9EVLzbO+7lA1t65yfuIq9usqzHKdkDHfnSrzL/PXfPecbJGv+UmBYCNzT/6 vPMQ== X-Gm-Message-State: AOAM531Lk/Jc20qhDxf6t1FCUMUrqGzKhN3F450HOTorpT7N5hNhhc/N TcdDcH+YWwqy+LItyLSiZZHPHMDyUow= X-Received: by 2002:a05:6402:3490:: with SMTP id v16mr20828832edc.398.1640699381449; Tue, 28 Dec 2021 05:49:41 -0800 (PST) Received: from localhost.localdomain (p200300ccf7135a000c71ac01fe98e4d0.dip0.t-ipconnect.de. [2003:cc:f713:5a00:c71:ac01:fe98:e4d0]) by smtp.gmail.com with ESMTPSA id y21sm7332960eds.97.2021.12.28.05.49.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Dec 2021 05:49:41 -0800 (PST) From: Hendrik Leppkes To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Dec 2021 14:49:29 +0100 Message-Id: <20211228134929.1164-1-h.leppkes@gmail.com> X-Mailer: git-send-email 2.33.0.windows.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] hevcdec: skip slices with missing PPS instead of skipping the entire packet 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: Hendrik Leppkes Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 6Hij3Mqcy06S Aborting decoding of the entire packet on a missing PPS can result in missing the actual PPS on streams with badly ordered NALs, where the SPS/PPS/VPS are stitched to the back of the previous frame, instead of the beginning of the next frame. Instead, skip the undecodable slice, and let the decoder process further NALs in the same packet. --- libavcodec/hevcdec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 3aa70e2245..c2451d682e 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -575,7 +575,7 @@ static int hls_slice_header(HEVCContext *s) sh->pps_id = get_ue_golomb_long(gb); if (sh->pps_id >= HEVC_MAX_PPS_COUNT || !s->ps.pps_list[sh->pps_id]) { av_log(s->avctx, AV_LOG_ERROR, "PPS id out of range: %d\n", sh->pps_id); - return AVERROR_INVALIDDATA; + return 1; // skip slice with missing PPS } if (!sh->first_slice_in_pic_flag && s->ps.pps != (HEVCPPS*)s->ps.pps_list[sh->pps_id]->data) {