From patchwork Mon Feb 12 16:27:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Mattias Wadman X-Patchwork-Id: 46222 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:9002:b0:19e:cdac:8cce with SMTP id d2csp778372pzc; Mon, 12 Feb 2024 08:28:10 -0800 (PST) X-Google-Smtp-Source: AGHT+IFBDpNhxNwmSim7Z4RS7rNEklbVUnG3nbiyUS14cEdMCkWY0x+ea4yArRB7H3/XnUBelPwQ X-Received: by 2002:a17:906:7db:b0:a3c:3411:de61 with SMTP id m27-20020a17090607db00b00a3c3411de61mr4125461ejc.40.1707755289833; Mon, 12 Feb 2024 08:28:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1707755289; cv=none; d=google.com; s=arc-20160816; b=fJ3jhOVyPz3KPlnfRLWtEkMv1Z3xR2hBbYRgU7nejTlp76qi9huPeRW+S3xxWliQ75 6tOq73qGYHT/OgEmpntgYyT7z5C4WCD62CGf3UqI5NLqkVjOVmKNXddi9isJD0caED3y JaAy46zal6tF1jdYT+8xghh33CdfqQG778Fzw1u2VwlcEdXaCxFHHvspmvuWqXo4nL9z k1pItNdYBqXYtwszxBFIoKZO8a4WMJrraCqF+cTdW+KRl6DJqF7j6U4JFKOuADnydXwG YE/STwX2rr+97UZ7+snOR+HdiUiMXd7QLALmacr3TC3EGsuMTY3M/uJbhv9CnFynLxnG VhwQ== 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=cgADFUeI//goNJQN7WOTh5VW09e7x/PUppbc6X4BoWE=; fh=7NbPxKbAMBXQZN/46YilWRF752VFQ4w9iGmBM915A10=; b=w+IRPFt79o07r3EhAkXKom3PTz/0GFWY8DOxCeZlrCs8txuAEyI9XeiVmoqfsQGHNv chtuITp2BLpSBONLCtKvriMoxSf+XFPzeSy0mtZM+TDqybeyiYegycHGGXR66+5gS2VG KoULyaXtK39hgthtjr4GlTz9b9OjDu9tT57n/MzBBJbiS38XX1wToB7zsND5bFsTp03X lPTeLqtjxEJqJJI5yh3jlFkYj/6UPAx8/aEs26zNfEKOi3aRGNr/3weDIHm9cTAvy0pL PIqmEFnx7qfWOsPOVDS4cC0LDEWnHz+KOhZoe6/NFKFMbvUf4ZaRUozVIQZOchELq0gR L66g==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=JmU2dMrU; 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 X-Forwarded-Encrypted: i=1; AJvYcCVDQ9m2NXsJfQErF+HWY1PeD8EY596i1q2vi9/vDK7U2gpKboF+rXqaUXSYaf5c8Es5D3Qqt576WWL3b5RT2j7FqW+x5sOHFPs0kgb00x8wIpbUjsV0Q1LQaD3b4lh3XZ6W6xfdWz18JU9CwgGKeFq05sSIblIOroVhr+gtYWliKSPRXNPlqqkSfm0rCUiAkzzaxrtcg2G+m2YYs4gHyyCUogBWWHDW69K30VCPXA3bFo0Ju7hypVK0/Uk9rq9e1Al9OyKEVdvWncKhevtVIcEsB3cg+hrDaJk6o8+3n1PiZ8/rEe7oMkfv1majNcf4HExo1LjVUO1+1v/dgjP+U8KDH5iozCJovUqgW9bU+748iAz6UpFMGKT+QwplykaSZlKThUDYHdzTiwNQloAmv4mk6J4gOB++PJ3XoRp7/tmlvCgHTbgcqArgLqQ58+6rdVyIKa1D+2O4IGa9yzudO0ZZau6pypW9bNIlpBRyXwhf52h9hQDsBc+QGxJ9Z/UsfJp8TjtDORzikNGDkFsYIrOwwVX3R/KEeaKLBnynaw5o1CR2UwhuSeDNEFSzKU0t0GTw484Q9yKTnAKs19YqfVdlE/DSNn+HlV7GdgXupnpCBR7SisPmpHMLKOPekI0yg0oB5SmX7UkWYsOZd2S4K/ubwDw8yF1jFDaoRLiLqOIOULhOsSwIpTssW9KGCgO43AFzq52YRcpqkk3D7FQc+Zw2+raLUXqx75dYgfbBhqkzn/D95ZARUMteeRpjCohjsHEjdUihjx/WbMpbiXdLV7ftxdbHdj7vB5Gc6gzzVsVyfW7zIhbVEvNRhoQjWY0ZKWh8awmwdhLswHsnOoZ9NbAnerZ9QfZh2Nz9tDbw4JlEuWT1xiD+il7oC/dh74uHosEV/+gBvsfzZp6MHF4UUPe9OUWeo2azb/SmkltM018YKzDp/jJ2rhiRKa2Af2k6g3m68c k9ybF0upVd+pZHrWnTLdoy6Cy/sV3NCgobfF4Oi2wfy0ZUl6ycUiHKY8G2B2cdqMG8CP08luJj/r0CCs48LR7LL9HwKUEVGuvzyNu9gpI+Tp2EdybbAv2LFJCzTkPwMfXKSXv1jr4rylDfBcfcqe98JVw8ale9R5/XTMdctSxig3Ga+fiYYdkv0xin2q3hBHwBtuy1sV+qRKTw13vdkYfoiJC9M6db/IwqpccynPLx139UDBT7Uzc1wWScJUzUnimlNzU9K/2dkKlikJwiZR1t7uQeHkHAJPFOnhu2O7bsJ46urej0QlVEMN/p3xX8OgscmzTdtp7qxrIHi3ttS36jGy9rWsOtxDJPimOIf6HXQcOkbsXfcoxTq/SAfGnZPLJH39eeJGjuUrbDVy57AzDsbEQEDp009RH669Dj8Xy/rfrb3hFpv6520c2NbtBo8uP1/O7cCJAp0jGhUkCpOurkqU9Blkt84H4fxcALi8AtJ0dbMpB/TJHZgW+hiqIbzTQxKViAIHI5JQMbHoNAJT9kxavW1bawrZDRIAyQJ9XHTr+GXvle02Aj2GtAeCWdsjEikX154rV2ogrtlbjTLUgA9KbOGBnhCoPV6bnVhE4OIEq5VIB2vP3txd09JDQ= Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id h15-20020a17090634cf00b00a3c5be77942si326420ejb.671.2024.02.12.08.28.09; Mon, 12 Feb 2024 08:28:09 -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=20230601 header.b=JmU2dMrU; 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 3C76068D13E; Mon, 12 Feb 2024 18:28:06 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 85C01688158 for ; Mon, 12 Feb 2024 18:27:59 +0200 (EET) Received: by mail-lj1-f169.google.com with SMTP id 38308e7fff4ca-2d0a4e1789cso40158961fa.3 for ; Mon, 12 Feb 2024 08:27:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707755278; x=1708360078; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=WijwHeMYnE1nTYJVEl5ZR9aPwqr16T8rucNHzA8+AIk=; b=JmU2dMrUTOqaWvUm71yL1BblBshD0vHxwpmOLn4lNZTuUAlCSxLgiINxJVt0KtI7aN nWdC6P3rdc6oxCwam78HabU1uMkTbJCkO8VIyOH+BvM5ons+D6cxA6Q4MlXJcvX4o52g CedeP/2wukpwz0O69to+/Js0TVaCL6s3XtWTUuGblCGpd+o0oQbD6ioh4j96F4vCYJAS ta1xijDk0FAQpsDT73v/+wc36vXvOD8aLn1m4uxEDDl6O/cm2F0TS0O5sdD2+ALFS3eS S1lkmoZ35RS53klsfbxDlanfFTX2q9hmQN7pMC1Ro4pdicWjt0vkxPKgHQDyXdJFaP5T vcfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707755278; x=1708360078; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=WijwHeMYnE1nTYJVEl5ZR9aPwqr16T8rucNHzA8+AIk=; b=TPfkeYdef4g+TH2J2ZMXpFGJ0ZzK87/Spu34QuEslxEowMe7/ldBmfS4RBOycMUPWs LEkWGzN0Y6UZSFVAvE6JeQwI7g+KgE06wWUTIDItP2bwZ5jpOsMcpQQGx9JkSb+6dbTI 5D6OMDk2APYqga+JY64+hkhYoNR8QarGDQYU8b12y84GdHVB+gaqrZwg830wc6KQ7jlP HdhiEpfakQWYNhkS8qjKurzZcT5ufpv5sg44/gEBNifQFwflIvpBOHIce+3Q5LAgW0JG s3/NpHi+hGWUIaJD6BvUmEbqyEieFk72UrDQL2ZSPR6V0wtzSv5++FGvyA7R/+fLxUj5 6tmw== X-Gm-Message-State: AOJu0Yyw3IVL7OH+Ex6vwTHQPWk17opPEvUkzssflkz4TwvAbb8/o9S9 5HtHil6Nlw+A7fOVx90iBSKEgk7v/WFHBYDHz0odKvwrmvWADp6YCoKx0KGV X-Received: by 2002:a2e:bc10:0:b0:2d0:ef3a:e81b with SMTP id b16-20020a2ebc10000000b002d0ef3ae81bmr4007222ljf.45.1707755278086; Mon, 12 Feb 2024 08:27:58 -0800 (PST) Received: from C02WW1K9HV2R.lan ([84.218.15.152]) by smtp.gmail.com with ESMTPSA id p11-20020a2e9a8b000000b002d0d129eb2csm147047lji.97.2024.02.12.08.27.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Feb 2024 08:27:57 -0800 (PST) From: Mattias Wadman To: ffmpeg-devel@ffmpeg.org Date: Mon, 12 Feb 2024 17:27:55 +0100 Message-ID: <20240212162755.43790-1-mattias.wadman@gmail.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v1] avcodec/h2645_parse: Don't treat 0x000002 as a start code and truncate 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: Mattias Wadman Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: +4e5ztNmchS/ According to ITU-T H.265 7.4.2.1 this byte sequence should not appear in a NAL unit but in practice in rare cases it seems it does, possibly due to buggy encoders. Other players like VLC and Quicktime seem to be fine with it. Currently when this sequence is found it is treated as if the next start code has been found and the NAL unit gets truncated. This change limits the code to only look for first start code 0x0000001 or first escape 0x000003. Sadly i can't share the original source file with the issue but the first 80 bytes of the NAL unit looks like this: │00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f│0123456789abcdef│ 0x00000│00 00 00 01 02 01 d0 bc 57 a1 b8 44 70 01 00 0b│........W..Dp...│ 0x00010│80 2e 00 c2 6c ec 3e b9 e3 03 fb 91 2e d2 43 cb│....l.>.......C.│ 0x00020│1d 2c 00 00 02 00 02 00 5c 93 72 6f 31 76 18 00│.,......\.ro1v..│ 0x00030│08 38 aa b1 4c 33 3f fd 08 cb 77 9b d4 3c db 02│.8..L3?...w..<..│ 0x00040│a2 04 73 15 75 de 3b c4 67 c0 8f ca ad 31 f1 99│..s.u.;.g....1..│ --- libavcodec/h2645_parse.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libavcodec/h2645_parse.c b/libavcodec/h2645_parse.c index 28db465059..d54bdd53c2 100644 --- a/libavcodec/h2645_parse.c +++ b/libavcodec/h2645_parse.c @@ -40,8 +40,9 @@ int ff_h2645_extract_rbsp(const uint8_t *src, int length, nal->skipped_bytes = 0; #define STARTCODE_TEST \ - if (i + 2 < length && src[i + 1] == 0 && src[i + 2] <= 3) { \ - if (src[i + 2] != 3 && src[i + 2] != 0) { \ + if (i + 2 < length && src[i + 1] == 0 && \ + (src[i + 2] == 3 || src[i + 2] == 1)) { \ + if (src[i + 2] == 1) { \ /* startcode, so we must be past the end */ \ length = i; \ } \