From patchwork Sat Jul 2 22:20:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36598 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1883435pzh; Sat, 2 Jul 2022 15:21:38 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sUy/XrJLC1xHtmOQYUOYh/xLxybPm7fQSijkNozBfzAOLDGaKgxBCIHdI5pjsiQTMnFgAr X-Received: by 2002:a05:6402:2812:b0:437:6235:adbe with SMTP id h18-20020a056402281200b004376235adbemr27705554ede.416.1656800498432; Sat, 02 Jul 2022 15:21:38 -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 l9-20020a056402254900b0043765427d74si7990706edb.347.2022.07.02.15.21.38; Sat, 02 Jul 2022 15:21:38 -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=@outlook.com header.s=selector1 header.b="mJYBMYs/"; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5A8EF68B930; Sun, 3 Jul 2022 01:21:35 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2012.outbound.protection.outlook.com [40.92.89.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4EDA168B925 for ; Sun, 3 Jul 2022 01:21:28 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lkEpJAgKDexWlYyLkaAQrsrrGlxrdJ83FtvMax3ee+t7oWNHflCn6Pi+3jkl3qg3yn866qcCp9Ri4wtRRKlw6zPrY/NQECUH0uhV8ZTbusKY3j3RJryYuny/BfzrBAJLA5rfu8FZofCT0wTCTnd+qxXOGwsh7CWWboIMB6yFL5LMVkuchDJjGcPCqt0kw1flZUaq2tUQlpVVUytkuA1+v9OSnMDtYbTSlizJoAmiSGqxR1Lc8jKsFOLPPhwyGuEmkrB0Cr2lOZcfOrXDXe3pEoXg076p7hjIaojD0OoAymIuu+6qnZ2PZ07QhqcrunP7QVINc0SNteNjQwnHhjaYHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=pSoK6S+KUZmPcRNQuYbgrfTSRaHk+2+giBzi1L12e5E=; b=AzORprM3qDq+Bw2wp4shTW3QHh6XwckrfWMGEpTmpB0RdbfDWmNv69olw5kqCGzIz9/o6N0bdhtAtMfV4U8+37yfOWTxWpa/Dr49q68rdOgpaItea7mJetAqTXL377S2IXA4x4LQ7Z1riRNyfx4zURWQ6puafu62CCzWLnp1JuxC6j450gxyMYmHQnLBg+/lQcCtpqhZBMMyYrELRi4I3V9MdJ1cbT598+Tm6CC7bSM/2gOb0JPJXE1EZG3tmJ6y5Xi9wkNsDN6NqPUINWfQhcgEYbCP5EXTn6cQbCluiL3K/fa91Cq5Y/eM9onm2FjPQEA7yhB4fPk7Qyir6OvwKw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pSoK6S+KUZmPcRNQuYbgrfTSRaHk+2+giBzi1L12e5E=; b=mJYBMYs/4170ittBNvM8MlvSZccfzveFST/MpgotvyTcGfJhF4hcepq8fqdQw3JrQ6XdizjiGI3ybtkAjHuSn7B3qLkcD2YkgI9M3tzAXHPaU3Y5zOFujrjqthNcUPhp7LpF0Xi+VAh//ftAC42n2I2vwGF/4IILqa0jqyLK/qhCHM9VayQoiubS14ifTDJKL38C0XV7MRhM0S4as7mk7MauOoqKkZDUl6ErtzC0rcNjdGSA4WjR/sFpRYjhthvHV6QddLKexydE8Nl4/KoV1rKgmx/yckBHhf+Eaq+MModxwirm8DHyMbXtFHHE/92HTHdOu8V1gmQSVBePbsDHog== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4240.eurprd01.prod.exchangelabs.com (2603:10a6:803:6e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Sat, 2 Jul 2022 22:21:25 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:21:25 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:20:57 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 X-TMN: [V+yRTdD+FXfPLJiRupNbudmd23c6pRqT] X-ClientProxiedBy: FR0P281CA0018.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:15::23) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222116.169626-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ba778df6-5beb-45d9-83a2-08da5c793334 X-MS-Exchange-SLBlob-MailProps: q+fD6XS3/UJFmjsjYxWDaBOi6Vv+4z9nVJkjwPx6xfdmJg9ESPAToptwJYOiMg4aI5P+3yoiH4OhBmp1uiIX4hIQt3A8+Ua5m7hf/+1uU1StdL5Yb/hLFgq32HmZ97yoX+9nTCgkdEle42OZwBLjvmZOEG2QXXn2qAFOQ00bnW+IsSm+DM1cevT8dS+wAXPzQeLpprzYDd5vWoyxTKE0GQARmd1398MwjbFcPus0GnKwZM3be4vZgMjywPwQEV8O+KykYiaFrdzmXlXD7m57XW3lgyc8ncy5fdNKWzjokIUU7Y+d81RE57Q0qOajOYdfdJwX5nkAD3dppUn4eFTAh1QQwJfPJ0dHbhq8UGO1MxgCFmqvBgP8UvNg6aAzbUEHw4cvGDadq80xvbAv+DcJ2zj8+Xlv315UjZ2QAVAOHI7qkaBSyHMEzUevW18Py7wWUSRf8bBYJHn6biVBwZwqUxoDxHCJFJ/8vWPmt8OJrW3pvVfvaLRSp/MERLrIsSmH1+r7pjPvZclX6nnlaxZG5w6ymQ5FmqVcNyLJXzTXRsnLcE1mZQH0uQbIst8IQMWQQeDftf5HC5GaO6HRs8xpjjmuu7QE2vAXJbLhGziLorR/Q9z6ZdAoipJOB53baI7G0KmkmNJ4VgY7JpVCT7+W+FOMHLU9D9R9bw1adugfImcQHzibPvE4K4AEb8RVmcClpKu9iueY3NaSS6o5IbTTKg== X-MS-TrafficTypeDiagnostic: VI1PR01MB4240:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ZwXifDNMIeBgqmMHB7GJBnEIO0BYUPJGmSBI8TDN6hElG4IchHpr5L57FsyAqggZfaWOBkn5hzuk39zDwDioq+WZsQ3kDG++IXJt81fdpHlMgzVBl2K7LEs47JQ9WGJ6C39M2iXyEgmj1jUIj2VwabJlW/4STfg+6JRYdnaWEb3hu5l6CAC6ei8je6MSuBpJTB/B5GsvLsAZIGQksCWe02oibNnGmm/+Xn8uJfOGXXtIToYhPg8R/NnLGklKqfOT9MSqsi5UqmZItk+4+lniLHWotK+3WFb+nK2QOtDhvo83It3chA3lAD03v+kuV3dik180tbwLX/bfTVn7sR94cAUvOsXKBjnlftj56DJ+rvVWIyC4CKbFqMGoS00RpDOZM9/f5ZIFIe0Zh9jDQ/nzqVfXLhbDoo3NEhnodnWvIn2tzklnE1iQm9a4l/tK0AZ6F81CMB0c/Wn2s70cKkSGBk09DBhCx8VTEtp4/T1Vcuvt5XSG+tdcF0SmE5zRE+DzmwTXYq7+O3qQ1l2ytFp8Brr6UPIVFXdDNUHAeHF/dt/oxgMkmlNv1/53jGQW5mcFoZa9nXFtXwV4v0NzO/EMiPePebgR2J1wWvDOkWaBxkPF2xm2kLR5EshCnMTrcgfw8Hs/+bBdTGqhqLywGuZbTg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: LmUIfIxhO7F1iAPpvOVTlcPdmgzPbBnMumtKlHoykxytexZNKZ4n16POT/oHqTX3Ns1x4/9qdyPmKox2ArgXRM5RxgneIMCr+HMC/SI/b0jiA+LFUi4HcAzhKCq7YeJBcL/yaDYRj2CoREEm+eNqaHXumK/v3oF1Xg3jSthr+9oTKp4vn+Y4E4OqF/EphPYu/xZr6GxWDrcy4O0SAijZon4A9gp9MCmf4/N5vjhtFuomDNIgyiinlvJeyv6eRUEJqAuwneDduYb/IodeJlPDOTFO7VfHxUjrD+TwJEmBqUNmYXhV20Llz8c5KvBCBeIllFjDkaw8PJDf08i2xy1XD21HycJihoVbEfaAJvQU63R+AY3NLgv9Nt9dJ4hTsInyCvwyO/nCSGoaMSdIIm7FU4GUp5sZQXZdzKAnqUqBc6sa20eKirUki9MDluEW7Rz1hR5xlvDyiRbzeSS2BRXh138297+ylWMxBYAx4mssYcedYiwzvlmskjgJ6T2GIPTfd9Mw+fWI+uNM1787AsT6ZaRxBl+aAzwlDDjiu7Puoc5PSsZa2Npat5RKeMPs5oVJ7hgbkZveoFfoe7QwJHKJRRh+ZG7U+lk1jxdmXSdsPllD6dSP3zBqKQV16c/iRCa0k4AMH4aBFPMiIy0+yZXTpdjI0WgQi8oIIUBVGmL2L0ZM0ioob/XsmA9KWXo9krtAu6fakJ52HWqWAWXNT8I905+Hc2gmT1TvY+5w1OcDUNjG7+PGproUcawcdn7/WMxu90pLBK1Q00VTbaJvmgwrHQ4khTnIAK6oIALLNoRCWl9D1F5WyCpc+cnjFfJIz08uUsvbsRo2ZS1nf8Kg/wqDJ4ZtCKdXnx+97KDMRsanrRhHIFxyATsQZvlha7cNEBA5eyqkso3Fy9jGwclGsauJFUhLffJEfaxUOjzAFcNxzc6a6U5aoK85oyTyu5N135QVt8dV62fkRphMkvpOpmizu5gFMUen7ogD7JCOkVmuEXmDzkK/nryJohyGIq0wgfYOEjbf4V26czFBsjIsthOs2NIEs00GYYHJACAW6QQLZD+WlLW19vUnvcOpjPFDCIAkiWQNYtsqXtetd2GI3lvwN+8NEpRpNq5gaT/bIRGb1GCbbWJF+ziWf3lvaUMFAsE1p/d1OReK3UUkYT1lRkbb8v3Az2XwR/iLBiAME422lTHWYuxStaJuWE51PJUngJOBIqYN+nmDsRSLbr/xxRpLNfgtZlUTaGm67KIx4X4iTwMGNjqQo1X/J0wWp49FGV6gbPrJSyrZsqXSL66SSFQ7AYMYy2n1Xh9T+sujq69EgMI= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ba778df6-5beb-45d9-83a2-08da5c793334 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:21:25.0687 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4240 Subject: [FFmpeg-devel] [PATCH 01/20] avcodec/hevc_sei: Use proper type for NALU type 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: kxzIFNybVgi3 Signed-off-by: Andreas Rheinhardt --- libavcodec/hevc_sei.c | 2 +- libavcodec/hevc_sei.h | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/libavcodec/hevc_sei.c b/libavcodec/hevc_sei.c index 953633f4bd..631373e06f 100644 --- a/libavcodec/hevc_sei.c +++ b/libavcodec/hevc_sei.c @@ -550,7 +550,7 @@ static int decode_nal_sei_message(GetByteContext *gb, void *logctx, HEVCSEI *s, } int ff_hevc_decode_nal_sei(GetBitContext *gb, void *logctx, HEVCSEI *s, - const HEVCParamSets *ps, int type) + const HEVCParamSets *ps, enum HEVCNALUnitType type) { GetByteContext gbyte; int ret; diff --git a/libavcodec/hevc_sei.h b/libavcodec/hevc_sei.h index f198402333..ef987f6781 100644 --- a/libavcodec/hevc_sei.h +++ b/libavcodec/hevc_sei.h @@ -26,6 +26,7 @@ #include "libavutil/buffer.h" #include "get_bits.h" +#include "hevc.h" #include "sei.h" @@ -154,7 +155,7 @@ typedef struct HEVCSEI { struct HEVCParamSets; int ff_hevc_decode_nal_sei(GetBitContext *gb, void *logctx, HEVCSEI *s, - const struct HEVCParamSets *ps, int type); + const struct HEVCParamSets *ps, enum HEVCNALUnitType type); /** * Reset SEI values that are stored on the Context. From patchwork Sat Jul 2 22:21:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36599 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1883673pzh; Sat, 2 Jul 2022 15:22:23 -0700 (PDT) X-Google-Smtp-Source: AGRyM1t4OxEUvPATjNf/R6uMboSftWvSZlrWdMPQ/nSv45krfbPVh2YopHtA/s/gEJHhbmM3MKCM X-Received: by 2002:a17:907:75e8:b0:722:e8c5:ee96 with SMTP id jz8-20020a17090775e800b00722e8c5ee96mr8435088ejc.147.1656800543239; Sat, 02 Jul 2022 15:22:23 -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 jg16-20020a170907971000b00726bdf6ee00si15666511ejc.842.2022.07.02.15.22.22; Sat, 02 Jul 2022 15:22:23 -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=@outlook.com header.s=selector1 header.b=cbCU1dSB; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8237168B944; Sun, 3 Jul 2022 01:22:20 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2106.outbound.protection.outlook.com [40.92.89.106]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E69B368B926 for ; Sun, 3 Jul 2022 01:22:13 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HAW+Xca3C64eJDIUhFxAi+y33N2xDgsKY4x/VyHyaL0Rh3oxUtnFqssQ1e2lA1Gy7884mGdHE1uASK4rLrNEfFPX52Q0s0+qJxXYuUVYitg1hnDWpJLMMXnf0AZL1DyQkIzkw5LwCpgJ3qdizlUGDKYVoTmZFWly5gCeWc5pEDrceoOxxK8aRHAbeF2/ea6VpqRHSRQKfnYmAkRSUsBrVmpzg3qWF2ksFdpCIFASIVoLJ2fjFSbd5iDZM9l+wk6s1Cl268GL9v0gWt2DosrTYf9Z2gdh/5nwJr4aLASUvdX3gnx5PDw86of10isjBVDcgIJyp93mBz/RL7Mri/GqcQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PF/xINVLVEg6+giw2NhtVgDL74UErP2Nhkajd5av7Vs=; b=hclm1RkpfA4F6Fa4Ykwn3W0+QoBIXtj2/1s2uDStcA3uSOJe1fEPcRChq4y0J+OxyFfFDlAmygJJiPxdUn1h2s1PUPJRKKNtrV/f9OQfd03aetKa67uTDNFu/4/XfYjP7s7Ec36/VMdlbyQihNCINUwb5Um993/0XRR9P8ilHHbOG5HyUKWuef9bcG6nUI4Z6YL5bGfqgVIfDXTIcwuzJVSBF6oQU4fEDCvYC/MXzvYp4s1gvFgqzHQcnMskmeMG96SIrUl0TH0f9SrOCp2AIt1muU12REiNmyONGPyPp9xaIAaxPB1NbfQIvlWHw8SaakRmFC6xlcsJuXD7zQgdrA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PF/xINVLVEg6+giw2NhtVgDL74UErP2Nhkajd5av7Vs=; b=cbCU1dSB9iQud2kl3k2MSSFyp5VnZdUoNg/aXmGrqopWx6uBpBvmR4xk5x1jGLUzInh9x81zrya2EBdLx33OXrkDSf7e2+BSkaYYsCGF1Edle5LqL7fX0hsl5vG2+TuJR+xjWem1vICMCmztKDIK6nAeAjCAUECJIa81zLl9fmmQiMrUCqxgPhnbB16ohJqgRnTw57UQXNeqQjE2z4wu/kjKtOXsLH68DT3aryw/EmYxxCcPLNpLn9O6fNyLnxtjWoGr/RLNUffB0dZdV+bCaiEUWwmZT6HTLGc27d6g+5wo/4IAUkuDTxN58t4TmpXINLWl7oViEu6nxU2nyVJE9g== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4240.eurprd01.prod.exchangelabs.com (2603:10a6:803:6e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Sat, 2 Jul 2022 22:22:12 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:11 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:42 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [vqg7aRubAOaOiCaTDJMMiTgfRijI+2/V] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 84fb50a8-93ba-4146-7de0-08da5c794f37 X-MS-Exchange-SLBlob-MailProps: +LiGfBxqLEtZ2Se9LXW8/h2t+qO8GfncnrsP5vP/A5nHBedlMgadBWQgcM3jGem2sX7FqDnz1OCtPC0pctizv9J4GswtCiYg1yL7xyOnBNeDgvjpzZTIuiP80CKK964E95OEbXwjBodGW/4O/1/pCwsAxGwS0i/4NE4YyGjRe9pP3h+/7uzijWkd/2esBGgDUjQiGGZUnzgt4SEFQtnnuCdDBaVcd1ni69xnP1V7V8UeEA2r2JGsdm8aK3mSrcpSrKTPa9+e4uZ8M8ZKX3GnlX7mQJnO31pRhxjN01q8cXGcvlBaMItCcVwsczjlsxAQpddEZ+xMtolyywfLndT0BCVzAOAmbikmIvtNaTB0r63Y8cwHHyWNd3dBfpxWMXGeqUSxWAt0+0KhOgWRgto6s88fLoEJ51fMfNruIWJV+VsF5S5pbLb25umJXL8Uu7dcg8nX8Vb2O1TZnJ1dS0BGE4K2FhbR382sHIqZrIYFLeS7eTTuwXzxqj4qbIwb5QaTuuT8FlwJKHf2l3cBx0gCIjxkTae3t+dFmpXa2jmDpM2g0WYNyQ0Tu7IqRvM6r5NtK3hmrPrGslF9D4uk5za2z4NVvyRFONNOojivXW45TQ+5bRF9Pgpmh5gPeU/jXAIMe1wwJqIeCCtL1/r6Hlxo0XBrrD1IqeXvTj4IV64sZ/QCT5SdaPNnKhkwjed4GJE3n9U6XvbRXBbh8dve6v2Y8AoeYhuliN0UKigd/tGepcMpLUmtJ3aT03rqkbkOOELfTpk4o5vxLd5r2rpdE3chFtXArNdxoqhO X-MS-TrafficTypeDiagnostic: VI1PR01MB4240:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ehgvdxb/izM8SntY+Tag4YxvzDwmH3peHuicCVKh9oAXwBrNpEG+3RVf7B5vrC5JcBbjYXlC6lY499+iZjrPhViUF/JWyFvLxY6RqKg/slxDite8WKZfDrIIcG77KMz6vVyVHNOaTwUSxtPw2ou3e9XFshorimpVYRI3PSkGofZ0Gcz8q57hQCgdQiL2IiNHA7+y5lofvtDfc6o101iB9n8mzH93ri1QhRuRYrd0Xs5ekB9EB7gOG4vFUVTBcN97ZqPmc2zGt2eNtgMTMIovdik9Ue3a+npH4o/73ZOyXEp4DUM6o+8A8Zu8jP+6wi17zvExfhrRVpYQ0UEPyomOi41iuskanBbd1bo/ls+rBHo0W4RCQft0KsyEfIA5E+8L5G20RVTeLY+zKnkhawv4iXu9+k1MeIFDgJQ0qnkIqV8mFwTmPaOr2Ld0Bs1gB1AXpM+Xj08baty73Z7JRAM5NGvc2Q8fZnjd/J1oxFMhNdWXyMPdlNATe+IYupzluhgAiTp0MH17WT8YtCqqqnGnttiKcrULwZC5tJAoF3/zcqIPA/QRrfJJ9OlWHr00J0IGD3io0CldTwr+5rr3xrD0anWLVbc3RiJ2GQ00d1RcCxeLZRO+yJEcVg+8Z195/zix16rU2DHC8OlOIpQzgxF4Cw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: WbmxxTymatDVR15K1w8husfnTeQSwg3ZVUFSHA2hDfrvu1A940XyEssm2ljTBBInQ+8OsIzqqscaXfRBt/23874nDKguwTgJwuX4AIc4zyPXiDy44BeZnljZtK6rmGBQD+Sulvc5Jy07UaXhAx3ECMb0UHooRVXXcnZZezBJFpVKvQtk41GAgV5EC7+ju2YsNnKoLGnA7e4gu4FfMhRgpD1TMKLRXDTpY+k+vf4gnmjZCwT5dzGAQ4F0cfEKPRGwriMe9CjKHzo5Xr1zPAn3BnqINhlylJ2Pv9zgKw+VlZukGgmaGjA2JtYUo2da6vyQIJ3jS9hHHKfYUnBZSZI51452yrJNaJQiHBMs/WIekHkXWoI959nZGuOocCjKd05wXdD9MyKdW3spLz1OAukFYpJG1KRTqQJ6q04hqzjgV+k6M8m8w/DDf1kl45Jr/Mwp13Hzy1ZrW0dmxrZyEihKNpKxIA1lmQQO6QI1BRdl7t33txxNijI5vsvht+CwV4zABCZfr13bob2WI5vvJ2tzHzBTd7LfeFtp1O7GYPd9ciZUGu95AqrZ67LFr/5og6S4oyUcFU0N4civbg+ns8iXJNme4p2A7n+1wdJSu2xl5S98ieMlXGORs1dXXUoKQQjj6gr8Ujy8R+Ec59pXbuwLLEIlJAQPrNf46XJuxka8LkHTGltnYlsn5vJtue6sMOXt26iu2a7T8+vtqAxpJhLj2YTf2Hse6gUrmwYC1Yy8l7P47uYR8VUxymWRyAp1rFL46zjOTIDnhFVutk703hUX7Bdyv6/5X/XLC3Mfca2oTr73xjK5f26M36YPsS9j2uinePJin2vGjIOQBTyZ0ZEfSaIG/zEoCgL8lsoUVbjOyDfInJylw8lM7Y7J2vV/3p6wFHtp7yKV+M0VDY+xiqDINf/Kcrd+dQfywF3d/ZyJT/6WIiX9ZQ443jEjFsl4t7N3GrlaQeWsXM1qkupN3LWtpvJRQpRZCNzwsDQbHTQyaTwM95RKxH38HZQ5QieO+JmH7+40Qw7PruU7OE/mcYQcrLQyzyaULiOHWflYQK3AkZrg6c3n9fA1ThC1j3urWyTP8y8n6RFzcUvrtRZmg0++8rf87IrXVQRSK7oGtA3grjCd5qTPXtmzTWpfNcBtMm2HtFG0F7515LcRukH+6HqDr9YgnUfWH5Kgcb1msiO4zfI7jU2qW5WJnVT0FMQzePORL5udYqvfmfNsM7AYLSIP8D/+TX5bM4UYKuX4SIuA3l8VdOR2qE2R8qpRDDQLcsWps4pELqTFbopphyVRNZeANMLpLQdL1INvCmrfpPwfmws= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 84fb50a8-93ba-4146-7de0-08da5c794f37 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:11.8890 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4240 Subject: [FFmpeg-devel] [PATCH 02/20] avcodec/h264_sei: Don't use GetBit-API for byte-aligned reads 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: XfmSgK8WlqUW SEI NALUs and several SEI messages are naturally byte-aligned, so reading them via the bytestream-API is more natural. Signed-off-by: Andreas Rheinhardt --- libavcodec/h264_sei.c | 145 ++++++++++++++++++++---------------------- libavcodec/h264_sei.h | 2 +- 2 files changed, 70 insertions(+), 77 deletions(-) diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c index 034ddb8f1c..d62a276779 100644 --- a/libavcodec/h264_sei.c +++ b/libavcodec/h264_sei.c @@ -33,6 +33,7 @@ #include "libavutil/macros.h" #include "libavutil/mem.h" #include "atsc_a53.h" +#include "bytestream.h" #include "get_bits.h" #include "golomb.h" #include "h264_ps.h" @@ -70,8 +71,10 @@ int ff_h264_sei_process_picture_timing(H264SEIPictureTiming *h, const SPS *sps, void *logctx) { GetBitContext gb; + av_unused int ret; - init_get_bits(&gb, h->payload, h->payload_size_bits); + ret = init_get_bits8(&gb, h->payload, h->payload_size_bytes); + av_assert1(ret >= 0); if (sps->nal_hrd_parameters_present_flag || sps->vcl_hrd_parameters_present_flag) { @@ -133,44 +136,36 @@ int ff_h264_sei_process_picture_timing(H264SEIPictureTiming *h, const SPS *sps, return 0; } -static int decode_picture_timing(H264SEIPictureTiming *h, GetBitContext *gb, +static int decode_picture_timing(H264SEIPictureTiming *h, GetByteContext *gb, void *logctx) { - int index = get_bits_count(gb); - int size_bits = get_bits_left(gb); - int size = (size_bits + 7) / 8; + int size = bytestream2_get_bytes_left(gb); - if (index & 7) { - av_log(logctx, AV_LOG_ERROR, "Unaligned SEI payload\n"); - return AVERROR_INVALIDDATA; - } if (size > sizeof(h->payload)) { av_log(logctx, AV_LOG_ERROR, "Picture timing SEI payload too large\n"); return AVERROR_INVALIDDATA; } - memcpy(h->payload, gb->buffer + index / 8, size); + bytestream2_get_bufferu(gb, h->payload, size); - h->payload_size_bits = size_bits; + h->payload_size_bytes = size; h->present = 1; return 0; } -static int decode_registered_user_data_afd(H264SEIAFD *h, GetBitContext *gb, int size) +static int decode_registered_user_data_afd(H264SEIAFD *h, GetByteContext *gb) { int flag; - if (size-- < 1) + if (bytestream2_get_bytes_left(gb) <= 0) return AVERROR_INVALIDDATA; - skip_bits(gb, 1); // 0 - flag = get_bits(gb, 1); // active_format_flag - skip_bits(gb, 6); // reserved + + flag = !!(bytestream2_get_byteu(gb) & 0x40); // active_format_flag if (flag) { - if (size-- < 1) + if (bytestream2_get_bytes_left(gb) <= 0) return AVERROR_INVALIDDATA; - skip_bits(gb, 4); // reserved - h->active_format_description = get_bits(gb, 4); + h->active_format_description = bytestream2_get_byteu(gb) & 0xF; h->present = 1; } @@ -178,31 +173,26 @@ static int decode_registered_user_data_afd(H264SEIAFD *h, GetBitContext *gb, int } static int decode_registered_user_data_closed_caption(H264SEIA53Caption *h, - GetBitContext *gb, void *logctx, - int size) + GetByteContext *gb) { - if (size < 3) - return AVERROR(EINVAL); - - return ff_parse_a53_cc(&h->buf_ref, gb->buffer + get_bits_count(gb) / 8, size); + return ff_parse_a53_cc(&h->buf_ref, gb->buffer, + bytestream2_get_bytes_left(gb)); } -static int decode_registered_user_data(H264SEIContext *h, GetBitContext *gb, - void *logctx, int size) +static int decode_registered_user_data(H264SEIContext *h, GetByteContext *gb, + void *logctx) { int country_code, provider_code; - if (size < 3) + if (bytestream2_get_bytes_left(gb) < 3) return AVERROR_INVALIDDATA; - size -= 3; - country_code = get_bits(gb, 8); // itu_t_t35_country_code + country_code = bytestream2_get_byteu(gb); // itu_t_t35_country_code if (country_code == 0xFF) { - if (size < 1) + if (bytestream2_get_bytes_left(gb) < 3) return AVERROR_INVALIDDATA; - skip_bits(gb, 8); // itu_t_t35_country_code_extension_byte - size--; + bytestream2_skipu(gb, 1); // itu_t_t35_country_code_extension_byte } if (country_code != 0xB5) { // usa_country_code @@ -213,23 +203,21 @@ static int decode_registered_user_data(H264SEIContext *h, GetBitContext *gb, } /* itu_t_t35_payload_byte follows */ - provider_code = get_bits(gb, 16); + provider_code = bytestream2_get_be16u(gb); switch (provider_code) { case 0x31: { // atsc_provider_code uint32_t user_identifier; - if (size < 4) + if (bytestream2_get_bytes_left(gb) < 4) return AVERROR_INVALIDDATA; - size -= 4; - user_identifier = get_bits_long(gb, 32); + user_identifier = bytestream2_get_be32u(gb); switch (user_identifier) { case MKBETAG('D', 'T', 'G', '1'): // afd_data - return decode_registered_user_data_afd(&h->afd, gb, size); + return decode_registered_user_data_afd(&h->afd, gb); case MKBETAG('G', 'A', '9', '4'): // closed captions - return decode_registered_user_data_closed_caption(&h->a53_caption, gb, - logctx, size); + return decode_registered_user_data_closed_caption(&h->a53_caption, gb); default: av_log(logctx, AV_LOG_VERBOSE, "Unsupported User Data Registered ITU-T T35 SEI message (atsc user_identifier = 0x%04x)\n", @@ -248,11 +236,11 @@ static int decode_registered_user_data(H264SEIContext *h, GetBitContext *gb, return 0; } -static int decode_unregistered_user_data(H264SEIUnregistered *h, GetBitContext *gb, - void *logctx, int size) +static int decode_unregistered_user_data(H264SEIUnregistered *h, GetByteContext *gb, + void *logctx) { uint8_t *user_data; - int e, build, i; + int e, build, size = bytestream2_get_bytes_left(gb); AVBufferRef *buf_ref, **tmp; if (size < 16 || size >= INT_MAX - 1) @@ -268,10 +256,8 @@ static int decode_unregistered_user_data(H264SEIUnregistered *h, GetBitContext * return AVERROR(ENOMEM); user_data = buf_ref->data; - for (i = 0; i < size; i++) - user_data[i] = get_bits(gb, 8); - - user_data[i] = 0; + bytestream2_get_bufferu(gb, user_data, size); + user_data[size] = 0; buf_ref->size = size; h->buf_ref[h->nb_buf_ref++] = buf_ref; @@ -384,36 +370,36 @@ static int decode_display_orientation(H264SEIDisplayOrientation *h, return 0; } -static int decode_green_metadata(H264SEIGreenMetaData *h, GetBitContext *gb) +static int decode_green_metadata(H264SEIGreenMetaData *h, GetByteContext *gb) { - h->green_metadata_type = get_bits(gb, 8); + h->green_metadata_type = bytestream2_get_byte(gb); if (h->green_metadata_type == 0) { - h->period_type = get_bits(gb, 8); + h->period_type = bytestream2_get_byte(gb); if (h->period_type == 2) - h->num_seconds = get_bits(gb, 16); + h->num_seconds = bytestream2_get_be16(gb); else if (h->period_type == 3) - h->num_pictures = get_bits(gb, 16); + h->num_pictures = bytestream2_get_be16(gb); - h->percent_non_zero_macroblocks = get_bits(gb, 8); - h->percent_intra_coded_macroblocks = get_bits(gb, 8); - h->percent_six_tap_filtering = get_bits(gb, 8); - h->percent_alpha_point_deblocking_instance = get_bits(gb, 8); + h->percent_non_zero_macroblocks = bytestream2_get_byte(gb); + h->percent_intra_coded_macroblocks = bytestream2_get_byte(gb); + h->percent_six_tap_filtering = bytestream2_get_byte(gb); + h->percent_alpha_point_deblocking_instance = bytestream2_get_byte(gb); } else if (h->green_metadata_type == 1) { - h->xsd_metric_type = get_bits(gb, 8); - h->xsd_metric_value = get_bits(gb, 16); + h->xsd_metric_type = bytestream2_get_byte(gb); + h->xsd_metric_value = bytestream2_get_be16(gb); } return 0; } static int decode_alternative_transfer(H264SEIAlternativeTransfer *h, - GetBitContext *gb) + GetByteContext *gb) { h->present = 1; - h->preferred_transfer_characteristics = get_bits(gb, 8); + h->preferred_transfer_characteristics = bytestream2_get_byte(gb); return 0; } @@ -463,45 +449,52 @@ static int decode_film_grain_characteristics(H264SEIFilmGrainCharacteristics *h, int ff_h264_sei_decode(H264SEIContext *h, GetBitContext *gb, const H264ParamSets *ps, void *logctx) { + GetByteContext gbyte; int master_ret = 0; - while (get_bits_left(gb) > 16 && show_bits(gb, 16)) { + av_assert1((get_bits_count(gb) % 8) == 0); + bytestream2_init(&gbyte, gb->buffer + get_bits_count(gb) / 8, + get_bits_left(gb) / 8); + + while (bytestream2_get_bytes_left(&gbyte) > 2 && bytestream2_peek_ne16(&gbyte)) { + GetByteContext gbyte_payload; GetBitContext gb_payload; int type = 0; unsigned size = 0; int ret = 0; do { - if (get_bits_left(gb) < 8) + if (bytestream2_get_bytes_left(&gbyte) <= 0) return AVERROR_INVALIDDATA; - type += show_bits(gb, 8); - } while (get_bits(gb, 8) == 255); + type += bytestream2_peek_byteu(&gbyte); + } while (bytestream2_get_byteu(&gbyte) == 255); do { - if (get_bits_left(gb) < 8) + if (bytestream2_get_bytes_left(&gbyte) <= 0) return AVERROR_INVALIDDATA; - size += show_bits(gb, 8); - } while (get_bits(gb, 8) == 255); + size += bytestream2_peek_byteu(&gbyte); + } while (bytestream2_get_byteu(&gbyte) == 255); - if (size > get_bits_left(gb) / 8) { + if (size > bytestream2_get_bytes_left(&gbyte)) { av_log(logctx, AV_LOG_ERROR, "SEI type %d size %d truncated at %d\n", - type, 8*size, get_bits_left(gb)); + type, size, bytestream2_get_bytes_left(&gbyte)); return AVERROR_INVALIDDATA; } - ret = init_get_bits8(&gb_payload, gb->buffer + get_bits_count(gb) / 8, size); + bytestream2_init (&gbyte_payload, gbyte.buffer, size); + ret = init_get_bits8(&gb_payload, gbyte.buffer, size); if (ret < 0) return ret; switch (type) { case SEI_TYPE_PIC_TIMING: // Picture timing SEI - ret = decode_picture_timing(&h->picture_timing, &gb_payload, logctx); + ret = decode_picture_timing(&h->picture_timing, &gbyte_payload, logctx); break; case SEI_TYPE_USER_DATA_REGISTERED_ITU_T_T35: - ret = decode_registered_user_data(h, &gb_payload, logctx, size); + ret = decode_registered_user_data(h, &gbyte_payload, logctx); break; case SEI_TYPE_USER_DATA_UNREGISTERED: - ret = decode_unregistered_user_data(&h->unregistered, &gb_payload, logctx, size); + ret = decode_unregistered_user_data(&h->unregistered, &gbyte_payload, logctx); break; case SEI_TYPE_RECOVERY_POINT: ret = decode_recovery_point(&h->recovery_point, &gb_payload, logctx); @@ -516,10 +509,10 @@ int ff_h264_sei_decode(H264SEIContext *h, GetBitContext *gb, ret = decode_display_orientation(&h->display_orientation, &gb_payload); break; case SEI_TYPE_GREEN_METADATA: - ret = decode_green_metadata(&h->green_metadata, &gb_payload); + ret = decode_green_metadata(&h->green_metadata, &gbyte_payload); break; case SEI_TYPE_ALTERNATIVE_TRANSFER_CHARACTERISTICS: - ret = decode_alternative_transfer(&h->alternative_transfer, &gb_payload); + ret = decode_alternative_transfer(&h->alternative_transfer, &gbyte_payload); break; case SEI_TYPE_FILM_GRAIN_CHARACTERISTICS: ret = decode_film_grain_characteristics(&h->film_grain_characteristics, &gb_payload); @@ -537,7 +530,7 @@ int ff_h264_sei_decode(H264SEIContext *h, GetBitContext *gb, type, -get_bits_left(&gb_payload)); } - skip_bits_long(gb, 8 * size); + bytestream2_skipu(&gbyte, size); } return master_ret; diff --git a/libavcodec/h264_sei.h b/libavcodec/h264_sei.h index f9166b45df..d7866f42ad 100644 --- a/libavcodec/h264_sei.h +++ b/libavcodec/h264_sei.h @@ -66,7 +66,7 @@ typedef struct H264SEITimeCode { typedef struct H264SEIPictureTiming { // maximum size of pic_timing according to the spec should be 274 bits uint8_t payload[40]; - int payload_size_bits; + int payload_size_bytes; int present; H264_SEI_PicStructType pic_struct; From patchwork Sat Jul 2 22:21:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36600 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1883711pzh; Sat, 2 Jul 2022 15:22:31 -0700 (PDT) X-Google-Smtp-Source: AGRyM1thpL90dq9/osW9lTqANN2BLV2K6wKLdTZXHpivEnP8EeCuJxIVAgnuitUeargav3Yvddge X-Received: by 2002:a17:907:7288:b0:712:174:8745 with SMTP id dt8-20020a170907728800b0071201748745mr21731113ejc.268.1656800551240; Sat, 02 Jul 2022 15:22:31 -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 ga39-20020a1709070c2700b00726b4dfce1esi6531629ejc.167.2022.07.02.15.22.30; Sat, 02 Jul 2022 15:22:31 -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=@outlook.com header.s=selector1 header.b=MuXNnywQ; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8354268B948; Sun, 3 Jul 2022 01:22:25 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2106.outbound.protection.outlook.com [40.92.89.106]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 28C5A68B92F for ; Sun, 3 Jul 2022 01:22:19 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ga1qXNQr55/eUC9JNWhLcMMDgURlBdbRbfYgPECRz0GNveIu9K5J38+HOV7xwkERGBLrtDdZnh7T7yDWtfxCyPTibwkHYLHKQgT1WPRsuaVTNH7TXBbFwwgMSqf/9tLCfWhzMRPLuZIEe4C834ExNMNOcOrnP6P5gvhRbelMr03So52IcNz7+uLiapaSELmcupWBHYDF5Z/2le1QXFWZ9XMBsQP9tDnmA8UpQpNJvGmc8frQC21UNxUiMiunSsLmGLm7cet6aG8PhfwhyqISPiw5o9c1yDtO6UDe5lx144JOixfJW39baQYU3PEAzluiQQwYgVP2beT8i5iWmBuRNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MjeVr5fSXTIeJ1Zb/YLwc3c0Z4caKYeeIkkiOf98QpI=; b=iUPB0IMG4+56URLe9QIbiCc3GrJMfORxgpVRSKh7hIPrB6rDQ1UZV1i0pO/Uink83IJ23ijFoOfJRWhO5+baci8/BRsEBpHEPm7EzFku/50QSZYA9+boF/wTXKCBWFkwVOuwnNhuralr7xruY8ynUQnqS6VfrbCUgN0Ve8cv0NYGJMt0LENxAFxCvoDa3btSl6OUECJJSd7YgTCvdOj19Sw7PLo5CwRCe+AAPB/e9XbsN32BF1H9avNylZID6K7T9ZLjGDEzh3ZjcXzjGC0au5JbasD6b+y/GqUM1/ggV9CJbRk5ZQ1W/VNNNjRHawkaPaA4MMLyZwzNpW4DK3Os/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MjeVr5fSXTIeJ1Zb/YLwc3c0Z4caKYeeIkkiOf98QpI=; b=MuXNnywQ3bE+dQafMPnx9ACZClGlfpij1EsY7wSxsT0ZfM6ko7sgDsIeE8Okt7HuG3nsQsPezKZbfPaDmn6FWAx7NhZrFp60Ek6ihJ/cbw43W4ls8O1os1vnBnG9p9DV7nUrts+uDM2duG3WygUer7V/1s9pzkxm4qppy4YecYgwZQMSW2kXxkpie5KbBC9e8L1mbfVe5ccAazX609hPSv7Sf6KATBa2l8u1rOB1+Zz6s9C2duBY2pfKJhYamZYX2Ii++hjLWfB2ohEDbKuR4DwnyIYQASIn7MTwOyvjwNV72iCIfdR6emACj6NnkEaiXoX+rQy45aE58ktXI+qIBg== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4240.eurprd01.prod.exchangelabs.com (2603:10a6:803:6e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Sat, 2 Jul 2022 22:22:13 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:13 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:43 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [KQ+CKvFZTbfW1xLdL29DKfflwimDtdLL] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 92423f68-a5c8-4232-7a57-08da5c79500d X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRfEAUNR0l8e+jWTbrQIj13wdduN0QOJfIjJW32WbKk0MtRY1zgJ7ceUiVUhXHpaC1yfX/FvBmZ0kK/QU493BZ7pD/vWCepb4vNY+Xq89Tev5qXhCwEHAOt7hnSPaWst5aKhKMJtneSRrO+ZZFSY4hIDpoKw9QmLJj9d9OKOQrumgiIRSMldx4zuwHkgX6v38k9Xd/zvpLsFVrv633uX4i/5m+Fps964A2/5JAW9EFmkKDjfKn3z9dDh1ecOEUmTkwxAOx6B/csV77AMpCVxI25etOU84lTwic6j5mLTQ7vGazkIznZK2KUrejgnPpqlm1X7iKRGeMQK30HEYLSGiNvcTqf7ajwXaBDjVO+LiW/mm3vSNC6xlU7yYNHooo5vgRIXJ5Q0pwzq1F04Ava/litk1artsxvdFsjMQDKhX9z1EjCcwqIOr1X8j78sKN1Hng2v3KBDOW92mk7d8nKmVfbJJ85ZgGmkyS3JpNAXawSVXzZxdwxzcJZjmIIlfgztZmPhK/5/eAhxOMosuv1mJbyRy7nfvP3RUEbJjYIJCDBN0eMlvr6RohEAYbJST3GI128XFVCz5pz/0HCWwyu/h7vYvRNwqJTlSM8ZOWDmHNX+gyrSn097CrMJm6TTRo0+ndI10McUKD5Dz9IiDtXkICTZz0vQVHC3CRkpMhoU5KX09tI37Lb8Mcrcxe5J8Z6Jv+5XyDrBlK8NYDTI843IbzmyW4c53nIZMApN3yL8koa3+GheWcbQ4EZafz28OfkZwQ= X-MS-TrafficTypeDiagnostic: VI1PR01MB4240:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zfAmwZs/s0gm7+kdNQaxwtKKyv2NAv8betihdFbGmrG9WEHa7vhK6MWT949KX3sIyuXx5eFDvh/pc1Uyg9R4ohBkJsaRBILR76LQw1Vq+jBIQ9tQynVD2TJ1vn5hmmcIRzIpfRbxSR5ae4zNtHQulaXAIrEyKxXN+V5V9p8cHuPuIQ1Ms+Z68aqc6wr+lJDBnrdjcRN6HewABKdgTrgT8w7+CsTbmB3bcdd4foV99tCqygERpEhQPNkiL98WOimen97Myyw6JfXiDPyHw7HK4aznuGxYRGe1jpDIgkprmQvneuq1xKettoZSaNg7YyIDh0qQYoT7PlPxoEuMgIEZynTvytVbqXdU1DoR7J42G0h/rEj3zC6u+tfuv9uWMbdUMqix8aiLmNc5ICH3u0SOxDZ/JyYKJPwQaHQTtSS8XxUfIS+TvQkEa8G2SFH6/fnG6OOqDQBabFqdRZG7bqEGphyBCiTY9xwePzbrLjDEQWGLfl0xNLjZV60kq0/+NwQrRrgiOT0eTRCAn82spUO6vg2VruwE9a2+3Ig1a0/Yy25Knlv9uEBxlYKJ7JNINNxRGjaaRUKQGIojgNKWvH68dkUJppYvqV0o5g0TD3jtTmbVZtdu1KwVqa9dqcfZsc7MDdaXaDVyEkDu4sqrAvfl+g== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 9P+mPfRiU4zGsTJDaceWNN8dbp6fA7vKKjNf3YOgVZmk2W1WqQq/cSim0Qqv3J/MJVvotY4zkqfO9I9a6RFFNJ7mE2JnQ2/sjI9AaWzTWsC87hmsBSj6KXUZynFz/kYmFXtIihPTBy4K6aAr9Awkiz3ZDZVcxcejy/yMhgRfU9fRi2ZtnFmyq+7NO0PF5/CuWOb69WHdkuwVqhauKY9HQ6RFEuQxBzke3Z/VPQ+5mWTZX7iO0I61JPNRxrQIQddp/vebvc73M4PQPZcoxT4Y/Bi3hdMkzrNgF3KuXCgGezKl2CEMy+KpzidKBWkixjkJeGxOc/LR0UrRnoSxBC3G2f80Yqa2NaZX299Co/gZFdTpktNbZ1gDzeTAyRlYmIuTfhkVEOuWdhz2tNkeGh+fO1P2o6KZeLe58Rt4Aphf8Eb1P7u4vLj4mghE6CW78tn6021Bx27f7tFn2ZbhGLFvDb+pc4DK8QjjSHGUnoyRruoNttWhGR+U1PB3uaXtTMUrgQ5b71QuE4JcS6bGbJuJAq227xDnpkBQ7R2ka72Djq7rueShJTAN9SJ36nNTYVCaJqFcnkxznoJXBraAp635h5E21ZAD3MHGt5IfTaxUMgaWi0Lu4etY1e8XXG2yk4+7K+p9zAdMBvlez0rsFeqJNpBAe+JZwpvCA6sjzPdK1gsvx9Uhsb0b9OyZUG+m07sIJR6UChzOpKq+U0Oi2XGvo4ZVziA0D8BnGCu/syk3j+CuW1wvkHdv6TmK8P0TwWoiOf47IQ70Exq73VozCo6dVCv0SIEWtnzW6e5vUErIH/Rmq0clJDD+TbRkiyaRGq8lfuVnZhlVDIFiDDW/fptpEwjaAGB+DlJEchLP6VBSp1roaikvJXJ27fGP8PTt5Qdc58cw1hjEoXAvWxYHpkPD5xFyoXxfsRi4qWlWNJIOZlOuIaOnBf1/eSp09h8rairqSEjcwR77Y9xnfmVcnsIYdaCnO9n/spDDuh+zJ3ho36JrAUZGPvmkHzjm8ndtUjNhFv9PIha6gLd9qflFnnW4bXL2bN6WSSgEUed+ZsXjAjb0DQ15fyQ/Yr/0elWE2MXydwxZsyKhxs9UPLwE2hRxEPkwVDjOfS6QLVzgAjHQBbzG00Tq78OLeDCskHfTj2elQJLUH2fvLx7KKsW1PpQcXk3szugMRUJGzdq+rZzlOClENzOLqCDEGr0hZKuu23TcQK+XPgxtJ3hE/HsR3I4V0axaCX561H2QZ/OJWvP/LqqPwebHTsUi27C0swtLouzg9KpNS/sO6PO+YrEflbyb+oW3KCKM77BeFb2wUBALSXY= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 92423f68-a5c8-4232-7a57-08da5c79500d X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:13.2664 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4240 Subject: [FFmpeg-devel] [PATCH 03/20] configure: Add (h264|hevc)_sei subsystems 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: +R3gftIvviik Currently, several components select atsc_a53, despite not using anything from it themselves. They only select it because parsing SEI messages adds an indirect dependency. But using direct dependencies is more natural, so add dedicated subsystems for them. It already allows to remove a superfluous dependency of the HEVC QSV encoder on hevc_sei and atsc_a53. Adding new subsystems only becomes effective after a reconfiguration. In order to force this, some needed headers (which are only included implicitly before this commit) were included explicitly in libavformat/allformats.c. Signed-off-by: Andreas Rheinhardt --- configure | 14 +++++++++----- libavcodec/Makefile | 9 +++++---- libavformat/allformats.c | 3 +++ 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/configure b/configure index fea512e8ef..65c368df8c 100755 --- a/configure +++ b/configure @@ -2459,7 +2459,9 @@ CONFIG_EXTRA=" h264parse h264pred h264qpel + h264_sei hevcparse + hevc_sei hpeldsp huffman huffyuvdsp @@ -2728,7 +2730,9 @@ faandct_select="fdctdsp" faanidct_deps="faan" faanidct_select="idctdsp" h264dsp_select="startcode" -hevcparse_select="atsc_a53 golomb" +h264_sei_select="atsc_a53 golomb" +hevcparse_select="golomb" +hevc_sei_select="atsc_a53 golomb" frame_thread_encoder_deps="encoders threads" inflate_wrapper_deps="zlib" intrax8_select="blockdsp idctdsp" @@ -2835,12 +2839,12 @@ h263_encoder_select="h263dsp mpegvideoenc" h263i_decoder_select="h263_decoder" h263p_decoder_select="h263_decoder" h263p_encoder_select="h263_encoder" -h264_decoder_select="atsc_a53 cabac golomb h264chroma h264dsp h264parse h264pred h264qpel videodsp" +h264_decoder_select="cabac golomb h264chroma h264dsp h264parse h264pred h264qpel h264_sei videodsp" h264_decoder_suggest="error_resilience" hap_decoder_select="snappy texturedsp" hap_encoder_deps="libsnappy" hap_encoder_select="texturedspenc" -hevc_decoder_select="atsc_a53 bswapdsp cabac dovi_rpu golomb hevcparse videodsp" +hevc_decoder_select="atsc_a53 bswapdsp cabac dovi_rpu golomb hevcparse hevc_sei videodsp" huffyuv_decoder_select="bswapdsp huffyuvdsp llviddsp" huffyuv_encoder_select="bswapdsp huffman huffyuvencdsp llvidencdsp" hymt_decoder_select="huffyuv_decoder" @@ -3252,8 +3256,8 @@ av1_qsv_decoder_select="qsvdec" # parsers aac_parser_select="adts_header mpeg4audio" av1_parser_select="cbs_av1" -h264_parser_select="atsc_a53 golomb h264dsp h264parse" -hevc_parser_select="hevcparse" +h264_parser_select="golomb h264dsp h264parse h264_sei" +hevc_parser_select="hevcparse hevc_sei" mpegaudio_parser_select="mpegaudioheader" mpegvideo_parser_select="mpegvideo" mpeg4video_parser_select="h263dsp mpegvideodec qpeldsp" diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 050934101c..52ea46e645 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -100,8 +100,9 @@ OBJS-$(CONFIG_H264DSP) += h264dsp.o h264idct.o OBJS-$(CONFIG_H264PARSE) += h264_parse.o h2645_parse.o h264_ps.o OBJS-$(CONFIG_H264PRED) += h264pred.o OBJS-$(CONFIG_H264QPEL) += h264qpel.o -OBJS-$(CONFIG_HEVCPARSE) += hevc_parse.o h2645_parse.o hevc_ps.o hevc_sei.o hevc_data.o \ - dynamic_hdr10_plus.o dynamic_hdr_vivid.o +OBJS-$(CONFIG_H264_SEI) += h264_sei.o +OBJS-$(CONFIG_HEVCPARSE) += hevc_parse.o h2645_parse.o hevc_ps.o hevc_data.o +OBJS-$(CONFIG_HEVC_SEI) += hevc_sei.o dynamic_hdr10_plus.o dynamic_hdr_vivid.o OBJS-$(CONFIG_HPELDSP) += hpeldsp.o OBJS-$(CONFIG_HUFFMAN) += huffman.o OBJS-$(CONFIG_HUFFYUVDSP) += huffyuvdsp.o @@ -383,7 +384,7 @@ OBJS-$(CONFIG_H263_V4L2M2M_ENCODER) += v4l2_m2m_enc.o OBJS-$(CONFIG_H264_DECODER) += h264dec.o h264_cabac.o h264_cavlc.o \ h264_direct.o h264_loopfilter.o \ h264_mb.o h264_picture.o \ - h264_refs.o h264_sei.o \ + h264_refs.o \ h264_slice.o h264data.o h274.o OBJS-$(CONFIG_H264_AMF_ENCODER) += amfenc_h264.o OBJS-$(CONFIG_H264_CUVID_DECODER) += cuviddec.o @@ -1138,7 +1139,7 @@ OBJS-$(CONFIG_GIF_PARSER) += gif_parser.o OBJS-$(CONFIG_GSM_PARSER) += gsm_parser.o OBJS-$(CONFIG_H261_PARSER) += h261_parser.o OBJS-$(CONFIG_H263_PARSER) += h263_parser.o -OBJS-$(CONFIG_H264_PARSER) += h264_parser.o h264_sei.o h264data.o +OBJS-$(CONFIG_H264_PARSER) += h264_parser.o h264data.o OBJS-$(CONFIG_HEVC_PARSER) += hevc_parser.o hevc_data.o OBJS-$(CONFIG_IPU_PARSER) += ipu_parser.o OBJS-$(CONFIG_JPEG2000_PARSER) += jpeg2000_parser.o diff --git a/libavformat/allformats.c b/libavformat/allformats.c index 8b84b52c64..20e0e06ca0 100644 --- a/libavformat/allformats.c +++ b/libavformat/allformats.c @@ -20,6 +20,9 @@ */ #include +#include +#include + #include "libavformat/internal.h" #include "avformat.h" From patchwork Sat Jul 2 22:21:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36601 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1883781pzh; Sat, 2 Jul 2022 15:22:40 -0700 (PDT) X-Google-Smtp-Source: AGRyM1u7jKKlIT7HyHi0FYyrqshNQR0TTdfxKTG1Ojl494lMxvty07IdRgTnxLahV7pH0rK/cQQk X-Received: by 2002:a05:6402:b34:b0:435:d064:8762 with SMTP id bo20-20020a0564020b3400b00435d0648762mr28128646edb.238.1656800559910; Sat, 02 Jul 2022 15:22:39 -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 s6-20020a508dc6000000b004335d160f73si16968373edh.309.2022.07.02.15.22.39; Sat, 02 Jul 2022 15:22:39 -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=@outlook.com header.s=selector1 header.b=Tz6sldPP; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A637168B95A; Sun, 3 Jul 2022 01:22:30 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2106.outbound.protection.outlook.com [40.92.89.106]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 52F8068B93D for ; Sun, 3 Jul 2022 01:22:24 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SHuSO3l52UCcpRJw5BVrnOG6Qi0UL+BPg2PCIw3+qnSjNXcFVPQVXE2uVHw8VywvODPDl59fIc1LQHHGmKghrIEgpjmRvikg1sy6sOlJ+hzsXLUbxQhI2jkdpSD/Nk1yVhBc5nVNFaSw4DqQOh6VZ8jkYkjNbmmkgfLLefWCS2YcRB2eb/aJrE85duuht2J7tyrhS87dZF2wzFv62M9vsvisiC8t+TbasNGafCGrNX0ovJiD5xl3Q1Wcn2dvuPR2Os5YG0vCju9ey9PM+qBCCaH/BfTKApE7YjSLIJrbFDClSoLjCn1HvVeVqP6nx7/62fNSg2CQ8B0pxmlkwnAN9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2K3mE8823Roi4SAqu1+UM2IPHksTw/FZ6DwiWYaQ/dU=; b=QhOshVm+Hj4qlHdAiVa00SyfccyM7hhRNqkbKkwDQMQyphI5nO6SvfWviDu12gSkbscllTIkYSZt7NAIIiqa4kaAnttLIFWZrLLMXY7VRBROesdk8nxjlbLQLtXz0R1/d7mExdLRa6U5Xn5obEv4Z4ygGziVQrj1JDRbJ7oUIlyqbDHrL0Sa0l4+zB5SP4FlLm3tkVFFDclHDyYEonflGyo9yfVAk8SFBt/Qpwu5m3RXHhQbfbwl4zgEe5srjhZlwP5T2dc3LLKmcA3Bq5O2ffcvSQThteFBIUMpJ+qpKIIn3FUzp/R3D5bMdShjM2Gh9nwB3r2bMYaGpRTfgGQgDQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2K3mE8823Roi4SAqu1+UM2IPHksTw/FZ6DwiWYaQ/dU=; b=Tz6sldPP2rhgaTVVkghecS9SxiCazXiZUEANDZsvb/Xg4RICD+pE6lD7r3uSRjX6vwMCZE64Ps0RpalvFPPM/AR8fVKMaRw+QjQJrtjbV1EpmFj1cpDiTUfCNs9Nr8jLI3D/LlBwUYZ6ib0b0NfG3/zkUPf54ECrwNW4XMaZ1uTQkqDF9QLxagCgev2EpSvv4gwM7MkD5qbQ4PmrJvJ4an3ECIrDsofGQ0kWfOfmkcUV9adAUqkerS82wDWaFGSAtkTLFLB5z/gSULBvZ56iesFvu2SYF0gLr+dehG8xRfKLde74GUYNCuWzjDM5OmaJ3wt68VaC4cbuNtCdzp0w/g== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4240.eurprd01.prod.exchangelabs.com (2603:10a6:803:6e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Sat, 2 Jul 2022 22:22:21 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:21 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:44 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [2UehPqSElqbofV0wERbtDSXxufmPgUj5] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7b5bb136-514d-4e4e-3478-08da5c7954b4 X-MS-Exchange-SLBlob-MailProps: q+fD6XS3/UJFmjsjYxWDaBOi6Vv+4z9nC/kwWqRRa/nmOVjUnn89s1pxfslF7jvTeI6SGLhzyD+TtnP8hronIE2a/gVwYK9h0yJJmd+evNpVyAaoLbsOn/bw7KNjamjK+9r2aR4Z+GX4PduD1pMcegEJQ6zrLaCHVRtxmABt+pcpeVl364EQhHb3kgEQrkdfVy+rNSsUVMESo/2lGUOYWXbGWyfJV5EP19kXjqiSwopMEohhzilA4Ux+yQ0cmFAiO1snrvdkRwoPhmNbK6eO1hiAh6cdow1dY6/1HO5vVB4Q3ZYLKtHbMbAOtAm0QuYZUX+89ORVFeSkexqfDKCzABZKlDJCMMDFFliRJdn8ODXqZXf5CqUpBQL1FH0YMWJcRJ/8+0jec059eZsWzdx4Ubf6TzgFP0MwDSqOG95HRl3DCN5JTD/DPZmyK6A09tLnEZCU0QZZbtbIFuMqRb2rzeqvgojIz8Vy5IXmAkcy3aT2FZvxSsBkz7MKwii8sBSeRMXnuunq75rMINsuvgCFqA8po75p63mM0kxBvSUBxQPnYam+QrJBCRaRp9MRV2uB1DQD4+3cEw5r1C7HEhD9S6stq3H2WpwWVhFvG768HTYRfVaQqLASGiPVQmegKwDuiDxJFGbPUFg2cvPtslzyOufALPgovFPvlpZyywsTQCw41cGK3rRriHYHH0F6fghjJgaZ0XGOkZSCMrDvOQ2uwg== X-MS-TrafficTypeDiagnostic: VI1PR01MB4240:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: V8ZQhUvff+5kYHhObrVRLWAM0lFNdZhN2OskmPkJfNcrs+nYFhWAbeWZ3vgq7H/EgKI4aquCyI3gGV/I/X+wHvZJ99CNpCiotMGV4+aKHncf62wBF5uYrFJkPNxYA/AJRiqNMDlnqMXL8XtAPc05ZtqPFlwSnhyr17vK+/DmYfLpXY06ceAAmN5lJxRE42xPMN/AwVO44pckt7ZHk6uZmvOfhX0W0HbGnC3EdUMfHVJnowTUSI5ARtO/3igtsaclBXlY9U44WEVP+Vn7MTzJP/caMvbINLHgCHvgvusomk9qJBjCr4/xmLXP6Ejf4FEEW09TfhXlWCwQhV10kcZeLlXqE/pf3lOeikk+NX83orsS1fsRlLt+J7OdPO2gKY7sfO4Es2Iw0bI1R8rMN4SgmIK+uYtzRF8QG8Tr18sFLzgG0fCKuJkouY31nXetUH6IUFYKj6yb/ddamzK338MM0zb+w3qod2CEU/qyl67pmgL8h3bQeBIiRKMz7KiKZBLheWSUfuTo9kgw/2YqvQY0dFtpOby/0DD4LEHZ31+F5K03ZHi/xleXd2qlX5iFI7miOypSLaTIoQ4AgrSC4GJs6UZ8vqgTq01NGCSy2r9z9UGNI9elXWvqRhzzuQPvRQM1GA6hzeqbHqO4Ml6lEE3SxA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: klC2vVZjDEN+/KppxkO4Ha234B0MKa/lKeLCei9btks+eeOTSkvoT/GkDc6P4fFcghIE1rJo1p8+xJIQBtlvJSuc/b5G8DgUs4sSQEBcjxvMxcAOnGOMR9BLh+VA8oh2vSca2KnGOln/m8KV4BrqGCf0Agk36EH7/8T9kMx2Mv+oHrpck7+mAHvUy1sAAtcfNeKxHtF7Ia+LQ0uNni9EBI6HX7+m3/TA7c71IqXGzitdijO+isaM99BWNXUbMhmVRzWgN0pw87IQdHT7U/kl1/hKjfFNeu2sKPdSeeFTK/e1bKY1inJ12qyeq/S0Efxu1vUzvB7fAtaeRTR61UMD1rcTrWZhreniv15brS/RlHzBAG7EbF4gkZyBRyPM6t7KizRJOoxQgwNy5ZZqqIETVFOvL42VlYHSVjXVDGX/PPmkp2DS49TcHxjHBHAY3KuTkF6eAdzainJ3l4hmR3gRCuMFwiwwRs+zWZfcAvJRVrUVs+0yLvGYwGmayy/9vmW9+VAA6UyWzlasnCGmF769LSFRYGR1vrEmrtqqImklkq9soVyvTnBYAB90hSIg5O4DhusG7LHd1qsyhGvIn0t+sCkx0vYLmFirNTGY+ruXzmzeSs9Rsw522BGDgn5iGXwloegiQYJAqwVeiPredLuOL7ZOiMySu+iSXhKfkrOqa63+FsFpd3IN21DvRZSkfU9AyQobGCqCH8F4jLzwjF3yE2HcHN6y04mlGunWRddkjeyKTVa+55kPng3QOveiASSyeTzKYhj8hT++L5o7kd2GbWFuxoTrp7nZ0anRFEhmtYlpd1t0krpBn8IvGoGxHuqoeSnAEJ2u4hsgOb+aal7MzDSIeEy4+RtJtHyt6+6JUX04vV9ymsa/t+H4beIrwbcaus6Dwn2QI6AcK+WxXWfTLftQoXTAgYQd7AWs63/Brt/BzA3ERsPUPqR84PQUS2qheXpxnbiQATDrmOyTaZqic3+slW6QrWn/eYojI3sZGias/knhXRZy2JGxfNArKh1OWNR2axtgJAe/NZY26L+oI6TC1b7/xnlx2Gcqicq8PII6Cy2qDs95ov5+SmsVkO7zJ2OnlrWTp/FbkpePAYi8HBrkRFOpuMryxhvJePrPJjr/XNqbSwN0Nm4DJEH4Ehn/bqLfUdmgQqfWlQRgQvESUSuMYbcUfw+JNgNu4mwGLTAUNBOUTFg2TEmnPu8QjrURAGeAfMi9eC1WBVkrV8wml9JjztIN4w2HzHIcXVPk3nVjOdjjvbw3QGqFD3DbbxowiSEOrjeWehWfCCrvaHAJvyuxYJsU1LoMbhmH41deb8E= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7b5bb136-514d-4e4e-3478-08da5c7954b4 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:21.1209 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4240 Subject: [FFmpeg-devel] [PATCH 04/20] avcodec/sei: Add tag to SEI enumeration 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: nmV1ncZV2iUz This makes it a usable type. Signed-off-by: Andreas Rheinhardt --- libavcodec/sei.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/sei.h b/libavcodec/sei.h index 5513590b51..f13c37c308 100644 --- a/libavcodec/sei.h +++ b/libavcodec/sei.h @@ -26,7 +26,7 @@ // The content of the payload data depends on the standard, though // many generic parts have the same interpretation everywhere (such as // mastering-display-colour-volume and user-data-unregistered). -enum { +enum SEIType { SEI_TYPE_BUFFERING_PERIOD = 0, SEI_TYPE_PIC_TIMING = 1, SEI_TYPE_PAN_SCAN_RECT = 2, From patchwork Sat Jul 2 22:21:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36597 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1883838pzh; Sat, 2 Jul 2022 15:22:50 -0700 (PDT) X-Google-Smtp-Source: AGRyM1v1zysqK7WqNDm9cXgcaBOnCWIVAu2F1Bvd0HeNNJEb4MkBQp8vjQUaWiK4Og/MQfz+du5H X-Received: by 2002:a17:907:7e85:b0:726:9fc5:cc2d with SMTP id qb5-20020a1709077e8500b007269fc5cc2dmr20475889ejc.376.1656800570182; Sat, 02 Jul 2022 15:22:50 -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 u23-20020a1709060b1700b00702d7a823casi13741278ejg.317.2022.07.02.15.22.49; Sat, 02 Jul 2022 15:22:50 -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=@outlook.com header.s=selector1 header.b=W8Cusx8E; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CB45D68B964; Sun, 3 Jul 2022 01:22:36 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2106.outbound.protection.outlook.com [40.92.89.106]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7D9B568B95D for ; Sun, 3 Jul 2022 01:22:29 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=djYx4PG+g4TYa1mESZtCSW6j9NZhtK4Sxekm8j2H6laKA3LWnahRVyWxswUU9wm5johx5Oin9gf5qBYPq8EvcDEoaCB7b64uP+6T4qgXebws3+dMKo8fNJmcroUSVnGleMwsJmu5oMvB3Gy25IMVJ+cb1wFw2MiE1uO+BzRg4+1vim6gjPDQsef6aMW8t4FJE6+ro/NZUu2YdIy86/s3+XNJzLKJqHSd18zBaBzt0MWqs1t44L/8yUfqAj+Ls7l6JfaIu/z/cel8q/jAXbm8pp5lBOG87Enxz9zKvHZkkNh16f7+NGmoO4D/FgLFpWzt5ugMSGzxHp5mGM98G6GT9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=FyTw6wnsGm7MFRnkZWrDkqQk6ICaNXm+eAuSw2Lyz9s=; b=YEYAEbp+CXiHuuum2KJCiHkDxKGefbniqh9HH6DRzOtfS6HQuANY383fRNrPCH7G3uWraA3eFNalRYpDbm9d+FZTrEBmP3N6fU7SeSAFgRBxnD4fpnBqc0FqLZ0pzzh5n11Z59gf2qR6440Wk1rhQamWItksmrlB8ITGsrLSIOH49hoL62m83DTiGX4VT6gqbyvLI5/GZOZ8z7M4FbxnZzhdFdNN+BwkXbK2juQVERqC7knybICXlYBz2zQ3SBibUzds1BtkUxCIqQ6zSIM98B2twFDI5WyxKu3nWJhcDeWT5YnVcDs3Ipnfyy2JmMgOTvbeEjJvOxbBEzytPm0LQg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FyTw6wnsGm7MFRnkZWrDkqQk6ICaNXm+eAuSw2Lyz9s=; b=W8Cusx8EFsE8KqX2k4hxYSRcUhA57bjOzDDtu2jtPf7+j+dUSvR1LWy+WXj/DuQmyfB6YK+ckjEPlwIAx6ZbO65bz5mWekTAeXe8ru3kboMWwLZi6tEZ+wGS1DLFdEW/WTC04YU8g5Hm2YSIHWN+Cfi1a9amrtj5Kq4RDy3FSD+8kLaX7UQ0R/cCNGJJonoWBhXz+KKt+7Mdmqw8wK9pYfn4vCzdI9FxbOc0uXG2iqk7VBMACwwFE/KsTZyulsOiMtxXS3b9iZ49cqRWc1SA5TwnRN7DIbzl19vrYqucq29Sqxzh9eUk1p+JU0FZUaNpp1uySNFvZO3EhCcm98Ky6g== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4240.eurprd01.prod.exchangelabs.com (2603:10a6:803:6e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Sat, 2 Jul 2022 22:22:22 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:22 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:45 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [xbuJEulfZQQPcimWX0lf7Y/tXycodjLT] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dd396ba1-f397-40c0-39c0-08da5c795586 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNXwBRntoGkOsgo00FNZK4OlGG2f4eDQsUQaoICyHlvvxeRNXH5DPLPGm2jmm8ucHYylQmLhStpne9+AUjfNKOipf6u3TKydfgNl0k+CEdVUfO/QIT1etkXScbJGL4vYyXS3bg9vShrRV4wg0QKbcZM1AcADccGTN/VnOeE83etDjL4kI5Kw+fEYNlHwShGY5Hov8MfruI7X2Ht6vQ27H5W+3cfTIxMe4JFG2nfT/zoZFvBM3gHLhpAX20ceTjv5GWmFO0JtIEX+GMC73s1GxjQpYrVmj/VXdZuGm04Ymz/fwbuEEDeV9rVSsmh8ukv74KGgt18Y9jRUgmuXaGdIBTK2xAqg9zJ8A8xApAMupaAGjpGrShD5fTfr8lfFOJslwcqwX9ZeEqWXDo+IWcgJBXuGinprr6fBkIC5oXK3r1Pcm5Ybng1Szpc+s9knopgTddMvpXJnrkQZd+LIc1CeEmb91Cxj4+D7LEgmGeJZBhKaX6F/n3QFdTjjTNyhFrNLvn+DN0MkuPJmy6S5Hh+fgEG5InfdJagAfS+/0nHoWSoyZA0bRxHfDpotxRzffkdrqiok9XEM9CudPCbSB4y07HBVKw6QEGz1+WXpRIEdutpGIex978w73neEhmrrSKgdHTkj0XjcLhJqxxTmeqW+s8DUwCB8iwpGDdKDscXAb9aAVhKrHPOBENfbDBcV20Z//WL8HMAZgrcCQoaln3cLGLPeiDvEYQrUwus= X-MS-TrafficTypeDiagnostic: VI1PR01MB4240:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 45UlRecDs5/iw6JwKGXlxq7aaWjpTqGU71gd6Y8JPh/XMKip9SzbaCEXf2QxuZSpVcYCsCgu1xNR74omC0MqB51rYRoax5CDNWxayCFxZK5JkylAyxW+S3SpH6Dr3YAcIllvHWYzE65jsmk4yKxR/nFjaIhF23KMkYd43Fjg+AFMVgqJ++7ABQsqPueFfVIvO3aJxhSVHKXqbLhblBZDJeKVZJ30JDMX3Fq43jWf/84W1RQi/9HUMk3rcejqk/bQ7YNCCC9h2Wg/6x3G9FGbjQ4zCsQYE1uhCj96ASl1HiVA8BSrLHNnVXGfNaIdcYROKgnsJAxLQr8HtOMasMvyhS6K35Q7DXd6P7tDRGU11g3Ty1dtoqtBaNYugH8rzzFDooedQXeJXhpuqAnVhd6rOhlQ37NngLadDm/+bgKUOmL78t2l1PBzPxzEqkuD/KSexXXSALPaoUsXwTYDrLgu7+cs5gZGDKXHEYZ1m/fhqlT1G3j59nYmwhLqhcVCbIzlfSWubbgCjqkCwjGZXmdmys3yHM7CQN+JkxyB1nsLY5GH5UlSZ+/OabcdGMy8kzk4lng+7LncmYGTjAzqdwEocRFNpOJPT0MR/CQxhCPOcTOwA946eM5vTuZwnhUnXfqrWLD6yaBciJOle9M+qJTjsg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: AkrydKc/HBuU+QGobqpl9paZtGv7xw2Yhd+gI+acE9jNvJZGq2veJpUTk2Vp5NyeK8jgl2nheBLEeJLVEUfPnYETBoKcOYKuVv2zWDrrPDrk5LP2HKGTjAfyZSRs8ehzn3qwBvC2x6cbm2ggo1sSJJ7Bba0N0jcDl7Q5ew4UXgYzJSB5U3tLhDkXyhSGJV9hpSSqdKCxTLgpfsNFtd5MFxge6Q8Za1pvEUORAfIIYZ9bxNLMKD6FGn1ELm+TMJi9at0SYJjcOEfyuiBX+XAaqGLZgJQathLI521iQDP8XwzkAhb5o2sotp4eSkEtL2z7eYkoo4m+3w5JNQylB730zgPs4QLOPIFw/IiSYQHFsf0RHLQ4XrzhvMR1eMeYxbjQIhMUuiQ9R2yUe5UsBPmpC3/bitmIVxbf/OSOkbH9RUuEHEySB00fAOr43b1LIH3+pZemPBIcAKJkPLpV4doQaQZkT0qsMTWeDO0uPeBP8P0M52KUXEAwGoB5ZtsoAoXC9IYNr4PqDNaSDumCDUfLpUcjEATzwSxzHHI14DCVh/x4iAZMoU62vRjjlSrmleJIdRkU09q2OX0iFSx7O1b59hohzF0LnNeNwJTcRrA4pUAOEUssZ/PoV5cxSKAem1kZ8xMm0+d5wrEwQ3QTVshiSRbfACoJsbBl75cLIvrkWKZM1UurcePcMsJ9O3dSeKAObJjnASdhS+dCUqIqmTczpnHXZVJmKCGuzQF789SY5rI6zKstoPc74jCLF7ANT2RwUqLY60ItLpPXbxgqYxiz5VGA9IdZCAJm6bVl19QRYUT6820Oaed2Jd7i+C3M7wX1mZoJd9Ylr1DjiRrVMXsBzRUOrF8iC2wzQ3dN68JW+2nqNXQVna64xujSzp/+MKGAhM/3qaE1KcjtBDqPuxCriGPYZ3LdKIIreLbox8P/LIs3UnNp7GDmIIFXCB8Bm/FjcRy0ncZsjH0zzemJ+lh66X5llkZRj7JzWzi/K93b1R3Gp/CDjMEC4B5RkKrpWJrA0lyqewMJlkp+E6FGXIcs3G3BLvJtF/cxvwAjiFSFJ+R2PEUFtftouNHD0UNwDGcQ2i2lyNsAzGSR456L+PIOgFD3LdRbjs5yP+nwlTLv3xvC5EsL2nu+ylNf3trBjfg2LV4YRPN7cztNINiPZfxV9+Iro8TlVj+DpvX782KorwZgC+HWsFf4u1hBuR6B7eIhkExT74vozDhJh0V1jJ9Rb+qUYVlmggf+rrof3bsJHgDnl5Cu7aLejSn1ZWqLyDEZScFwNj9OawQQWvwYcNcSq9f+QCH9gmyg150EymgvE+0= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dd396ba1-f397-40c0-39c0-08da5c795586 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:22.4538 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4240 Subject: [FFmpeg-devel] [PATCH 05/20] fftools/ffprobe: Improve description of AFD side data 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Y2bSARCHqF96 Signed-off-by: Andreas Rheinhardt --- fftools/ffprobe.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c index 5020ba484c..4430f72239 100644 --- a/fftools/ffprobe.c +++ b/fftools/ffprobe.c @@ -2361,6 +2361,8 @@ static void print_pkt_side_data(WriterContext *w, if (do_show_data) writer_print_data(w, "data", sd->data, sd->size); writer_print_data_hash(w, "data_hash", sd->data, sd->size); + } else if (sd->type == AV_PKT_DATA_AFD && sd->size > 0) { + print_int("active_format", *sd->data); } writer_print_section_footer(w); } @@ -2633,6 +2635,8 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream, if (sd->type == AV_FRAME_DATA_DISPLAYMATRIX && sd->size >= 9*4) { writer_print_integers(w, "displaymatrix", sd->data, 9, " %11d", 3, 4, 1); print_int("rotation", av_display_rotation_get((int32_t *)sd->data)); + } else if (sd->type == AV_FRAME_DATA_AFD && sd->size > 0) { + print_int("active_format", *sd->data); } else if (sd->type == AV_FRAME_DATA_GOP_TIMECODE && sd->size >= 8) { char tcbuf[AV_TIMECODE_STR_SIZE]; av_timecode_make_mpeg_tc_string(tcbuf, *(int64_t *)(sd->data)); From patchwork Sat Jul 2 22:21:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36608 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1884204pzh; Sat, 2 Jul 2022 15:24:08 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vicuKdX7g7LVfyFV67S3yNKEcvou9GL1UoBPDLRNM5HDMeq9lqvc6N7WUD5r60LPNhRCuc X-Received: by 2002:a17:906:974e:b0:726:b83a:b5ea with SMTP id o14-20020a170906974e00b00726b83ab5eamr21192158ejy.430.1656800648464; Sat, 02 Jul 2022 15:24:08 -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 ga2-20020a170906b84200b00711d61d0dedsi10442807ejb.593.2022.07.02.15.24.08; Sat, 02 Jul 2022 15:24:08 -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=@outlook.com header.s=selector1 header.b="Qrn/5Wva"; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C448F68B9A4; Sun, 3 Jul 2022 01:22:46 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2106.outbound.protection.outlook.com [40.92.89.106]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A811068B980 for ; Sun, 3 Jul 2022 01:22:34 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZXqNHbQqCLqZmMfZletENXua8EGwpBKOXkH/uCYIGXYgFtGYriPlvN+TcRS7UERLR6DjmJiUBVJdzvSiFa4/KPJms/dkRtMR07bJUFBk4QmnTatj4z55aIszJJZ/IClmEHbsMhYIu8JVT47iOt2UKfyJdqSQ9Yjyyi+xS7ns0uqn4JiCD7c46DIYxrXpE9w8FFYb7HyPPJZ+6G6lwEj9dK/eweknefTl1q5OBjfVnjjc0iyqNM6Ka2jUsW3Xcdk25BSzXUn4z09X4Yy4+YmUvt7cwJkXZ8BKFxD/w9u45xJIbs4NzNdO54lR4oNLQor/KnNGYntc9y3eW87gepoj7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HRzjLhGiZJpAN17hv1kgNE/GKqv3/RhaMyqTJxcXTUk=; b=LGDpc7mB3iiDh3xF3n9I0JhEwDZXDCJoINiN8/KfY1CTvM8Z86HtSjU0RebZdKVlRg+zTOx4CTOUuf6rPWm/Y4lap56L9t5NRH4fTCr3bAxrHwLdnEPHibehrZ7AY9jL1Ej/3QMJ1TjGYe60+2XNoYSaQtUmtdOOiZCi06T3f9fT1IeiczEw6KqwEcn+YrohOGKISymz7VKmugJIenB63/PUZRz2B1pNbi7C66TbhH4BSeE11rWjwelKAPsZ/fa8eol+IrVpgT4HViuhuWZt70WNmzKepO7kcXQQDjAHdOMCR+vSea5GJyrRS9DrPrcIwytej7aJau7Ze170lkJwhw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HRzjLhGiZJpAN17hv1kgNE/GKqv3/RhaMyqTJxcXTUk=; b=Qrn/5WvasmShvfwwh08AKW2eXuJ9/8GDEFaiFrMSFFgQ6ADZEhxvU7/n9fceG5v4kNE/reoZsdpPoPYu67p0wf1iqPRPq8G3HmRVv3sPujmb4EpNBbhQ7jyzThcdb9fcPPC146jHDOEnrxJZNaxsV3u7rsqSzQofEXr7kjZOumyeGv0GX5I3h1kH9leCgrRQ8zn/wARW2T6Reg68KErm4l/aYMeYcKxhUUEhTjfzlzilEjV9OogU+mcpPjDr41OFsi0l/Ui3RvkQjwaznmP+EfeFD90nDBZJmDs+R0wk0735bddK8B++upfRDVSQUNeNVDzWilXpgFol2ehEhwD9MA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4240.eurprd01.prod.exchangelabs.com (2603:10a6:803:6e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Sat, 2 Jul 2022 22:22:23 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:23 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:46 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [o1H6nbCTcs/91IjK5yPxQoKsENRSJPoi] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-5-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f5a15856-34e2-4b0e-aa75-08da5c795639 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNXwBRntoGkOsgo00FNZK4Ol1pMmHq02pPZK7UE+hmCB0AXHTHON/jQjri5meay+tqTYODBBUoaw3CFLYw5FgbMGhZ35/ZtAT9VlijO+iklI61IaGaJJ5i0I9Pc+/A/EgqEM/fRktQzts9g2Y9gAaqewpJ+WAt13dOEn3V4qzksq75KzbLAe8QvYaJwS6gXbMdBNOMRAfo5fY0Vj1WckcuZZvfcstngPc2JgMuDjfy87X/WsvAodR7wUJBxtxAuIU4WVTris9APwEIR4gHCtjJle/0pcgZ2Le3roZNoXwftXPpLMhj1G/CHKK0OVxQbzE7nrF2A7lrDAyGsrB6++0be1LpPQ9YHZQkJcS4Dg4v8Bc4FFkCNkmp8TC2tvE15p0YvsnuE1HwRc3GjsoTXbL0rrcEYEXzDSC6BgD0qtsGp3pEZvDlbpbAxsf2rcmzlznvmd+llyKPuvoGtG0UTMd8Q7Dbm3n46wfGmM0yCLSOBV3oWWPAqhApt27QeHrddRKlZY8OdXxAm05kNjgEyWcqXDDMJ+pDi+S0oKRfvmV1tw2dyDR4QSNDWGxF7dU3IMwu0n3BgDyUM/2IyrGxYz+aescmIoHYXCaQST5rPfSytXhXIbFGmFJrc4qxiD0liQt9OIQ2/mjtQ/TVmQ0vhvvI6iV25cbCA7RfYPPXlCtonadfAZKJ6OQ8MwY1f4BqhGwd5pGfzoWmQDg9iLlbbs79KZNTALginqRC0= X-MS-TrafficTypeDiagnostic: VI1PR01MB4240:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RWIWvJxxEOCz33AnEMDfoByOtabLHy0rJnhh0KH58cWiYmSErgOK4m6cwKOQBTPtPDqIYdVOhiRu+kXbJGGvHhbxH1up6zWtQcrNxFglNXPcb5p68e5qFBB3P/UGNkAETdqcBODETfoI6UkgTbN8XM9KRUM0uj9P3wMRsBI0fK0lxgEanNygSL0xfOJbKa4kVUaRo4x93PkW0Gh6L/xrcGH7tSHYsca93JPv+C86ySPlAlAjiJmrxLpeULr/YRR863mRGJxjopqsbjw+r3OBbEDdSdG+hEd7zNLWWxxIfgd+EndJs35scD55U6kcUGiKxc645CE9x5b6zcj8azzcSx1C/vZW8OLmWo8VGSSVP73Ma+JDa98jm7co5QwzbCR/3eROnWOqyYVy76hbYkBgZX9CF8dPgGU7oZMdrs8qLjd+ywBvr7cjB5ciwbmFXJWRkfjKUjtWROOljQkhTu89UlqraxiCmRmFcRNPyDcMuD887WybCMtoaM4gt0SYlXEzY1ZiPccf/YPiuf4Wnczlkvg8NQil85YhwB81YabLpI5Lcyqdn+8d2n/TDppQ3qwKim/lI61J+cAJCEwwaRbl4JbRP+xf/ij3g3QJvG2FTER9rGKn04r6haqlVfhDyN3MXylpYf0yAQBRltCXQSO+kQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: eoK7jpA3snmHKTxZKxDx3tQNMHPIh75BYTSGFf8hIRq2TDxQidW7noiJDdfo/Rn7gPeZQc4qa3+Ehlvz5XCjBs2JkIJbQawb59O34/adImwx6xKEjaJ0rTHxFxcNlMNW3gTbUAaE/yIeTcO0wB/ND5LW+Vj2ZRghVDpyrAC7Uv5h1AFA1JSNZM72Gws4ExjFF/9dgrfUcsliX5QTjnGdIeiHMgLgvY2hkBi43PiZiY7LI/pM9Ue9nAaU4TDbpZ1oNQdNBtQ6us9dpBKdsgo5X95Y0x/ACBBflCnDzGCOh6k0aE0EYChLcPMe7ekZn/y1/6TCkatEE6zZanv6zzU0IzluMNRZgQlRA3UupIm0Sllwg8R7+uRvGwfjVKmCFi0P3KeweUs0tZAoVuFqUqE33SHXDsxILrhL9UKE4qiwg9Pp1tM6FTmOFWYXQkKFVR3U4Rl932YyXg1OVJtI3OuTbzTfdNZ3v7iulJ2uswqk4A2MEh8DSLcaaHWQdunQICBbbbzWEZ8twC+RUn1NEaMj4X+vdzKiiPqGxvt0lnUimtiuioDEbPQ14ONiwQyyvwTAUOuBV3hhlqPtsz1JPVtxeYUI7UdNlylmsywmxXcWJ3nbclJrNtsBl11ZOwMrEoHSTsIvwoouU9RNZqx4oV86BRVpEYek+96F6jKQ+mLCAlOufksm68SDSEy5uOow3Gvoq5XOpYgBcqMyyRj4wlEX0+MwlGlkQvS5zIVfciahnf58x9MXW8spDKM6LSJH4usGyGRj9KYYAlg28JgjwK7FP9zLui4QbLeNfpzFHbdlB35Lr32qpu2FkTOgtoAiYwxWpJ9dVsfWKexjcGCtfuQ+l0fjRKF4W5dBfA0OVwh8vzB/VrCivrf+1RKhYKv2onj430SE2n0faCi6XO1tOfWiqge7M42DSPnD4DXFk25z3avsjj3JXrlMFDviAnvRNsgHekwsAMYRx6cyg4aW/0jAnjXCM0PpkLtNxggrv3S/+mY/x2FUr9vLSxtzIOEo9QeRXz78In3q6xMJPfEDVVQyijjW1Mn6uFYLa8wtd3naBuhaNrBfB9rrj3hX9nxaAfFpmDEROOu4M4wkA8W7sc9NHskq/bQf6hK1H768diEJZSztcWLydrTjxUhssMsSiBYlj38nMMP836EmNB9aXWeSzmBC2XvSK6iyu0nrddvS9q9F4YYbDp08G0Paoy1ukAYk1lFiy1Je3KnkYRegvrEbb1nYT7EoBJNTlBgDpB19rrm9VBheu67QqCo6BPepYRB9cAPz1SHNf+zRedaCbrJRZcSvx5LaQVfq8H/5nZ0u2dk= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f5a15856-34e2-4b0e-aa75-08da5c795639 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:23.6068 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4240 Subject: [FFmpeg-devel] [PATCH 06/20] fate/h264: Add Active Format Descriptor test 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: +ymmKoSl+fxa Some samples contain Active Format Descriptors, yet the output of no test depends upon them, so that they are de-facto untested. So add a dedicated test for them. Signed-off-by: Andreas Rheinhardt --- tests/fate/h264.mak | 2 + tests/ref/fate/h264-afd | 282 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 284 insertions(+) create mode 100644 tests/ref/fate/h264-afd diff --git a/tests/fate/h264.mak b/tests/fate/h264.mak index 44e20f7259..b883f3a3ff 100644 --- a/tests/fate/h264.mak +++ b/tests/fate/h264.mak @@ -231,6 +231,7 @@ FATE_H264-$(call FRAMECRC, MXF, H264, PCM_S24LE_DECODER SCALE_FILTER ARESAMPLE_F FATE_H264-$(call FRAMECRC, MOV, H264) += fate-h264-attachment-631 FATE_H264-$(call FRAMECRC, MPEGTS, H264, H264_PARSER MP3_DECODER SCALE_FILTER ARESAMPLE_FILTER) += fate-h264-skip-nokey fate-h264-skip-nointra FATE_H264_FFPROBE-$(call DEMDEC, MATROSKA, H264) += fate-h264-dts_5frames +FATE_H264_FFPROBE-$(call PARSERDEMDEC, H264, H264, H264) += fate-h264-afd FATE_SAMPLES_AVCONV += $(FATE_H264-yes) FATE_SAMPLES_FFPROBE += $(FATE_H264_FFPROBE-yes) @@ -450,6 +451,7 @@ fate-h264-timecode: CMD = framecrc -i $(TARGET_SAM fate-h264-reinit-%: CMD = framecrc -i $(TARGET_SAMPLES)/h264/$(@:fate-h264-%=%).h264 -vf scale,format=yuv444p10le,scale=w=352:h=288 fate-h264-dts_5frames: CMD = probeframes $(TARGET_SAMPLES)/h264/dts_5frames.mkv +fate-h264-afd: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -bitexact -show_entries frame_side_data_list $(TARGET_SAMPLES)/h264/bbc2.sample.h264 fate-h264-encparams: CMD = venc_data $(TARGET_SAMPLES)/h264-conformance/FRext/FRExt_MMCO4_Sony_B.264 0 1 FATE_SAMPLES_DUMP_DATA += fate-h264-encparams diff --git a/tests/ref/fate/h264-afd b/tests/ref/fate/h264-afd new file mode 100644 index 0000000000..a45e899eea --- /dev/null +++ b/tests/ref/fate/h264-afd @@ -0,0 +1,282 @@ +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=14 +[/SIDE_DATA] +[/FRAME] From patchwork Sat Jul 2 22:21:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36602 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1883897pzh; Sat, 2 Jul 2022 15:23:01 -0700 (PDT) X-Google-Smtp-Source: AGRyM1u8gbhfwfDh/C/KEGkwOw4CouejgzXoC+HKs9Kn8SxBe8W5z0VCng4ZUyZiZEpALhT6D6wf X-Received: by 2002:a05:6402:298b:b0:435:20fd:d65d with SMTP id eq11-20020a056402298b00b0043520fdd65dmr28097834edb.190.1656800581447; Sat, 02 Jul 2022 15:23:01 -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 l15-20020a056402254f00b004357a6c5e3bsi1321976edb.151.2022.07.02.15.23.01; Sat, 02 Jul 2022 15:23:01 -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=@outlook.com header.s=selector1 header.b="GWeJj5P/"; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CCDB168B974; Sun, 3 Jul 2022 01:22:38 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073040.outbound.protection.outlook.com [40.92.73.40]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3B49068B969 for ; Sun, 3 Jul 2022 01:22:36 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dlBXhX9nnQf5rgqdK/Q76Rf+I36k8CN9Xq72uV11XIyrEqWVWQD6fummDA5ymgeX2wjl0XCtr8xuCf1A9yD7PVjPiPLTCsBALPrNtOqp88D9t2mxfrlbD+TlGPY8ddjatmRIxdzHYDV+62r+6BmCCGIKaTx58s3Iawc1AFuL/9urnUvo2rQLwXVy1WfYqbzyfoMEddVr5Ki6zRyP2+6F/emBZQZnvJxW4d+R+hzo3jui36KOcYrMtYbuJX4YeEj4b+NIf2ZvwBZcfVsyto0pJLIR//eNCGXn9MRgo6dkdpiaepmdUebjNTCE40fdgDWRSQ+z7PFbu2BMHPuS6EtSFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=dT+dhgoIP9aE2ZZby+4L2fcrX/GXWRryoty8iqR75lM=; b=TwE2TXNuPTMY6Q+I0QIio8NetMP641CRSumHLXw9nqh0EeNnK7Lh6buR2bzvJH5SLZWYwLwvaKGVFCDQy8YA+rPYWUyot8+taw652vrruuBPUyWWAfNoKwaUHVsmes9vXhfZUzSzHwh10xEyTa+Qi+HIAO9q/+amNDfLWvZVDyHkmTjsFNEwv7bHiSx3SZMb9JFvDAcScMZUEAgx72tVBlU/X2HiMrGq7AXmrdhEzjOiZShSSKTsohgc/UarF2aWy+MLcrCF6BUpsO/TG7eecdzhmCmQMmwsI/MnzZgT3jDg6l+GEA8A0FqDW7FaAhzW73Jnnyde4ylFx/c98n/R5Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dT+dhgoIP9aE2ZZby+4L2fcrX/GXWRryoty8iqR75lM=; b=GWeJj5P/iFnuLQ1qjgF0xMMFSCdXaGfddI/cT7aME8b+QpCcEc5wGzWUcPReHrl2qNPbz95ADK32n7VgJzqN3dn5tEt3PWJg+7D5y3kp3m/s9IJgUHKDFV0jdXAryIScSOna6yjQyPS2hDQlnSkt0ewf9Flv5DJB+ZUqzi1JKiR6kOBaV+aVXqKDXb01ayjBuNqo9JYt7dZVxN2flFT1AOxrlTKHmsiDascXrnqDQpkLVNtZzzbsDFV4imVk5kgZoEc1qARi5c844u77xIV9NORVxS3i2T9c5Uc/8LMk4q8xAgwM2p9XGCAbHSR3IytP6cFk7/N5fhWHJGH4Z/vvaw== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4240.eurprd01.prod.exchangelabs.com (2603:10a6:803:6e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Sat, 2 Jul 2022 22:22:26 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:26 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:47 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [m+LOOrSoYi7IARNeM5yGAfrVcViFgMxt] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-6-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a343eb27-7959-4007-a32d-08da5c7957b0 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNXwBRntoGkOsgo00FNZK4Ol70TRaQZQZqIQAKU7WSqhSIOIok1EW6DjCq3jSnO57o9ckjfCmvxwJIGCmMbt148GjOq5c6IceMjyzEjTE7eSBeOVhXEUm1PNZXsQ9o7397zxHb/EAxcBCyIZgLizuIOdoHzI70EPB28T0ayv/LdUESIxk+BrzX0JYGKpbd8KLZF+J+KZlrCn3j6a4vAN2LTPNB04AzXrJqb9k+v0StxJmDkBC1hosX/2xOlSdOz3oQSHlNe52u2AwaImRxuLancl3Mhbcl7AI1ugGydvXaaGGHzMZ6oLihryiqR2NQXdKMjXDcvi8BzUoRz+YprWwrIxQLkvUCK4N1LfDq5lbrTnIYLohu1fQEMYjiqswt7VqUUPasvMpbhYzVGUY08lrf3InZd/3bCA4StJMDNw0MY6VSqlFcwRhOUIeuMtmqG0mGenWxqgQOzp8Ta4iHch61RKa5UxwPiuF4+LKKYPzcZFzKDIpKO0VWiGfbE0JyXaw/oYUofODxmDUJ+qy9332YPbfbttLVTr2G2rUa/8dJKGLE8QtCjngLCXojqB1czKboufxe0Lsr4tdELJb2aMwAFoK3AC8CM65KiPK+Ijz5i8RmYYBCsM7M7XhAWqmzkAN/HRuwcQzkdrL3rj4N9uUTI/IZfXvnCr/OnV0Y/oLSMERqIaYx37X70iViE+du4oo6aiaYYTPo+jIS0iC79/j2Ln1j06AExMQFY= X-MS-TrafficTypeDiagnostic: VI1PR01MB4240:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DJA7HqX6cU0xDKXx6R+DDpmCl1EffPKrmDi8GjldO0B12c4jfyF0oPxuHE+PaV46UTXP8ZXrYsgGB5/9TVTg2HtIdyAsd4O4w3rA+7/XBsAYt9mw0oWCx8dMO1URF3zKJ+FM5NJd740SLgJm/TROnq05J3MbhFX3lu3WyiMmRFGWITfm7y4XKi8cz1dEMnF2X1J+DLX1K+KmXOtbkzjG6hLk+EymDKRQiSYSbUlWvjkmeUZLEYffOmYGg/p8266XQYcUbT+jWjyV6KpbRxjhkJWAz83R5MBTt4Mwx4FK8smzLVEVLebY8U1qYhjfCIC4/puknkDe7Qj4lxecj7pnSKBu+SFHV8gh8Znqs3DC+fVdmSPRzJq3NVIvdAkh914gTXWbp74hb1EohHEVTcgoKVUGfGMfYDvO6gIC6EZAbK1kd+lDMvSvKpi2A+G0d0K/coCfzDEKvpNShY82SvdLvKa/4cOz1HhG4jGw89166AMwTvHZAGEhiOrUGQsenS4xtxFvYlMsWZmE2ZzYZDIlrXwoXLZmeqaMlk/XjRO4vklsmx/HWxTBPjy1D8n4QziI9FMzjiwaDOe24Dk3eQq/4JEB5EjfiZGgNTu6Xzigrc41Kt33FsSfTz5FUrY/d6pdEyp1xIECKMVx4isDpG4w5Q== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1VH1K1An26Vqo45cdLJzlOjeaV/y6cYN3sfpovQsWqaTnk5dgMaGmo6y8r+Pfr5nXJPnFECxOcUQ1N6TlDr4OzIZG9kzQ1AlFiU1pKYrIRmjOEx8fVluOCSAHwSilhy9DftIFGKlQtlG3qI/oz/CBp3+KzUAiS8TcOnHLzB4qFTmz3iBos1YLHIobFXJ2Us9gwyWekCWLb347ZXGLSIBgFSdbBiGX4znkQaVaxaHofOOCQzjMe6RVHSS6o5OnCGtlgDmlQjioyuGKCtYSGoC3SQh4297SNDMN0alqXuqYWkIY84+rDOhDrXiENdkbIMD5Vj1pf4QWUYpW4RMngqYGP5iyZkemcI8WZgzo5b4JXZMtanMDPAI3NIqp17KBStpqnr5YnW5IE3kNZuyL8WcEc7dp08wrHRi+hE2b0gItRE4icz5bF7E+0dOEJbNzU+rSSK8OE6YVrwBYajzLKBhBpg/B4eejsN9rO5HImlrSoIC9njxcpPxWWkmVuFUF8N7Dfv9MfTIsbFjS65jh6zRBkqsnF8NECXEuKPAtxB5GfvZDtSCm5zSlUlIJMUqK4l8CupYJXbn2fqckF1f6A8A2T890wW7vWud1cjjSyYfFD8fIl434hJfshKFhNHU4h/Y/7heGDT+jypGbdZpqwCqeNiLfmMX+MkAlyOcUnHkahBzGuklWB2iDuGuKWG9IYBEYiPQyxPwXaBi4KOadZK1WXas0KOE+Rdsui91lnOy4P5hiVNJNJy0bb56/A1Fe89ocOyyvNoVzH5eFioL6h+aojFiTq93+1Zpr/V37lQQ/wLnsFvrI/EKz2vQk4OW+DRyeMuqqzuoN/38mWeAuIlLMQMlNqx11mpT5dHnobXtQWc/Lne7WbhlKM4IVIUc9vvUXaCCT7cpuJ6nbThp4EQfBJSDNZOqvsvWDVJCWdFPksC64MIvPPWLOgOdg4CJEH3cOF5E4idAeTDyjEN20Lzep8x6j1XZgDLAG0W8pBot6bhjbQv3XoQreTA6SCSqqfa8yqfNLhmNSdJc8JFpDL0+aI37M9zyT9Ajj6VtKvAEvseFfmVjicVjwIY7ga5MEiFuMFKawlIlJLusHCyWZLSXQgJXs95Heci4+yI4SUM+oJaZqZBWnrnwIoRF28JmuDlwzwie7GLg0nfhn9BF0rp9IKHF0Us6WBcKe3t5hmLdu6AiGgOWulBzSZi6Ypw3np/CX8F39nb0e3Kxiu41Imjm1mDmN4y3j8aG7QNMbloAF2MQAL0NUH2tJOEh93A+aDH8xHqTGMyRSGXZW/jM6BsVOnxjN3xqV1oWislJUPPnBl0= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a343eb27-7959-4007-a32d-08da5c7957b0 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:26.1782 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4240 Subject: [FFmpeg-devel] [PATCH 07/20] avcodec/h2645_sei: Factor parsing common SEI messages out 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: zVCI5A1lrGsZ Signed-off-by: Andreas Rheinhardt --- libavcodec/Makefile | 4 +- libavcodec/h2645_sei.c | 391 +++++++++++++++++++++++++++++++++++++++ libavcodec/h2645_sei.h | 133 +++++++++++++ libavcodec/h264_parser.c | 6 +- libavcodec/h264_sei.c | 259 ++------------------------ libavcodec/h264_sei.h | 69 +------ libavcodec/h264_slice.c | 81 ++++---- libavcodec/h264dec.c | 6 +- libavcodec/hevc_sei.c | 304 ++---------------------------- libavcodec/hevc_sei.h | 54 +----- libavcodec/hevcdec.c | 109 +++++------ 11 files changed, 664 insertions(+), 752 deletions(-) create mode 100644 libavcodec/h2645_sei.c create mode 100644 libavcodec/h2645_sei.h diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 52ea46e645..c86184f9fd 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -100,9 +100,9 @@ OBJS-$(CONFIG_H264DSP) += h264dsp.o h264idct.o OBJS-$(CONFIG_H264PARSE) += h264_parse.o h2645_parse.o h264_ps.o OBJS-$(CONFIG_H264PRED) += h264pred.o OBJS-$(CONFIG_H264QPEL) += h264qpel.o -OBJS-$(CONFIG_H264_SEI) += h264_sei.o +OBJS-$(CONFIG_H264_SEI) += h264_sei.o h2645_sei.o OBJS-$(CONFIG_HEVCPARSE) += hevc_parse.o h2645_parse.o hevc_ps.o hevc_data.o -OBJS-$(CONFIG_HEVC_SEI) += hevc_sei.o dynamic_hdr10_plus.o dynamic_hdr_vivid.o +OBJS-$(CONFIG_HEVC_SEI) += hevc_sei.o h2645_sei.o dynamic_hdr10_plus.o dynamic_hdr_vivid.o OBJS-$(CONFIG_HPELDSP) += hpeldsp.o OBJS-$(CONFIG_HUFFMAN) += huffman.o OBJS-$(CONFIG_HUFFYUVDSP) += huffyuvdsp.o diff --git a/libavcodec/h2645_sei.c b/libavcodec/h2645_sei.c new file mode 100644 index 0000000000..5ff62bfac1 --- /dev/null +++ b/libavcodec/h2645_sei.c @@ -0,0 +1,391 @@ +/* + * Common H.264 and HEVC Supplementary Enhancement Information messages + * + * Copyright (c) 2003 Michael Niedermayer + * Copyright (C) 2012 - 2013 Guillaume Martres + * Copyright (C) 2012 - 2013 Gildas Cocherel + * Copyright (C) 2013 Vittorio Giovara + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config_components.h" + +#include "libavutil/display.h" +#include "libavutil/film_grain_params.h" +#include "libavutil/pixdesc.h" + +#include "atsc_a53.h" +#include "avcodec.h" +#include "dynamic_hdr10_plus.h" +#include "dynamic_hdr_vivid.h" +#include "get_bits.h" +#include "golomb.h" +#include "h2645_sei.h" + +#define IS_H264(codec_id) (CONFIG_H264_SEI && CONFIG_HEVC_SEI ? codec_id == AV_CODEC_ID_H264 : CONFIG_H264_SEI) +#define IS_HEVC(codec_id) (CONFIG_H264_SEI && CONFIG_HEVC_SEI ? codec_id == AV_CODEC_ID_HEVC : CONFIG_HEVC_SEI) + +#if CONFIG_HEVC_SEI +static int decode_registered_user_data_dynamic_hdr_plus(HEVCSEIDynamicHDRPlus *s, + GetByteContext *gb) +{ + size_t meta_size; + int err; + AVDynamicHDRPlus *metadata = av_dynamic_hdr_plus_alloc(&meta_size); + if (!metadata) + return AVERROR(ENOMEM); + + err = ff_parse_itu_t_t35_to_dynamic_hdr10_plus(metadata, gb->buffer, + bytestream2_get_bytes_left(gb)); + if (err < 0) { + av_free(metadata); + return err; + } + + av_buffer_unref(&s->info); + s->info = av_buffer_create((uint8_t *)metadata, meta_size, NULL, NULL, 0); + if (!s->info) { + av_free(metadata); + return AVERROR(ENOMEM); + } + + return 0; +} + +static int decode_registered_user_data_dynamic_hdr_vivid(HEVCSEIDynamicHDRVivid *s, + GetByteContext *gb) +{ + size_t meta_size; + int err; + AVDynamicHDRVivid *metadata = av_dynamic_hdr_vivid_alloc(&meta_size); + if (!metadata) + return AVERROR(ENOMEM); + + err = ff_parse_itu_t_t35_to_dynamic_hdr_vivid(metadata, + gb->buffer, bytestream2_get_bytes_left(gb)); + if (err < 0) { + av_free(metadata); + return err; + } + + av_buffer_unref(&s->info); + s->info = av_buffer_create((uint8_t *)metadata, meta_size, NULL, NULL, 0); + if (!s->info) { + av_free(metadata); + return AVERROR(ENOMEM); + } + + return 0; +} +#endif + +static int decode_registered_user_data_afd(H264SEIAFD *h, GetByteContext *gb) +{ + int flag; + + if (bytestream2_get_bytes_left(gb) <= 0) + return AVERROR_INVALIDDATA; + + flag = !!(bytestream2_get_byteu(gb) & 0x40); // active_format_flag + + if (flag) { + if (bytestream2_get_bytes_left(gb) <= 0) + return AVERROR_INVALIDDATA; + h->active_format_description = bytestream2_get_byteu(gb) & 0xF; + h->present = 1; + } + + return 0; +} + +static int decode_registered_user_data_closed_caption(H2645SEIA53Caption *h, + GetByteContext *gb) +{ + return ff_parse_a53_cc(&h->buf_ref, gb->buffer, + bytestream2_get_bytes_left(gb)); +} + +static int decode_registered_user_data(H2645SEI *h, GetByteContext *gb, + enum AVCodecID codec_id, void *logctx) +{ + int country_code, provider_code; + + if (bytestream2_get_bytes_left(gb) < 3) + return AVERROR_INVALIDDATA; + + country_code = bytestream2_get_byteu(gb); // itu_t_t35_country_code + if (country_code == 0xFF) { + if (bytestream2_get_bytes_left(gb) < 3) + return AVERROR_INVALIDDATA; + + bytestream2_skipu(gb, 1); // itu_t_t35_country_code_extension_byte + } + + if (country_code != 0xB5 && country_code != 0x26) { // usa_country_code and cn_country_code + av_log(logctx, AV_LOG_VERBOSE, + "Unsupported User Data Registered ITU-T T35 SEI message (country_code = %d)\n", + country_code); + return 0; + } + + /* itu_t_t35_payload_byte follows */ + provider_code = bytestream2_get_be16u(gb); + + switch (provider_code) { + case 0x31: { // atsc_provider_code + uint32_t user_identifier; + + if (bytestream2_get_bytes_left(gb) < 4) + return AVERROR_INVALIDDATA; + + user_identifier = bytestream2_get_be32u(gb); + switch (user_identifier) { + case MKBETAG('D', 'T', 'G', '1'): // afd_data + if (!IS_H264(codec_id)) + goto unsupported; + return decode_registered_user_data_afd(&h->afd, gb); + case MKBETAG('G', 'A', '9', '4'): // closed captions + return decode_registered_user_data_closed_caption(&h->a53_caption, gb); + default: + unsupported: + av_log(logctx, AV_LOG_VERBOSE, + "Unsupported User Data Registered ITU-T T35 SEI message (atsc user_identifier = 0x%04x)\n", + user_identifier); + break; + } + break; + } +#if CONFIG_HEVC_SEI + case 0x04: { // cuva_provider_code + const uint16_t cuva_provider_oriented_code = 0x0005; + uint16_t provider_oriented_code; + + if (!IS_HEVC(codec_id)) + goto unsupported_provider_code; + + if (bytestream2_get_bytes_left(gb) < 2) + return AVERROR_INVALIDDATA; + + provider_oriented_code = bytestream2_get_be16u(gb); + if (provider_oriented_code == cuva_provider_oriented_code) { + return decode_registered_user_data_dynamic_hdr_vivid(&h->dynamic_hdr_vivid, gb); + } + break; + } + case 0x3C: { // smpte_provider_code + // A/341 Amendment - 2094-40 + const uint16_t smpte2094_40_provider_oriented_code = 0x0001; + const uint8_t smpte2094_40_application_identifier = 0x04; + uint16_t provider_oriented_code; + uint8_t application_identifier; + + if (!IS_HEVC(codec_id)) + goto unsupported_provider_code; + + if (bytestream2_get_bytes_left(gb) < 3) + return AVERROR_INVALIDDATA; + + provider_oriented_code = bytestream2_get_be16u(gb); + application_identifier = bytestream2_get_byteu(gb); + if (provider_oriented_code == smpte2094_40_provider_oriented_code && + application_identifier == smpte2094_40_application_identifier) { + return decode_registered_user_data_dynamic_hdr_plus(&h->dynamic_hdr_plus, gb); + } + break; + } + unsupported_provider_code: +#endif + default: + av_log(logctx, AV_LOG_VERBOSE, + "Unsupported User Data Registered ITU-T T35 SEI message (provider_code = %d)\n", + provider_code); + break; + } + + return 0; +} + +static int decode_unregistered_user_data(H2645SEIUnregistered *h, + GetByteContext *gb, + enum AVCodecID codec_id) +{ + uint8_t *user_data; + int size = bytestream2_get_bytes_left(gb); + AVBufferRef *buf_ref, **tmp; + + if (size < 16 || size >= INT_MAX - 1) + return AVERROR_INVALIDDATA; + + tmp = av_realloc_array(h->buf_ref, h->nb_buf_ref + 1, sizeof(*h->buf_ref)); + if (!tmp) + return AVERROR(ENOMEM); + h->buf_ref = tmp; + + buf_ref = av_buffer_alloc(size + 1); + if (!buf_ref) + return AVERROR(ENOMEM); + user_data = buf_ref->data; + + bytestream2_get_bufferu(gb, user_data, size); + user_data[size] = 0; + buf_ref->size = size; + h->buf_ref[h->nb_buf_ref++] = buf_ref; + + if (IS_H264(codec_id)) { + int e, build; + e = sscanf(user_data + 16, "x264 - core %d", &build); + if (e == 1 && build > 0) + h->x264_build = build; + if (e == 1 && build == 1 && !strncmp(user_data+16, "x264 - core 0000", 16)) + h->x264_build = 67; + } + + return 0; +} + +static int decode_display_orientation(H2645SEIDisplayOrientation *h, + GetBitContext *gb) +{ + h->present = !get_bits1(gb); // display_orientation_cancel_flag + + if (h->present) { + h->hflip = get_bits1(gb); // hor_flip + h->vflip = get_bits1(gb); // ver_flip + + h->anticlockwise_rotation = get_bits(gb, 16); + // This is followed by display_orientation_repetition_period + // and display_orientation_extension_flag for H.264 + // and by display_orientation_persistence_flag for HEVC. + } + + return 0; +} + +static int decode_frame_packing_arrangement(H2645SEIFramePacking *h, + GetBitContext *gb, + enum AVCodecID codec_id) +{ + h->arrangement_id = get_ue_golomb_long(gb); + h->arrangement_cancel_flag = get_bits1(gb); + h->present = !h->arrangement_cancel_flag; + + if (h->present) { + h->arrangement_type = get_bits(gb, 7); + h->quincunx_sampling_flag = get_bits1(gb); + h->content_interpretation_type = get_bits(gb, 6); + + // spatial_flipping_flag, frame0_flipped_flag, field_views_flag + skip_bits(gb, 3); + h->current_frame_is_frame0_flag = get_bits1(gb); + // frame0_self_contained_flag, frame1_self_contained_flag + skip_bits(gb, 2); + + if (!h->quincunx_sampling_flag && h->arrangement_type != 5) + skip_bits(gb, 16); // frame[01]_grid_position_[xy] + skip_bits(gb, 8); // frame_packing_arrangement_reserved_byte + if (IS_H264(codec_id)) + h->arrangement_repetition_period = get_ue_golomb_long(gb); + else + skip_bits1(gb); // frame_packing_arrangement_persistence_flag + } + // H.264: frame_packing_arrangement_extension_flag, + // HEVC: upsampled_aspect_ratio_flag + skip_bits1(gb); + + return 0; +} + +static int decode_alternative_transfer(H2645SEIAlternativeTransfer *s, + GetByteContext *gb) +{ + if (bytestream2_get_bytes_left(gb) < 1) + return AVERROR_INVALIDDATA; + + s->present = 1; + s->preferred_transfer_characteristics = bytestream2_get_byteu(gb); + + return 0; +} + +static int decode_film_grain_characteristics(H2645SEIFilmGrainCharacteristics *h, + enum AVCodecID codec_id, GetBitContext *gb) +{ + h->present = !get_bits1(gb); // film_grain_characteristics_cancel_flag + + if (h->present) { + memset(h, 0, sizeof(*h)); + h->model_id = get_bits(gb, 2); + h->separate_colour_description_present_flag = get_bits1(gb); + if (h->separate_colour_description_present_flag) { + h->bit_depth_luma = get_bits(gb, 3) + 8; + h->bit_depth_chroma = get_bits(gb, 3) + 8; + h->full_range = get_bits1(gb); + h->color_primaries = get_bits(gb, 8); + h->transfer_characteristics = get_bits(gb, 8); + h->matrix_coeffs = get_bits(gb, 8); + } + h->blending_mode_id = get_bits(gb, 2); + h->log2_scale_factor = get_bits(gb, 4); + for (int c = 0; c < 3; c++) + h->comp_model_present_flag[c] = get_bits1(gb); + for (int c = 0; c < 3; c++) { + if (h->comp_model_present_flag[c]) { + h->num_intensity_intervals[c] = get_bits(gb, 8) + 1; + h->num_model_values[c] = get_bits(gb, 3) + 1; + if (h->num_model_values[c] > 6) + return AVERROR_INVALIDDATA; + for (int i = 0; i < h->num_intensity_intervals[c]; i++) { + h->intensity_interval_lower_bound[c][i] = get_bits(gb, 8); + h->intensity_interval_upper_bound[c][i] = get_bits(gb, 8); + for (int j = 0; j < h->num_model_values[c]; j++) + h->comp_model_value[c][i][j] = get_se_golomb_long(gb); + } + } + } + if (IS_HEVC(codec_id)) + h->persistence_flag = get_bits1(gb); + else + h->repetition_period = get_ue_golomb_long(gb); + + h->present = 1; + } + + return 0; +} + +int ff_h2645_sei_message_decode(H2645SEI *h, enum SEIType type, + enum AVCodecID codec_id, GetBitContext *gb, + GetByteContext *gbyte, void *logctx) +{ + switch (type) { + case SEI_TYPE_USER_DATA_REGISTERED_ITU_T_T35: + return decode_registered_user_data(h, gbyte, codec_id, logctx); + case SEI_TYPE_USER_DATA_UNREGISTERED: + return decode_unregistered_user_data(&h->unregistered, gbyte, codec_id); + case SEI_TYPE_DISPLAY_ORIENTATION: + return decode_display_orientation(&h->display_orientation, gb); + case SEI_TYPE_FILM_GRAIN_CHARACTERISTICS: + return decode_film_grain_characteristics(&h->film_grain_characteristics, codec_id, gb); + case SEI_TYPE_FRAME_PACKING_ARRANGEMENT: + return decode_frame_packing_arrangement(&h->frame_packing, gb, codec_id); + case SEI_TYPE_ALTERNATIVE_TRANSFER_CHARACTERISTICS: + return decode_alternative_transfer(&h->alternative_transfer, gbyte); + default: + return FF_H2645_SEI_MESSAGE_UNHANDLED; + } +} diff --git a/libavcodec/h2645_sei.h b/libavcodec/h2645_sei.h new file mode 100644 index 0000000000..4128ff7940 --- /dev/null +++ b/libavcodec/h2645_sei.h @@ -0,0 +1,133 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_H2645_SEI_H +#define AVCODEC_H2645_SEI_H + +#include + +#include "libavutil/buffer.h" +#include "libavutil/frame.h" + +#include "avcodec.h" +#include "bytestream.h" +#include "codec_id.h" +#include "get_bits.h" +#include "sei.h" + +typedef struct H2645SEIA53Caption { + AVBufferRef *buf_ref; +} H2645SEIA53Caption; + +typedef struct H264SEIAFD { + int present; + uint8_t active_format_description; +} H264SEIAFD; + +typedef struct HEVCSEIDynamicHDRPlus { + AVBufferRef *info; +} HEVCSEIDynamicHDRPlus; + +typedef struct HEVCSEIDynamicHDRVivid { + AVBufferRef *info; +} HEVCSEIDynamicHDRVivid; + +typedef struct H2645SEIUnregistered { + AVBufferRef **buf_ref; + unsigned nb_buf_ref; + int x264_build; //< H.264 only +} H2645SEIUnregistered; + +typedef struct H2645SEIFramePacking { + int present; + int arrangement_id; + int arrangement_cancel_flag; ///< is previous arrangement canceled, -1 if never received (currently H.264 only) + int arrangement_type; + int arrangement_repetition_period; + int content_interpretation_type; + int quincunx_sampling_flag; + int current_frame_is_frame0_flag; +} H2645SEIFramePacking; + +typedef struct H2645SEIDisplayOrientation { + int present; + int anticlockwise_rotation; + int hflip, vflip; +} H2645SEIDisplayOrientation; + +typedef struct H2645SEIAlternativeTransfer { + int present; + int preferred_transfer_characteristics; +} H2645SEIAlternativeTransfer; + +typedef struct H2645SEIFilmGrainCharacteristics { + int present; + int model_id; + int separate_colour_description_present_flag; + int bit_depth_luma; + int bit_depth_chroma; + int full_range; + int color_primaries; + int transfer_characteristics; + int matrix_coeffs; + int blending_mode_id; + int log2_scale_factor; + int comp_model_present_flag[3]; + uint16_t num_intensity_intervals[3]; + uint8_t num_model_values[3]; + uint8_t intensity_interval_lower_bound[3][256]; + uint8_t intensity_interval_upper_bound[3][256]; + int16_t comp_model_value[3][256][6]; + int repetition_period; //< H.264 only + int persistence_flag; //< HEVC only +} H2645SEIFilmGrainCharacteristics; + +typedef struct H2645SEI { + H2645SEIA53Caption a53_caption; + H264SEIAFD afd; //< H.264 only + HEVCSEIDynamicHDRPlus dynamic_hdr_plus; //< HEVC only + HEVCSEIDynamicHDRVivid dynamic_hdr_vivid; //< HEVC only + H2645SEIUnregistered unregistered; + H2645SEIFramePacking frame_packing; + H2645SEIDisplayOrientation display_orientation; + H2645SEIAlternativeTransfer alternative_transfer; + H2645SEIFilmGrainCharacteristics film_grain_characteristics; +} H2645SEI; + +enum { + FF_H2645_SEI_MESSAGE_HANDLED = 0, + FF_H2645_SEI_MESSAGE_UNHANDLED, +}; + +/** + * Decode a single SEI message. + * + * This function may either use gb or gbyte to decode the SEI message. + * + * @param[in, out] gb GetBitContext that needs to be at the start + * of the payload (i.e. after the payload_size bytes); + * it needs to be initially byte-aligned + * @param[in, out] gbyte a GetByteContext for the same data as gb + * @return < 0 on error, FF_H2645_SEI_MESSAGE_HANDLED if the SEI message + * has been handled or FF_H2645_SEI_MESSAGE_UNHANDLED if not. + */ +int ff_h2645_sei_message_decode(H2645SEI *h, enum SEIType type, + enum AVCodecID codec_id, GetBitContext *gb, + GetByteContext *gbyte, void *logctx); + +#endif /* AVCODEC_H2645_SEI_H */ diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c index 50810f1789..3ed23fb9ca 100644 --- a/libavcodec/h264_parser.c +++ b/libavcodec/h264_parser.c @@ -274,8 +274,8 @@ static inline int parse_nal_units(AVCodecParserContext *s, s->picture_structure = AV_PICTURE_STRUCTURE_UNKNOWN; ff_h264_sei_uninit(&p->sei); - p->sei.frame_packing.arrangement_cancel_flag = -1; - p->sei.unregistered.x264_build = -1; + p->sei.common.frame_packing.arrangement_cancel_flag = -1; + p->sei.common.unregistered.x264_build = -1; if (!buf_size) return 0; @@ -565,7 +565,7 @@ static inline int parse_nal_units(AVCodecParserContext *s, } if (sps->timing_info_present_flag) { int64_t den = sps->time_scale; - if (p->sei.unregistered.x264_build < 44U) + if (p->sei.common.unregistered.x264_build < 44U) den *= 2; av_reduce(&avctx->framerate.den, &avctx->framerate.num, sps->num_units_in_tick * avctx->ticks_per_frame, den, 1 << 30); diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c index d62a276779..c62aef9246 100644 --- a/libavcodec/h264_sei.c +++ b/libavcodec/h264_sei.c @@ -32,7 +32,6 @@ #include "libavutil/log.h" #include "libavutil/macros.h" #include "libavutil/mem.h" -#include "atsc_a53.h" #include "bytestream.h" #include "get_bits.h" #include "golomb.h" @@ -55,16 +54,16 @@ void ff_h264_sei_uninit(H264SEIContext *h) h->picture_timing.present = 0; h->buffering_period.present = 0; - h->frame_packing.present = 0; - h->film_grain_characteristics.present = 0; - h->display_orientation.present = 0; - h->afd.present = 0; - - av_buffer_unref(&h->a53_caption.buf_ref); - for (int i = 0; i < h->unregistered.nb_buf_ref; i++) - av_buffer_unref(&h->unregistered.buf_ref[i]); - h->unregistered.nb_buf_ref = 0; - av_freep(&h->unregistered.buf_ref); + h->common.frame_packing.present = 0; + h->common.film_grain_characteristics.present = 0; + h->common.display_orientation.present = 0; + h->common.afd.present = 0; + + av_buffer_unref(&h->common.a53_caption.buf_ref); + for (int i = 0; i < h->common.unregistered.nb_buf_ref; i++) + av_buffer_unref(&h->common.unregistered.buf_ref[i]); + h->common.unregistered.nb_buf_ref = 0; + av_freep(&h->common.unregistered.buf_ref); } int ff_h264_sei_process_picture_timing(H264SEIPictureTiming *h, const SPS *sps, @@ -153,123 +152,6 @@ static int decode_picture_timing(H264SEIPictureTiming *h, GetByteContext *gb, return 0; } -static int decode_registered_user_data_afd(H264SEIAFD *h, GetByteContext *gb) -{ - int flag; - - if (bytestream2_get_bytes_left(gb) <= 0) - return AVERROR_INVALIDDATA; - - flag = !!(bytestream2_get_byteu(gb) & 0x40); // active_format_flag - - if (flag) { - if (bytestream2_get_bytes_left(gb) <= 0) - return AVERROR_INVALIDDATA; - h->active_format_description = bytestream2_get_byteu(gb) & 0xF; - h->present = 1; - } - - return 0; -} - -static int decode_registered_user_data_closed_caption(H264SEIA53Caption *h, - GetByteContext *gb) -{ - return ff_parse_a53_cc(&h->buf_ref, gb->buffer, - bytestream2_get_bytes_left(gb)); -} - -static int decode_registered_user_data(H264SEIContext *h, GetByteContext *gb, - void *logctx) -{ - int country_code, provider_code; - - if (bytestream2_get_bytes_left(gb) < 3) - return AVERROR_INVALIDDATA; - - country_code = bytestream2_get_byteu(gb); // itu_t_t35_country_code - if (country_code == 0xFF) { - if (bytestream2_get_bytes_left(gb) < 3) - return AVERROR_INVALIDDATA; - - bytestream2_skipu(gb, 1); // itu_t_t35_country_code_extension_byte - } - - if (country_code != 0xB5) { // usa_country_code - av_log(logctx, AV_LOG_VERBOSE, - "Unsupported User Data Registered ITU-T T35 SEI message (country_code = %d)\n", - country_code); - return 0; - } - - /* itu_t_t35_payload_byte follows */ - provider_code = bytestream2_get_be16u(gb); - - switch (provider_code) { - case 0x31: { // atsc_provider_code - uint32_t user_identifier; - - if (bytestream2_get_bytes_left(gb) < 4) - return AVERROR_INVALIDDATA; - - user_identifier = bytestream2_get_be32u(gb); - switch (user_identifier) { - case MKBETAG('D', 'T', 'G', '1'): // afd_data - return decode_registered_user_data_afd(&h->afd, gb); - case MKBETAG('G', 'A', '9', '4'): // closed captions - return decode_registered_user_data_closed_caption(&h->a53_caption, gb); - default: - av_log(logctx, AV_LOG_VERBOSE, - "Unsupported User Data Registered ITU-T T35 SEI message (atsc user_identifier = 0x%04x)\n", - user_identifier); - break; - } - break; - } - default: - av_log(logctx, AV_LOG_VERBOSE, - "Unsupported User Data Registered ITU-T T35 SEI message (provider_code = %d)\n", - provider_code); - break; - } - - return 0; -} - -static int decode_unregistered_user_data(H264SEIUnregistered *h, GetByteContext *gb, - void *logctx) -{ - uint8_t *user_data; - int e, build, size = bytestream2_get_bytes_left(gb); - AVBufferRef *buf_ref, **tmp; - - if (size < 16 || size >= INT_MAX - 1) - return AVERROR_INVALIDDATA; - - tmp = av_realloc_array(h->buf_ref, h->nb_buf_ref + 1, sizeof(*h->buf_ref)); - if (!tmp) - return AVERROR(ENOMEM); - h->buf_ref = tmp; - - buf_ref = av_buffer_alloc(size + 1); - if (!buf_ref) - return AVERROR(ENOMEM); - user_data = buf_ref->data; - - bytestream2_get_bufferu(gb, user_data, size); - user_data[size] = 0; - buf_ref->size = size; - h->buf_ref[h->nb_buf_ref++] = buf_ref; - - e = sscanf(user_data + 16, "x264 - core %d", &build); - if (e == 1 && build > 0) - h->x264_build = build; - if (e == 1 && build == 1 && !strncmp(user_data+16, "x264 - core 0000", 16)) - h->x264_build = 67; - - return 0; -} - static int decode_recovery_point(H264SEIRecoveryPoint *h, GetBitContext *gb, void *logctx) { unsigned recovery_frame_cnt = get_ue_golomb_long(gb); @@ -325,51 +207,6 @@ static int decode_buffering_period(H264SEIBufferingPeriod *h, GetBitContext *gb, return 0; } -static int decode_frame_packing_arrangement(H264SEIFramePacking *h, - GetBitContext *gb) -{ - h->arrangement_id = get_ue_golomb_long(gb); - h->arrangement_cancel_flag = get_bits1(gb); - h->present = !h->arrangement_cancel_flag; - - if (h->present) { - h->arrangement_type = get_bits(gb, 7); - h->quincunx_sampling_flag = get_bits1(gb); - h->content_interpretation_type = get_bits(gb, 6); - - // spatial_flipping_flag, frame0_flipped_flag, field_views_flag - skip_bits(gb, 3); - h->current_frame_is_frame0_flag = get_bits1(gb); - // frame0_self_contained_flag, frame1_self_contained_flag - skip_bits(gb, 2); - - if (!h->quincunx_sampling_flag && h->arrangement_type != 5) - skip_bits(gb, 16); // frame[01]_grid_position_[xy] - skip_bits(gb, 8); // frame_packing_arrangement_reserved_byte - h->arrangement_repetition_period = get_ue_golomb_long(gb); - } - skip_bits1(gb); // frame_packing_arrangement_extension_flag - - return 0; -} - -static int decode_display_orientation(H264SEIDisplayOrientation *h, - GetBitContext *gb) -{ - h->present = !get_bits1(gb); - - if (h->present) { - h->hflip = get_bits1(gb); // hor_flip - h->vflip = get_bits1(gb); // ver_flip - - h->anticlockwise_rotation = get_bits(gb, 16); - get_ue_golomb_long(gb); // display_orientation_repetition_period - skip_bits1(gb); // display_orientation_extension_flag - } - - return 0; -} - static int decode_green_metadata(H264SEIGreenMetaData *h, GetByteContext *gb) { h->green_metadata_type = bytestream2_get_byte(gb); @@ -395,57 +232,6 @@ static int decode_green_metadata(H264SEIGreenMetaData *h, GetByteContext *gb) return 0; } -static int decode_alternative_transfer(H264SEIAlternativeTransfer *h, - GetByteContext *gb) -{ - h->present = 1; - h->preferred_transfer_characteristics = bytestream2_get_byte(gb); - return 0; -} - -static int decode_film_grain_characteristics(H264SEIFilmGrainCharacteristics *h, - GetBitContext *gb) -{ - h->present = !get_bits1(gb); // film_grain_characteristics_cancel_flag - - if (h->present) { - memset(h, 0, sizeof(*h)); - h->model_id = get_bits(gb, 2); - h->separate_colour_description_present_flag = get_bits1(gb); - if (h->separate_colour_description_present_flag) { - h->bit_depth_luma = get_bits(gb, 3) + 8; - h->bit_depth_chroma = get_bits(gb, 3) + 8; - h->full_range = get_bits1(gb); - h->color_primaries = get_bits(gb, 8); - h->transfer_characteristics = get_bits(gb, 8); - h->matrix_coeffs = get_bits(gb, 8); - } - h->blending_mode_id = get_bits(gb, 2); - h->log2_scale_factor = get_bits(gb, 4); - for (int c = 0; c < 3; c++) - h->comp_model_present_flag[c] = get_bits1(gb); - for (int c = 0; c < 3; c++) { - if (h->comp_model_present_flag[c]) { - h->num_intensity_intervals[c] = get_bits(gb, 8) + 1; - h->num_model_values[c] = get_bits(gb, 3) + 1; - if (h->num_model_values[c] > 6) - return AVERROR_INVALIDDATA; - for (int i = 0; i < h->num_intensity_intervals[c]; i++) { - h->intensity_interval_lower_bound[c][i] = get_bits(gb, 8); - h->intensity_interval_upper_bound[c][i] = get_bits(gb, 8); - for (int j = 0; j < h->num_model_values[c]; j++) - h->comp_model_value[c][i][j] = get_se_golomb_long(gb); - } - } - } - h->repetition_period = get_ue_golomb_long(gb); - - h->present = 1; - } - - return 0; -} - int ff_h264_sei_decode(H264SEIContext *h, GetBitContext *gb, const H264ParamSets *ps, void *logctx) { @@ -490,35 +276,20 @@ int ff_h264_sei_decode(H264SEIContext *h, GetBitContext *gb, case SEI_TYPE_PIC_TIMING: // Picture timing SEI ret = decode_picture_timing(&h->picture_timing, &gbyte_payload, logctx); break; - case SEI_TYPE_USER_DATA_REGISTERED_ITU_T_T35: - ret = decode_registered_user_data(h, &gbyte_payload, logctx); - break; - case SEI_TYPE_USER_DATA_UNREGISTERED: - ret = decode_unregistered_user_data(&h->unregistered, &gbyte_payload, logctx); - break; case SEI_TYPE_RECOVERY_POINT: ret = decode_recovery_point(&h->recovery_point, &gb_payload, logctx); break; case SEI_TYPE_BUFFERING_PERIOD: ret = decode_buffering_period(&h->buffering_period, &gb_payload, ps, logctx); break; - case SEI_TYPE_FRAME_PACKING_ARRANGEMENT: - ret = decode_frame_packing_arrangement(&h->frame_packing, &gb_payload); - break; - case SEI_TYPE_DISPLAY_ORIENTATION: - ret = decode_display_orientation(&h->display_orientation, &gb_payload); - break; case SEI_TYPE_GREEN_METADATA: ret = decode_green_metadata(&h->green_metadata, &gbyte_payload); break; - case SEI_TYPE_ALTERNATIVE_TRANSFER_CHARACTERISTICS: - ret = decode_alternative_transfer(&h->alternative_transfer, &gbyte_payload); - break; - case SEI_TYPE_FILM_GRAIN_CHARACTERISTICS: - ret = decode_film_grain_characteristics(&h->film_grain_characteristics, &gb_payload); - break; default: - av_log(logctx, AV_LOG_DEBUG, "unknown SEI type %d\n", type); + ret = ff_h2645_sei_message_decode(&h->common, type, AV_CODEC_ID_H264, + &gb_payload, &gbyte_payload, logctx); + if (ret == FF_H2645_SEI_MESSAGE_UNHANDLED) + av_log(logctx, AV_LOG_DEBUG, "unknown SEI type %d\n", type); } if (ret < 0 && ret != AVERROR_PS_NOT_FOUND) return ret; @@ -536,7 +307,7 @@ int ff_h264_sei_decode(H264SEIContext *h, GetBitContext *gb, return master_ret; } -const char *ff_h264_sei_stereo_mode(const H264SEIFramePacking *h) +const char *ff_h264_sei_stereo_mode(const H2645SEIFramePacking *h) { if (h->arrangement_cancel_flag == 0) { switch (h->arrangement_type) { diff --git a/libavcodec/h264_sei.h b/libavcodec/h264_sei.h index d7866f42ad..7a53d01ac5 100644 --- a/libavcodec/h264_sei.h +++ b/libavcodec/h264_sei.h @@ -20,6 +20,7 @@ #define AVCODEC_H264_SEI_H #include "get_bits.h" +#include "h2645_sei.h" #include "h264_ps.h" #include "sei.h" @@ -99,21 +100,6 @@ typedef struct H264SEIPictureTiming { int timecode_cnt; } H264SEIPictureTiming; -typedef struct H264SEIAFD { - int present; - uint8_t active_format_description; -} H264SEIAFD; - -typedef struct H264SEIA53Caption { - AVBufferRef *buf_ref; -} H264SEIA53Caption; - -typedef struct H264SEIUnregistered { - int x264_build; - AVBufferRef **buf_ref; - int nb_buf_ref; -} H264SEIUnregistered; - typedef struct H264SEIRecoveryPoint { /** * recovery_frame_cnt @@ -130,23 +116,6 @@ typedef struct H264SEIBufferingPeriod { int initial_cpb_removal_delay[32]; ///< Initial timestamps for CPBs } H264SEIBufferingPeriod; -typedef struct H264SEIFramePacking { - int present; - int arrangement_id; - int arrangement_cancel_flag; ///< is previous arrangement canceled, -1 if never received - H264_SEI_FpaType arrangement_type; - int arrangement_repetition_period; - int content_interpretation_type; - int quincunx_sampling_flag; - int current_frame_is_frame0_flag; -} H264SEIFramePacking; - -typedef struct H264SEIDisplayOrientation { - int present; - int anticlockwise_rotation; - int hflip, vflip; -} H264SEIDisplayOrientation; - typedef struct H264SEIGreenMetaData { uint8_t green_metadata_type; uint8_t period_type; @@ -160,44 +129,12 @@ typedef struct H264SEIGreenMetaData { uint16_t xsd_metric_value; } H264SEIGreenMetaData; -typedef struct H264SEIAlternativeTransfer { - int present; - int preferred_transfer_characteristics; -} H264SEIAlternativeTransfer; - -typedef struct H264SEIFilmGrainCharacteristics { - int present; - int model_id; - int separate_colour_description_present_flag; - int bit_depth_luma; - int bit_depth_chroma; - int full_range; - int color_primaries; - int transfer_characteristics; - int matrix_coeffs; - int blending_mode_id; - int log2_scale_factor; - int comp_model_present_flag[3]; - uint16_t num_intensity_intervals[3]; - uint8_t num_model_values[3]; - uint8_t intensity_interval_lower_bound[3][256]; - uint8_t intensity_interval_upper_bound[3][256]; - int16_t comp_model_value[3][256][6]; - int repetition_period; -} H264SEIFilmGrainCharacteristics; - typedef struct H264SEIContext { + H2645SEI common; H264SEIPictureTiming picture_timing; - H264SEIAFD afd; - H264SEIA53Caption a53_caption; - H264SEIUnregistered unregistered; H264SEIRecoveryPoint recovery_point; H264SEIBufferingPeriod buffering_period; - H264SEIFramePacking frame_packing; - H264SEIDisplayOrientation display_orientation; H264SEIGreenMetaData green_metadata; - H264SEIAlternativeTransfer alternative_transfer; - H264SEIFilmGrainCharacteristics film_grain_characteristics; } H264SEIContext; struct H264ParamSets; @@ -213,7 +150,7 @@ void ff_h264_sei_uninit(H264SEIContext *h); /** * Get stereo_mode string from the h264 frame_packing_arrangement */ -const char *ff_h264_sei_stereo_mode(const H264SEIFramePacking *h); +const char *ff_h264_sei_stereo_mode(const H2645SEIFramePacking *h); /** * Parse the contents of a picture timing message given an active SPS. diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index d56722a5c2..a6d8d2bdac 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -433,29 +433,30 @@ int ff_h264_update_thread_context(AVCodecContext *dst, h->frame_recovered = h1->frame_recovered; - ret = av_buffer_replace(&h->sei.a53_caption.buf_ref, h1->sei.a53_caption.buf_ref); + ret = av_buffer_replace(&h->sei.common.a53_caption.buf_ref, + h1->sei.common.a53_caption.buf_ref); if (ret < 0) return ret; - for (i = 0; i < h->sei.unregistered.nb_buf_ref; i++) - av_buffer_unref(&h->sei.unregistered.buf_ref[i]); - h->sei.unregistered.nb_buf_ref = 0; + for (i = 0; i < h->sei.common.unregistered.nb_buf_ref; i++) + av_buffer_unref(&h->sei.common.unregistered.buf_ref[i]); + h->sei.common.unregistered.nb_buf_ref = 0; - if (h1->sei.unregistered.nb_buf_ref) { - ret = av_reallocp_array(&h->sei.unregistered.buf_ref, - h1->sei.unregistered.nb_buf_ref, - sizeof(*h->sei.unregistered.buf_ref)); + if (h1->sei.common.unregistered.nb_buf_ref) { + ret = av_reallocp_array(&h->sei.common.unregistered.buf_ref, + h1->sei.common.unregistered.nb_buf_ref, + sizeof(*h->sei.common.unregistered.buf_ref)); if (ret < 0) return ret; - for (i = 0; i < h1->sei.unregistered.nb_buf_ref; i++) { - h->sei.unregistered.buf_ref[i] = av_buffer_ref(h1->sei.unregistered.buf_ref[i]); - if (!h->sei.unregistered.buf_ref[i]) + for (i = 0; i < h1->sei.common.unregistered.nb_buf_ref; i++) { + h->sei.common.unregistered.buf_ref[i] = av_buffer_ref(h1->sei.common.unregistered.buf_ref[i]); + if (!h->sei.common.unregistered.buf_ref[i]) return AVERROR(ENOMEM); - h->sei.unregistered.nb_buf_ref++; + h->sei.common.unregistered.nb_buf_ref++; } } - h->sei.unregistered.x264_build = h1->sei.unregistered.x264_build; + h->sei.common.unregistered.x264_build = h1->sei.common.unregistered.x264_build; if (!h->cur_pic_ptr) return 0; @@ -528,7 +529,7 @@ static int h264_frame_start(H264Context *h) pic->f->crop_top = h->crop_top; pic->f->crop_bottom = h->crop_bottom; - pic->needs_fg = h->sei.film_grain_characteristics.present && !h->avctx->hwaccel && + pic->needs_fg = h->sei.common.film_grain_characteristics.present && !h->avctx->hwaccel && !(h->avctx->export_side_data & AV_CODEC_EXPORT_DATA_FILM_GRAIN); if ((ret = alloc_picture(h, pic)) < 0) @@ -579,8 +580,8 @@ static int h264_frame_start(H264Context *h) h->mb_aff_frame = h->ps.sps->mb_aff && (h->picture_structure == PICT_FRAME); - if (h->sei.unregistered.x264_build >= 0) - h->x264_build = h->sei.unregistered.x264_build; + if (h->sei.common.unregistered.x264_build >= 0) + h->x264_build = h->sei.common.unregistered.x264_build; assert(h->cur_pic_ptr->long_ref == 0); @@ -1114,10 +1115,10 @@ static int h264_init_ps(H264Context *h, const H264SliceContext *sl, int first_sl } } - if (h->sei.alternative_transfer.present && - av_color_transfer_name(h->sei.alternative_transfer.preferred_transfer_characteristics) && - h->sei.alternative_transfer.preferred_transfer_characteristics != AVCOL_TRC_UNSPECIFIED) { - h->avctx->color_trc = h->sei.alternative_transfer.preferred_transfer_characteristics; + if (h->sei.common.alternative_transfer.present && + av_color_transfer_name(h->sei.common.alternative_transfer.preferred_transfer_characteristics) && + h->sei.common.alternative_transfer.preferred_transfer_characteristics != AVCOL_TRC_UNSPECIFIED) { + h->avctx->color_trc = h->sei.common.alternative_transfer.preferred_transfer_characteristics; } } h->avctx->chroma_sample_location = sps->chroma_location; @@ -1243,11 +1244,11 @@ static int h264_export_frame_props(H264Context *h) } } - if (h->sei.frame_packing.present && - h->sei.frame_packing.arrangement_type <= 6 && - h->sei.frame_packing.content_interpretation_type > 0 && - h->sei.frame_packing.content_interpretation_type < 3) { - H264SEIFramePacking *fp = &h->sei.frame_packing; + if (h->sei.common.frame_packing.present && + h->sei.common.frame_packing.arrangement_type <= 6 && + h->sei.common.frame_packing.content_interpretation_type > 0 && + h->sei.common.frame_packing.content_interpretation_type < 3) { + H2645SEIFramePacking *fp = &h->sei.common.frame_packing; AVStereo3D *stereo = av_stereo3d_create_side_data(out); if (stereo) { switch (fp->arrangement_type) { @@ -1289,11 +1290,11 @@ static int h264_export_frame_props(H264Context *h) } } - if (h->sei.display_orientation.present && - (h->sei.display_orientation.anticlockwise_rotation || - h->sei.display_orientation.hflip || - h->sei.display_orientation.vflip)) { - H264SEIDisplayOrientation *o = &h->sei.display_orientation; + if (h->sei.common.display_orientation.present && + (h->sei.common.display_orientation.anticlockwise_rotation || + h->sei.common.display_orientation.hflip || + h->sei.common.display_orientation.vflip)) { + H2645SEIDisplayOrientation *o = &h->sei.common.display_orientation; double angle = o->anticlockwise_rotation * 360 / (double) (1 << 16); AVFrameSideData *rotation = av_frame_new_side_data(out, AV_FRAME_DATA_DISPLAYMATRIX, @@ -1314,18 +1315,18 @@ static int h264_export_frame_props(H264Context *h) } } - if (h->sei.afd.present) { + if (h->sei.common.afd.present) { AVFrameSideData *sd = av_frame_new_side_data(out, AV_FRAME_DATA_AFD, sizeof(uint8_t)); if (sd) { - *sd->data = h->sei.afd.active_format_description; - h->sei.afd.present = 0; + *sd->data = h->sei.common.afd.active_format_description; + h->sei.common.afd.present = 0; } } - if (h->sei.a53_caption.buf_ref) { - H264SEIA53Caption *a53 = &h->sei.a53_caption; + if (h->sei.common.a53_caption.buf_ref) { + H2645SEIA53Caption *a53 = &h->sei.common.a53_caption; AVFrameSideData *sd = av_frame_new_side_data_from_buf(out, AV_FRAME_DATA_A53_CC, a53->buf_ref); if (!sd) @@ -1335,8 +1336,8 @@ static int h264_export_frame_props(H264Context *h) h->avctx->properties |= FF_CODEC_PROPERTY_CLOSED_CAPTIONS; } - for (int i = 0; i < h->sei.unregistered.nb_buf_ref; i++) { - H264SEIUnregistered *unreg = &h->sei.unregistered; + for (int i = 0; i < h->sei.common.unregistered.nb_buf_ref; i++) { + H2645SEIUnregistered *unreg = &h->sei.common.unregistered; if (unreg->buf_ref[i]) { AVFrameSideData *sd = av_frame_new_side_data_from_buf(out, @@ -1347,10 +1348,10 @@ static int h264_export_frame_props(H264Context *h) unreg->buf_ref[i] = NULL; } } - h->sei.unregistered.nb_buf_ref = 0; + h->sei.common.unregistered.nb_buf_ref = 0; - if (h->sei.film_grain_characteristics.present) { - H264SEIFilmGrainCharacteristics *fgc = &h->sei.film_grain_characteristics; + if (h->sei.common.film_grain_characteristics.present) { + H2645SEIFilmGrainCharacteristics *fgc = &h->sei.common.film_grain_characteristics; AVFilmGrainParams *fgp = av_film_grain_params_create_side_data(out); if (!fgp) return AVERROR(ENOMEM); diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c index d80bc6b17f..49f4db90e3 100644 --- a/libavcodec/h264dec.c +++ b/libavcodec/h264dec.c @@ -296,8 +296,8 @@ static int h264_init_context(AVCodecContext *avctx, H264Context *h) h->recovery_frame = -1; h->frame_recovered = 0; h->poc.prev_frame_num = -1; - h->sei.frame_packing.arrangement_cancel_flag = -1; - h->sei.unregistered.x264_build = -1; + h->sei.common.frame_packing.arrangement_cancel_flag = -1; + h->sei.common.unregistered.x264_build = -1; h->next_outputed_poc = INT_MIN; for (i = 0; i < FF_ARRAY_ELEMS(h->last_pocs); i++) @@ -848,7 +848,7 @@ static int output_frame(H264Context *h, AVFrame *dst, H264Picture *srcp) if (srcp->needs_fg && (ret = av_frame_copy_props(dst, srcp->f)) < 0) return ret; - av_dict_set(&dst->metadata, "stereo_mode", ff_h264_sei_stereo_mode(&h->sei.frame_packing), 0); + av_dict_set(&dst->metadata, "stereo_mode", ff_h264_sei_stereo_mode(&h->sei.common.frame_packing), 0); if (srcp->sei_recovery_frame_cnt == 0) dst->key_frame = 1; diff --git a/libavcodec/hevc_sei.c b/libavcodec/hevc_sei.c index 631373e06f..b0a4a8b035 100644 --- a/libavcodec/hevc_sei.c +++ b/libavcodec/hevc_sei.c @@ -22,10 +22,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "atsc_a53.h" #include "bytestream.h" -#include "dynamic_hdr10_plus.h" -#include "dynamic_hdr_vivid.h" #include "golomb.h" #include "hevc_ps.h" #include "hevc_sei.h" @@ -98,38 +95,6 @@ static int decode_nal_sei_content_light_info(HEVCSEIContentLight *s, return 0; } -static int decode_nal_sei_frame_packing_arrangement(HEVCSEIFramePacking *s, GetBitContext *gb) -{ - get_ue_golomb_long(gb); // frame_packing_arrangement_id - s->present = !get_bits1(gb); - - if (s->present) { - s->arrangement_type = get_bits(gb, 7); - s->quincunx_subsampling = get_bits1(gb); - s->content_interpretation_type = get_bits(gb, 6); - - // spatial_flipping_flag, frame0_flipped_flag, field_views_flag - skip_bits(gb, 3); - s->current_frame_is_frame0_flag = get_bits1(gb); - } - return 0; -} - -static int decode_nal_sei_display_orientation(HEVCSEIDisplayOrientation *s, GetBitContext *gb) -{ - s->present = !get_bits1(gb); - - if (s->present) { - s->hflip = get_bits1(gb); // hor_flip - s->vflip = get_bits1(gb); // ver_flip - - s->anticlockwise_rotation = get_bits(gb, 16); - // skip_bits1(gb); // display_orientation_persistence_flag - } - - return 0; -} - static int decode_nal_sei_pic_timing(HEVCSEI *s, GetBitContext *gb, const HEVCParamSets *ps, void *logctx) { @@ -161,182 +126,6 @@ static int decode_nal_sei_pic_timing(HEVCSEI *s, GetBitContext *gb, return 0; } -static int decode_registered_user_data_closed_caption(HEVCSEIA53Caption *s, - GetByteContext *gb) -{ - int ret; - - ret = ff_parse_a53_cc(&s->buf_ref, gb->buffer, - bytestream2_get_bytes_left(gb)); - if (ret < 0) - return ret; - - return 0; -} - -static int decode_nal_sei_user_data_unregistered(HEVCSEIUnregistered *s, - GetByteContext *gb) -{ - AVBufferRef *buf_ref, **tmp; - int size = bytestream2_get_bytes_left(gb); - - if (size < 16 || size >= INT_MAX - 1) - return AVERROR_INVALIDDATA; - - tmp = av_realloc_array(s->buf_ref, s->nb_buf_ref + 1, sizeof(*s->buf_ref)); - if (!tmp) - return AVERROR(ENOMEM); - s->buf_ref = tmp; - - buf_ref = av_buffer_alloc(size + 1); - if (!buf_ref) - return AVERROR(ENOMEM); - - bytestream2_get_bufferu(gb, buf_ref->data, size); - buf_ref->data[size] = 0; - buf_ref->size = size; - s->buf_ref[s->nb_buf_ref++] = buf_ref; - - return 0; -} - -static int decode_registered_user_data_dynamic_hdr_plus(HEVCSEIDynamicHDRPlus *s, - GetByteContext *gb) -{ - size_t meta_size; - int err; - AVDynamicHDRPlus *metadata = av_dynamic_hdr_plus_alloc(&meta_size); - if (!metadata) - return AVERROR(ENOMEM); - - err = ff_parse_itu_t_t35_to_dynamic_hdr10_plus(metadata, gb->buffer, - bytestream2_get_bytes_left(gb)); - if (err < 0) { - av_free(metadata); - return err; - } - - av_buffer_unref(&s->info); - s->info = av_buffer_create((uint8_t *)metadata, meta_size, NULL, NULL, 0); - if (!s->info) { - av_free(metadata); - return AVERROR(ENOMEM); - } - - return 0; -} - -static int decode_registered_user_data_dynamic_hdr_vivid(HEVCSEIDynamicHDRVivid *s, - GetByteContext *gb) -{ - size_t meta_size; - int err; - AVDynamicHDRVivid *metadata = av_dynamic_hdr_vivid_alloc(&meta_size); - if (!metadata) - return AVERROR(ENOMEM); - - err = ff_parse_itu_t_t35_to_dynamic_hdr_vivid(metadata, - gb->buffer, bytestream2_get_bytes_left(gb)); - if (err < 0) { - av_free(metadata); - return err; - } - - av_buffer_unref(&s->info); - s->info = av_buffer_create((uint8_t *)metadata, meta_size, NULL, NULL, 0); - if (!s->info) { - av_free(metadata); - return AVERROR(ENOMEM); - } - - return 0; -} - -static int decode_nal_sei_user_data_registered_itu_t_t35(HEVCSEI *s, GetByteContext *gb, - void *logctx) -{ - int country_code, provider_code; - - if (bytestream2_get_bytes_left(gb) < 3) - return AVERROR_INVALIDDATA; - - country_code = bytestream2_get_byteu(gb); - if (country_code == 0xFF) { - if (bytestream2_get_bytes_left(gb) < 3) - return AVERROR_INVALIDDATA; - - bytestream2_skipu(gb, 1); - } - - if (country_code != 0xB5 && country_code != 0x26) { // usa_country_code and cn_country_code - av_log(logctx, AV_LOG_VERBOSE, - "Unsupported User Data Registered ITU-T T35 SEI message (country_code = 0x%x)\n", - country_code); - return 0; - } - - provider_code = bytestream2_get_be16u(gb); - - switch (provider_code) { - case 0x04: { // cuva_provider_code - const uint16_t cuva_provider_oriented_code = 0x0005; - uint16_t provider_oriented_code; - - if (bytestream2_get_bytes_left(gb) < 2) - return AVERROR_INVALIDDATA; - - provider_oriented_code = bytestream2_get_be16u(gb); - if (provider_oriented_code == cuva_provider_oriented_code) { - return decode_registered_user_data_dynamic_hdr_vivid(&s->dynamic_hdr_vivid, gb); - } - break; - } - case 0x3C: { // smpte_provider_code - // A/341 Amendment - 2094-40 - const uint16_t smpte2094_40_provider_oriented_code = 0x0001; - const uint8_t smpte2094_40_application_identifier = 0x04; - uint16_t provider_oriented_code; - uint8_t application_identifier; - - if (bytestream2_get_bytes_left(gb) < 3) - return AVERROR_INVALIDDATA; - - provider_oriented_code = bytestream2_get_be16u(gb); - application_identifier = bytestream2_get_byteu(gb); - if (provider_oriented_code == smpte2094_40_provider_oriented_code && - application_identifier == smpte2094_40_application_identifier) { - return decode_registered_user_data_dynamic_hdr_plus(&s->dynamic_hdr_plus, gb); - } - break; - } - case 0x31: { // atsc_provider_code - uint32_t user_identifier; - - if (bytestream2_get_bytes_left(gb) < 4) - return AVERROR_INVALIDDATA; - - user_identifier = bytestream2_get_be32u(gb); - switch (user_identifier) { - case MKBETAG('G', 'A', '9', '4'): - return decode_registered_user_data_closed_caption(&s->a53_caption, gb); - default: - av_log(logctx, AV_LOG_VERBOSE, - "Unsupported User Data Registered ITU-T T35 SEI message (atsc user_identifier = 0x%04x)\n", - user_identifier); - break; - } - break; - } - default: - av_log(logctx, AV_LOG_VERBOSE, - "Unsupported User Data Registered ITU-T T35 SEI message (provider_code = %d)\n", - provider_code); - break; - } - - return 0; -} - static int decode_nal_sei_active_parameter_sets(HEVCSEI *s, GetBitContext *gb, void *logctx) { int num_sps_ids_minus1; @@ -362,18 +151,6 @@ static int decode_nal_sei_active_parameter_sets(HEVCSEI *s, GetBitContext *gb, v return 0; } -static int decode_nal_sei_alternative_transfer(HEVCSEIAlternativeTransfer *s, - GetByteContext *gb) -{ - if (bytestream2_get_bytes_left(gb) < 1) - return AVERROR_INVALIDDATA; - - s->present = 1; - s->preferred_transfer_characteristics = bytestream2_get_byteu(gb); - - return 0; -} - static int decode_nal_sei_timecode(HEVCSEITimeCode *s, GetBitContext *gb) { s->num_clock_ts = get_bits(gb, 2); @@ -420,49 +197,6 @@ static int decode_nal_sei_timecode(HEVCSEITimeCode *s, GetBitContext *gb) return 0; } -static int decode_film_grain_characteristics(HEVCSEIFilmGrainCharacteristics *h, - GetBitContext *gb) -{ - h->present = !get_bits1(gb); // film_grain_characteristics_cancel_flag - - if (h->present) { - memset(h, 0, sizeof(*h)); - h->model_id = get_bits(gb, 2); - h->separate_colour_description_present_flag = get_bits1(gb); - if (h->separate_colour_description_present_flag) { - h->bit_depth_luma = get_bits(gb, 3) + 8; - h->bit_depth_chroma = get_bits(gb, 3) + 8; - h->full_range = get_bits1(gb); - h->color_primaries = get_bits(gb, 8); - h->transfer_characteristics = get_bits(gb, 8); - h->matrix_coeffs = get_bits(gb, 8); - } - h->blending_mode_id = get_bits(gb, 2); - h->log2_scale_factor = get_bits(gb, 4); - for (int c = 0; c < 3; c++) - h->comp_model_present_flag[c] = get_bits1(gb); - for (int c = 0; c < 3; c++) { - if (h->comp_model_present_flag[c]) { - h->num_intensity_intervals[c] = get_bits(gb, 8) + 1; - h->num_model_values[c] = get_bits(gb, 3) + 1; - if (h->num_model_values[c] > 6) - return AVERROR_INVALIDDATA; - for (int i = 0; i < h->num_intensity_intervals[c]; i++) { - h->intensity_interval_lower_bound[c][i] = get_bits(gb, 8); - h->intensity_interval_upper_bound[c][i] = get_bits(gb, 8); - for (int j = 0; j < h->num_model_values[c]; j++) - h->comp_model_value[c][i][j] = get_se_golomb_long(gb); - } - } - } - h->persistence_flag = get_bits1(gb); - - h->present = 1; - } - - return 0; -} - static int decode_nal_sei_prefix(GetBitContext *gb, GetByteContext *gbyte, void *logctx, HEVCSEI *s, const HEVCParamSets *ps, int type) @@ -470,10 +204,6 @@ static int decode_nal_sei_prefix(GetBitContext *gb, GetByteContext *gbyte, switch (type) { case 256: // Mismatched value from HM 8.1 return decode_nal_sei_decoded_picture_hash(&s->picture_hash, gbyte); - case SEI_TYPE_FRAME_PACKING_ARRANGEMENT: - return decode_nal_sei_frame_packing_arrangement(&s->frame_packing, gb); - case SEI_TYPE_DISPLAY_ORIENTATION: - return decode_nal_sei_display_orientation(&s->display_orientation, gb); case SEI_TYPE_PIC_TIMING: return decode_nal_sei_pic_timing(s, gb, ps, logctx); case SEI_TYPE_MASTERING_DISPLAY_COLOUR_VOLUME: @@ -482,19 +212,15 @@ static int decode_nal_sei_prefix(GetBitContext *gb, GetByteContext *gbyte, return decode_nal_sei_content_light_info(&s->content_light, gbyte); case SEI_TYPE_ACTIVE_PARAMETER_SETS: return decode_nal_sei_active_parameter_sets(s, gb, logctx); - case SEI_TYPE_USER_DATA_REGISTERED_ITU_T_T35: - return decode_nal_sei_user_data_registered_itu_t_t35(s, gbyte, logctx); - case SEI_TYPE_USER_DATA_UNREGISTERED: - return decode_nal_sei_user_data_unregistered(&s->unregistered, gbyte); - case SEI_TYPE_ALTERNATIVE_TRANSFER_CHARACTERISTICS: - return decode_nal_sei_alternative_transfer(&s->alternative_transfer, gbyte); case SEI_TYPE_TIME_CODE: return decode_nal_sei_timecode(&s->timecode, gb); - case SEI_TYPE_FILM_GRAIN_CHARACTERISTICS: - return decode_film_grain_characteristics(&s->film_grain_characteristics, gb); - default: - av_log(logctx, AV_LOG_DEBUG, "Skipped PREFIX SEI %d\n", type); - return 0; + default: { + int ret = ff_h2645_sei_message_decode(&s->common, type, AV_CODEC_ID_HEVC, + gb, gbyte, logctx); + if (ret == FF_H2645_SEI_MESSAGE_UNHANDLED) + av_log(logctx, AV_LOG_DEBUG, "Skipped PREFIX SEI %d\n", type); + return ret; + } } } @@ -569,12 +295,12 @@ int ff_hevc_decode_nal_sei(GetBitContext *gb, void *logctx, HEVCSEI *s, void ff_hevc_reset_sei(HEVCSEI *s) { - av_buffer_unref(&s->a53_caption.buf_ref); - - for (int i = 0; i < s->unregistered.nb_buf_ref; i++) - av_buffer_unref(&s->unregistered.buf_ref[i]); - s->unregistered.nb_buf_ref = 0; - av_freep(&s->unregistered.buf_ref); - av_buffer_unref(&s->dynamic_hdr_plus.info); - av_buffer_unref(&s->dynamic_hdr_vivid.info); + av_buffer_unref(&s->common.a53_caption.buf_ref); + + for (int i = 0; i < s->common.unregistered.nb_buf_ref; i++) + av_buffer_unref(&s->common.unregistered.buf_ref[i]); + s->common.unregistered.nb_buf_ref = 0; + av_freep(&s->common.unregistered.buf_ref); + av_buffer_unref(&s->common.dynamic_hdr_plus.info); + av_buffer_unref(&s->common.dynamic_hdr_vivid.info); } diff --git a/libavcodec/hevc_sei.h b/libavcodec/hevc_sei.h index ef987f6781..8ea0245802 100644 --- a/libavcodec/hevc_sei.h +++ b/libavcodec/hevc_sei.h @@ -27,6 +27,7 @@ #include "get_bits.h" #include "hevc.h" +#include "h2645_sei.h" #include "sei.h" @@ -48,25 +49,10 @@ typedef struct HEVCSEIFramePacking { int current_frame_is_frame0_flag; } HEVCSEIFramePacking; -typedef struct HEVCSEIDisplayOrientation { - int present; - int anticlockwise_rotation; - int hflip, vflip; -} HEVCSEIDisplayOrientation; - typedef struct HEVCSEIPictureTiming { int picture_struct; } HEVCSEIPictureTiming; -typedef struct HEVCSEIA53Caption { - AVBufferRef *buf_ref; -} HEVCSEIA53Caption; - -typedef struct HEVCSEIUnregistered { - AVBufferRef **buf_ref; - int nb_buf_ref; -} HEVCSEIUnregistered; - typedef struct HEVCSEIMasteringDisplay { int present; uint16_t display_primaries[3][2]; @@ -75,14 +61,6 @@ typedef struct HEVCSEIMasteringDisplay { uint32_t min_luminance; } HEVCSEIMasteringDisplay; -typedef struct HEVCSEIDynamicHDRPlus { - AVBufferRef *info; -} HEVCSEIDynamicHDRPlus; - -typedef struct HEVCSEIDynamicHDRVivid { - AVBufferRef *info; -} HEVCSEIDynamicHDRVivid; - typedef struct HEVCSEIContentLight { int present; uint16_t max_content_light_level; @@ -114,42 +92,14 @@ typedef struct HEVCSEITimeCode { int32_t time_offset_value[3]; } HEVCSEITimeCode; -typedef struct HEVCSEIFilmGrainCharacteristics { - int present; - int model_id; - int separate_colour_description_present_flag; - int bit_depth_luma; - int bit_depth_chroma; - int full_range; - int color_primaries; - int transfer_characteristics; - int matrix_coeffs; - int blending_mode_id; - int log2_scale_factor; - int comp_model_present_flag[3]; - uint16_t num_intensity_intervals[3]; - uint8_t num_model_values[3]; - uint8_t intensity_interval_lower_bound[3][256]; - uint8_t intensity_interval_upper_bound[3][256]; - int16_t comp_model_value[3][256][6]; - int persistence_flag; -} HEVCSEIFilmGrainCharacteristics; - typedef struct HEVCSEI { + H2645SEI common; HEVCSEIPictureHash picture_hash; - HEVCSEIFramePacking frame_packing; - HEVCSEIDisplayOrientation display_orientation; HEVCSEIPictureTiming picture_timing; - HEVCSEIA53Caption a53_caption; - HEVCSEIUnregistered unregistered; HEVCSEIMasteringDisplay mastering_display; - HEVCSEIDynamicHDRPlus dynamic_hdr_plus; - HEVCSEIDynamicHDRVivid dynamic_hdr_vivid; HEVCSEIContentLight content_light; int active_seq_parameter_set_id; - HEVCSEIAlternativeTransfer alternative_transfer; HEVCSEITimeCode timecode; - HEVCSEIFilmGrainCharacteristics film_grain_characteristics; } HEVCSEI; struct HEVCParamSets; diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index f222f20706..69e65482dd 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -382,16 +382,16 @@ static int export_stream_params_from_sei(HEVCContext *s) { AVCodecContext *avctx = s->avctx; - if (s->sei.a53_caption.buf_ref) + if (s->sei.common.a53_caption.buf_ref) s->avctx->properties |= FF_CODEC_PROPERTY_CLOSED_CAPTIONS; - if (s->sei.alternative_transfer.present && - av_color_transfer_name(s->sei.alternative_transfer.preferred_transfer_characteristics) && - s->sei.alternative_transfer.preferred_transfer_characteristics != AVCOL_TRC_UNSPECIFIED) { - avctx->color_trc = s->sei.alternative_transfer.preferred_transfer_characteristics; + if (s->sei.common.alternative_transfer.present && + av_color_transfer_name(s->sei.common.alternative_transfer.preferred_transfer_characteristics) && + s->sei.common.alternative_transfer.preferred_transfer_characteristics != AVCOL_TRC_UNSPECIFIED) { + avctx->color_trc = s->sei.common.alternative_transfer.preferred_transfer_characteristics; } - if (s->sei.film_grain_characteristics.present) + if (s->sei.common.film_grain_characteristics.present) avctx->properties |= FF_CODEC_PROPERTY_FILM_GRAIN; return 0; @@ -2731,18 +2731,18 @@ static int set_side_data(HEVCContext *s) AVFrame *out = s->ref->frame; int ret; - if (s->sei.frame_packing.present && - s->sei.frame_packing.arrangement_type >= 3 && - s->sei.frame_packing.arrangement_type <= 5 && - s->sei.frame_packing.content_interpretation_type > 0 && - s->sei.frame_packing.content_interpretation_type < 3) { + if (s->sei.common.frame_packing.present && + s->sei.common.frame_packing.arrangement_type >= 3 && + s->sei.common.frame_packing.arrangement_type <= 5 && + s->sei.common.frame_packing.content_interpretation_type > 0 && + s->sei.common.frame_packing.content_interpretation_type < 3) { AVStereo3D *stereo = av_stereo3d_create_side_data(out); if (!stereo) return AVERROR(ENOMEM); - switch (s->sei.frame_packing.arrangement_type) { + switch (s->sei.common.frame_packing.arrangement_type) { case 3: - if (s->sei.frame_packing.quincunx_subsampling) + if (s->sei.common.frame_packing.quincunx_sampling_flag) stereo->type = AV_STEREO3D_SIDEBYSIDE_QUINCUNX; else stereo->type = AV_STEREO3D_SIDEBYSIDE; @@ -2755,21 +2755,21 @@ static int set_side_data(HEVCContext *s) break; } - if (s->sei.frame_packing.content_interpretation_type == 2) + if (s->sei.common.frame_packing.content_interpretation_type == 2) stereo->flags = AV_STEREO3D_FLAG_INVERT; - if (s->sei.frame_packing.arrangement_type == 5) { - if (s->sei.frame_packing.current_frame_is_frame0_flag) + if (s->sei.common.frame_packing.arrangement_type == 5) { + if (s->sei.common.frame_packing.current_frame_is_frame0_flag) stereo->view = AV_STEREO3D_VIEW_LEFT; else stereo->view = AV_STEREO3D_VIEW_RIGHT; } } - if (s->sei.display_orientation.present && - (s->sei.display_orientation.anticlockwise_rotation || - s->sei.display_orientation.hflip || s->sei.display_orientation.vflip)) { - double angle = s->sei.display_orientation.anticlockwise_rotation * 360 / (double) (1 << 16); + if (s->sei.common.display_orientation.present && + (s->sei.common.display_orientation.anticlockwise_rotation || + s->sei.common.display_orientation.hflip || s->sei.common.display_orientation.vflip)) { + double angle = s->sei.common.display_orientation.anticlockwise_rotation * 360 / (double) (1 << 16); AVFrameSideData *rotation = av_frame_new_side_data(out, AV_FRAME_DATA_DISPLAYMATRIX, sizeof(int32_t) * 9); @@ -2784,12 +2784,12 @@ static int set_side_data(HEVCContext *s) * an arbitatry axis and O(phi) is the proper rotation by phi) * we can create display matrices as desired by negating * the degree once for every flip applied. */ - angle = -angle * (1 - 2 * !!s->sei.display_orientation.hflip) - * (1 - 2 * !!s->sei.display_orientation.vflip); + angle = -angle * (1 - 2 * !!s->sei.common.display_orientation.hflip) + * (1 - 2 * !!s->sei.common.display_orientation.vflip); av_display_rotation_set((int32_t *)rotation->data, angle); av_display_matrix_flip((int32_t *)rotation->data, - s->sei.display_orientation.hflip, - s->sei.display_orientation.vflip); + s->sei.common.display_orientation.hflip, + s->sei.common.display_orientation.vflip); } // Decrement the mastering display flag when IRAP frame has no_rasl_output_flag=1 @@ -2861,8 +2861,8 @@ static int set_side_data(HEVCContext *s) metadata->MaxCLL, metadata->MaxFALL); } - if (s->sei.a53_caption.buf_ref) { - HEVCSEIA53Caption *a53 = &s->sei.a53_caption; + if (s->sei.common.a53_caption.buf_ref) { + H2645SEIA53Caption *a53 = &s->sei.common.a53_caption; AVFrameSideData *sd = av_frame_new_side_data_from_buf(out, AV_FRAME_DATA_A53_CC, a53->buf_ref); if (!sd) @@ -2870,8 +2870,8 @@ static int set_side_data(HEVCContext *s) a53->buf_ref = NULL; } - for (int i = 0; i < s->sei.unregistered.nb_buf_ref; i++) { - HEVCSEIUnregistered *unreg = &s->sei.unregistered; + for (int i = 0; i < s->sei.common.unregistered.nb_buf_ref; i++) { + H2645SEIUnregistered *unreg = &s->sei.common.unregistered; if (unreg->buf_ref[i]) { AVFrameSideData *sd = av_frame_new_side_data_from_buf(out, @@ -2882,7 +2882,7 @@ static int set_side_data(HEVCContext *s) unreg->buf_ref[i] = NULL; } } - s->sei.unregistered.nb_buf_ref = 0; + s->sei.common.unregistered.nb_buf_ref = 0; if (s->sei.timecode.present) { uint32_t *tc_sd; @@ -2910,8 +2910,8 @@ static int set_side_data(HEVCContext *s) s->sei.timecode.num_clock_ts = 0; } - if (s->sei.film_grain_characteristics.present) { - HEVCSEIFilmGrainCharacteristics *fgc = &s->sei.film_grain_characteristics; + if (s->sei.common.film_grain_characteristics.present) { + H2645SEIFilmGrainCharacteristics *fgc = &s->sei.common.film_grain_characteristics; AVFilmGrainParams *fgp = av_film_grain_params_create_side_data(out); if (!fgp) return AVERROR(ENOMEM); @@ -2965,8 +2965,8 @@ static int set_side_data(HEVCContext *s) fgc->present = fgc->persistence_flag; } - if (s->sei.dynamic_hdr_plus.info) { - AVBufferRef *info_ref = av_buffer_ref(s->sei.dynamic_hdr_plus.info); + if (s->sei.common.dynamic_hdr_plus.info) { + AVBufferRef *info_ref = av_buffer_ref(s->sei.common.dynamic_hdr_plus.info); if (!info_ref) return AVERROR(ENOMEM); @@ -2987,8 +2987,8 @@ static int set_side_data(HEVCContext *s) if ((ret = ff_dovi_attach_side_data(&s->dovi_ctx, out)) < 0) return ret; - if (s->sei.dynamic_hdr_vivid.info) { - AVBufferRef *info_ref = av_buffer_ref(s->sei.dynamic_hdr_vivid.info); + if (s->sei.common.dynamic_hdr_vivid.info) { + AVBufferRef *info_ref = av_buffer_ref(s->sei.common.dynamic_hdr_vivid.info); if (!info_ref) return AVERROR(ENOMEM); @@ -3034,7 +3034,7 @@ static int hevc_frame_start(HEVCContext *s) s->ref->frame->key_frame = IS_IRAP(s); - s->ref->needs_fg = s->sei.film_grain_characteristics.present && + s->ref->needs_fg = s->sei.common.film_grain_characteristics.present && !(s->avctx->export_side_data & AV_CODEC_EXPORT_DATA_FILM_GRAIN) && !s->avctx->hwaccel; @@ -3745,30 +3745,32 @@ static int hevc_update_thread_context(AVCodecContext *dst, s->max_ra = INT_MAX; } - ret = av_buffer_replace(&s->sei.a53_caption.buf_ref, s0->sei.a53_caption.buf_ref); + ret = av_buffer_replace(&s->sei.common.a53_caption.buf_ref, + s0->sei.common.a53_caption.buf_ref); if (ret < 0) return ret; - for (i = 0; i < s->sei.unregistered.nb_buf_ref; i++) - av_buffer_unref(&s->sei.unregistered.buf_ref[i]); - s->sei.unregistered.nb_buf_ref = 0; + for (i = 0; i < s->sei.common.unregistered.nb_buf_ref; i++) + av_buffer_unref(&s->sei.common.unregistered.buf_ref[i]); + s->sei.common.unregistered.nb_buf_ref = 0; - if (s0->sei.unregistered.nb_buf_ref) { - ret = av_reallocp_array(&s->sei.unregistered.buf_ref, - s0->sei.unregistered.nb_buf_ref, - sizeof(*s->sei.unregistered.buf_ref)); + if (s0->sei.common.unregistered.nb_buf_ref) { + ret = av_reallocp_array(&s->sei.common.unregistered.buf_ref, + s0->sei.common.unregistered.nb_buf_ref, + sizeof(*s->sei.common.unregistered.buf_ref)); if (ret < 0) return ret; - for (i = 0; i < s0->sei.unregistered.nb_buf_ref; i++) { - s->sei.unregistered.buf_ref[i] = av_buffer_ref(s0->sei.unregistered.buf_ref[i]); - if (!s->sei.unregistered.buf_ref[i]) + for (i = 0; i < s0->sei.common.unregistered.nb_buf_ref; i++) { + s->sei.common.unregistered.buf_ref[i] = av_buffer_ref(s0->sei.common.unregistered.buf_ref[i]); + if (!s->sei.common.unregistered.buf_ref[i]) return AVERROR(ENOMEM); - s->sei.unregistered.nb_buf_ref++; + s->sei.common.unregistered.nb_buf_ref++; } } - ret = av_buffer_replace(&s->sei.dynamic_hdr_plus.info, s0->sei.dynamic_hdr_plus.info); + ret = av_buffer_replace(&s->sei.common.dynamic_hdr_plus.info, + s0->sei.common.dynamic_hdr_plus.info); if (ret < 0) return ret; @@ -3780,15 +3782,16 @@ static int hevc_update_thread_context(AVCodecContext *dst, if (ret < 0) return ret; - ret = av_buffer_replace(&s->sei.dynamic_hdr_vivid.info, s0->sei.dynamic_hdr_vivid.info); + ret = av_buffer_replace(&s->sei.common.dynamic_hdr_vivid.info, + s0->sei.common.dynamic_hdr_vivid.info); if (ret < 0) return ret; - s->sei.frame_packing = s0->sei.frame_packing; - s->sei.display_orientation = s0->sei.display_orientation; + s->sei.common.frame_packing = s0->sei.common.frame_packing; + s->sei.common.display_orientation = s0->sei.common.display_orientation; + s->sei.common.alternative_transfer = s0->sei.common.alternative_transfer; s->sei.mastering_display = s0->sei.mastering_display; s->sei.content_light = s0->sei.content_light; - s->sei.alternative_transfer = s0->sei.alternative_transfer; ret = export_stream_params_from_sei(s); if (ret < 0) From patchwork Sat Jul 2 22:21:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36603 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1883938pzh; Sat, 2 Jul 2022 15:23:12 -0700 (PDT) X-Google-Smtp-Source: AGRyM1udIHNhyxoBYoZai6dnEXO9Hs+D1g31KfEPkUT7bjsEJWQmDvSOQQSOLAD68VL61JXvga92 X-Received: by 2002:a17:906:9508:b0:726:9589:6da7 with SMTP id u8-20020a170906950800b0072695896da7mr7841420ejx.505.1656800592217; Sat, 02 Jul 2022 15:23:12 -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 c20-20020a05640227d400b00435c05a5304si4652504ede.11.2022.07.02.15.23.11; Sat, 02 Jul 2022 15:23:12 -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=@outlook.com header.s=selector1 header.b=j2gOkXIG; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DD00468B980; Sun, 3 Jul 2022 01:22:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073040.outbound.protection.outlook.com [40.92.73.40]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 92BA068B969 for ; Sun, 3 Jul 2022 01:22:37 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bQAankqRkDzUgjp7kl8kOuiXB1N11/2X5FiK/GRhRAHnnrkZo15kzJSp+gIoE1TuYBozIxGwIQKboCdgdp8Qx5AqCwiixFBWHluWVrzZMPa8/nUFxye5KZAbDuzXeUjPsYN4NnfgqRoR+JlVOstMMYLVDFXrBCwh8M23UQaUDCfu5S5xaENZ7YRAXq5xcVkk4qitDVY9GW+8Xh+oGN8nir78lyoXWn/XuksNLrZDsKy0Dyebs5HQ9TnxuRrSMF6Yctqv9GMW9L768aZ4IKgm109Cv+urf86u9GpsOXCCnFTXea53s6gUVtH9ylx00ky0tTIrCoCtabkMA672lZuKhA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=p+GcTMuH/CJAJlGha8CRq1bte/b8BEG1iUKS/csnNmw=; b=U74GoN/sc2Xj1ZGxvrQFGKoENCTUwEYr9Gd+sK7xYYhuGiTQvVV4UiI5Gv7LKOiwvvH5eSrlTCUJZQWfx3uBiZKliVjdfYqphrieHvhj7LFmO01u0Q3a3SLVYrC2uWfkVR+AdJ0oHHhQPkplwU+f31w+HOT1VjDmv/rJnxKc5NbE1i7iuSp5zniuzrFxlAFupAB905OTiiFwaxFHGWohERvP//4baA0xItEOpEO9t0Wg00Mnhvk4E9tVwKH86iYlDvYLoCKnDMvagQyRVxQKa7Lgl1YKLn1NaJ4Cay3asKGI9KhtEP9zrNvuHzF5j8oabtaPsEA/rSKjBy1kLT/YUA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=p+GcTMuH/CJAJlGha8CRq1bte/b8BEG1iUKS/csnNmw=; b=j2gOkXIG0ronvOI7jUQ7Pm367m7aQzNdmju8fuKk5D0J5AAgOYmHJXMZi2VOcL1AzzG8tMSqIKhTjRy68ulYBt2Phf+5/6CSHK0AEr+QbHtj5tcBnveFKu590Zt1oTFJ6vCCo20XuIbp3+fT+w1G9U+lk6O+sCUeKuuolXuBtwzIJSKcdqHEy9yxshArBZ12kCttco8Wk6ltAG0agbJImZhOXIZ7GfIixO0LdU7wrn1ZBNbxADH2xm51WiShAklq96JJrLwJl31MlEQ3W/k8kgY5YNpGrn5xQoxNIZLOI4H9rYdfhbK0GA7YW/hSZLFcnc/gPgvRVSTQRbQrycRZ/A== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4240.eurprd01.prod.exchangelabs.com (2603:10a6:803:6e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Sat, 2 Jul 2022 22:22:27 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:27 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:48 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [uSvfWLzNMQSjlaRcw3l4OR3wlVZAd1TH] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-7-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 69a880b7-2c0c-43b9-ccf1-08da5c79588c X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNXwBRntoGkOsgo00FNZK4OlFznSAQ7Bg0NY+SprOscU7c5b29d+WTA82nwZ5cztzydVaYVH9xiC/79Qw6pZIJoZdyd/Cpr3LpiEfsh6A7uFWrb1UrMcGA6v5rGS1qlV/batkMCZOp0xkOUWq/MpPfVEDPI3rJmRXG7zdsVuPYrvoFH0HPuyHg9LEw+yszGJEypLq/cws4hU6+Zs+85f0E2/L9Q7SbKncmc8WdBcHi5wWqzUNDZzhqf2KGFFh1G+FZguvcAWjh0wP2sYxx+FF/Lt6gCUBK2tvOBSwMNw6sQfTgZbEVA0umXH4N2VZ3nWivodoJfFWpgiykRC8QTfdnEMJjxUA/0rsAzCqQd2afgB7HlAJizEXI5Jwx8cpH9ntvAFh0dA1cGtGWfu0tTv8AkSC7scIcjpd1GXCgAji+cQqqFhYjEJm4Yf2Ng3DQDGwOnsN8rj6ebrWhCTmtVStrQAMgR54nezmyqhrjgPK/RMl6nzHPI3JusV4UItpDrBf+bCeJDW9X1FOmAFsP7YnX1u+2d1D+xB2GdY5R5OG/mcwtCqIicaVNJu0NrCV6wxJooo26MmHxAs3yfsBodObnabZjtJCDZyKR9gtEMvNZHRjPrM7AUinuFYKeCnmrHXQjP9OJo6uYibkdYsQhCqLFeMvO/AbahgrV1uJxIq1bv+vW9mrij4JPYh0+f6JN6inDTg++WL9FSO5YfigbtPX6daR66xgFRrq7E= X-MS-TrafficTypeDiagnostic: VI1PR01MB4240:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GdSAmUqOQb7uFgyiUktkYc2V4Ris4IK9Suzsrsy1f9Ha3Id+TL8N+5XIGy90dJhJE1aFYV125GWk4UpKGsQv0s9sXqEfKR+UG3ZfZQ9AyUSiz01rkT6V+bKj6vNFtaGidI3apNn9tOnt0/bLUJpuxqiKahFeD7G8tv/g95xqVwwgeIweonB3U6P791efWUJyIy7JipjAbBUAvg3AeiF4gYeUXkDGybKYFbyCGkMpZ25dVMng7PBEdx5fC8+X4V9d3Pp8Yu+nfMoFuU4QzyvLpDmR3bkV2BARQ7+XW5sA+mP2k3ptNBcR1pYzrbp7Z/hcARp81LvHnsek0T2PGW2s+wiLbTZnenvDTf2qFEwlDBxE/Egw8ap+JbybwlYCHsI9T5EqxloJmibUehn0L8EY/AKpx+L/nGfrbQPDJVFoGsCo3R02NhxLu6UWxT1rAZyXS4Lqly3vx+xz4og3nCTA1ilcRVp+izi+yh//POzDmK9pLoQ24fV4Uz1u9DHW4wZ1tt8yjQ5v84C/p0wshKSXmYbQy0mANnjqixmJjKtTs9azdzG+TEHBfsZqMNgFzj/lUbPXQYI7P51vVF3zXisOdFzx2B9Zo2c3Mx6XzifzD9srVxaumIw2EB24VdlWdmrdoXxzfc+x1QBF1BX0v6c0HQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: juYMoO+kLoa4VnFaSe+ipJAgOZF74e0/rJwYo5q9N4MBdoCnkxpq9oed5bGER0+XXaRL9FDuZzb6L7dWwbj0SVDPZMIv3CXPf8uq5n3dgzRvETwF+ul0mKXB6qx+N6v4LM0vDCbXli0VE/G1ytbT6mIgl1yuC0tRRTMgKsC2URGiCvWFXqIM70ufN3s4/mrA8DcnY+azw3N1qYlYjXjClSKdie6RYRc5rtZke6iUz4seTt1iomSq9UfRvKAJ3UeNT/LDv060CM3Oeb0S1plzh/BMgvAzANkERWK4XuiYQ89DianXFOksjFP+9tpRLe7ZX9vPyjpmA+wLbv6nakMbdOR+Q5oDnfKHd7h2QFlXn7rr6EoTKubGbOPb+OwIBwZBgMlbFYGLfMnTNLJ65S2R8eHsDd583DO8CNDBNkxcOq/qK0tb18N0/n6zcXOM8bDfoS8oRvNVUh8W591fZomK5rddKtH0J6OfVxnY4BXbN9DagE06R8mv36D2vU61K818tfS9YzwrpLJxaCK+kkeDGPzv39UjRhf/cwBvA1I1NC3Z+9K9Q78R+8l5wLRaoxT2GUldOXchceIFtVIscRPhJU9vbmpK7s9BIWcHfQBeBmjjwF3ooLy7ItwCtBg1cyrKIzNudtompm6y0I0kYrCkmTeuvwVF3LUK1Uwax/CxYH1TMGjUlQ2WMpyo2PlBiz/6uR1UiQZpsOFPYEYkCx1/3mk7+ZLfOv5bupQq0C/cFdhPt9fveeOxKo3ib2y/E43oJ0LzkkY8pDY1T/I0XY8S0f5yvwleZLCAo6PAz26DTu4DroKmLgCLtNqjAD1W5+A+tbbMFtecVOeOwlAwIYKN0xhOfKHLKPkc7PWEgLJetvDAHXdo6vHD/E5KFXREHZ09n1eW7Ksh1cCdV6qHy55wQdOU87iy3XTmrCiWYVtNV3CkZv/jXhbg+dP54D5v8RHSZLCPqgzb0cHngcCq4kq3jlwgmhy7RWZ0ipqKLypxmocmCMsrCn0jqJlGrNBg/dtFKVelTrQ0aqv25KhyD2GQaUT+Cz/YrX+xApPtQ5Ap/hmVcaomqs6yYwReBGEYB0Q+jT2e1AADoS2QOUgHqJ8BZ+cLVXfuraQCxvZqnhCEucn4YC0zAL9LA+s+oUdSTCWSZMM6ih4fWqNpRXO7vU+go8UkrQ+/V2JzuXXt4/tg4XJY6YFe96vcV2fxDyTevPCBshn3X2ywDX9jXmH1gcr+5UPPFDjCdpp9bB5nJF6/u/KFjgpPj19lmCUbUOhn+Wr+IAkkRnIhu1+BB7gcgazSUlP5tG6q/LapTvHCTsJNP6o= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 69a880b7-2c0c-43b9-ccf1-08da5c79588c X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:27.4986 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4240 Subject: [FFmpeg-devel] [PATCH 08/20] avcodec/h2645_sei: Factor updating H.2645 SEIs out 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: IieJLZamkqww Signed-off-by: Andreas Rheinhardt --- libavcodec/h2645_sei.c | 29 +++++++++++++++++++++++++++++ libavcodec/h2645_sei.h | 2 ++ libavcodec/h264_sei.h | 6 ++++++ libavcodec/h264_slice.c | 21 +-------------------- libavcodec/hevc_sei.h | 5 +++++ libavcodec/hevcdec.c | 22 +--------------------- 6 files changed, 44 insertions(+), 41 deletions(-) diff --git a/libavcodec/h2645_sei.c b/libavcodec/h2645_sei.c index 5ff62bfac1..21208fa920 100644 --- a/libavcodec/h2645_sei.c +++ b/libavcodec/h2645_sei.c @@ -389,3 +389,32 @@ int ff_h2645_sei_message_decode(H2645SEI *h, enum SEIType type, return FF_H2645_SEI_MESSAGE_UNHANDLED; } } + +int ff_h2645_sei_ctx_replace(H2645SEI *dst, const H2645SEI *src) +{ + int ret = av_buffer_replace(&dst->a53_caption.buf_ref, + src->a53_caption.buf_ref); + if (ret < 0) + return ret; + + for (unsigned i = 0; i < dst->unregistered.nb_buf_ref; i++) + av_buffer_unref(&dst->unregistered.buf_ref[i]); + dst->unregistered.nb_buf_ref = 0; + + if (src->unregistered.nb_buf_ref) { + ret = av_reallocp_array(&dst->unregistered.buf_ref, + src->unregistered.nb_buf_ref, + sizeof(*dst->unregistered.buf_ref)); + if (ret < 0) + return ret; + + for (unsigned i = 0; i < src->unregistered.nb_buf_ref; i++) { + dst->unregistered.buf_ref[i] = av_buffer_ref(src->unregistered.buf_ref[i]); + if (!dst->unregistered.buf_ref[i]) + return AVERROR(ENOMEM); + dst->unregistered.nb_buf_ref++; + } + } + + return 0; +} diff --git a/libavcodec/h2645_sei.h b/libavcodec/h2645_sei.h index 4128ff7940..e87a669b3e 100644 --- a/libavcodec/h2645_sei.h +++ b/libavcodec/h2645_sei.h @@ -130,4 +130,6 @@ int ff_h2645_sei_message_decode(H2645SEI *h, enum SEIType type, enum AVCodecID codec_id, GetBitContext *gb, GetByteContext *gbyte, void *logctx); +int ff_h2645_sei_ctx_replace(H2645SEI *dst, const H2645SEI *src); + #endif /* AVCODEC_H2645_SEI_H */ diff --git a/libavcodec/h264_sei.h b/libavcodec/h264_sei.h index 7a53d01ac5..003f427ac3 100644 --- a/libavcodec/h264_sei.h +++ b/libavcodec/h264_sei.h @@ -142,6 +142,12 @@ struct H264ParamSets; int ff_h264_sei_decode(H264SEIContext *h, GetBitContext *gb, const struct H264ParamSets *ps, void *logctx); +static inline int ff_h264_sei_ctx_replace(H264SEIContext *dst, + const H264SEIContext *src) +{ + return ff_h2645_sei_ctx_replace(&dst->common, &src->common); +} + /** * Reset SEI values at the beginning of the frame. */ diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index a6d8d2bdac..fb7aed998b 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -433,29 +433,10 @@ int ff_h264_update_thread_context(AVCodecContext *dst, h->frame_recovered = h1->frame_recovered; - ret = av_buffer_replace(&h->sei.common.a53_caption.buf_ref, - h1->sei.common.a53_caption.buf_ref); + ret = ff_h264_sei_ctx_replace(&h->sei, &h1->sei); if (ret < 0) return ret; - for (i = 0; i < h->sei.common.unregistered.nb_buf_ref; i++) - av_buffer_unref(&h->sei.common.unregistered.buf_ref[i]); - h->sei.common.unregistered.nb_buf_ref = 0; - - if (h1->sei.common.unregistered.nb_buf_ref) { - ret = av_reallocp_array(&h->sei.common.unregistered.buf_ref, - h1->sei.common.unregistered.nb_buf_ref, - sizeof(*h->sei.common.unregistered.buf_ref)); - if (ret < 0) - return ret; - - for (i = 0; i < h1->sei.common.unregistered.nb_buf_ref; i++) { - h->sei.common.unregistered.buf_ref[i] = av_buffer_ref(h1->sei.common.unregistered.buf_ref[i]); - if (!h->sei.common.unregistered.buf_ref[i]) - return AVERROR(ENOMEM); - h->sei.common.unregistered.nb_buf_ref++; - } - } h->sei.common.unregistered.x264_build = h1->sei.common.unregistered.x264_build; if (!h->cur_pic_ptr) diff --git a/libavcodec/hevc_sei.h b/libavcodec/hevc_sei.h index 8ea0245802..2bb6b7e48b 100644 --- a/libavcodec/hevc_sei.h +++ b/libavcodec/hevc_sei.h @@ -107,6 +107,11 @@ struct HEVCParamSets; int ff_hevc_decode_nal_sei(GetBitContext *gb, void *logctx, HEVCSEI *s, const struct HEVCParamSets *ps, enum HEVCNALUnitType type); +static inline int ff_hevc_sei_ctx_replace(HEVCSEI *dst, const HEVCSEI *src) +{ + return ff_h2645_sei_ctx_replace(&dst->common, &src->common); +} + /** * Reset SEI values that are stored on the Context. * e.g. Caption data that was extracted during NAL diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 69e65482dd..698fb50a6c 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -3745,30 +3745,10 @@ static int hevc_update_thread_context(AVCodecContext *dst, s->max_ra = INT_MAX; } - ret = av_buffer_replace(&s->sei.common.a53_caption.buf_ref, - s0->sei.common.a53_caption.buf_ref); + ret = ff_h2645_sei_ctx_replace(&s->sei.common, &s0->sei.common); if (ret < 0) return ret; - for (i = 0; i < s->sei.common.unregistered.nb_buf_ref; i++) - av_buffer_unref(&s->sei.common.unregistered.buf_ref[i]); - s->sei.common.unregistered.nb_buf_ref = 0; - - if (s0->sei.common.unregistered.nb_buf_ref) { - ret = av_reallocp_array(&s->sei.common.unregistered.buf_ref, - s0->sei.common.unregistered.nb_buf_ref, - sizeof(*s->sei.common.unregistered.buf_ref)); - if (ret < 0) - return ret; - - for (i = 0; i < s0->sei.common.unregistered.nb_buf_ref; i++) { - s->sei.common.unregistered.buf_ref[i] = av_buffer_ref(s0->sei.common.unregistered.buf_ref[i]); - if (!s->sei.common.unregistered.buf_ref[i]) - return AVERROR(ENOMEM); - s->sei.common.unregistered.nb_buf_ref++; - } - } - ret = av_buffer_replace(&s->sei.common.dynamic_hdr_plus.info, s0->sei.common.dynamic_hdr_plus.info); if (ret < 0) From patchwork Sat Jul 2 22:21:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36604 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1883971pzh; Sat, 2 Jul 2022 15:23:21 -0700 (PDT) X-Google-Smtp-Source: AGRyM1slKvIiPvQ32j0YZrbrxaKC6hddlW1W4aEMDmudTyzvvVuIKFincncem7K7tezj9mvlXiFu X-Received: by 2002:a05:6402:3481:b0:435:b12d:a66d with SMTP id v1-20020a056402348100b00435b12da66dmr28276692edc.135.1656800601036; Sat, 02 Jul 2022 15:23:21 -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 co6-20020a0564020c0600b004357dec2beasi2399698edb.73.2022.07.02.15.23.20; Sat, 02 Jul 2022 15:23:21 -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=@outlook.com header.s=selector1 header.b=doVYVw78; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C299E68B978; Sun, 3 Jul 2022 01:22:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073040.outbound.protection.outlook.com [40.92.73.40]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C05D168B967 for ; Sun, 3 Jul 2022 01:22:37 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V4YFmRFDdANx82Nu5GdZh0Iq67s0sFGPbAroe3SRkUOzEMwQQ22uI0m9Pndq1xRie5CfWi8abIJSXMyLs3q9Ag/S/RW4XBMHYHZlWAJ01jM8DmjMxIFB6J3+B8q9WXG/LfaxX0RuW+IKzYaUnzqF3vFns4i3DD1bnYIotNljmFifeu2W11I2hHvtkAwlrMAvYakwpZq5vzXxNAOidgYP+mCRvVs3C9uOBFa0qyXQtbso3sT88CK9gxrofAdgxfOLIblirUidH8N102nyLm/W9w3WYW1e7q82wCGiWSRIrX+nFs5wTfkSP5asBYB6edppuruyK+8/KNiOmY7phA8YSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=OLyQzMdjrSjcYu7ygRHu1MqWgP2fTrodgpNOHr7PnO0=; b=XmwzEnslK/FtZrnJSAXBMUY2oqUIlLub1rH5CkFovlXyNIkgzQmY+N28+o9LXhe3sIjaNXIH85zcb6Nk0D4qQZXJkHY24DJCP9hqgd6j9iK/6+4tONtmTsbiYVODdbQPEPNHgm0j0gXFsgJ6rbVyTbSHoow2soHYoIL5Ow7ZTFTC4WMjaY1VyTalyIq7/vYYe97o4A8wRtFgqsoV3Dr259bMDywmcNHYqCthCohH81GNglETMGSCSUycAjQTAxDNTntJhMbDb/u7rVvVJFmcvjcjk+yzHTQzcKu1cqvm5Ow29lkmXXLjJZaIVKmbX6dY6d6K5ffDAxtwS8xr4BNxLw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OLyQzMdjrSjcYu7ygRHu1MqWgP2fTrodgpNOHr7PnO0=; b=doVYVw78n1T9AXqEAm28KTJJHaFfl9ux1qN0UmgXXhl/KTEXe5KsoVWWbtEX6+VfRZJ/RPAKI7ugaECNL4NFMbhUf0PbsezEVYVGkCplCcI4OFN+R4l7R4TPlK2M6jFz/OcDnynZBH+X8JPsCz0TCHs1NNo04LbDxXHCue8V102JQJO1QlnsAx3cRMbU3iEeNHCtIGM5YsopAQi9TtT5o1yn+4GYRCWeE9BUs1TULpS+sMKb8fuCV8GDu6VnmMbE7vYLTVR8HxK32JXy10VtNwLhkzOiVQRuqw4AP1Tnrye3hMSo+VpbqcV6HG384c4I7YyEh5W1fkHMdObC4jhsWw== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4240.eurprd01.prod.exchangelabs.com (2603:10a6:803:6e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Sat, 2 Jul 2022 22:22:28 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:28 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:49 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [dCgovCDH4rqtR5L9ntciwSKIGp7y7zP7] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-8-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 107355d8-a6a2-4ea1-3ac9-08da5c795953 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNXwBRntoGkOsgo00FNZK4OlhmlsvD377a7ApZC5pSPcG+iFLMaOSMG1rL/51EdJtEL4sRx/PFMNu9SDm2cQrPJItZh2Dhnj2AVtgYN3nXC+zrHtC/8wDyfVz3KXe5AzMmdPw1exxFvWlmVMhrOL7mIS/2m2SzrKUKdMAtep6GCsqHSfW5ksOXD3W91v+JzekSMXfzsLZpSu0QcXZMQh66CmGmSYegxV6WbwHNzGrxxGmMlAT1q9UIKGWyZiODlntci4jFtMzjlA94rVpSbFmiZkeMRTo+BfjqTEW9iYh/don+NKkMKbJX3AmzHrc6BWS1Ix63da/8/6B/o//f7+3ppji8EqguCXLPzsN4imubuWfgrS/WZVOJ6g+yU1sZeoIv0H5dsPiD0aTVHbYi6/X7DTDbDKsoV7zFumZLSdJg7kodovaYUQLwXd/sWYU38HWqN2bVcfSMUcfZuThm/z4CqxMx81UPu2cXkSU03gCXF7rxsRD9LbAfQfO1xQtMo7frsowuKKdez8nS2RdIvhHBxL65frhZri1DnED194qCB3GkR8WxqYKky0trDV/MEyMa+kuyyhRCGvOCMhGj0JbLIPkfh9PMy+MiNmD3nmhh3uaZXCmd0LyXGlZpbjsMnhrXRtoNZeU+4EMRTt4j1iPrIDNa/k3ByC9dDbnr15ipQ9kBI/KnWeUSzjX0pYpVgA7ilLtMB5+s46BR/OKEvCjXtvPKACMGWcNsE= X-MS-TrafficTypeDiagnostic: VI1PR01MB4240:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ZiIHfSz6thDtGo/Tu4AXOt1whYU1FFyvgFdvSHCAMfK5t/pu//vV2K/ApBw4YjHR1BXkmfJJjf9rSII2MTENfb79HTQm7mKGy6lPzB7oZWMn3asc+be216XIWwqAudz+079iQl7Oed67QhYyRllxo6Tqf33KVyA7l1MWjwp4lyq670znEo2SImvoGQzLLVuw5bPVjtANxP8X9xwN/adFQN61jvjRCFtxUeukJqXk415bKgr2uRkTXiBWu5zkxS94Bj8YYu98Wi42i2a8bsC+eEz8mGGSRWvK1t2WZOeUgTbQR6Qk6+epjQSXOwIap9rmxo9wP7SjL4OOWxyKcGmI5ZrID/khi6gsBJfDpnoLPiKyzRFCeYSuMHS75KNQiQ7dfKYspXJUDca3YuRb/A/mn7THe/bxdD2M8n0XNP1Z05nEkyR7i7SikYllHi8aIdhQ6arJPH1VZeHH/iaAbtHXnzIwB9G/RE1DnDSenO5P8vJapCSfGc2f8RAex9L2UhgYH223yzqpHM2xHPtG3Vwd2x34lUkQSW9+LX9fiZX4OM8a/tJLbu1cnWat2565lGsVLCrv3q547jKbpaFULC6eLgHLdGeDFpHcZx7//FoEU9Od6yzPJThLgKhietZyRzeowp3LmXwTyhDDWjhUt0TTvg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: wURESCdtpjUXzWl6jPOQTOnylBmuy9IPYDinaPGe14evj8H0LLtWGRekFOuLQEayZd7QGWyxLdwRolw91BIiZaVO9eoTejAxWhMAB0eXUK/mdhCfq5wAaxXhw/5dQoHXeaYr4Onnir0Et9yCeZVDRXb3fObpiDCGKk/e5OUHEDC57le4fkGMC5KS9f6ONys3hPTqDjoR/Yxl86htKnXRoQHSySic4nrgnNjzR2bPioV6qqg3my+z6m1GHS2o0BH65uXORrWUAZcHrw6zJCM8QeS2nyxTBh+rBOjXNxZYFqBq670g/K2JhVIt6gibH7gpWZeiuk2VyUQ2rezFbhNufaB/mpTBIcU9YgAmNy5r5ak4DBC6/mwXOHyfMvA/9IOsOfJnJwE/F9lhiR0SiJGOPwjVH2n/PZBfc1yrJ1JCXSJHV50Z0BfdcMrTExUp9shrScKacTXY7+bAHK2cLrDYDkSznU/Z2Ttt5k+ETAgfDWefQLpNMXMV0jA3KAcveIeB8QLlFW9bk2p/My4mSLu4PybMMg4C83an9DDKuY0vPrmfBwclKLr2UdH7u/vNDYd2k+ju2k65nFJHwPfiZ+EAq1NCB2aSe2N2BHMoTgYUIBvsBykLSMMskUZrj55uvHjlQrvLaUTDSFyIiMzetAP5QVtJPglRfr8ha1jX43UkciLYBQ7z+jc+hbr7tyAn/ve2EMEt4hbuqE78s1Fy6iNRa5kltbG3p6U6pBCeq1cDUKkKpPvYP/KaYWZ/5PyxLGEPe1ZeP7rGLvSsLDC0HgTN+zhT69TdD1vyq2jkaQpcMOLp6DrDWDwpxP8M9KWYhDPzBYYXElGTri4XR7JUAHPhSeq1uKhx6F01sKlG6thIvRfcdbn9STr7iGyLsb4EGnQJahiTqQdRmkxgJfWY7lUeX4wS5ywz6WkIl3tusSPfkgoDac8mPhnUAwpsoO0rDie/ek9YbrVQQv3CA+qJILks7SkB8bSIjYeW1KTvGPJxZlFN/QTZRvZEUecabRUT6Vo7PNhpkOJQcqOf/PmoglQn2Sfe6Io8saDj4VkvsbuGFXsWvxAyn++Lm9p9zWana0SckzGmpGINqMn5fBGO0Ci1BvanV4yttG9RTs//NpbDW/cqe8aw0zQ72sQj655rIM/6mJJUyFOUOi39W9e03PGDR+p2mnvJVwf6NG3dxuSmETlWf8bZtyQdtzmXpJyhJWOdRsrKSPK5gnokDGi9upr/VNaabqIOOAWYjsyXLjxCQNLfJZ2gUywtzHHoBOjogOiiyRVXdn72TD5yaMyrSA7ykikmBVBG3kdo4FZ/TXvyW0E= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 107355d8-a6a2-4ea1-3ac9-08da5c795953 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:28.8180 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4240 Subject: [FFmpeg-devel] [PATCH 09/20] avcodec/h2645_sei: Factor out freeing common SEI parts 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: gisTtOrsoGD5 This commit only factors out freeing the common SEI parts, not whether the fields indicating whether an SEI is present shall be reset. H.264 and HEVC differ in this regard (ff_h264_sei_uninit() really resets, whereas ff_hevc_reset_sei() only uninits.) and neither actually honours the persistency as prescribed by the relevant specs. Signed-off-by: Andreas Rheinhardt --- libavcodec/h2645_sei.c | 12 ++++++++++++ libavcodec/h2645_sei.h | 2 ++ libavcodec/h264_sei.c | 6 +----- libavcodec/hevc_sei.c | 12 ------------ libavcodec/hevc_sei.h | 7 +++++-- 5 files changed, 20 insertions(+), 19 deletions(-) diff --git a/libavcodec/h2645_sei.c b/libavcodec/h2645_sei.c index 21208fa920..6be3d97c92 100644 --- a/libavcodec/h2645_sei.c +++ b/libavcodec/h2645_sei.c @@ -418,3 +418,15 @@ int ff_h2645_sei_ctx_replace(H2645SEI *dst, const H2645SEI *src) return 0; } + +void ff_h2645_sei_reset(H2645SEI *s) +{ + av_buffer_unref(&s->a53_caption.buf_ref); + + for (int i = 0; i < s->unregistered.nb_buf_ref; i++) + av_buffer_unref(&s->unregistered.buf_ref[i]); + s->unregistered.nb_buf_ref = 0; + av_freep(&s->unregistered.buf_ref); + av_buffer_unref(&s->dynamic_hdr_plus.info); + av_buffer_unref(&s->dynamic_hdr_vivid.info); +} diff --git a/libavcodec/h2645_sei.h b/libavcodec/h2645_sei.h index e87a669b3e..3e088f3307 100644 --- a/libavcodec/h2645_sei.h +++ b/libavcodec/h2645_sei.h @@ -132,4 +132,6 @@ int ff_h2645_sei_message_decode(H2645SEI *h, enum SEIType type, int ff_h2645_sei_ctx_replace(H2645SEI *dst, const H2645SEI *src); +void ff_h2645_sei_reset(H2645SEI *s); + #endif /* AVCODEC_H2645_SEI_H */ diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c index c62aef9246..f11f8371f6 100644 --- a/libavcodec/h264_sei.c +++ b/libavcodec/h264_sei.c @@ -59,11 +59,7 @@ void ff_h264_sei_uninit(H264SEIContext *h) h->common.display_orientation.present = 0; h->common.afd.present = 0; - av_buffer_unref(&h->common.a53_caption.buf_ref); - for (int i = 0; i < h->common.unregistered.nb_buf_ref; i++) - av_buffer_unref(&h->common.unregistered.buf_ref[i]); - h->common.unregistered.nb_buf_ref = 0; - av_freep(&h->common.unregistered.buf_ref); + ff_h2645_sei_reset(&h->common); } int ff_h264_sei_process_picture_timing(H264SEIPictureTiming *h, const SPS *sps, diff --git a/libavcodec/hevc_sei.c b/libavcodec/hevc_sei.c index b0a4a8b035..3c6bde1b62 100644 --- a/libavcodec/hevc_sei.c +++ b/libavcodec/hevc_sei.c @@ -292,15 +292,3 @@ int ff_hevc_decode_nal_sei(GetBitContext *gb, void *logctx, HEVCSEI *s, } while (bytestream2_get_bytes_left(&gbyte) > 0); return 1; } - -void ff_hevc_reset_sei(HEVCSEI *s) -{ - av_buffer_unref(&s->common.a53_caption.buf_ref); - - for (int i = 0; i < s->common.unregistered.nb_buf_ref; i++) - av_buffer_unref(&s->common.unregistered.buf_ref[i]); - s->common.unregistered.nb_buf_ref = 0; - av_freep(&s->common.unregistered.buf_ref); - av_buffer_unref(&s->common.dynamic_hdr_plus.info); - av_buffer_unref(&s->common.dynamic_hdr_vivid.info); -} diff --git a/libavcodec/hevc_sei.h b/libavcodec/hevc_sei.h index 2bb6b7e48b..4189f5e6f7 100644 --- a/libavcodec/hevc_sei.h +++ b/libavcodec/hevc_sei.h @@ -117,8 +117,11 @@ static inline int ff_hevc_sei_ctx_replace(HEVCSEI *dst, const HEVCSEI *src) * e.g. Caption data that was extracted during NAL * parsing. * - * @param s HEVCContext. + * @param sei HEVCSEI. */ -void ff_hevc_reset_sei(HEVCSEI *s); +static inline void ff_hevc_reset_sei(HEVCSEI *sei) +{ + ff_h2645_sei_reset(&sei->common); +} #endif /* AVCODEC_HEVC_SEI_H */ From patchwork Sat Jul 2 22:21:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36605 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1884032pzh; Sat, 2 Jul 2022 15:23:30 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tItbUiz0KryuoGkpKEHlpi0mMunBxYzbwMA+ywTSRkjC4F54MGbVSAWDiF7IUSQUg99u4A X-Received: by 2002:a05:6402:149:b0:431:7dde:9b59 with SMTP id s9-20020a056402014900b004317dde9b59mr27964579edu.339.1656800610387; Sat, 02 Jul 2022 15:23:30 -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 l2-20020a1709067d4200b0070f8f93e1f5si9230834ejp.306.2022.07.02.15.23.29; Sat, 02 Jul 2022 15:23:30 -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=@outlook.com header.s=selector1 header.b=QYKjpK8I; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A98B268B979; Sun, 3 Jul 2022 01:22:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073040.outbound.protection.outlook.com [40.92.73.40]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EE18E68B967 for ; Sun, 3 Jul 2022 01:22:37 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NxWaxz9HvMAWm6FYAIMaNJpHcQqv/2W3RWUpHslgCCQZQGX05BLLl+aDVnEdEx6uf4ULToyRKM+oPT/53Ha2MdaCqBmWdn7f08206frIL3z7W/s/KOl7fo5WEq3opwqOxQ6yEIQ7CXEP/heeUK3A7tEx/NZqKBU1/828s/zuzgKqlmWKH3hNwN+YHznr9V22zeltr/F95aF0BmFOWQFFRE2tYsA6emXhQFvdnnncKFfjyPO3daw3zN2eCQxeVa92V7hHzPt/tALeZvWzbeQK9xD5SNihWxV/NMr/VTQXY1u+UVtnEBZpnQp+pyIqnFA/WnMUakJHKTMNPsyEOvQ5nw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7ZG0MzNvJSxXIFg4Ex6XKTwOfrW8xxtlzUuMmMV0KJg=; b=LOnys0xXGT4doZjZHoD5W9Au3JrDS241ay42Pd63MH8mPVV3p+eWP51R2FIpauws3rzTqCKR64PwGAQfqkXYz1H9Q9nTq9d03QZ7HbS1b+kVwYnzSpnncBCYzk5m96Z8n6G3U2f/sklJX318c0zHIDEkZynZUqzCxC75DfvGtJHSbP10RD0GCjdVGUiC+JHaxqJE7u/Wv/y7o1FIDOBJAUCgbjTu9WW9D6x41SvbsEMAZrupqEeiyMD5pPZS8U+gRLe/FN1njkumAH4PbJc8UviQkmkX3c4ClwRBuSGxRovl2PXJfDPZuwPA71b3EH8LzFkAJjgIE7ozFOh2aiyJZg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7ZG0MzNvJSxXIFg4Ex6XKTwOfrW8xxtlzUuMmMV0KJg=; b=QYKjpK8ITaSC4S0zemuDSlD+K16cJ+AhRJsu3v9o/HQGpQ5lF98qW+k1J/by2zi5OADA4dAJJ0d8bwP9Cpqkw+32WqojMC6uqvigawzz7VCEKSppRVAeUBkoJDjoh4nv5HJpOvNsrwhPEobi7eArUh91CL2bXNVhYmhAreXvgL3HvpFQTNseyGAPGRtLbbZZdEKyDxEcHpmHCdR6NLjKI6HLySUBaS6Q5FGrdpgiPhhC9qe8X7kZboQAnhv/SS9oGGl1UZkPwe2/q2emTd7bmFtaaPbcSY9hmld8FEDuIfWJ6t3e83YGr03rbkkMhwpYSf+MuLrB7s6xX88TvUvUeA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4240.eurprd01.prod.exchangelabs.com (2603:10a6:803:6e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Sat, 2 Jul 2022 22:22:30 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:30 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:50 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [vfBywwOTVCXg3c8r233b14f3ZINkJO77] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-9-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 64666170-23e3-4bd8-ab80-08da5c795a06 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNXwBRntoGkOsgo00FNZK4OlFCetl+b8JgTRaeH+xKC9sZpy5ulDBA3dbjw01QdLT6bqa8OSuIUyRrm+SDq7/Uq+cyWf6Acpi3Yj4n82hXWbx97pPE5k9gCKzp36mSggui9Ykwnd/lFP+wro0boIs+2Yxabr3lhz2zd97f09LlFr+B9rFF5sRRGMzWhtmqMpswWfFiSL0KgtgZuoLLpxYZXtvsDb4euac407vnyFm+pKHMQN3D4IAo6zAIm4jWpeUu1DgqOepR8jjhtW3U2GP/7YNJq1mJxg0FfpG5/xtN3URMtHs6eaOOynjYPzS8ij1pCysIlZkWSsmVRl5FgS7iDvhHTL6+pUrv6z0Ylufki3HRG1d0DvEUselR4hLGLjTIEzSOAppC+0Qoh5rTMBfbIxkTEC3nmqQhgOq4r8glImUWZpRa0lx8X2KpQP9jfsge7Ybfq5M9AzUpN2dToGgdsDKH1Tl1bUx78yp2fGPAHJdPE6Jp01re8uEMemymXxASVdi2ba/SujS0EoREEY7yRMCVcGqp5F/g8Opu0+0GycEK8NtRtTZf2DvcBJl57Z7OQUfilFSa6FtEcqz2BmAc9CJTGx1pFIyyyoQRoquE55D/QVIdksh5Aloez5Z83cx9ObsRz70SjDCvlE4+Qz+BNsMFxiJi2aoL0FD6atzQIUdeGNuogPAi1ZoELm+tsPd3BdJi+qnxlRjdZC4BGPjaMPqqB3nEzLm8Q= X-MS-TrafficTypeDiagnostic: VI1PR01MB4240:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GnE0YwJwAYu9j9lDWmduoo6G5L5jc3guf3mRCxLu9V3khRiYl9Y2/ygwbXD3WXxZXJ5iqfyvsCBbrd2fMp5ezHRA9Y6pHJNIa/WJYfA9tkCWDY6Pyf2PeFgbk4hpgLo07OPcqbpufk2MiwYMO99tHv3YTK1+U/5fYj0yjeKueFD1MT59705izjtVLf9n1zJMTveL0G2wp4bnIkOk9gwBnSPs3fdj5Pqiads+4jvPpb28yKnZoXi4oweRQyt2I/ptkICbmSJcA81YvRHARI+xn95Y3Z+uqOLqVNWGOwW34S5/dK6+QZ+UV0qz3fEyulDaWqt9XHZwbq2qSouEZ7h3Qcc8SBnJ5UOCfCuaREKSJqZRIzy/NeDeuTb+6OXshqEhdsjo3afBUf1OhG7Hw9ud5sw8/OgCnf4HB2DZGdnaAhW03l81ItTy7mfQ3ZImHz5qHiJcJQtbzUUbPaXO+MxadVS0X/aRfCV3eu96gcf7wNRr+PO6gJJCMeQ2rDQ6r11tr06SoCodjTHeZvpt7fux5Yl12pqF/LUwUt1jP2hKp/aVb4rmdTVkrTJGBh3nJzKQ4Oo23WKtiriHLQl/wUiJGyTZ3NqTKM8pjGgyxPYbMXuw70VbkKnUbkoEOBJ6O1RHHHFLs313H2Wqx8Bjj+7iqg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uXy4u6xFYydLr2EFHqz4pH+pk9iTGNU+L7EWu2esFztBrL0LyQmsXV3y4TOwLLv8HwZ8UsoUoV8QXY+82G0iErDTgN8j3po1FratUsJGAycF4TOX6WOZzDbYjJigfAilAPADzarb6u12TvE//pFXxfVqr+9ogSPoly+0x+t5juqaB/2nm/2tSpBB5WjXbQ0vonT2SQDSb5bppKsfB+ckqoO5ffsjxUIoqeJcQyq9ADjkknRZQ5uMlrjdhebLyu17CcGKM2m8SlwG6F0Y7iMqjWaCJMwpvkmgOBD3I3jqwDRabA37NORLqd6WNQcdNVl1l0sCKzmFYFhRTRwKzo1s2qevKQUaoypHNR5ZRvwe0jhAvRhnWsKk7736oyK6uD7rIWKzCGuVMyXEXTYE5FMFE4eHNVztXmJds80WbYqP/DHE7Cp7lDqpnm3DZ5RcqRGI/knAlqzoL8YicLeHgQjeVx5SXXZTIfuxTjw6l9NT51Aegj+CSOANvnEv/TlmUj/wHFe3oPlZCb3qATKlXqAt8SpcWT135+EwiJD91hKdP6NB/7N8zueSbUun23uQGYNhM7boIuXGTHtUcRflTvNK4SpoFn4m7pdy7JwzJttenjPt3jMA1bjLIky+kd1S1zT/qUV+keBG+KcBpvQMvTwO91lz2GJaRYtlTxuN74BWsVikwQ6ZBIAAoC57aQ/W67KPrb278cmlCIX4pOdXDjyf+AbKzCyr5lTzDmkHOB5PT7gN4H5eBpG1rdtuw2g/sEiJBa8YVQdxvgByE9jTFGTIdt9rdKqZxQsAZP/bb/0aJgo72aM7MI+HRaiROqPPve9uXdXXRgJNMH7BRo8nqIzhXMqU/TtpY43P4BUjC3t2CoieVNWFLNf0vkuVSke9zyrxP1YKdzFdPYzxeJsO6g/2wpfwhUNFPHVHi4Jo3vr2qFkX5RSa90YSjyWU6jontAHzwdQdvY8SR08LRil7TW8rzdFLCwAOPWOLXVBglmhb6gznMd3ZVJEvIqwATSeemL/yIzrHMLZkbl6Z2Nz8SjjKean0fuLeTJ/VtzTWQrZ1ie75658e6DDgxHXIPC/Rv78xP8j25DEesIMawf3Kyb64vHyXz6V/ku62teA5/i0a3orKDRPXC9ZDY+0e9tWVk6Y41SSC2y46KgC5WU64l65/puoHmULSSnqI4tuizzS2EmL2BL745EqBWPsoMlbszWf70sJXJn5lAacxXTuo7ZmzfIgUJGhCTr2AwwNlXK/iaYUV9Vk3rkIvxNOoutIm4PAlN/06Qh4tkesGtcR2kCCBk6o6Zp7S+Nt4x+POzhRNNTE= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 64666170-23e3-4bd8-ab80-08da5c795a06 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:30.0210 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4240 Subject: [FFmpeg-devel] [PATCH 10/20] avcodec/h2645_sei: Factor out applying SEIs to frames 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Z6q/sIdtg/0D Signed-off-by: Andreas Rheinhardt --- libavcodec/h2645_sei.c | 57 +++++++++++++++++++++++++++++++++++++++++ libavcodec/h2645_sei.h | 4 +++ libavcodec/h264_slice.c | 53 +++----------------------------------- libavcodec/hevcdec.c | 51 +++--------------------------------- 4 files changed, 68 insertions(+), 97 deletions(-) diff --git a/libavcodec/h2645_sei.c b/libavcodec/h2645_sei.c index 6be3d97c92..6c7a6ea291 100644 --- a/libavcodec/h2645_sei.c +++ b/libavcodec/h2645_sei.c @@ -419,6 +419,63 @@ int ff_h2645_sei_ctx_replace(H2645SEI *dst, const H2645SEI *src) return 0; } +int ff_h2645_sei_to_frame(AVFrame *frame, H2645SEI *sei, + enum AVCodecID codec_id, + AVCodecContext *avctx) +{ + if (sei->display_orientation.present && + (sei->display_orientation.anticlockwise_rotation || + sei->display_orientation.hflip || + sei->display_orientation.vflip)) { + H2645SEIDisplayOrientation *o = &sei->display_orientation; + double angle = o->anticlockwise_rotation * 360 / (double) (1 << 16); + AVFrameSideData *rotation = av_frame_new_side_data(frame, + AV_FRAME_DATA_DISPLAYMATRIX, + sizeof(int32_t) * 9); + if (!rotation) + return AVERROR(ENOMEM); + + /* av_display_rotation_set() expects the angle in the clockwise + * direction, hence the first minus. + * The below code applies the flips after the rotation, yet + * the H.2645 specs require flipping to be applied first. + * Because of R O(phi) = O(-phi) R (where R is flipping around + * an arbitatry axis and O(phi) is the proper rotation by phi) + * we can create display matrices as desired by negating + * the degree once for every flip applied. */ + angle = -angle * (1 - 2 * !!o->hflip) * (1 - 2 * !!o->vflip); + av_display_rotation_set((int32_t *)rotation->data, angle); + av_display_matrix_flip((int32_t *)rotation->data, + o->hflip, o->vflip); + } + + if (sei->a53_caption.buf_ref) { + H2645SEIA53Caption *a53 = &sei->a53_caption; + AVFrameSideData *sd = av_frame_new_side_data_from_buf(frame, AV_FRAME_DATA_A53_CC, a53->buf_ref); + if (!sd) + av_buffer_unref(&a53->buf_ref); + a53->buf_ref = NULL; + if (avctx) + avctx->properties |= FF_CODEC_PROPERTY_CLOSED_CAPTIONS; + } + + for (unsigned i = 0; i < sei->unregistered.nb_buf_ref; i++) { + H2645SEIUnregistered *unreg = &sei->unregistered; + + if (unreg->buf_ref[i]) { + AVFrameSideData *sd = av_frame_new_side_data_from_buf(frame, + AV_FRAME_DATA_SEI_UNREGISTERED, + unreg->buf_ref[i]); + if (!sd) + av_buffer_unref(&unreg->buf_ref[i]); + unreg->buf_ref[i] = NULL; + } + } + sei->unregistered.nb_buf_ref = 0; + + return 0; +} + void ff_h2645_sei_reset(H2645SEI *s) { av_buffer_unref(&s->a53_caption.buf_ref); diff --git a/libavcodec/h2645_sei.h b/libavcodec/h2645_sei.h index 3e088f3307..4600caab29 100644 --- a/libavcodec/h2645_sei.h +++ b/libavcodec/h2645_sei.h @@ -134,4 +134,8 @@ int ff_h2645_sei_ctx_replace(H2645SEI *dst, const H2645SEI *src); void ff_h2645_sei_reset(H2645SEI *s); +int ff_h2645_sei_to_frame(AVFrame *frame, H2645SEI *sei, + enum AVCodecID codec_id, + AVCodecContext *avctx); + #endif /* AVCODEC_H2645_SEI_H */ diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index fb7aed998b..18b9ae5b09 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1144,6 +1144,7 @@ static int h264_export_frame_props(H264Context *h) const SPS *sps = h->ps.sps; H264Picture *cur = h->cur_pic_ptr; AVFrame *out = cur->f; + int ret; out->interlaced_frame = 0; out->repeat_pict = 0; @@ -1271,31 +1272,6 @@ static int h264_export_frame_props(H264Context *h) } } - if (h->sei.common.display_orientation.present && - (h->sei.common.display_orientation.anticlockwise_rotation || - h->sei.common.display_orientation.hflip || - h->sei.common.display_orientation.vflip)) { - H2645SEIDisplayOrientation *o = &h->sei.common.display_orientation; - double angle = o->anticlockwise_rotation * 360 / (double) (1 << 16); - AVFrameSideData *rotation = av_frame_new_side_data(out, - AV_FRAME_DATA_DISPLAYMATRIX, - sizeof(int32_t) * 9); - if (rotation) { - /* av_display_rotation_set() expects the angle in the clockwise - * direction, hence the first minus. - * The below code applies the flips after the rotation, yet - * the H.2645 specs require flipping to be applied first. - * Because of R O(phi) = O(-phi) R (where R is flipping around - * an arbitatry axis and O(phi) is the proper rotation by phi) - * we can create display matrices as desired by negating - * the degree once for every flip applied. */ - angle = -angle * (1 - 2 * !!o->hflip) * (1 - 2 * !!o->vflip); - av_display_rotation_set((int32_t *)rotation->data, angle); - av_display_matrix_flip((int32_t *)rotation->data, - o->hflip, o->vflip); - } - } - if (h->sei.common.afd.present) { AVFrameSideData *sd = av_frame_new_side_data(out, AV_FRAME_DATA_AFD, sizeof(uint8_t)); @@ -1306,30 +1282,9 @@ static int h264_export_frame_props(H264Context *h) } } - if (h->sei.common.a53_caption.buf_ref) { - H2645SEIA53Caption *a53 = &h->sei.common.a53_caption; - - AVFrameSideData *sd = av_frame_new_side_data_from_buf(out, AV_FRAME_DATA_A53_CC, a53->buf_ref); - if (!sd) - av_buffer_unref(&a53->buf_ref); - a53->buf_ref = NULL; - - h->avctx->properties |= FF_CODEC_PROPERTY_CLOSED_CAPTIONS; - } - - for (int i = 0; i < h->sei.common.unregistered.nb_buf_ref; i++) { - H2645SEIUnregistered *unreg = &h->sei.common.unregistered; - - if (unreg->buf_ref[i]) { - AVFrameSideData *sd = av_frame_new_side_data_from_buf(out, - AV_FRAME_DATA_SEI_UNREGISTERED, - unreg->buf_ref[i]); - if (!sd) - av_buffer_unref(&unreg->buf_ref[i]); - unreg->buf_ref[i] = NULL; - } - } - h->sei.common.unregistered.nb_buf_ref = 0; + ret = ff_h2645_sei_to_frame(out, &h->sei.common, AV_CODEC_ID_H264, h->avctx); + if (ret < 0) + return ret; if (h->sei.common.film_grain_characteristics.present) { H2645SEIFilmGrainCharacteristics *fgc = &h->sei.common.film_grain_characteristics; diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 698fb50a6c..465015069c 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -2766,32 +2766,6 @@ static int set_side_data(HEVCContext *s) } } - if (s->sei.common.display_orientation.present && - (s->sei.common.display_orientation.anticlockwise_rotation || - s->sei.common.display_orientation.hflip || s->sei.common.display_orientation.vflip)) { - double angle = s->sei.common.display_orientation.anticlockwise_rotation * 360 / (double) (1 << 16); - AVFrameSideData *rotation = av_frame_new_side_data(out, - AV_FRAME_DATA_DISPLAYMATRIX, - sizeof(int32_t) * 9); - if (!rotation) - return AVERROR(ENOMEM); - - /* av_display_rotation_set() expects the angle in the clockwise - * direction, hence the first minus. - * The below code applies the flips after the rotation, yet - * the H.2645 specs require flipping to be applied first. - * Because of R O(phi) = O(-phi) R (where R is flipping around - * an arbitatry axis and O(phi) is the proper rotation by phi) - * we can create display matrices as desired by negating - * the degree once for every flip applied. */ - angle = -angle * (1 - 2 * !!s->sei.common.display_orientation.hflip) - * (1 - 2 * !!s->sei.common.display_orientation.vflip); - av_display_rotation_set((int32_t *)rotation->data, angle); - av_display_matrix_flip((int32_t *)rotation->data, - s->sei.common.display_orientation.hflip, - s->sei.common.display_orientation.vflip); - } - // Decrement the mastering display flag when IRAP frame has no_rasl_output_flag=1 // so the side data persists for the entire coded video sequence. if (s->sei.mastering_display.present > 0 && @@ -2861,28 +2835,9 @@ static int set_side_data(HEVCContext *s) metadata->MaxCLL, metadata->MaxFALL); } - if (s->sei.common.a53_caption.buf_ref) { - H2645SEIA53Caption *a53 = &s->sei.common.a53_caption; - - AVFrameSideData *sd = av_frame_new_side_data_from_buf(out, AV_FRAME_DATA_A53_CC, a53->buf_ref); - if (!sd) - av_buffer_unref(&a53->buf_ref); - a53->buf_ref = NULL; - } - - for (int i = 0; i < s->sei.common.unregistered.nb_buf_ref; i++) { - H2645SEIUnregistered *unreg = &s->sei.common.unregistered; - - if (unreg->buf_ref[i]) { - AVFrameSideData *sd = av_frame_new_side_data_from_buf(out, - AV_FRAME_DATA_SEI_UNREGISTERED, - unreg->buf_ref[i]); - if (!sd) - av_buffer_unref(&unreg->buf_ref[i]); - unreg->buf_ref[i] = NULL; - } - } - s->sei.common.unregistered.nb_buf_ref = 0; + ret = ff_h2645_sei_to_frame(out, &s->sei.common, AV_CODEC_ID_HEVC, NULL); + if (ret < 0) + return ret; if (s->sei.timecode.present) { uint32_t *tc_sd; From patchwork Sat Jul 2 22:21:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36606 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1884069pzh; Sat, 2 Jul 2022 15:23:39 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vkqrXLlOa4k+rIFWV7YIR05nCJnBu0FGKvLE9bg3PSW8tQUk/Vf5BtOxtK96NmUpLsSZKx X-Received: by 2002:a17:906:ce:b0:718:bff8:58c3 with SMTP id 14-20020a17090600ce00b00718bff858c3mr20502944eji.512.1656800619722; Sat, 02 Jul 2022 15:23:39 -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 s6-20020a508dc6000000b004335d160f73si16970680edh.309.2022.07.02.15.23.39; Sat, 02 Jul 2022 15:23:39 -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=@outlook.com header.s=selector1 header.b="i/bNs81E"; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8F26468B995; Sun, 3 Jul 2022 01:22:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073040.outbound.protection.outlook.com [40.92.73.40]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3A3F468B967 for ; Sun, 3 Jul 2022 01:22:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lg3/6P71I1fIytqZzukrG3Qp08B851E5HY5fGesULiay5TYx9kmkKanO2p0ETSG+49SdsPkOvIPLQpRa6F7MWYa1Ymp7x+SFfUx6F818iViLdhjCeSnhWh1ESgFKvNSmFkjTJUcBkth+u+rGHi/h+alELHhLthvX5duVEIGrX3UKPhYCK8I5ICSRxGBe1/0UpRoouhfFxl7E6KhqtJePMHUFeU9xa1R0Fl03dUEqlXcv4UwaVwtXtFmiMwndICdq+kjFLmGH6kgvfIezi82JLCoaSJ6vu+zuf+i9xD3/a+lV7CNyTQeKBmDfSmCNhIzY1uyyK6KognwSxMvUom2SAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=eqq4NZWjmkXphrzTpbS12hdy6wtjyHlwPGczkCuysss=; b=DsEWmgwHcTU53izZX19/nBDbQcVD/h58suGaeedaXfUaJchdVRdzl9eVi0x1wy0Vzkc14Or3DLUd7wHRHcdLKo7/+sz6bA/FMdG0rLpTawZaEK5nrk8cPFIC7mrJm7e6rQo4fsiThKdhB7/wjMYnvixPVJMZ81gvQTN50iNiF4JUZVSZH63hQyj6RFegkDAUlna6ZdzQfT1+xAGfNNFbvsfAVq7D5jCMP44KEQMNPaKtaOq81h+OxOedCG7XyhnygAWof+E3tmEjlO8k7w4bNmNKtRDMLzJPD2BkwXPm1/H90pAHLR/7TbSRbCB0H6B6yKdw7B36H01GzSZk/Xd4ig== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eqq4NZWjmkXphrzTpbS12hdy6wtjyHlwPGczkCuysss=; b=i/bNs81EheV0c48BPrd4VwUY10X5ZhDSeedTXklCuka0CSGIl56qfwxrLXORAZyzIF0u2xpP3+C71HiT5MPkIYdZ39KFXDS1gGpMcsuv1ZkGrQx+5hRPsSUWALl+wBB0y9RbbhFVftUP08va5PBDPLCY12GHmpz1nebS9Gg2tpn8jc4iPMj+dfddyB7d813ofamhkwN4/HAXYa07PSRgWF8Rik7TEnsZFtO3yCTOLFeUKYwNK0TLSFA6f58snhS/+Dh5rAbnPoQL6++d5rSnf9xoonUeIdpr2jb7prpdM5WSooqjhxY/mT54QBcZ3r+DCBCSDddrzLOGEB8AVHgrjA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4240.eurprd01.prod.exchangelabs.com (2603:10a6:803:6e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Sat, 2 Jul 2022 22:22:31 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:31 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:51 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [xumxwWlVzq1huVtt+voiZIhkbJDTCb4R] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-10-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dfc72d0a-cd81-4ae1-d3c4-08da5c795ad1 X-MS-Exchange-SLBlob-MailProps: +LiGfBxqLEtZ2Se9LXW8/h2t+qO8GfncFScCK1vf++mJIYNQYHTUIQCSLCoJDE/4xmQAP3x96eKn/6z/ImZQmEopCXHA2f3zLo3Qebr2bMDxAi0SwIHVWWaZohBue84Lj74GjXCxPktv2kYj6GoDYLwd7Z59OYD3gYxauxzojP/rllcCAtFpnOp4AAmJKWV8T2YVZuh3a2a0kZRRFQDiZ2Rn+hASPYP0UYFYDhRN4dfCzA/tegiXabPmYu/4E4ckzeoP3bFursLEkvItg+kZsrSnlFw7Pp71/N6SB3H8sqOXt9cizDwiWcp2JO7wX3lCSgun/Iu46/d9TWW8KrJl4ZdmrXKteO36bcY0VrV19/3hLr4MCGPBpEX6u5vGoxZ0CxvUxX1mI8OoOJB3bKULjDNxaQTDlx0/rAkNGI0c/dM6XZsOOqBe7lNfIt8oZfOAP75H5TRbZYCSwZ8vB1lT7RyruYl7MsJ6eh+sdn5a86ronCwtC+knlhcVOTqTETnS0sEWpWkf0tpniphCCVsjn9/Y8vRs3T/zcSz3zg3G3dy5jVHtBjaboEgYatiaKKS2OmRzPtevyvp9jEHOGm/aQCjvaysBsn49wW6IIr65IbCKd64ncu+axridNiHtHm1V7Bf279Pz356aPn0O9uAJ1irATVgJ0mASZXXTHTr5RInJwZ/DCquifcAFiakeuVzgu/yl6zEo84pq9kPmPEm3vXA5pr0T6yUDnnmFysYkqNTG5CPLFCmfXeyDv2By6CfN85AjsvAiPatrNRtwMOailPjXFHMGwxx6 X-MS-TrafficTypeDiagnostic: VI1PR01MB4240:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DQNQq0LapsYF/SDvyTt+0/8Dib43x4Y2NmEeCsC3FhJXnCsAXnuCHY/hfRbrMDJD2Z/rPvg8ifDbLQPls59+80H03nO61srHi7849brcjO+/IrLB5ddHgyWAPfBTrzaNW7S3VTEco8VCrOuXw4dnxPx1DTeT18983YKyA+MPwLlH94yiA7LaStSJ29c/KUzIiOdRAb/BXheVxXvEesdwx7s0SwhuQCrSeMnf5kZeFUcI15ScnfgaWZsCPHc6Up4c2jWqSiPEkfLC5S8z1xguHnD/FlF6hFJkP/rWelW3O/3vqxkY3E2dQECAEvar4OoyRvFWjIcfdwDy22IwEoFNxQiGvCMd26pFE0c91BV+boX5IxnfNjY/76yxiDF6RzJ7Y+bJnMAF/1SAhwD3ME3P+Qar+OSFgF+hJMlDJeYzzkcBV5YZ9CLWOhy2LRlp9CyHfd8kCJIsvDl06kDgnffXxHgUGXV90xNIS+YZBebdcvlHiM4tnKQYpcnpk9OQ6Tv9FnBazos4SVaGRY1DgTRXpwqEiURUlxQXnPErJ0uOZ/6548nfTkNctn6lZgdwsFWDEH5i3Y82oKMqwoNniMKpkky3GqKjobhNG+1NjKwlZ/jmgQppFMZYLN2KnewkEJZVluJC/cm6MOYtBsZTqL+pHg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GvUtdIti70eh8mLhNHwWDe5uSr50zrwsejEFZr2rLhaZ1hfpckQQQsXTdLLn8oqMn5D8nvfmy5mVuN6X2jf8OtT1h1wf13O2JV4XJ0MoQdJ2b9l59fUNK5DiUgf+RcKFVk9lPfpi6o1MmWth+u4U02/dfRCO/uqDXY7dGw05FTqeDKIg8YWrtSd1yYS33YhyJuUkw8jgJMm3thkuJKomq0qv25Prn7uypcqA5rD4AM2HOXke00W1cckqwXI5+AMbGruaxkDaFqKUzzcvInW2crY1EkCjKwSPFNJvOJ0i5hnFQ0d698jTxock5B6wFxgdP3YvmhtY64VA21tkj7uwJC1T9uP3NBTjtQXkDaobn3vpAIUmZ8nRH9P6RX4+O91veghpGs76+HvgNHKDsyNkJY2eN64kYk5ba/JZCCem1nhrrGQOHiLqhqeMd6IQ3Locdr/gSFisJ7TPYVqCvOaRBEDz12ea5Fe25kkLBLJ7w0DagnM5V4OyZrGq2m/HGIijpUwTo4moD8jLheMba9IeSmdAHezCZdjZg0umE15S4RC35L+AXvcDRAGvRoqoe04eYz+sU1cs68M+Hk8/IWJ68wEFJGF3jlpmIneGmI5fCndnSSqj6XyMoGd1jhpEtlr2CLkz7L4z34+FJOcz6k6lOn8tzLDI3RHcUMQ2UuL6Jq+fpKVINx+xUfKoV3x3bcYJt49eDwyzRnp0W7F3XVKBmIbKmsA9J7X0InF6bndtoh+DlztnrZCYbpNh8Znc9IT1i62znCqEsTfQ9rnoMpNYanSKYDwc5Mxrj93mqsIPACKlupNklDbPCe/RLIxM79GQf6d3cKRAtgRSp9scvh4oIwDjHWDfcUY497fetWTrdysjmgWXrTB/d5GaaLqWpbZ/Js1Tul9w4vB2QUaS+n4azPqWryI2bEZL1gUJPfY3vep+TIBwEQgIuZ77XTl9w4KSujPBVkDY/1Ij+peqGhADILJqjqQWMUORHrj1ifsh+JUY2P1pPBZWlI1lfF1UIJ/vaVYZkhl1LsQRFXTZPVrl8D29+9PG9hf+cJb8cyHr6waJlkFl3UZoLeXpjPjqbJFZeY9lsG5JIuZw1PVQwFht9bgLt1Wo0wK33uIyFl+7s5wBQRwYhXbaOA6Em5s8N+zCKEl4Nn9Qhu33P3OFb21S7Wn7MnI0vfcH6vVgK5SVxIwuAZ+w23ETtfV92U1+ID+kHpPj7Yn3vdTB8zJWXHa7Ycc+IQdnj0Ur708cX4DCw929MhcK3L7ak6ZaKEhu8ClKXFe7Du9gVf1OxZJUyZl7UQ22BoLUPG41Totp9x+ryBE= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dfc72d0a-cd81-4ae1-d3c4-08da5c795ad1 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:31.3219 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4240 Subject: [FFmpeg-devel] [PATCH 11/20] avcodec/h264_sei, sei: Make H264_SEI_FpaType generic 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: S0O7D/bs2BPU Signed-off-by: Andreas Rheinhardt --- libavcodec/h2645_sei.h | 2 +- libavcodec/h264_sei.c | 14 +++++++------- libavcodec/h264_sei.h | 13 ------------- libavcodec/h264_slice.c | 16 ++++++++-------- libavcodec/sei.h | 17 +++++++++++++++++ 5 files changed, 33 insertions(+), 29 deletions(-) diff --git a/libavcodec/h2645_sei.h b/libavcodec/h2645_sei.h index 4600caab29..4713b89e1f 100644 --- a/libavcodec/h2645_sei.h +++ b/libavcodec/h2645_sei.h @@ -57,7 +57,7 @@ typedef struct H2645SEIFramePacking { int present; int arrangement_id; int arrangement_cancel_flag; ///< is previous arrangement canceled, -1 if never received (currently H.264 only) - int arrangement_type; + SEIFpaType arrangement_type; int arrangement_repetition_period; int content_interpretation_type; int quincunx_sampling_flag; diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c index f11f8371f6..668204959f 100644 --- a/libavcodec/h264_sei.c +++ b/libavcodec/h264_sei.c @@ -307,37 +307,37 @@ const char *ff_h264_sei_stereo_mode(const H2645SEIFramePacking *h) { if (h->arrangement_cancel_flag == 0) { switch (h->arrangement_type) { - case H264_SEI_FPA_TYPE_CHECKERBOARD: + case SEI_FPA_H264_TYPE_CHECKERBOARD: if (h->content_interpretation_type == 2) return "checkerboard_rl"; else return "checkerboard_lr"; - case H264_SEI_FPA_TYPE_INTERLEAVE_COLUMN: + case SEI_FPA_H264_TYPE_INTERLEAVE_COLUMN: if (h->content_interpretation_type == 2) return "col_interleaved_rl"; else return "col_interleaved_lr"; - case H264_SEI_FPA_TYPE_INTERLEAVE_ROW: + case SEI_FPA_H264_TYPE_INTERLEAVE_ROW: if (h->content_interpretation_type == 2) return "row_interleaved_rl"; else return "row_interleaved_lr"; - case H264_SEI_FPA_TYPE_SIDE_BY_SIDE: + case SEI_FPA_TYPE_SIDE_BY_SIDE: if (h->content_interpretation_type == 2) return "right_left"; else return "left_right"; - case H264_SEI_FPA_TYPE_TOP_BOTTOM: + case SEI_FPA_TYPE_TOP_BOTTOM: if (h->content_interpretation_type == 2) return "bottom_top"; else return "top_bottom"; - case H264_SEI_FPA_TYPE_INTERLEAVE_TEMPORAL: + case SEI_FPA_TYPE_INTERLEAVE_TEMPORAL: if (h->content_interpretation_type == 2) return "block_rl"; else return "block_lr"; - case H264_SEI_FPA_TYPE_2D: + case SEI_FPA_H264_TYPE_2D: default: return "mono"; } diff --git a/libavcodec/h264_sei.h b/libavcodec/h264_sei.h index 003f427ac3..bb9275e569 100644 --- a/libavcodec/h264_sei.h +++ b/libavcodec/h264_sei.h @@ -40,19 +40,6 @@ typedef enum { H264_SEI_PIC_STRUCT_FRAME_TRIPLING = 8 ///< 8: %frame tripling } H264_SEI_PicStructType; -/** - * frame_packing_arrangement types - */ -typedef enum { - H264_SEI_FPA_TYPE_CHECKERBOARD = 0, - H264_SEI_FPA_TYPE_INTERLEAVE_COLUMN = 1, - H264_SEI_FPA_TYPE_INTERLEAVE_ROW = 2, - H264_SEI_FPA_TYPE_SIDE_BY_SIDE = 3, - H264_SEI_FPA_TYPE_TOP_BOTTOM = 4, - H264_SEI_FPA_TYPE_INTERLEAVE_TEMPORAL = 5, - H264_SEI_FPA_TYPE_2D = 6, -} H264_SEI_FpaType; - typedef struct H264SEITimeCode { /* When not continuously receiving full timecodes, we have to reference the previous timecode received */ diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 18b9ae5b09..cd9f9bfa27 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1234,28 +1234,28 @@ static int h264_export_frame_props(H264Context *h) AVStereo3D *stereo = av_stereo3d_create_side_data(out); if (stereo) { switch (fp->arrangement_type) { - case H264_SEI_FPA_TYPE_CHECKERBOARD: + case SEI_FPA_H264_TYPE_CHECKERBOARD: stereo->type = AV_STEREO3D_CHECKERBOARD; break; - case H264_SEI_FPA_TYPE_INTERLEAVE_COLUMN: + case SEI_FPA_H264_TYPE_INTERLEAVE_COLUMN: stereo->type = AV_STEREO3D_COLUMNS; break; - case H264_SEI_FPA_TYPE_INTERLEAVE_ROW: + case SEI_FPA_H264_TYPE_INTERLEAVE_ROW: stereo->type = AV_STEREO3D_LINES; break; - case H264_SEI_FPA_TYPE_SIDE_BY_SIDE: + case SEI_FPA_TYPE_SIDE_BY_SIDE: if (fp->quincunx_sampling_flag) stereo->type = AV_STEREO3D_SIDEBYSIDE_QUINCUNX; else stereo->type = AV_STEREO3D_SIDEBYSIDE; break; - case H264_SEI_FPA_TYPE_TOP_BOTTOM: + case SEI_FPA_TYPE_TOP_BOTTOM: stereo->type = AV_STEREO3D_TOPBOTTOM; break; - case H264_SEI_FPA_TYPE_INTERLEAVE_TEMPORAL: + case SEI_FPA_TYPE_INTERLEAVE_TEMPORAL: stereo->type = AV_STEREO3D_FRAMESEQUENCE; break; - case H264_SEI_FPA_TYPE_2D: + case SEI_FPA_H264_TYPE_2D: stereo->type = AV_STEREO3D_2D; break; } @@ -1263,7 +1263,7 @@ static int h264_export_frame_props(H264Context *h) if (fp->content_interpretation_type == 2) stereo->flags = AV_STEREO3D_FLAG_INVERT; - if (fp->arrangement_type == H264_SEI_FPA_TYPE_INTERLEAVE_TEMPORAL) { + if (fp->arrangement_type == SEI_FPA_TYPE_INTERLEAVE_TEMPORAL) { if (fp->current_frame_is_frame0_flag) stereo->view = AV_STEREO3D_VIEW_LEFT; else diff --git a/libavcodec/sei.h b/libavcodec/sei.h index f13c37c308..f96b7b647b 100644 --- a/libavcodec/sei.h +++ b/libavcodec/sei.h @@ -137,4 +137,21 @@ enum SEIType { SEI_TYPE_SAMPLE_ASPECT_RATIO_INFO = 204, }; +/** + * frame_packing_arrangement types. H.265 and H.274 use only 3..5 + * with all the other values being reserved. H.264 uses a few more values + * that are prefixed with SEI_FPA_H264 in the enum below. + * + * The semantics of the common values are the same for all standards. + */ +typedef enum { + SEI_FPA_H264_TYPE_CHECKERBOARD = 0, + SEI_FPA_H264_TYPE_INTERLEAVE_COLUMN = 1, + SEI_FPA_H264_TYPE_INTERLEAVE_ROW = 2, + SEI_FPA_TYPE_SIDE_BY_SIDE = 3, + SEI_FPA_TYPE_TOP_BOTTOM = 4, + SEI_FPA_TYPE_INTERLEAVE_TEMPORAL = 5, + SEI_FPA_H264_TYPE_2D = 6, +} SEIFpaType; + #endif /* AVCODEC_SEI_H */ From patchwork Sat Jul 2 22:21:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36596 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1884114pzh; Sat, 2 Jul 2022 15:23:49 -0700 (PDT) X-Google-Smtp-Source: AGRyM1votluVqm54X0erHl3GSm+EcrAxBRI84OFZBDBmh2lb/Wh75KrjkARE4d/sZDtXZS0V3red X-Received: by 2002:a05:6402:d5c:b0:435:6e2f:245b with SMTP id ec28-20020a0564020d5c00b004356e2f245bmr28063848edb.145.1656800629757; Sat, 02 Jul 2022 15:23:49 -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 s15-20020a170906bc4f00b00722f0145649si28422440ejv.646.2022.07.02.15.23.48; Sat, 02 Jul 2022 15:23:49 -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=@outlook.com header.s=selector1 header.b=Svb63n1x; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 87A5368B99A; Sun, 3 Jul 2022 01:22:44 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073040.outbound.protection.outlook.com [40.92.73.40]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 67D4768B95F for ; Sun, 3 Jul 2022 01:22:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LLcXL6XGoXWIFt8+b5V+luB7bXimBNM1gj78IlxwT19caWt2pHMTqTuO5qnA3zigsHYHLMoDj1K4sllt+v9HcGhhnNiQLikImc00rF9LsG1hGCxgpkFLWZJ605WAUTROm9iHRy3bo4pm5A+voNaUMIw3FShiDNq+oFO/i8p9bOFPGjSqxprZaZXTC9jjHZrjPT2ld7zwdgioagCqp7LiapLP44Q24Q1Uvggis/vYTz25dfIx2eKG99AGGkuc6lWjswk1Q6xPrJUIbH727EEBNqmD/yH33nYzehIQCWlQAibgZ6gNOE5HH6poqVjoZ/5C12KuZxvpEojddN+te7JeXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=yQeNt5ijZMx/uXiOOyhrmePUdJBPitnP/QeE3pfMJ5E=; b=T2Uk6PXpMO4Ccv6USx8wkyTtAMLAXSrdh7Ah2oWECTMG3fTocVxu+EAyMwa1Ih/jNi9YJYEULsoGkFF2LxMrrrr4gTmZvjJxQFs8p6DYnTN7j4t2UfnHZltxoSPywpJp7Oqxw9/mEuksSW4x/p6141gpqZa6PGTp7uHncv7adXJ1fdqnUJHYzLcDGdPc66e32Eb04VaGtN/uLDq6qehzMRnXddLyQzMuAu71aO+Uapzm4VZlNEiVtYTYM0akTbcblXn1Z0m0kLzqLv3kCmBJ7qQjgQm1fFI6KEP9Ij9VUFOvBWWdoabEbylswsgSEEGaCXUKC6Qa+vh9m5njmUv4YQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yQeNt5ijZMx/uXiOOyhrmePUdJBPitnP/QeE3pfMJ5E=; b=Svb63n1x86gD2hiBMNk96GqVhAZpLBFf1f+ZevWsafhLNcahDOD1e/ywoAkIhx8M63CvRKHVXw0Or7S11YHWijx2gZJD1SjR6ERv35tT9cAdEEO0CWCkKeJ8CyL/3DkXIuEcsBioBMQjg9DjOhXRQEM7I3nN6KUYhV2lGmpBd/OdgD4RTdNYqLftmJYPQhHlolS18XVe6Oy2pPOnRdbW7z6PThks9bMHtOJwC/VSf4P3c7xVXwoGfStMLgorTMn8TU7NZIR/klolOpDGQGfD6nHGo5+uRLleD95q44ur9us02Ng+T4xDregTpmwOW4uiCco6iyO20pSYPefpdut6kg== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4240.eurprd01.prod.exchangelabs.com (2603:10a6:803:6e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Sat, 2 Jul 2022 22:22:32 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:32 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:52 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [PICWujEvHzdyeoX674uT0pjIc6XhnsYp] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-11-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2d8bc59b-41b9-46e2-10dd-08da5c795b79 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNXwBRntoGkOsgo00FNZK4OlaxYTvC7Pn2Zy2rM069wV1SEgCic3Imda5/D/GAbUpw/YJ15oWbC9B3bThPg2Y5g1DNxopQ5N6hcmm8bCODjdDCnG1FYYoKxpyloBz6QCDwmWsi8V9c4uay2B7pzRdu5xYmLDPyZtC6r4ggpRsiZPxpBq2gkk4ItEQAd+Uok+vEWwgBQiov4tOcRNBbpqdcPtFZjjArRD8hoa4TClXldZ9WxKYsJ6B3iB+rTob08WpFHZHpQ2K5lXiKSUWmQYOuWpc1sJNZPHQMcXpbSeAS1oRbBIZ37ZyXEr/xpzZkX2+JFEIF6pdB096KJELRGGTfPyB+o6iaSdj8+YDOB3ZRbLiDfkrsQmPtK4E3EKaivLdhbI8VI6Y14LdxK0bbYRIl1IhE3IYOuBfT4q9hSglwNjjUf/G/2EoxziPQxYZT3Ge9T1RJO3tBpbRSAY4iubiAX7a+EehCO+EPv2a2G/ZwdKqTG9DptV95QRCEJ3Wi7youzFYM8NY69yt9Xcr1pEYr7sGoKIHU71AfVpe1cx9//atKItiZLRgB44wiI4sJ9t4wb7yD+FKhuuI4vQrBbNAOOgfTc5vW9xmpX2Ot30MawIEVX2gHfCG78nTLSovtkfR5emi5xOt+oUrBDqvqzJ7qEMabyBVQ00xm6vGhXBkI53EUnVXZa3E00T0z5noefk2UvPQuehr2OseXrKWKlOrK1VJTR3C0w2ze8= X-MS-TrafficTypeDiagnostic: VI1PR01MB4240:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /60iWiiN7tkkE1RZGraguFRRdA7H6BBI6323vMt3Tk7McpACxtSh8Rz0Amx+9T/P5KCyBnrl91wflMF3EdRWAHsacXkrYGz+rIAsYyr/IVlNKhXsdfku4w1va7reUM3s40mt4K1zR7DDpZ9GdhFIF+2O0JR/YiDwP3Gp94hPv9Fu8IoEU0GJW5QngVWUuMm5UN3iS9lBzaV+4W/i8dxMutXbmmDLgxnXLLdfuBQM75pgDb4ZtDZEREbjcfaUsCd5VvI+m3t8lFsuhZqPv3ltbcYfgohaebooIj7YLVvHoPWanycla6WyOYyeBhcv1Jo5SPu1dvB0ybxFSSqf0QO/MDFpzdzHiVdQCyFAnF8dnmTkJ+b0sS+FTDVcyqckdnuizUXN5N3AP/s1oZY0ZSjnUp1ZfIUSwn7wKIB2nGmpmuQTBajAUAn7AmN5Jw4SGZrKqcKrTjHszdYn+Zf8uXQMxwft5ysd3gbru1nwQf8GPjgPrfegtGjLM9dNx9Y/+YHltRoerH+FViPMI7qOH3fZQXsMB8Dys3Nv4c37PSJ55i5oIX8ZoJb2KTD9D364Tb4t/LZqLUVNFfck2NByBl/0JJQprcRpTQIf7iVPm4eyQVHKjN25nQ22sdc4u2hxhvANfArjNZ6wdy8JVr30+hNOVA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: cfbdB8zU4ATjA9R3rzfE/fWpph3IAxZcFsu9WKT3QLXbJ7TxsXuAon7rJOLFx820gldUHxToK0qgfFmk3CXdLzg1Ysciw/aWoKcs+M3tYgXM5rmHBcOUN/yXAERRoocARYXXQ6r4WnG615Aitn+DCgC/iWMv2HVcbsfW8/b/44fbqzInmpoNJtudpuuV4ObZ1WUIKJLoD7HopTCUhU3Qkn0v04yXu2Q2cw9hOdER+5RM6B3qvxQuvJEPn822SvllZr5+Lwq1BfVbrTMC0ULk2NfSR6p3IyWhT3q5Vhm0tXxEVzQXkM8yu2qvYkXB86rf7NVjzYwhwBVJCCHFPCDXgWj5LmW6LXEcs00WCJc730S7oS/IXbMiKynOvsc0Ubue3nTzWxdgjwxUlvB5GB7KcC0wbFi/BIYkZKrT9Ucd0TkbdNyiEjDAkoKFzJhgNtz57PB+FPJ3i2YBh4F599lqDQdBWmUtq8GPeJwA3PF99JLPj/i1FVwDHlfLaprkBH1OzKkMvY1I/BjSEMm6EbVuP0uFtAOi0T6BQeMh3cRUiXctqR9v7jgZU1C4D5ACPb03q9m4clepeY1KMYzPAXbU0E84d+Jy2esoKy3B4JHsqsyD2ICnaBcNg18qwfYnZrzuhFW6GAzUbvzoQKfY6EmlsiyUvSbmEfwU7jcAgOqTZsnlhYqwSKNAlugNnqGqg/4Y+BisxQ11PalO7ETt4OJaaugww/57JnHRvx71xX5Ja1Jr83UzKUOV9E+lpAXt4Ntxd3P8eSl0a9aPGXXDEPDjp6V1IZoHG33jKc7RT04Mbnx2Ja9uJil0ZAhNZxAhz7bDvMCssoB8PwZLgr/eDMZsn8BDJ8pYPYp0mS+GWhxrCkfVe62/RCjRi8WrMsc8uvQAws8hlPFsAGUHvx/Cte2PTnKwGii83E2gub1jJjyHOR0QMrTDkQ7lD89oxxvVgE45EwIkpMdt9Aigd1Jfeq76DRMd5LlY1t0qCVifgyK9FMD8Zo1xGL1alFO+apluUjQssu4OQe5P1fvtOtkmt7ny0bpi+ZVVs8k+fkydYrPzuDWBh+7pA4CAvuYnV373uKJSnLrB+/731f+iHpZJLovxJE//YIWpLOJ8Fw9Y+qmJ+GHUpjiwRiG+RAb3/MJ/vrs4rVcu4qAkgLJqqUBPenWiNbOaFiC62hMPoZFZLo8RUQ8r13RNf6WNxB/5gIhMqE1ur56TWhcqKkPy0FBlXxDMzr1Cl797EeR2cbArcZV0TX9KzJA6/iW4gk7cAXijhvHAnwyxaPXQLJy5G1GeapQo6LMFsF7CviidrCzKj88YLnQ= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2d8bc59b-41b9-46e2-10dd-08da5c795b79 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:32.4654 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4240 Subject: [FFmpeg-devel] [PATCH 12/20] avcodec/h2645_sei: Attach AVStereo3D side data generically 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 3C+KWY9erWyb There are only slight differences between H.264 and HEVC for this side data, so it makes sense to share the code. Signed-off-by: Andreas Rheinhardt --- libavcodec/h2645_sei.c | 64 +++++++++++++++++++++++++++++++++++++++++ libavcodec/h264_slice.c | 47 ------------------------------ libavcodec/hevcdec.c | 36 ----------------------- 3 files changed, 64 insertions(+), 83 deletions(-) diff --git a/libavcodec/h2645_sei.c b/libavcodec/h2645_sei.c index 6c7a6ea291..3575846f9a 100644 --- a/libavcodec/h2645_sei.c +++ b/libavcodec/h2645_sei.c @@ -28,6 +28,7 @@ #include "libavutil/display.h" #include "libavutil/film_grain_params.h" #include "libavutil/pixdesc.h" +#include "libavutil/stereo3d.h" #include "atsc_a53.h" #include "avcodec.h" @@ -419,10 +420,73 @@ int ff_h2645_sei_ctx_replace(H2645SEI *dst, const H2645SEI *src) return 0; } +static int is_frame_packing_type_valid(SEIFpaType type, enum AVCodecID codec_id) +{ + if (IS_H264(codec_id)) + return type <= SEI_FPA_H264_TYPE_2D && + type >= SEI_FPA_H264_TYPE_CHECKERBOARD; + else + return type <= SEI_FPA_TYPE_INTERLEAVE_TEMPORAL && + type >= SEI_FPA_TYPE_SIDE_BY_SIDE; +} + int ff_h2645_sei_to_frame(AVFrame *frame, H2645SEI *sei, enum AVCodecID codec_id, AVCodecContext *avctx) { + H2645SEIFramePacking *fp = &sei->frame_packing; + + if (fp->present && + is_frame_packing_type_valid(fp->arrangement_type, codec_id) && + fp->content_interpretation_type > 0 && + fp->content_interpretation_type < 3) { + AVStereo3D *stereo = av_stereo3d_create_side_data(frame); + + if (!stereo) + return AVERROR(ENOMEM); + + switch (fp->arrangement_type) { +#if CONFIG_H264_SEI + case SEI_FPA_H264_TYPE_CHECKERBOARD: + stereo->type = AV_STEREO3D_CHECKERBOARD; + break; + case SEI_FPA_H264_TYPE_INTERLEAVE_COLUMN: + stereo->type = AV_STEREO3D_COLUMNS; + break; + case SEI_FPA_H264_TYPE_INTERLEAVE_ROW: + stereo->type = AV_STEREO3D_LINES; + break; +#endif + case SEI_FPA_TYPE_SIDE_BY_SIDE: + if (fp->quincunx_sampling_flag) + stereo->type = AV_STEREO3D_SIDEBYSIDE_QUINCUNX; + else + stereo->type = AV_STEREO3D_SIDEBYSIDE; + break; + case SEI_FPA_TYPE_TOP_BOTTOM: + stereo->type = AV_STEREO3D_TOPBOTTOM; + break; + case SEI_FPA_TYPE_INTERLEAVE_TEMPORAL: + stereo->type = AV_STEREO3D_FRAMESEQUENCE; + break; +#if CONFIG_H264_SEI + case SEI_FPA_H264_TYPE_2D: + stereo->type = AV_STEREO3D_2D; + break; +#endif + } + + if (fp->content_interpretation_type == 2) + stereo->flags = AV_STEREO3D_FLAG_INVERT; + + if (fp->arrangement_type == SEI_FPA_TYPE_INTERLEAVE_TEMPORAL) { + if (fp->current_frame_is_frame0_flag) + stereo->view = AV_STEREO3D_VIEW_LEFT; + else + stereo->view = AV_STEREO3D_VIEW_RIGHT; + } + } + if (sei->display_orientation.present && (sei->display_orientation.anticlockwise_rotation || sei->display_orientation.hflip || diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index cd9f9bfa27..cc8bec8d9b 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -31,7 +31,6 @@ #include "libavutil/display.h" #include "libavutil/film_grain_params.h" #include "libavutil/pixdesc.h" -#include "libavutil/stereo3d.h" #include "libavutil/timecode.h" #include "internal.h" #include "cabac.h" @@ -1226,52 +1225,6 @@ static int h264_export_frame_props(H264Context *h) } } - if (h->sei.common.frame_packing.present && - h->sei.common.frame_packing.arrangement_type <= 6 && - h->sei.common.frame_packing.content_interpretation_type > 0 && - h->sei.common.frame_packing.content_interpretation_type < 3) { - H2645SEIFramePacking *fp = &h->sei.common.frame_packing; - AVStereo3D *stereo = av_stereo3d_create_side_data(out); - if (stereo) { - switch (fp->arrangement_type) { - case SEI_FPA_H264_TYPE_CHECKERBOARD: - stereo->type = AV_STEREO3D_CHECKERBOARD; - break; - case SEI_FPA_H264_TYPE_INTERLEAVE_COLUMN: - stereo->type = AV_STEREO3D_COLUMNS; - break; - case SEI_FPA_H264_TYPE_INTERLEAVE_ROW: - stereo->type = AV_STEREO3D_LINES; - break; - case SEI_FPA_TYPE_SIDE_BY_SIDE: - if (fp->quincunx_sampling_flag) - stereo->type = AV_STEREO3D_SIDEBYSIDE_QUINCUNX; - else - stereo->type = AV_STEREO3D_SIDEBYSIDE; - break; - case SEI_FPA_TYPE_TOP_BOTTOM: - stereo->type = AV_STEREO3D_TOPBOTTOM; - break; - case SEI_FPA_TYPE_INTERLEAVE_TEMPORAL: - stereo->type = AV_STEREO3D_FRAMESEQUENCE; - break; - case SEI_FPA_H264_TYPE_2D: - stereo->type = AV_STEREO3D_2D; - break; - } - - if (fp->content_interpretation_type == 2) - stereo->flags = AV_STEREO3D_FLAG_INVERT; - - if (fp->arrangement_type == SEI_FPA_TYPE_INTERLEAVE_TEMPORAL) { - if (fp->current_frame_is_frame0_flag) - stereo->view = AV_STEREO3D_VIEW_LEFT; - else - stereo->view = AV_STEREO3D_VIEW_RIGHT; - } - } - } - if (h->sei.common.afd.present) { AVFrameSideData *sd = av_frame_new_side_data(out, AV_FRAME_DATA_AFD, sizeof(uint8_t)); diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 465015069c..fdb8de5b15 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -34,7 +34,6 @@ #include "libavutil/md5.h" #include "libavutil/opt.h" #include "libavutil/pixdesc.h" -#include "libavutil/stereo3d.h" #include "libavutil/timecode.h" #include "bswapdsp.h" @@ -2731,41 +2730,6 @@ static int set_side_data(HEVCContext *s) AVFrame *out = s->ref->frame; int ret; - if (s->sei.common.frame_packing.present && - s->sei.common.frame_packing.arrangement_type >= 3 && - s->sei.common.frame_packing.arrangement_type <= 5 && - s->sei.common.frame_packing.content_interpretation_type > 0 && - s->sei.common.frame_packing.content_interpretation_type < 3) { - AVStereo3D *stereo = av_stereo3d_create_side_data(out); - if (!stereo) - return AVERROR(ENOMEM); - - switch (s->sei.common.frame_packing.arrangement_type) { - case 3: - if (s->sei.common.frame_packing.quincunx_sampling_flag) - stereo->type = AV_STEREO3D_SIDEBYSIDE_QUINCUNX; - else - stereo->type = AV_STEREO3D_SIDEBYSIDE; - break; - case 4: - stereo->type = AV_STEREO3D_TOPBOTTOM; - break; - case 5: - stereo->type = AV_STEREO3D_FRAMESEQUENCE; - break; - } - - if (s->sei.common.frame_packing.content_interpretation_type == 2) - stereo->flags = AV_STEREO3D_FLAG_INVERT; - - if (s->sei.common.frame_packing.arrangement_type == 5) { - if (s->sei.common.frame_packing.current_frame_is_frame0_flag) - stereo->view = AV_STEREO3D_VIEW_LEFT; - else - stereo->view = AV_STEREO3D_VIEW_RIGHT; - } - } - // Decrement the mastering display flag when IRAP frame has no_rasl_output_flag=1 // so the side data persists for the entire coded video sequence. if (s->sei.mastering_display.present > 0 && From patchwork Sat Jul 2 22:21:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36607 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1884156pzh; Sat, 2 Jul 2022 15:23:59 -0700 (PDT) X-Google-Smtp-Source: AGRyM1su34Vp1Q9thanBNb4n60xPjnBwsy+uQgTigwMzcYZ2CZVV2S0vOi8+SDRNODnuQG5yvE/Q X-Received: by 2002:a05:6402:84f:b0:437:6293:d264 with SMTP id b15-20020a056402084f00b004376293d264mr27487458edz.317.1656800638847; Sat, 02 Jul 2022 15:23:58 -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 nb13-20020a1709071c8d00b006f3dae85820si34862003ejc.472.2022.07.02.15.23.58; Sat, 02 Jul 2022 15:23:58 -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=@outlook.com header.s=selector1 header.b=YOEBSsNg; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8B02468B97C; Sun, 3 Jul 2022 01:22:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073040.outbound.protection.outlook.com [40.92.73.40]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 951AD68B971 for ; Sun, 3 Jul 2022 01:22:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bMk+pSUBp3J38FybN9mAUDcTEI6yWJ/MPu19p8I5HryTGBg67NXPIGBkq1oKRG8fOMogagAIUJdk/2OoBF5PIRj27VrFjUI17wI4rfBmjWbZ57eFGX+UIQL+OOU5yZ7jjZlI9HeM0qaSTDrqBMkVT88IqS5OY4NISTvOh161PHYVvnhvUcyMUdz+v2YHgb5TbYxRzpG/VjxcKzj9hACyKGKWzZaHrTQ7l3iIFE0oKuRT5xLDHnds/0IZzxMC+gNQM2fuTIblepysiqFZ8GfXQ5TR5KPcnh9bVJGBNRdCacpj2jKpg0yIaVfwZSCns6TZNghTEmcvQsi4G/nKJEFXHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LQQhFunQtLthr+GwMb1ls60JcYBUya6BnsWRuSDMiZc=; b=L3rQkonMbuq29RgmXk7+B0a/iJNDRW+NH//pqkLmNxUepUqKGoxx4BLJeyDkWhxBp5TTobYFedbtu1QzdRBdbej7Y9LZDMMxricXmVVazsP9XczScbCL5NieZDkqb46WEqw9q/bbgv3qVhH8ol/TGS0WJFBXCvxRiE8BO4XEggcXMyjvXi/w/qvM90LDb3wZ9ZMxEnyV4+aKoE+VWr3ntTSr3UL4J2MQuGFFQSIXJhQ4ULclAKTQLiNUKCPy1++/mSzWRPtYt09zWdunjIcXAg4T8IbJOXusqAsVd1d+pWp+f2JjyGytboQ+6eEllFY24DVgCW8IQIqnbcYvGEkEOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LQQhFunQtLthr+GwMb1ls60JcYBUya6BnsWRuSDMiZc=; b=YOEBSsNgHF3XN6aZa5TB+heyQ1voF1oRHskpY3fefRQ854yS4OSAcTLw9a4NgN/U1Ph+nB00BAyY5zP/fIigAMG+iaXMwYSYyMlEVW8pn8f5Olol60BP4mLpeupXbOPh7LB4JdjfpccQil8tIzUvueKfO9DYevdQ3BuiDTklhptw8vDBTEvhdQVkUM3HnNLZM82yGxflLBaZJEHiY0ZaQn8RStl02/3WiiV8nr0ljlN+pcESqCfWygoAMQREmhp7DzOTcyV4E5JJe5HBVLiTCTBEiNVQO6miinkjNeOSTcCTevzuknvI37jNaAN2B/yphZDoI6+p3jDn0l2AsKK/oQ== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4240.eurprd01.prod.exchangelabs.com (2603:10a6:803:6e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Sat, 2 Jul 2022 22:22:33 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:33 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:53 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [qhVIRXMnWOdtASAeih8IXxbCD0WhGuvf] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-12-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 684f4472-1db3-4eef-d50d-08da5c795c0f X-MS-Exchange-SLBlob-MailProps: +LiGfBxqLEtZ2Se9LXW8/h2t+qO8GfncOOIeAidmvZPsqeXICZQhh3cl7wfdFUQ6WZkpD40dfw1FUTzFf9/WVWFK2fxheAmnYJ5l9XtoDblY2ydPW08yTPU5wIBIhVAllXP/dTiyiX68gQOMhoKqWY4/LIfDmReGsKnPuymXmKZHi1jj8CUm3rV8ytjBq7M8vWmb5/yFHnMqx/jnmJJMgqvAlSfiR71Htl4ZEjDju+PphjPyCnjGm+4iYGKPSEiCFMWaW8C1SKXvYFG4o9ilcAtg0/qOES1t8p+cqXjpniNIbGJHYQFgC8OSNuxQmodn4v0Uf8dX0Cjr6fL9lyeLJRkeno8GRbsu04qrrPbM9Fuzsk7OXvWiK0okYv41FhVpJ57lkPiwzcmB15NKX2G19TmGdHZ+dPh4A7VuwC3CbuDTDaIc6MWnB0MJhuwEd/zUNdkN9uct3t4jNyUxpHsFpjxh492G4cXYcxidobYk7xVjHzKurz2Rjt5zJxsepHrOEWV5ay2e4n9PCYv+WRuz/deSaF5ynRbbvuLcjrt0Xw63bjXM6nT/EzXc3TP41SsymSlqmesocJYvdrbDJ3DwomqeePrp4YZa7Vi9ktKSFI9MG+eAmDtqRU6MD6olW2pAJD8TbYAcJuWL6qSTYHmjj6UI5luEi9zJK/TV/+wJdTSRu17TafoK0McoNS/Qz93SztL7n0GrCzrEaorEImXFkGkOhBNR7kwnqL2wGlr+mFoPzlNWerBvJOgFcaQEUuxvuTFjZj1qMQoZShQcx7biTj9R6Zg+DLMs X-MS-TrafficTypeDiagnostic: VI1PR01MB4240:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wdhqn1bXb0hV08Omk6LlYoLcudOkTCmMpByWr7p5a8EBBoGAeF46BEupv5wjYEPE1W94z5Kj477EfXoTJFgYKkcteIlGVuXMaFHdlmgxy244fgkJgcodGWiGYEDI8aT+h+UU9/Dq14d9PW0AsOqt415Tb0HsxfoYubOKb7a2xWjsOXbllLh1liyYmNk+RG6dLjFMO/6EOlJjfrKDGDm9nJmT4Km3Qf72Zz7XDWNdqHnEO99CbiC1rLBkwenAQv2SHZfUT5wNSmFIo+i5LQoUSZLUgstbJfnAgSVt5DibhWME/JLQTrzeVFhArVH/zE04378j5YAcXpqalXSYU9PSFWaJhDTTVH2WuclHgWIwurycBEJQs9PZ8CNK1DlYv8LqkrLiWCQID4VoL4Wp2gSwsUa7kIsH7Ba8WOoFYspxtsxjJWhe1A+RvW6NEySAbikwtnojJ9counFKoqYLABUfLfBO64qijm+GvqtqDHMp5HJsromKIIbu1Jx+uKDyc76l5joN9iKb6HJcvf9H4nfXf453+eRXurlKx8M9qN++OGGk6iPRr16hWkZ76sMobq0bKWmvIctEv/oUruzkEs9ivvFodLzbcWopVDN8Wojyc67yw1xJb5WqcqJv7YwouTFpBRPyRiHuodP4rsbpv4YdVA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2VhBdMQSQHNGND1BByAA5pkOgBin1XSyKfozGFLHhB7uFcBqWk4iFXKs3dKDWf+r8dNTY8+NRcUlIAokQb92XQi3TbA2FA6HvKIpzCQdLOg7v4FnQfRgryV/Y7trhA57CNm6dDgoomHTFDDKv64LfS1KB5f9RfUlQyAqeIPjZK15YfQLhPCgqFbiUjH8YgtkmTzEew0y/gJQVZiDin3Pzrpw4rJLr58hU1FU0VyxAM4Q3IVImzboly8pIsiffzOdmG78dnIuX5gfcLpzSFa9gwYsH/StklrlHPUenvD+yOPuUr7iXTOv1FaUMJ5YvD1EHFR6urxWm7+7eMz612JyMh/PefTdUGYQZQ68Gw+T+LgYDtG1VhBJSWGcKX6SdnhzuPn/r5mtADEntn5tHoXkmR/WQKm1txf3V26vpS2PfglsDK+5oOdQV3K/Kw4y1If+gljhQYdKXqZ0F6hT2WbnleaA205bKBHk1k19UoFoisYli6/90whsxhvVkdViQ3oO0/NoEXxy3EZdv4ovSFjWC/jAR/ZEG3Je5+BpI/Ua9+PqYvXMe3QkO5FvTfRdfqYtWxQHjF5VpXu6tDRKAKM1e62rWCvXnta/SjrBeggpxGk7v0vacAYqVP/H6c1TXdIuY68LIMZaoInlCDwMDJffZqlfaCkGpAu877wiySBf4aGCSzCF072f41gFTob4fuQbjf45GxqxFUQcsm1nAXIymICr3r2xwy7pLw0oVfQrdFRa26hG3R4pOv/qrI6RhbXaXNIYvSZPu4GCEywNuiBXUElFDR99MPghvgWiiKFGLWV2CV2NmYh6XK5fwPU/nO2+CRBnsRS7g+TlLMSVmci2f15WdnyvnxsZJ10VKuYQAWFn+i/DAlXrzlqDlMQDBa2HBZACzXnl6qJckoOUoE/32OOkZAGKTYvykci0CKTTMq3gFu3jcV01MC15YAZihhlKhbwrXMAlmH9DXHFcjV/Z0buzWIALHunfkKDe4s8mG5Qz2SscAMGVQ2r92WFRxz19jRxLDG5PJmagQsAyAQetn08iIpVo0AKVLEmdvkYWPyWVmhVn5d+L2HFVvC4qZ43F9Ja2DgEJl89qslxUY22O3PvRyV91YJyXuonW4hKH122F6FN/nSKcoGzCdll1rSIBk3RNxIGA9qQlkd9hPuJCiY5vYwwHMqigNhdAdIsTgLf1gcHM0h2Gksr6eOmFQbAa5xyvH5cOjKgPLss6aIk+An9bJwCDJla0JKyJlQNMeXsR9u27Q6VUuIWMakV+VUQz5bYDh4DelVlctJN5v2Kvemq2J1ixKz1gFcVMcQolo1U= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 684f4472-1db3-4eef-d50d-08da5c795c0f X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:33.4464 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4240 Subject: [FFmpeg-devel] [PATCH 13/20] avcodec/h2645_sei: Also support Active Format Descriptor for HEVC 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ki8Ingn3ciyD It is valid for HEVC; in fact, the ATSC-HEVC spec [1] simply refers to the relevant H.264 spec. It is also trivial to implement now: Just move applying AFD to ff_h2645_sei_to_frame() and stop ignoring AFD when parsing a HEVC SEI containing it. A FATE-test for this has been added. [1]: https://www.atsc.org/atsc-documents/a3412017-video-hevc/ Signed-off-by: Andreas Rheinhardt --- libavcodec/h2645_sei.c | 15 ++- libavcodec/h2645_sei.h | 6 +- libavcodec/h264_slice.c | 10 -- tests/fate/hevc.mak | 3 + tests/ref/fate/hevc-afd-tc-sei | 204 +++++++++++++++++++++++++++++++++ 5 files changed, 221 insertions(+), 17 deletions(-) create mode 100644 tests/ref/fate/hevc-afd-tc-sei diff --git a/libavcodec/h2645_sei.c b/libavcodec/h2645_sei.c index 3575846f9a..1793c07285 100644 --- a/libavcodec/h2645_sei.c +++ b/libavcodec/h2645_sei.c @@ -95,7 +95,7 @@ static int decode_registered_user_data_dynamic_hdr_vivid(HEVCSEIDynamicHDRVivid } #endif -static int decode_registered_user_data_afd(H264SEIAFD *h, GetByteContext *gb) +static int decode_registered_user_data_afd(H2645SEIAFD *h, GetByteContext *gb) { int flag; @@ -157,13 +157,10 @@ static int decode_registered_user_data(H2645SEI *h, GetByteContext *gb, user_identifier = bytestream2_get_be32u(gb); switch (user_identifier) { case MKBETAG('D', 'T', 'G', '1'): // afd_data - if (!IS_H264(codec_id)) - goto unsupported; return decode_registered_user_data_afd(&h->afd, gb); case MKBETAG('G', 'A', '9', '4'): // closed captions return decode_registered_user_data_closed_caption(&h->a53_caption, gb); default: - unsupported: av_log(logctx, AV_LOG_VERBOSE, "Unsupported User Data Registered ITU-T T35 SEI message (atsc user_identifier = 0x%04x)\n", user_identifier); @@ -537,6 +534,16 @@ int ff_h2645_sei_to_frame(AVFrame *frame, H2645SEI *sei, } sei->unregistered.nb_buf_ref = 0; + if (sei->afd.present) { + AVFrameSideData *sd = av_frame_new_side_data(frame, AV_FRAME_DATA_AFD, + sizeof(uint8_t)); + + if (sd) { + *sd->data = sei->afd.active_format_description; + sei->afd.present = 0; + } + } + return 0; } diff --git a/libavcodec/h2645_sei.h b/libavcodec/h2645_sei.h index 4713b89e1f..eb00107abb 100644 --- a/libavcodec/h2645_sei.h +++ b/libavcodec/h2645_sei.h @@ -34,10 +34,10 @@ typedef struct H2645SEIA53Caption { AVBufferRef *buf_ref; } H2645SEIA53Caption; -typedef struct H264SEIAFD { +typedef struct H2645SEIAFD { int present; uint8_t active_format_description; -} H264SEIAFD; +} H2645SEIAFD; typedef struct HEVCSEIDynamicHDRPlus { AVBufferRef *info; @@ -99,7 +99,7 @@ typedef struct H2645SEIFilmGrainCharacteristics { typedef struct H2645SEI { H2645SEIA53Caption a53_caption; - H264SEIAFD afd; //< H.264 only + H2645SEIAFD afd; HEVCSEIDynamicHDRPlus dynamic_hdr_plus; //< HEVC only HEVCSEIDynamicHDRVivid dynamic_hdr_vivid; //< HEVC only H2645SEIUnregistered unregistered; diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index cc8bec8d9b..205ad5f97b 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1225,16 +1225,6 @@ static int h264_export_frame_props(H264Context *h) } } - if (h->sei.common.afd.present) { - AVFrameSideData *sd = av_frame_new_side_data(out, AV_FRAME_DATA_AFD, - sizeof(uint8_t)); - - if (sd) { - *sd->data = h->sei.common.afd.active_format_description; - h->sei.common.afd.present = 0; - } - } - ret = ff_h2645_sei_to_frame(out, &h->sei.common, AV_CODEC_ID_H264, h->avctx); if (ret < 0) return ret; diff --git a/tests/fate/hevc.mak b/tests/fate/hevc.mak index 2f16e3a29f..41180dd7b3 100644 --- a/tests/fate/hevc.mak +++ b/tests/fate/hevc.mak @@ -236,6 +236,9 @@ FATE_HEVC_FFPROBE-$(call DEMDEC, HEVC, HEVC) += fate-hevc-paired-fields fate-hevc-monochrome-crop: CMD = probeframes -show_entries frame=width,height:stream=width,height $(TARGET_SAMPLES)/hevc/hevc-monochrome.hevc FATE_HEVC_FFPROBE-$(call PARSERDEMDEC, HEVC, HEVC, HEVC) += fate-hevc-monochrome-crop +fate-hevc-afd-tc-sei: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -bitexact -show_entries frame_side_data_list -select_streams v $(TARGET_SAMPLES)/mpegts/loewe.ts +FATE_HEVC_FFPROBE-$(call PARSERDEMDEC, HEVC, HEVC, HEVC) += fate-hevc-afd-tc-sei + fate-hevc-hdr10-plus-metadata: CMD = probeframes -show_entries frame=side_data_list $(TARGET_SAMPLES)/hevc/hdr10_plus_h265_sample.hevc FATE_HEVC_FFPROBE-$(call DEMDEC, HEVC, HEVC) += fate-hevc-hdr10-plus-metadata diff --git a/tests/ref/fate/hevc-afd-tc-sei b/tests/ref/fate/hevc-afd-tc-sei new file mode 100644 index 0000000000..27eb3fc8d7 --- /dev/null +++ b/tests/ref/fate/hevc-afd-tc-sei @@ -0,0 +1,204 @@ +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] +[FRAME] +[SIDE_DATA] +side_data_type=Active format description +active_format=8 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=SMPTE 12-1 timecode +[TIMECODE] +value=00:00:00:00 +[/TIMECODE] +[/SIDE_DATA] +[/FRAME] From patchwork Sat Jul 2 22:21:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36609 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1884247pzh; Sat, 2 Jul 2022 15:24:17 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uLvX4EDJkuPRqp7fyg7gqJ+D8oK1IgLWztVOedOHGMb8+YPCnklpywl9JMZRuu722o6z/3 X-Received: by 2002:a05:6402:248d:b0:437:dd4c:e70e with SMTP id q13-20020a056402248d00b00437dd4ce70emr26421956eda.75.1656800657425; Sat, 02 Jul 2022 15:24:17 -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 w11-20020a056402070b00b0043a0e3796f7si1592892edx.395.2022.07.02.15.24.17; Sat, 02 Jul 2022 15:24:17 -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=@outlook.com header.s=selector1 header.b=mAZXESwE; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CF7AB68B96F; Sun, 3 Jul 2022 01:22:47 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068054.outbound.protection.outlook.com [40.92.68.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7F00068B979 for ; Sun, 3 Jul 2022 01:22:36 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=maX0s/B8tjuI9J7J/6NhrDr/fMYIhgM6ZJy+6tGnqEi39+tPYg5NVmr+1S4WGmyDgiXlrVUEgBkpwEjTYKCY4O0mumaH7c84WbykRlfmoavtbk1yQROEO8ev9uGYyIcx2kqDVlLol6hkOV5IM/Ou7WJBswIStHY1D/kKWA7+xp7gBttWaJAUTI7UpSAK3RQIv7nyazLFRLFff4r6IvNrP+Q2Y95CgQ3OolyzEMHPSZRp2+leYweUCJFYRYtL0ENH+O93DuMPfT0oDB0Wppr1wJsSvs771t+VZeoJb9iEalHyqIfmacp8umwTeu6p36wkANEUS6PT4Q0yT30Mb+tDow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QBLnPr8hx13kFsBEFoEZr7HYPHfrunXqfxlpVRT/jF8=; b=cTaGZ3LIlTZZuNn1jgMVjwCSQXwp1q4CX8CUspgN6TWL70BAyauCTctUAE6CEjuFDqnoEQEmknvGz7zeeFbX9CNxMA614ArGt7Of0PvTmmm+YxGmD/B8EXRwvnbjUw1oZgJah3TyZGd9VRPQ32QYdVFplw8NuVE/6XZlsbwAolIwyp8hqm5V/wqn05l5QLVJOlonil+PZYkRRjfvENOK4o9Jo34yYG/5+ZF6B/nTTBBnb7+PSudN/hdfUdiEq5IONKpvjVyVWyEgIaiRCf6XDm0sVNpz86mbmc9xHLI8tvl+sXeHCQfv+gVYRyOCYzS4qWcmcs2TPlxOFcjnIg4hGQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QBLnPr8hx13kFsBEFoEZr7HYPHfrunXqfxlpVRT/jF8=; b=mAZXESwEpwUcqXmFViPcMpJ8IDRYzqdNd5TPJzzLtWiDnXLBOCFoAGZfPkCRHONmcK0HoRHXEMZtBnT/pT0y7l7V/cN3NAXEwPYv2VkXIVtqwyNT2jZgypSuq0gQ75CmOOldMjaEFkFCgRykRhE58DZMS58uqwD8VP1/zmQdXCskQYaOnl+UBgO4L8p62+IwEiBls918guDbBdzT+wusZGPwp5A3oalM0T0erUwheRo0fSyyvnAAaF9/N1bTGoUobKkdb0rIY9yeoVXBKgzL9MIrffz8LhdE6evoOHYXpz3lmnk8w/uK61EuAElGaYT4fGj5po/vlUladu1JOQt0cA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by DB8PR01MB5948.eurprd01.prod.exchangelabs.com (2603:10a6:10:e4::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.17; Sat, 2 Jul 2022 22:22:35 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:34 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:54 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [+FjwWDEXa6+7sAdiPyZ+CSh/dEJGNIoC] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-13-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ebe9b3ca-2b2b-4ecd-b95b-08da5c795cb2 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRfEAUNR0l8e+jWTbrQIj13sjL8zJafa+5UKtq7cZMcsl4mDQn0yVRYibufG/H/VAyh4c9vitXolW11Gx9qW5/lGsH1bkRol9cjPzSjYGTIfH4nV8GPsFj7tkxZUnMa6svllu13eohWEJ8CDKcHwNs/6rSzndwSAbSsljM5Q7rJQ7nM/14lYF6lt2MVIdd8TyUvRw3cE3X5uIK1hFIhHstGCONEWCAJeMMInJTezwAQHqQa65vHq74653jZoIOUdJVCjSL6SSvTta9lz2tCdDg5pN93wRcGSNUm5hTHf74OmyAMHN8jjDapL5nW0ZxreBJ9bVDNXdCDZqM8uNnkYR5rBZXIo61G4iCKV2C+lQ7Vsy/KqpV7q1dzLmOqOPjMeDaVIuqQyb5e3lFlYeexeBr3T8g6BgLWPMhpNToortG3PcwG5YGKsMOOVQ2/jIZpHZqxrWa2EkLGNSjyRsDUtCib07EIOaKWpnImyZmEWOwY4UHwhb2B7CK2NVNkHXZp597E3t7Ukbsq5JM2HSWWulBIfGuceMlE0uIDuBZhWdqX/1gbpu8PJFA6bP/uwQmrAce/JGUaOfbHnUy5OzASY+y8JNEoIwivU6UAsyHLaA0O006aBNESciK/ExxmfxRr1fwU+IAAXtSTSmVIDG8UqA0VrmLpUJyx/0f0X4mW5uSF1Sr/fFs0JhAlkd09dJAgq5+hr2pqkycrjjrH4jz7Papu5RXpHRtnJ5iHIZQFuAPCO4N4kYCbkZl2LnlpBCdPHKc= X-MS-TrafficTypeDiagnostic: DB8PR01MB5948:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /EEehj0ye27dAsN5IQqBq0c58aLCq0yiBnrrPKaLijGCQAJJ6re90FSPQDQ9Nvg9Rqp4suwpDv75Ak8BOV0EYg/2LUbaUYZ8xhgXPYIMdmWujYT5ObpYqt/nORZ2ZPe4rWdOx8I6pezAZPQBVVckigJkK8oxqdQrAbbS2pJcwEiZrxG/ZL+X6Rxx2FepZ5fzvmdOI727kTYIBuhYtG8lHzEnV0r8aoXfrD2103fiJdZwv2CtYHAhMzS8qMwMGJgBKUZeMOO0YIP2qM6pB5+KZ2F88AsOPrewwM8hFuJWnJkVRM/slu1t9c0GPSgkp/kkXuwXUzQ5XbzhBaCgUdiHAvgUaq6HwuXEW81+5tNKCBARyGCpyZt8mmHIkyV4Aiu6SsKUX0kPXrzuvHLNTCs8SgZJJ56T1lVhPX1FjNNTb7e0KrnU/+cKJMwbeeNqNfLAe4LdlfJaHvtRxt7uln2hqGxBmCtCfXAmortmkIfW0WtRiiK2+f1SJ+BzEImgznwLJQWNKiSvDWASkcwy/PoVC70VHwVX8TuB69AzPDnwHLOklAy+zDvxIprQBUfIz/M2zqT9TFkZe+1hCPZuZhEdmhvzUmm6T5A9dfzRj879Rlv6RaFUFWlbrQQg8jcq8n8/xK+KScEuAJRoExXQWirmIA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: bjtIl6w0SQMAgyO/2153PUt3Ct0tpFQhBlo7Bo27Y0yk87GGv2C/RJ7Jfl/PIQRd5NvYDDTzD4Kdks5z2XZfcl/wbW4wpGFrPCgmtK+J0QLijO1JOBcsFDR4HVO+Xodu9/59p9kttnrHTbGnB/Ux17QgTcf5A51Kzy/f61XzOzhcHUpnLuJvcW3NFiKqXFO1yXnamu4AaT67tp47oHyfbiO8KCSc//alMO0cweAoN7GsN/88xT64PujTR32kh7zrRZA+LWIuEZuvYDJ5KCpec9ZpMR057mUV5acp/7lB0w+MQ0/t4JNTYO8ukvNz6nF2mSg6LE+kNl6MjXNW8UEOBFyOA5HMlx91yw+r3Gl0pR5lEboWTFRNDM+vTiESivvMg3C4RMEMxRkUO6guFDGV0b0oe/WgLqDsGeTx5PV22cpC8DuM/nNwUy+rnS7GcE2QUkxTl4g4bpimv5RvfMl/97U7sooJ4zpA/MePdjg/iXVkt000d6Cpmy+xm9eu+lbeVmAeWFOiUz4MQzvhRmHTsQ3DiNIInUr/pd0/lrxB/3eXdb2TsI2iUOxawQ9LqY6TGmZOGItJJBkAjzCmm1H91t1AxxwrlHbSn85G4xTWdui7X15ZKGdPCLA36KVcx1baMHOuv0qdb1M8pVJ0UNhAV7TYTRs2vi7d2B3Kyp9jIvyFLV/kv3LsxKv5N7B7yGl/YREsXM2AW5sypzTrb8KYvgFz/pQ6ODNSUEUBFDd5HbbWst5LUofDY9gIO3Z92v2JUUKxUpOTNLQY5y3Juc2fsu/Kl9n61iP2voti5kHxjDQ89kqXo+kPcOdScjACnT8VFxTKRiJazOEY7t/NgDhfEqhHDo8y9rJ9z21XRa6tUTgxfGj9p8GOxt4IGNGUapIHWh5hRzpVVwdnAj7rkfBndR5e+BDCM/enLSObK52FNsmmWFXopumN1ggXQC2PbZkhXeFrbPBfpixSKBl9WpSonscvSoh0vDGD1IFnT4MqVbKxtIwiWnDcTl06c3rSMC8jq+sQGdijMqtmZ8E6DmDX/E1DuCooXGCue/J6s06W4uU1qUn856RFiP3ukMDFwTJ8RiEu3LsbEWDUjyAcffMIa1EWKo3T+glKQeSYFcYybxYPRotiu5eq/K59EiAgCXsskiEDFj7rFSTutreuBoFDhaandAE+kM73PRCXOnJ/KFo0MjAwtC5dPfH+COJ615X2vHzWW5ls5eHG8R5jdGRRnHiERHaB366LwOh0jH1UpOF7D9pPw/Df0sd/1uIVf0JP00Cg24HS28CUA+8YIvcAwgOr98uDxjyWnI5R9U8lnPk= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ebe9b3ca-2b2b-4ecd-b95b-08da5c795cb2 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:34.5245 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR01MB5948 Subject: [FFmpeg-devel] [PATCH 14/20] avcodec/h264_ps: Don't error out on unknown aspect ratio 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: irA7/mjUJcuJ Values 17..254 are actually only reserved and not invalid. Signed-off-by: Andreas Rheinhardt --- libavcodec/h264_ps.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c index e16da68dec..55ef5ce0d3 100644 --- a/libavcodec/h264_ps.c +++ b/libavcodec/h264_ps.c @@ -145,8 +145,8 @@ static inline int decode_vui_parameters(GetBitContext *gb, void *logctx, } else if (aspect_ratio_idc < FF_ARRAY_ELEMS(ff_h264_pixel_aspect)) { sps->sar = ff_h264_pixel_aspect[aspect_ratio_idc]; } else { - av_log(logctx, AV_LOG_ERROR, "illegal aspect ratio\n"); - return AVERROR_INVALIDDATA; + av_log(logctx, AV_LOG_WARNING, "Unknown SAR index: %u.\n", + aspect_ratio_idc); } } else { sps->sar.num = From patchwork Sat Jul 2 22:21:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36610 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1884289pzh; Sat, 2 Jul 2022 15:24:26 -0700 (PDT) X-Google-Smtp-Source: AGRyM1t3F3TFdt4QXYP01Q/IwB5UC7EQ9cmc6/J8izTWTxL0ijgX7fwNlN2v952VpJbHWiAX4MoC X-Received: by 2002:a17:907:217b:b0:722:fc5e:326e with SMTP id rl27-20020a170907217b00b00722fc5e326emr21753118ejb.478.1656800666614; Sat, 02 Jul 2022 15:24:26 -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 dt17-20020a170906b79100b007156fe1aa6asi28143794ejb.650.2022.07.02.15.24.26; Sat, 02 Jul 2022 15:24:26 -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=@outlook.com header.s=selector1 header.b="U97//S0r"; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E045368B9AA; Sun, 3 Jul 2022 01:22:48 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068054.outbound.protection.outlook.com [40.92.68.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CE9F168B979 for ; Sun, 3 Jul 2022 01:22:41 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eBwQYlDo58L75BoEe/NqtHevIj5jkw+LlDJgj2NoQ8tNsBDaQRhDS7JvVoWC5VQLLmOQnZRcuXTaRFMQ+jX4p2fopVJd4UkAgsoFnDzjRxaUHbdYClmLT61Sfi4+GorR2xjZO+0gIvCyLQjTwD+KkfLlZb/ckVEdtBjuapcyWAomqngZEyN1VPEu+cktKViQAlqsVc58Fh3WHwvg1xL6pngj23nGifCL1DoqQnto6jRRnvIdilnqN9ZPi++in7QbrpxbXe/0TxdJA/k9ign1jSac6sjnSQT6/laScDiRXJREjk9valas0FFxKHQMdSGWozagyUT4fd7/JP3LvTEsBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=mrXcQA0xR/V8eWNi53opb6GvDFNHRxC/X3DWHVKLdPs=; b=GgNR1xhnmHOg4eE1fCG4tl5oEfHJ2tDsJJ7yee0iU9jwyo+1bw2x6z6vaUZYKJUq9tPyb4az1YOLZf62u3Y1JpXdRTqVP3d1Z3a1Dz7QDTHRdJsyA76ijkQCoHPCtNne4yiQcb9g/btV9CiFM6BLqTWBY88xg9UZtsLjAWWAtmWkYSv6fS3Jn444JQBPLQjxuGuMwruT0xj6jsRLFzJp05nOs27XekIQUfNH7hEugkjeRHT2YgkY4SZtUbYT1DyzNrG8EZW1pN70ZWbHlGj4bwQ/ofnFRlctWoQ1QAVL5Rq5MiXcermMdh99dmOpctK/8k443Ejpo/mrNumH22WKHQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mrXcQA0xR/V8eWNi53opb6GvDFNHRxC/X3DWHVKLdPs=; b=U97//S0rnsj0v0qGnDw0DevlU7rkcm7Ar36P+qDFozSk/bLY80/sUSMyFjPd1PUBJOBlKv9z9erxW8Ec+t6jJ0mL7FzKrJwA/IbmBiSCA3qQc9Dih3LHVgwNBhk0QlkerKozTFs4qC5s/qyDwITNsqDG7Jz/tRR/QHyzhoG1z6oQ49DZP5IhKQKg3iq0kOe6i/KMPxUNF5VVDSubCOAZKbHU2IXKoHE24CWA4fOznM2zlT2QmwdLgZ0JgwyqeDELjF34B2TwqCaY2no/LJS3XQ0zQhvrvb7ElOiHNlSEOO24frxKB8qNkY2k/dw50orejYUzIPRSHFkvJYrMIPcKWw== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by DB8PR01MB5948.eurprd01.prod.exchangelabs.com (2603:10a6:10:e4::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.17; Sat, 2 Jul 2022 22:22:35 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:35 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:55 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [TgL2E0EoMyL0kxYUUZyVrzDgFVPEuw1j] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-14-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ec29b76f-8194-4d3b-3421-08da5c795d7c X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNXwBRntoGkOsgo00FNZK4OlhS9U9WTRg7vwQZ/C80czQFjNYnr9GtF+XRduNRne+N/qckz817hqucLs6Jjnnnha52hezjwpXiXe5c36VEP/7tCZ5nJ6l0jxPyqj06K1h/f8OugFzHXacPtnl8uPzqJ6lj06MmGyWteR7NEWWEyqMtRyvGm2u070/OXuDf/kdvCVKweQ6zyOcsdW4LMGjRAVl1UoBz82+s0Z8S7uWoE3oo54pSk1JF2o6gizLDE5N7YnlteEKK8fIvtLpbZPMp62ouZYLEr8ju85gPt1eI8dQI8EP9G75G6qFO0EnwMeBwqR09IN6drXJNrs7BePd0sKJFsuIZ2KLwlNLYawtTaOqHqKkf+l71pmfqiMS6tCrjHScKlUbsQb2GP9Z4EPJV7fO3Xdc0lMH21XP2T+nP+gqeMJf4sDjf12BApK/bB449rYOH6hGqaaTduDsgIwpydcSOUa5tdv/rqCwzSDwIGCi0Hq5F0pUahsd5Imt3mFbekLkNl3fuiNRku4gSGcbNPXXb+rt3d1w9cfa9LwU/oIG/FusAh5jCTiWV93NmUmSx4xRRHsKbc+ZccKDvOhFT0IrgB3QUGHw/+FrXJp22tu8t0DDwotU938gtZiiaenzdco7v5dXA5q1IFQMayVL+1U2uVNpPJrl0mF48XB5KKieRf1m04uLNzbkoJB88jqoXWGl4QAkH/PmjE/uytrkZ0AUVX6EGJiH1U= X-MS-TrafficTypeDiagnostic: DB8PR01MB5948:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: eu5Omc2A6wB9egGA8TrrxmKzYfd04kn1Zm7HKv7YcsFbt8RmNjQQVb5hIZdBoEqxyClQlq9kUutltb4lDXcPqnZCov525YF6JQHeH6QyulUr0HfBbUEMEXKDOLkdEYBup1BkxM11dT4zPEmng/DTHWaHKq+Aa8QB4VNfkq1ZKMy7L9wPOOu7Ta20IvHqD2W5f5e49wKx/BtMU4IAFLydkxVmckKlKrCZ4reaM6hhSJrJIhRkAgn1Wm3z6SLFOjv3XzQLAMJLQRTst14lO3HcgBTo0cLeproiCXhP2nB00BOhdNxE3u0clibvwry+hAYFsPRaFseSA8srVR6Z9VjFbp/VTwq92wqR28BeSnri2vrHZOYtaNMBlCQyQfc+c2Mb06IuCSdYa9n/58PhGnwDp6loBkv950aX/pVLSmPW1gor3fOdWasLsUPoeeBDaVUmFyEgzDI11nQAVmOnQwh7kyAE/BCOCzScYfd9zAHV6t6oUasziyqJwwFkTBKA6mYQKweRAUjc08pPPe8oimBVhTLk9kXiosOBxw6blenj84GsaRFJ77vyy38xTdLQsAKs9R7hxQ561GLgwZfbpKALC29wU7kie6Gg3u+CH7BJvZXysreYDK5WLohRy69kq29PJThbzFSmMIsLKy73awKcRg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PIGhR7y9rE48AIN1Apps5GmHfHZOG1HvlhlXEkjrZek3loSnRL/3fnOjq7vb4+bm4/Iogvop1Jpv5bYF8h2YRMHJY3bEpu9iaayPHupHPDr63v9GAJbwEyrVx0ZgFsK6VPaSA9FHSaiCYNbXeqeE7BjsCXR8I6ehGITxzqpzlRdQ1U4+SQgHxZao2n8ifxG7FSxdDQtQvuz4rca5kyfy+tNIVmBeg55KBWqWeUt28bwj6P+XBaMtzIMlS1N1O47VwT3iIhLrPLzpVWQafcrzQfmgEzyktb7zddqL6C3d4ufSOBTok8v3g8LVXh4RKKTVWUFkhKtkPjSLccnWz/zATVbvYKRhZExP3TRTL2guDD9JxKRrM6cT2n99GCVNIa+CujiViQ/uDMZA2agddvK216V6Mdi73IJbE13axWQ9ntmFM5CnteDEYtL0XeG/Bz32F2CLKNCmYvMbagbX0ihE7OjUxU0MFfk2JuKUdl3C1sd+S0HHEBiCYhCvU6RyridrZCd45eQcY55NiYWjHoCOxMSLfTi6wXkcuc02MwOFIennezVLTgOy24BAcwzqPKeBK8OtTs65NcuFIlD0sFrZMoUSePjsZpZpSGgrlooarGYUTaaxDCPVASWGl44+pHX2zA32DUSySex7jD7obb65QjUfQ/wdaxtJ+h26mVjlixGCNersbZ3bLTMt63QLWBD04yiAIEYKjlWnr7Mh4CpvzgVb9KcbdhERYqkR4BB91+jdt9SDjikGAXa67KL7WnPQZHqTZ4BCXk+RlwvM5Gs6ksLyRqsP5NBtrf2ydQIWfa7NfCMBj5O0D+mkWb7XeIHbbNWKn//5PkRvG7UqyUEAuI+VoNIMCGfhv1Qo6HHx8tggProu7WkQ0nRoXsCb4GTE+8lqA6f0ZFqVg2/Ok2R4EnJXjqpS+vJN/ZmTCXFrz9GjfFbhaiWQymOzOIIDc4voErJYReD5xAxYOeuR8m5AI3dycS45leF/IQXYZkycyIfh7XIuz8ouWhHW2JfJsqeTRCy+cWL0HfS7UKs/bpDLoGkncpaJz1FEUkT15TUkb4FRJToTMh0+Z719yoNpzpM5JY6J/PALhfvG2BMLLPxNQqm3Rv49B7ZnRoXwgSYLDG45KNUt9xKjl1Gxf8Z7ZMQvzF2IK6gJCKV14Xomz+TyjKgbUb+HYs/P4y5bYB3i38qZHjzALo/HY1nqSDvSs+cxTs/akq7I7Sgp4qwWvBEgoizkfvTT52qq9sy5v9+8kdsseE7J3/pMKCvw62DThOx6pqorhgySHAVZEdDyxLUC498nIyvTqPMoA3z4NtNQDnE= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ec29b76f-8194-4d3b-3421-08da5c795d7c X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:35.8394 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR01MB5948 Subject: [FFmpeg-devel] [PATCH 15/20] avcodec/h264data: Deduplicate H.26[45] aspect ratio table 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: JpuBsBcc4Q9h Signed-off-by: Andreas Rheinhardt --- libavcodec/Makefile | 17 +++++++++------ libavcodec/h2645data.c | 39 ++++++++++++++++++++++++++++++++++ libavcodec/h2645data.h | 26 +++++++++++++++++++++++ libavcodec/h264_metadata_bsf.c | 17 +++++---------- libavcodec/h264_ps.c | 5 +++-- libavcodec/h264data.h | 20 ----------------- libavcodec/h265_metadata_bsf.c | 17 +++++---------- libavcodec/hevc_ps.c | 25 +++------------------- libavcodec/vaapi_encode_h264.c | 16 +++++--------- libavcodec/vaapi_encode_h265.c | 16 +++++--------- 10 files changed, 102 insertions(+), 96 deletions(-) create mode 100644 libavcodec/h2645data.c create mode 100644 libavcodec/h2645data.h diff --git a/libavcodec/Makefile b/libavcodec/Makefile index c86184f9fd..5d6aedeba7 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -97,11 +97,12 @@ OBJS-$(CONFIG_GOLOMB) += golomb.o OBJS-$(CONFIG_H263DSP) += h263dsp.o OBJS-$(CONFIG_H264CHROMA) += h264chroma.o OBJS-$(CONFIG_H264DSP) += h264dsp.o h264idct.o -OBJS-$(CONFIG_H264PARSE) += h264_parse.o h2645_parse.o h264_ps.o +OBJS-$(CONFIG_H264PARSE) += h264_parse.o h264_ps.o h2645data.o h2645_parse.o OBJS-$(CONFIG_H264PRED) += h264pred.o OBJS-$(CONFIG_H264QPEL) += h264qpel.o OBJS-$(CONFIG_H264_SEI) += h264_sei.o h2645_sei.o -OBJS-$(CONFIG_HEVCPARSE) += hevc_parse.o h2645_parse.o hevc_ps.o hevc_data.o +OBJS-$(CONFIG_HEVCPARSE) += hevc_parse.o hevc_ps.o hevc_data.o \ + h2645data.o h2645_parse.o OBJS-$(CONFIG_HEVC_SEI) += hevc_sei.o h2645_sei.o dynamic_hdr10_plus.o dynamic_hdr_vivid.o OBJS-$(CONFIG_HPELDSP) += hpeldsp.o OBJS-$(CONFIG_HUFFMAN) += huffman.o @@ -396,7 +397,8 @@ OBJS-$(CONFIG_H264_OMX_ENCODER) += omx.o OBJS-$(CONFIG_H264_QSV_DECODER) += qsvdec.o OBJS-$(CONFIG_H264_QSV_ENCODER) += qsvenc_h264.o OBJS-$(CONFIG_H264_RKMPP_DECODER) += rkmppdec.o -OBJS-$(CONFIG_H264_VAAPI_ENCODER) += vaapi_encode_h264.o h264_levels.o +OBJS-$(CONFIG_H264_VAAPI_ENCODER) += vaapi_encode_h264.o h264_levels.o \ + h2645data.o OBJS-$(CONFIG_H264_VIDEOTOOLBOX_ENCODER) += videotoolboxenc.o OBJS-$(CONFIG_H264_V4L2M2M_DECODER) += v4l2_m2m_dec.o OBJS-$(CONFIG_H264_V4L2M2M_ENCODER) += v4l2_m2m_enc.o @@ -417,7 +419,8 @@ OBJS-$(CONFIG_HEVC_QSV_DECODER) += qsvdec.o OBJS-$(CONFIG_HEVC_QSV_ENCODER) += qsvenc_hevc.o hevc_ps_enc.o \ hevc_data.o OBJS-$(CONFIG_HEVC_RKMPP_DECODER) += rkmppdec.o -OBJS-$(CONFIG_HEVC_VAAPI_ENCODER) += vaapi_encode_h265.o h265_profile_level.o +OBJS-$(CONFIG_HEVC_VAAPI_ENCODER) += vaapi_encode_h265.o h265_profile_level.o \ + h2645data.o OBJS-$(CONFIG_HEVC_V4L2M2M_DECODER) += v4l2_m2m_dec.o OBJS-$(CONFIG_HEVC_V4L2M2M_ENCODER) += v4l2_m2m_enc.o OBJS-$(CONFIG_HEVC_VIDEOTOOLBOX_ENCODER) += videotoolboxenc.o @@ -1183,11 +1186,13 @@ OBJS-$(CONFIG_EAC3_CORE_BSF) += eac3_core_bsf.o OBJS-$(CONFIG_EXTRACT_EXTRADATA_BSF) += extract_extradata_bsf.o \ av1_parse.o h2645_parse.o OBJS-$(CONFIG_FILTER_UNITS_BSF) += filter_units_bsf.o -OBJS-$(CONFIG_H264_METADATA_BSF) += h264_metadata_bsf.o h264_levels.o +OBJS-$(CONFIG_H264_METADATA_BSF) += h264_metadata_bsf.o h264_levels.o \ + h2645data.o OBJS-$(CONFIG_H264_MP4TOANNEXB_BSF) += h264_mp4toannexb_bsf.o OBJS-$(CONFIG_H264_REDUNDANT_PPS_BSF) += h264_redundant_pps_bsf.o OBJS-$(CONFIG_HAPQA_EXTRACT_BSF) += hapqa_extract_bsf.o hap.o -OBJS-$(CONFIG_HEVC_METADATA_BSF) += h265_metadata_bsf.o h265_profile_level.o +OBJS-$(CONFIG_HEVC_METADATA_BSF) += h265_metadata_bsf.o h265_profile_level.o \ + h2645data.o OBJS-$(CONFIG_HEVC_MP4TOANNEXB_BSF) += hevc_mp4toannexb_bsf.o OBJS-$(CONFIG_IMX_DUMP_HEADER_BSF) += imx_dump_header_bsf.o OBJS-$(CONFIG_MJPEG2JPEG_BSF) += mjpeg2jpeg_bsf.o diff --git a/libavcodec/h2645data.c b/libavcodec/h2645data.c new file mode 100644 index 0000000000..9897ca3186 --- /dev/null +++ b/libavcodec/h2645data.c @@ -0,0 +1,39 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "h2645data.h" + +const AVRational ff_h2645_pixel_aspect[] = { + { 0, 1 }, + { 1, 1 }, + { 12, 11 }, + { 10, 11 }, + { 16, 11 }, + { 40, 33 }, + { 24, 11 }, + { 20, 11 }, + { 32, 11 }, + { 80, 33 }, + { 18, 11 }, + { 15, 11 }, + { 64, 33 }, + { 160, 99 }, + { 4, 3 }, + { 3, 2 }, + { 2, 1 }, +}; diff --git a/libavcodec/h2645data.h b/libavcodec/h2645data.h new file mode 100644 index 0000000000..bc56d76870 --- /dev/null +++ b/libavcodec/h2645data.h @@ -0,0 +1,26 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_H2645DATA_H +#define AVCODEC_H2645DATA_H + +#include "libavutil/rational.h" + +extern const AVRational ff_h2645_pixel_aspect[17]; + +#endif /* AVCODEC_H2645DATA_H */ diff --git a/libavcodec/h264_metadata_bsf.c b/libavcodec/h264_metadata_bsf.c index e905982d26..82b57a32fd 100644 --- a/libavcodec/h264_metadata_bsf.c +++ b/libavcodec/h264_metadata_bsf.c @@ -29,6 +29,7 @@ #include "h264.h" #include "h264_levels.h" #include "h264_sei.h" +#include "h2645data.h" enum { FLIP_HORIZONTAL = 1, @@ -144,25 +145,17 @@ static int h264_metadata_update_sps(AVBSFContext *bsf, int crop_unit_x, crop_unit_y; if (ctx->sample_aspect_ratio.num && ctx->sample_aspect_ratio.den) { - // Table E-1. - static const AVRational sar_idc[] = { - { 0, 0 }, // Unspecified (never written here). - { 1, 1 }, { 12, 11 }, { 10, 11 }, { 16, 11 }, - { 40, 33 }, { 24, 11 }, { 20, 11 }, { 32, 11 }, - { 80, 33 }, { 18, 11 }, { 15, 11 }, { 64, 33 }, - { 160, 99 }, { 4, 3 }, { 3, 2 }, { 2, 1 }, - }; int num, den, i; av_reduce(&num, &den, ctx->sample_aspect_ratio.num, ctx->sample_aspect_ratio.den, 65535); - for (i = 1; i < FF_ARRAY_ELEMS(sar_idc); i++) { - if (num == sar_idc[i].num && - den == sar_idc[i].den) + for (i = 1; i < FF_ARRAY_ELEMS(ff_h2645_pixel_aspect); i++) { + if (num == ff_h2645_pixel_aspect[i].num && + den == ff_h2645_pixel_aspect[i].den) break; } - if (i == FF_ARRAY_ELEMS(sar_idc)) { + if (i == FF_ARRAY_ELEMS(ff_h2645_pixel_aspect)) { sps->vui.aspect_ratio_idc = 255; sps->vui.sar_width = num; sps->vui.sar_height = den; diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c index 55ef5ce0d3..1fd7375a13 100644 --- a/libavcodec/h264_ps.c +++ b/libavcodec/h264_ps.c @@ -31,6 +31,7 @@ #include "mathops.h" #include "avcodec.h" #include "h264data.h" +#include "h2645data.h" #include "h264_ps.h" #include "golomb.h" @@ -142,8 +143,8 @@ static inline int decode_vui_parameters(GetBitContext *gb, void *logctx, if (aspect_ratio_idc == EXTENDED_SAR) { sps->sar.num = get_bits(gb, 16); sps->sar.den = get_bits(gb, 16); - } else if (aspect_ratio_idc < FF_ARRAY_ELEMS(ff_h264_pixel_aspect)) { - sps->sar = ff_h264_pixel_aspect[aspect_ratio_idc]; + } else if (aspect_ratio_idc < FF_ARRAY_ELEMS(ff_h2645_pixel_aspect)) { + sps->sar = ff_h2645_pixel_aspect[aspect_ratio_idc]; } else { av_log(logctx, AV_LOG_WARNING, "Unknown SAR index: %u.\n", aspect_ratio_idc); diff --git a/libavcodec/h264data.h b/libavcodec/h264data.h index 4efe76a34d..f809886ae6 100644 --- a/libavcodec/h264data.h +++ b/libavcodec/h264data.h @@ -49,26 +49,6 @@ extern const PMbInfo ff_h264_p_sub_mb_type_info[4]; extern const PMbInfo ff_h264_b_mb_type_info[23]; extern const PMbInfo ff_h264_b_sub_mb_type_info[13]; -static const AVRational ff_h264_pixel_aspect[17] = { - { 0, 1 }, - { 1, 1 }, - { 12, 11 }, - { 10, 11 }, - { 16, 11 }, - { 40, 33 }, - { 24, 11 }, - { 20, 11 }, - { 32, 11 }, - { 80, 33 }, - { 18, 11 }, - { 15, 11 }, - { 64, 33 }, - { 160, 99 }, - { 4, 3 }, - { 3, 2 }, - { 2, 1 }, -}; - extern const uint8_t ff_h264_dequant4_coeff_init[6][3]; extern const uint8_t ff_h264_dequant8_coeff_init_scan[16]; extern const uint8_t ff_h264_dequant8_coeff_init[6][6]; diff --git a/libavcodec/h265_metadata_bsf.c b/libavcodec/h265_metadata_bsf.c index f01c8e4cd7..5edd984069 100644 --- a/libavcodec/h265_metadata_bsf.c +++ b/libavcodec/h265_metadata_bsf.c @@ -24,6 +24,7 @@ #include "cbs.h" #include "cbs_bsf.h" #include "cbs_h265.h" +#include "h2645data.h" #include "hevc.h" #include "h265_profile_level.h" @@ -194,25 +195,17 @@ static int h265_metadata_update_sps(AVBSFContext *bsf, int crop_unit_x, crop_unit_y; if (ctx->sample_aspect_ratio.num && ctx->sample_aspect_ratio.den) { - // Table E-1. - static const AVRational sar_idc[] = { - { 0, 0 }, // Unspecified (never written here). - { 1, 1 }, { 12, 11 }, { 10, 11 }, { 16, 11 }, - { 40, 33 }, { 24, 11 }, { 20, 11 }, { 32, 11 }, - { 80, 33 }, { 18, 11 }, { 15, 11 }, { 64, 33 }, - { 160, 99 }, { 4, 3 }, { 3, 2 }, { 2, 1 }, - }; int num, den, i; av_reduce(&num, &den, ctx->sample_aspect_ratio.num, ctx->sample_aspect_ratio.den, 65535); - for (i = 1; i < FF_ARRAY_ELEMS(sar_idc); i++) { - if (num == sar_idc[i].num && - den == sar_idc[i].den) + for (i = 1; i < FF_ARRAY_ELEMS(ff_h2645_pixel_aspect); i++) { + if (num == ff_h2645_pixel_aspect[i].num && + den == ff_h2645_pixel_aspect[i].den) break; } - if (i == FF_ARRAY_ELEMS(sar_idc)) { + if (i == FF_ARRAY_ELEMS(ff_h2645_pixel_aspect)) { sps->vui.aspect_ratio_idc = 255; sps->vui.sar_width = num; sps->vui.sar_height = den; diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index a955f585d9..832abc0ada 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -25,6 +25,7 @@ #include "libavutil/imgutils.h" #include "golomb.h" +#include "h2645data.h" #include "hevc_data.h" #include "hevc_ps.h" @@ -50,26 +51,6 @@ static const uint8_t default_scaling_list_inter[] = { 24, 25, 28, 33, 41, 54, 71, 91 }; -static const AVRational vui_sar[] = { - { 0, 1 }, - { 1, 1 }, - { 12, 11 }, - { 10, 11 }, - { 16, 11 }, - { 40, 33 }, - { 24, 11 }, - { 20, 11 }, - { 32, 11 }, - { 80, 33 }, - { 18, 11 }, - { 15, 11 }, - { 64, 33 }, - { 160, 99 }, - { 4, 3 }, - { 3, 2 }, - { 2, 1 }, -}; - static const uint8_t hevc_sub_width_c[] = { 1, 2, 2, 1 }; @@ -597,8 +578,8 @@ static void decode_vui(GetBitContext *gb, AVCodecContext *avctx, sar_present = get_bits1(gb); if (sar_present) { uint8_t sar_idx = get_bits(gb, 8); - if (sar_idx < FF_ARRAY_ELEMS(vui_sar)) - vui->sar = vui_sar[sar_idx]; + if (sar_idx < FF_ARRAY_ELEMS(ff_h2645_pixel_aspect)) + vui->sar = ff_h2645_pixel_aspect[sar_idx]; else if (sar_idx == 255) { vui->sar.num = get_bits(gb, 16); vui->sar.den = get_bits(gb, 16); diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c index 7a6b54ab6f..b2379fdf38 100644 --- a/libavcodec/vaapi_encode_h264.c +++ b/libavcodec/vaapi_encode_h264.c @@ -33,6 +33,7 @@ #include "h264.h" #include "h264_levels.h" #include "h264_sei.h" +#include "h2645data.h" #include "vaapi_encode.h" #include "version.h" @@ -378,24 +379,17 @@ static int vaapi_encode_h264_init_sequence_params(AVCodecContext *avctx) if (avctx->sample_aspect_ratio.num != 0 && avctx->sample_aspect_ratio.den != 0) { - static const AVRational sar_idc[] = { - { 0, 0 }, - { 1, 1 }, { 12, 11 }, { 10, 11 }, { 16, 11 }, - { 40, 33 }, { 24, 11 }, { 20, 11 }, { 32, 11 }, - { 80, 33 }, { 18, 11 }, { 15, 11 }, { 64, 33 }, - { 160, 99 }, { 4, 3 }, { 3, 2 }, { 2, 1 }, - }; int num, den, i; av_reduce(&num, &den, avctx->sample_aspect_ratio.num, avctx->sample_aspect_ratio.den, 65535); - for (i = 0; i < FF_ARRAY_ELEMS(sar_idc); i++) { - if (num == sar_idc[i].num && - den == sar_idc[i].den) { + for (i = 0; i < FF_ARRAY_ELEMS(ff_h2645_pixel_aspect); i++) { + if (num == ff_h2645_pixel_aspect[i].num && + den == ff_h2645_pixel_aspect[i].den) { sps->vui.aspect_ratio_idc = i; break; } } - if (i >= FF_ARRAY_ELEMS(sar_idc)) { + if (i >= FF_ARRAY_ELEMS(ff_h2645_pixel_aspect)) { sps->vui.aspect_ratio_idc = 255; sps->vui.sar_width = num; sps->vui.sar_height = den; diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c index 456307d570..d0e2a82da3 100644 --- a/libavcodec/vaapi_encode_h265.c +++ b/libavcodec/vaapi_encode_h265.c @@ -31,6 +31,7 @@ #include "cbs.h" #include "cbs_h265.h" #include "codec_internal.h" +#include "h2645data.h" #include "h265_profile_level.h" #include "hevc.h" #include "hevc_sei.h" @@ -496,24 +497,17 @@ static int vaapi_encode_h265_init_sequence_params(AVCodecContext *avctx) if (avctx->sample_aspect_ratio.num != 0 && avctx->sample_aspect_ratio.den != 0) { - static const AVRational sar_idc[] = { - { 0, 0 }, - { 1, 1 }, { 12, 11 }, { 10, 11 }, { 16, 11 }, - { 40, 33 }, { 24, 11 }, { 20, 11 }, { 32, 11 }, - { 80, 33 }, { 18, 11 }, { 15, 11 }, { 64, 33 }, - { 160, 99 }, { 4, 3 }, { 3, 2 }, { 2, 1 }, - }; int num, den, i; av_reduce(&num, &den, avctx->sample_aspect_ratio.num, avctx->sample_aspect_ratio.den, 65535); - for (i = 0; i < FF_ARRAY_ELEMS(sar_idc); i++) { - if (num == sar_idc[i].num && - den == sar_idc[i].den) { + for (i = 0; i < FF_ARRAY_ELEMS(ff_h2645_pixel_aspect); i++) { + if (num == ff_h2645_pixel_aspect[i].num && + den == ff_h2645_pixel_aspect[i].den) { vui->aspect_ratio_idc = i; break; } } - if (i >= FF_ARRAY_ELEMS(sar_idc)) { + if (i >= FF_ARRAY_ELEMS(ff_h2645_pixel_aspect)) { vui->aspect_ratio_idc = 255; vui->sar_width = num; vui->sar_height = den; From patchwork Sat Jul 2 22:21:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36611 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1884329pzh; Sat, 2 Jul 2022 15:24:36 -0700 (PDT) X-Google-Smtp-Source: AGRyM1u9bO6imyNVEqpD/du8Jp1Wva3vjoPs8IrG1eBTESrP5sHkwnJdb/990FejY3SCnSmHEzK6 X-Received: by 2002:a17:906:9755:b0:722:f1e3:ec1a with SMTP id o21-20020a170906975500b00722f1e3ec1amr21292266ejy.709.1656800675887; Sat, 02 Jul 2022 15:24:35 -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 y27-20020a50ce1b000000b0043576a75240si6742657edi.274.2022.07.02.15.24.35; Sat, 02 Jul 2022 15:24:35 -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=@outlook.com header.s=selector1 header.b=mhOvi0et; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EDEA068B9B2; Sun, 3 Jul 2022 01:22:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068054.outbound.protection.outlook.com [40.92.68.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 261D868B979 for ; Sun, 3 Jul 2022 01:22:42 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ShLNPPlhWZ1qS4tbf+vgy7zr05Rl6hqYfyGTRx+Eqo1e4QE3TZo7HnVKzzRzUB8knLmQdZ3IH4vTS0lsPQaKW9tUWttu8+aNv0FwJ66PrU2pKO9vQtyJG9b/FWEVntR3Th4jNX9gWihf3P5s8JcwEb/f08Oe3yTx+kz6qmFozENYDQ6HoB6p1NJchbosImabxJguWkawnxmUFqVigrDBScKaw9wtBjGZzuHfhbo+ErIjN08tZE1poAMcIg7PnPVrS6Esryg78e6e9w74F4nf4PY/kgKCB/b9hkznXodlAH7LbyAbnqRUK6yzz4hfajI3CoH9fEzoD2yROTR7ZjrkfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7IMdIAFsvlhnpiexjMtIhnynIrUzG/ZEv+e4/hFjdXg=; b=i6I6kvl5I+iooFl0yYg69Vck9PvvUmN+G/Pzq55G/PdxgAFQJJF5Af5D/3TVuQnjJuuZ+FT7mElLXzuCVwMCdaRcCZARFY9n6i/5tE2FUjKml87iXjvEETLwxOtG9tJmOnQ6bIa2tOSXrq+OkrSd3TUJMyDXME8DO6soX6L3684PY/THNnU42QOvpwoRcJjLQm8pXqWtO71n/Uyct93K4IzMpGz38VVbT1Huv8WpxZNXcuSeRJmWGku0/NL1W/MyqPagRLWq070lDHUO+SKi6ZnEoA3jausjmrc0y/fpt79XGnn5QC+eLCY0xZxC6fdXICa2HWhPZSkIlktXQXTLxw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7IMdIAFsvlhnpiexjMtIhnynIrUzG/ZEv+e4/hFjdXg=; b=mhOvi0etziQLtHmE0ofsVchQ9SRHHv5dLHi166sOxF2r/Z4SwRjJNpVc8EQOINYuiUA3FAWRJJ4hT/6Qsls3oETr11BkU6AM5dTu5Ipy0EyKqT3x6wFK46oF8TQrhC3Wqt8wTQPmkDXbaoyyJH+ayXuKIct5pDJjAvJSIVUt8WyjiquInECGTO861BBC3tVZtT1lXjBW1m6VS0jFMNR6ImgmRNOXB3ItzJu4UtVVO1tKAyiW2quAsK/OiDnjmm4449qYq+yxlGUxVTKCz2ba0ikSXNEJaQr+A+ozDOpSdxDQ5NIey/GujFNCvEza/sB88weULjrkQdkZ7C6dlQlEHA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by DB8PR01MB5948.eurprd01.prod.exchangelabs.com (2603:10a6:10:e4::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.17; Sat, 2 Jul 2022 22:22:36 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:36 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:56 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [8IUur2pf9/4sT8Vf6Rzdy4bNCiSBv2B1] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-15-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7396368d-20c3-4afb-32e2-08da5c795e13 X-MS-Exchange-SLBlob-MailProps: dEG5jEBie8l8hG5zPzFzy0BjiGKyfZBKwJCj9apZMMS0WXSyvgphMHIAvhmR+lBjH8J2UplqfdjbHcWE6a4YpEwvrvB/nN2cJpQkErh4VtQa/qO4aLxeLZ3E78rBaDNj+Z1YH7uXKxw4x6+kM0fI81Wq09TgB8uv+UWaz/T2+Zh4QyTCvnGiT0apNLKnpX0ae6szB5TLESJDlwwauWWnOQBzLJEPufTl2KEtYUsWyYGk9NhKzlht0vR9Yu8SAapUUkXDh9s/7/rgg+6wqRGn4p/yXvwhFNFWi0keQUWlvahwGe+gqqNwhbvpgieiWu5sih3fYEL/ZndQXdH2aLMeDQqwc5xlM3jth7kGLOg2UwADN/+Oh8KHAC1V9dCl10zag43tifAFITmYTtTfyG8Op6y6M8c9/A60cmRNK0kMMy2U0BplUGBT7GpM4z9mH5dPfw9Y51e4YkcN9WZFdzSv+VGMZL02U6bUFw5HyNRPK9onV1dnzuhpeVKL9vYz7yVubWBflkOnBtJHV4v5SUj09sZT9qT1qzgKqjcGECQ4Fn9Hp4pnMXwB/S3LbEX6gHl/AdNaBNRo5h1acbWgWQij171Rq6IWeHM3qDsyTWnVoXNU9DiF8g1/ad+AHSZn9aT6EeFQMPdMbDOXABguy3hpvzWJvYX7ZTSIruV7KfjopfnmMnBwf1Mm1g== X-MS-TrafficTypeDiagnostic: DB8PR01MB5948:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VRhOB8CVPpgXkjq8nNZSTOWPpJuCw5x63k5Kb8AYt/pBEMgkumxCwdOuHgJ80Yvo0q81uMM+PEZH1FjS2xYbcz5ys0jjLp9ghVSUbRDBSRb2ujgxr8uSSrJmO1omgaVbjET3G2eORB9enC6x4X+5Vnrew4SW4AHy/1V7CrGZpTU1Nl8xNk7LTzEWZKbOJ3D1sYytWDIg+ojGW2h1lhmCrhjUkSdu6FAsx3gx/cMgqt4IrQYmBlCqW1NWsWJ5EMdlmhKW6AXy3H3XqwsKUDZyNbs3IrowYgjCUSe1iouPdP4/v/OVGVthZHe2v4ATRIk/Ij7ZEGCZywQp16gII0wBpb0vlshmVqHaHpGYJK0n6dyDzHpuo2UEIcmWBx7D3BRAnMbk67wV7PI38UAiYb29YDlzfnenR44RhU/eIyx7aJGsZD6Lk9fIw1HsMn2cXUMrxZ1H/zqZUuDL9C6/cxHfyiliDh+fUiMEizxLNQgpRQWkWyHQPhqQIYotPB0cvRyCs29tFvhM6C5bojKTwZt3umsMIUEOwfZi6PCUVX4jNAC+AquFQiM4VjVtCgxu+EtfdgYb/6ZzkS0PKijj51cFwZeJe1P/doC0iuiGfexEz+MSK+RVYKkgpNjZGSldr5rEg6o+IXKpXnX1dw5hNcno2A== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PCNfojmUsIkFNJPzAIdho85M/HyEidFtXSk10U+OmfTtiMvvx63hnyrHuQtOzKwguJTL0dTP1dpCAANj9SqwaQYlDqU7XPQWI66O0nli24CialVTVNRJB+N/SCpE0NjosSlUNgV16WHgbcBA2JrPwKly+BvI0qIe7ccb0nE5Mivdl60llB7WHpXmWK0+TbMMj1PIhXUbqZy092dh/JSNwvo4sp8YwICjYvNKtt4XznK1rCvQ19XigdCvUpfft03YeMczqNue7Gl1glPWhvtA/Fg9siunTcg2xWA3HDsfeXXtxWH+tRFS+zaWnlXmYi2SEox7+eaBa2q0GiaAYbPMhOwN47EueGLm4sb3LMKoNWT0wRsK3/f7HbEJ3D/bHErSqX2O+e54mL0aRUi4jYSPPfwXQPLY0aGiW8UyUMGzLmNialNDbjn641UREkt6h93Gof1TEcUxJXPXYvEjQkAHyJUIZ4Aav/6sESE9VEK+S6jvW/pLpyZHk8Kzi9inZWBAFrqvPyBL2cyj/uxDVoE1tQRw0ozVd9+Wg8PDRTjI0Hgz1uPB5yNG5c3wQ23yMnps7yNUSkvAQD43MWH38TPaIn2zfubbzNMieOZRmRu2lxZ4G4SJHxSE0zVNcJv1/r6JTczzA8wlk1xk03J/vdavAsU1BfS0P1Gnuvedal5hFUD3scxhiRyP4Bh1gPKX+kwCQeKR0exZgQ36NmRgAIS6aT9mgihidcewWaP+wWMH0/0D+yraH+13RW2V4lIWrmTxsElpwmT1kwBHtOQvdp3WvhZTYA3N57nTJaEvtVr2OB8SsZIy2qI1BojFy2fd0M/JWoWPKyylsrEOnIREl4/m5XKCphpl7MMpiJfKT4BNqHgONXWIYc+CMnFphiNAXKLnw6WlYpT3NoOU02CwrP1SGnwj+WyoTWR5foMZj98Nky0+K3weM3bsvvXDlCQZ3PoMwW7Qt4R83UWyt3sUGTqKj9lFUmyqeTuaT4RGfZF2ZiApw8scxCB09DtiyWf345imOlHtj4DStDP9/dZgMYtmEbSOkgtZ4voGmuAvmXAVsgndKV/vLBNLINRmWY2PguO9TGj4UZDWulp9Dxf7TM8qcsms1g1fyjfPQ5yfd7JEyJ9WhpHYpYpo4V6AI4TmaC1+OoJ0RCDI1EeCPZ+/99u9hM+qZnODv/ki+sECZmRhQiZUP0fcSdrkG0k+bwG24tWjWqUD2xWDxS0NAlwfQ3LEiT6tbdUjGnkvrVSrEMh8ZDViAAVb4GfoIPJ2vTW454xF3FH5gMII38JlYCKlzE3QMMUjFFsb0utJDW+j+iqtHMw= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7396368d-20c3-4afb-32e2-08da5c795e13 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:36.8344 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR01MB5948 Subject: [FFmpeg-devel] [PATCH 16/20] avcodec/hevc_ps: Fix wrong copyright years 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 3FAKqcKOVOIw Signed-off-by: Andreas Rheinhardt --- libavcodec/hevc_ps.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index 832abc0ada..25620357de 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -1,8 +1,8 @@ /* * HEVC Parameter Set decoding * - * Copyright (C) 2012 - 2103 Guillaume Martres - * Copyright (C) 2012 - 2103 Mickael Raulet + * Copyright (C) 2012 - 2013 Guillaume Martres + * Copyright (C) 2012 - 2013 Mickael Raulet * Copyright (C) 2012 - 2013 Gildas Cocherel * Copyright (C) 2013 Vittorio Giovara * From patchwork Sat Jul 2 22:21:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36612 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1884362pzh; Sat, 2 Jul 2022 15:24:45 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tuCxyPOCUPBcc+V4A9qQKkh85CQsDJ5wnNfKPnrUUz/nfJ652IVZWN6h8IVaX6c0T0V/+I X-Received: by 2002:a05:6402:22a1:b0:437:78c2:d02b with SMTP id cx1-20020a05640222a100b0043778c2d02bmr27942078edb.64.1656800684968; Sat, 02 Jul 2022 15:24:44 -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 k17-20020a170906971100b007157d4e84b8si7737273ejx.304.2022.07.02.15.24.44; Sat, 02 Jul 2022 15:24:44 -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=@outlook.com header.s=selector1 header.b=bR2P4gQn; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C2AD268B9B3; Sun, 3 Jul 2022 01:22:50 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068054.outbound.protection.outlook.com [40.92.68.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 53FD368B979 for ; Sun, 3 Jul 2022 01:22:42 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AcOnJObQIhfmsQKFUcjR/tHGMT2HzPADTwzv4tNHiMrHjPRQ4kdb1xwa4wgXt+DNygQnxt8/suzyEGE1rj2cBBw94Qy9G9K5Uzm8bsdEP71q5A+xkQpb6jrRHw5f1nVeZLC+TcX9NIBhr6ALnmTNYbboNloIb3K3Hza5ssJxWHbF0q7WSfeILCx9wvTtGG+uIVqjwA5LgDPx7UcGmgvGHLqvmJO0U1FQDTuSs3KbF4FBs/Mv34pijjOjUqDZtRKTO5B5C6aKyLcARfv+epR3EHTNDCJ56nwO2TfaGgu7S4TJqXGkrVToqjzN8NL7O6CmnkslEihszsmC3hDVR/LCRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=viQGmEUyH9b0Go+Rouf62BqGSIuL4j9zYoCzrD9jkTk=; b=YiWVB5zUuutMQFrt9FwHinUw6CGGsp9J08ylxeVy905EyIQdiiaFfBc6Ve6OfcqQTmRIBpxLmJjCpuQRcfi6PTAyFcLXNSW3lhGG+PIdfYc1pqtgwNfRdHhsKQgTpkrfXmVho74MTzqDteSJkTGcgk3Fg7yEE/li89E5xwK+z7VW3dtephUZgjHhvYN9FxsWeWuvwoID3Na2yky1yLG+ilXgXmfPQD/k9eouREuYtOkVHZeelzenZ/dWHD0ThZWhjNCWF8H6C/UEkBKAU3gSqn27N7Z+Aa6pEgifkpqfLBVUC+/6z8PUiQOrImlGj9QP8Fj6Dm+88cpqNR88jukv3A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=viQGmEUyH9b0Go+Rouf62BqGSIuL4j9zYoCzrD9jkTk=; b=bR2P4gQneZGYjHWi36ZmNG8j6jlhX+P7SlXrRGWwuvFp+xr2u1nILzNuWY8hwq3PingfS3B6Gd0TZD/QDlXisJn2M8DLWZqvIVsEIOHm+52se6Zv1GtaXtgy0pkkE+go3vOlQWYIrTVve0EhbKY1S62FVWi6ybEdmYA8Dbio3Vs/KTNgoeU2RzhYjjr9IVZlunkWAcO2dD4jZGE5TbfX1H9werWV3yW9NMN7NaRBYIBkq0eaX0VTvEF6X8VUt4IbPWCHZAt4Yc8i2gvdSWRT6HqEv9j2oea80RQIlD6SDrgu77zLVvvUVJgN+LRqB2Oed1lbIPR3/f486HmU4j9peQ== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by DB8PR01MB5948.eurprd01.prod.exchangelabs.com (2603:10a6:10:e4::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.17; Sat, 2 Jul 2022 22:22:38 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:38 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:57 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [NEQefC3QTvUIK6zFsq99lOj/Yf0QhlFe] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-16-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a1642ba2-a52d-4a0a-b4e1-08da5c795ec7 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRfEAUNR0l8e+jWTbrQIj139kMLRnFOrKDlW2GDcqZEohwEEailzfF7QE7/odYW++6E03lPX1Zgik0OmelhI/O/tTLYCSQjLXRgtshX8b2/N/adFARIJe9jDJLrLjaZyq1oKY2dbCKRkU7wfJpc6yA+hj6l43ZacLHuMt7JfCe+gDQVcn7vFiE7FlYSvchC2nyZ/ugypmLdquMv90PWj2CAA+Qo2Nm+0VOPfvySWrVOT3MEBdRyGEPl13pMGrTv99+l21EekAC4CysRM3u+4zZ2vX7+4bD7m3QnJfezOmyjN5N1VWHzdG81lvHBfQP9E+u8gl8cJL8LCpV+CNeggYaswEFcwDuG9MSHXqzdWPdwyQj0Je9UVS7mOLKL2pCDwWsfCKvfr19kXviKuuN8nGJY0oRDhYhlQiDRrVp1fO/i3VBRQAgVwQo+77v/fCAJmCzSdnt6mebQDeZMFDmx7OsA5Wj3v1H4pv4bpE3AAT/OSod6Xt0z7qUokxWqbJX3r4r6K1EYVx6oGoDRoYipIbk/+UbGmWteua44xscXTAfaTLzFdnpei78ZtrlXcRoZ3z7r4PdaprmOH7G6wLVonV/bksz61icbYwkMBkuAu1PEHiGQ07StgNsnsJVzFSXmoseHCxNT+ZNhZPPqpSMGR5Sk5pStSCcivq+JDO+v1eeVNVFKu02jkwremWDc9yVynDU+hoXZ6y3XyeRnW3K1PX2I35rVMiP6K6ziZHivslhlN6xhbQe67TrSF2ccJfrp2xY= X-MS-TrafficTypeDiagnostic: DB8PR01MB5948:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6McJeSV1Bsheqmmy8nUSaXJ1ULTxQHWkMSSJlVhOltNylkZLxJT8yI2lAscfdLovikPpVt6W2t4AbcE+yPxEXsAsY3bx2TEaJ4cAzbccm27tM1dEQowr1Gu2pbEgJ59thyXo4u8fzjD3eyU8drWCofERZ/LeLRF10K7srP2ajlBa8w2E29mdbSUupIpGKBMopKRNx7dQBGPD2ucRtgiQCfJPUud9s7ICh4k1qw/FzkBYK67iquxUmRt+GoX6hefiBIwiwM30C9Sm8Gm156G7HMUR3Q6Hk+VdC6PpCrXfCIwg6utvFmskAu8OOfXO7yHnQdgyHLA3HXqcFHUtZwfPiBIgzXHmvhS/NWfD5uN5VzreeZR652PGGuXeJ27g1GnTanBWE3LaqcFOYZ5JiJ/nj7rpf6bT5wSKMYMUhzN9fF30fFXWJsVmI9l1rKYYBBBTzgpCL9iWIKw3PuZHSdv3nI0fkdlHW/RLTVcNbxurnop0UTNUFQ2b2CZEtaSweipLKC5GZHkCugogJpoCjAi/S4GysSVmq8kpb9kiTerMLe/RNBRnrK1d9K//1gGFtD0w1wdhgo8fLCLuJcH38fBtsd/ZdDSf5fvDHS0UcPMiT5T5r5hcZOHPFc4o5FTHC5tKeFHwM7oApPTRUZMmVd09aw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: X12HGW3pxZ6VYSMwD5Da/uSUBtOwg09/xR2j0cdjMD57MEGRXVyhiHNdenjWCH6RGLEOdLVSmI9+GF8MX5TuNvuKOwxGfU6UrNGBadtnw3VtIOlv0M6plFLvv9onnONO7x0q2zsaFi2D+GrRPhL0DXRg86p9lhupBCCgcMzO6RVoQOQB/1Un04ixHNCcK10myWNF7nTJIK3g66PhNw1GgvfhI2GZEttqB3rqVPNl5WoSJkoeTORostwC0CpTWZwrLLwNxZKgi1v22AL6HJc3zcqS/00xWvIr23DALEi5MEZNoyireOKJYE8ZQB3lBenTm319fMhlTRRbpCXAuQ8b/f9aMbgRVQZ92o/hVM+GdA1lh4jA+hbhbhXX2rZWexoRfkTpTScEP7rDYgKDDWj38J7s1Dtj20b1ejZeHbJi4i8S725afcqqSZwUvrdtxTH6KeZGIksZHclZ2KXFD7r2jFOj/fLA9NzQUyFG7b6t8ySiOYt6TpcNwlGjOwExfrtpEbmdRk093XoAP0qDO/nuYCR2BvODq0tj0DpdlCuaCFWkVnJgn/slbfZoU4YpuZkRWs+Et/dpw0lMC57ez9gDUd3Nz9XKbB5QB9a0L2A8LfQvIxr9PXaWlmM8MQ+5bIYo8dF3n728usRbRgpEB+RWy19SnP86aANZarNZQS9pok/EQ90cMXR89DNZxPxDMM4kqLwydSYvc9UEK3KXfv+DSROyaU8vGrd6dkxUbcWHqQPNWm9fRW2ou3Xu10EpiPuiDh9t4ILBHZ1sc1vJrjKCJRrLmZdcyvYNeNTSIhKMQmRy/k/+Csgu/3ajkMOdr2n0auzlA48dWkv+ES4ER0SVqHIdzP3V0d8X5Omq0hc/BkU86Klrjt7P2Pg9ml/yakOgsyy4KM7ghjb4nhwncTeoO2Ru914m2MOFSZFgDm3ZjzQ/o64lqNpGT0M+zdVpJwrVVtXR1vffbrN8KO3flDS+RfyOtzYesoN4hgNVN4klg1Kxcn8plc3J2ssbtnZXzUJv6Zhqh1ZAuZUvWaPIQRlujvICoDGyOxYaPTapw21UkAHG6RXSE9mKVjQPM24u2mJeqW4tfF6ZUOZVICbhzEw53+kQeDm29Nd3LcqqZG9J6xOSKQViqtnDUTspXS1NgGctN2fYGi7c8Haflds4HRmE9azI1vmoYqWhyQ/5OVN8a8DFgm7E9u8Fg0AsQXepf8lsUUURZ0SM+6waDUzPI1A9YdBOPt7sn1p7BlHyFoRMZtNLw5uL/GEE+o8ahR0vcN4jgr9yvqGmA829LCrJ9ixy1gWqX9p9vSg4TfcjNCMYjZ8= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a1642ba2-a52d-4a0a-b4e1-08da5c795ec7 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:38.0279 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR01MB5948 Subject: [FFmpeg-devel] [PATCH 17/20] avcodec/h264_ps: Don't output invalid chroma location 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: wiB5mixNHqwy Signed-off-by: Andreas Rheinhardt --- libavcodec/h264_ps.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c index 1fd7375a13..874790a3a3 100644 --- a/libavcodec/h264_ps.c +++ b/libavcodec/h264_ps.c @@ -181,7 +181,11 @@ static inline int decode_vui_parameters(GetBitContext *gb, void *logctx, /* chroma_location_info_present_flag */ if (get_bits1(gb)) { /* chroma_sample_location_type_top_field */ - sps->chroma_location = get_ue_golomb_31(gb) + 1; + sps->chroma_location = get_ue_golomb_31(gb); + if (sps->chroma_location <= 5U) + sps->chroma_location++; + else + sps->chroma_location = AVCHROMA_LOC_UNSPECIFIED; get_ue_golomb_31(gb); /* chroma_sample_location_type_bottom_field */ } else sps->chroma_location = AVCHROMA_LOC_LEFT; From patchwork Sat Jul 2 22:21:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36613 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1884405pzh; Sat, 2 Jul 2022 15:24:54 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tJ6cxayYDdPPFUzbKSQ9oNZ3+8Yr9rBN2CstpiOC0RxRji8EgyZy6v/nq0dFmqqUlj4Aql X-Received: by 2002:a17:906:5a69:b0:72a:666d:822d with SMTP id my41-20020a1709065a6900b0072a666d822dmr14911870ejc.290.1656800693813; Sat, 02 Jul 2022 15:24:53 -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 a17-20020a056402169100b00439bcbfb2acsi2058639edv.110.2022.07.02.15.24.53; Sat, 02 Jul 2022 15:24:53 -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=@outlook.com header.s=selector1 header.b=AOf5ugws; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A78E868B9BD; Sun, 3 Jul 2022 01:22:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068054.outbound.protection.outlook.com [40.92.68.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 82D6D68B990 for ; Sun, 3 Jul 2022 01:22:42 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=THHzyqAwziFdNxIpX0y5VjAXL5dT/teBbzBaWrTXrKoRJkaB4lcNsH9dnipglSFLRUbAagwXh2+quqV0g290DrYcxp+hiW8JF3g7dKx5ldrrUuc5dOBUi69SDe2ZMKnW8gm5pxPYCXoXDr/nbQ7pHG4nRFFh9HLj/7uwgdmydw7EDeEoLbq1BPB3J7s0uaQWmLtYvFYnxlE6wBQmlDruoWxmZBKXBGPsvCEyJYdKQM8I/8P1MhL2QeXxcG9v7J1725WerQT7aq7GhZFGeH6/5vN/7jBQl57SL5XzwBR8rzbJ0DIDI4SA0V+Hzy98liNVpC1Q3xsjzVspPTtQqVz2ag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NHpudcLARPYx8G5U0FBsW4n+KdwqCbk5OQQ0ZHFZUM8=; b=k2zSmdk+ZKmd+8vn0cqv7SD8UVoZ3RoNpAMmM0pvdzUZC/1Vd67FVhQbKZ8NLdO0TyaPLsohurpB8WCEK7ks5ITEN3Nj4z732ZDUUpLWRcgYDqnJj5htIfx6zD/Ey4k3uoRIGXTSS+ApQrzhqijsQu4V0s/ySJTzTO0qtRqvzNbqaeNmVwA12hPIN/sAhflFbn8MneBLvWNLgYk2PJ0goSm6/12iD4Il1FDbMwEg+djxp6k7pcRXEawsyhJuMS7Hx3epomH9QKsouvDpP2xAigUd0G7TmrZEWHRgQEAxBGeXxSxp4h0WWU/VRnKk7OeAosARFTsD8C71SejxrY5WEg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NHpudcLARPYx8G5U0FBsW4n+KdwqCbk5OQQ0ZHFZUM8=; b=AOf5ugwsrbMpYxKyFHDku9xViVq0legOeU7nAD/+qKmKOxeFN1f6XjpQLkcXJ4oLbQXc6yKlRqsglbNukKkhhGf3TuyHUfLGuh6CRPAAfe9Husocn0ieB6rwT9Y6rMYO1VLQz7SufxvntxcZgDfyNN02CFTRuS5ZloNxCcY82wkDwVbrcL0B0qHnBofv5S6hVevqkEP9g8dBS2qsXDh058WsuJyoH+BbDFUKsd69X4KzXdyMADZ0QWQQWNxWRlgCraX+N3FexcrR810QLWrbccJGRMbhaMwE/VYTv2djYuz9xwr5YNrlh/vD7d4eaO5jqrRYyjz4zFzdLp7rSVcPSA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by DB8PR01MB5948.eurprd01.prod.exchangelabs.com (2603:10a6:10:e4::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.17; Sat, 2 Jul 2022 22:22:39 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:39 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:58 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [dpz1JrlpgSACgGoOtBqNSpEsk78dhERx] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-17-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 43cd0dea-2181-43fb-9423-08da5c795f7e X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNXwBRntoGkOsgo00FNZK4OlAjjAhuG2ha1ZSoSeIuX3EGjtaXGjDQ6FcaTdDUKeirkQPyXvtVgPZ30TplEa2hphzT0QXKlMjmPBWz2r/FHhqYypp7YZ7bV97kCL1fU4lSxcEph8Qq0G8f5PdY2ZPOYotBGirZtSs5xg4ZH8kO7GA1avzsWF1bW6ra82MijbwU6mV18fAjZHyLFU0OjV8u7Y1zFvyhN8FVdIshEKhrEVRVh8yWp2guk3EGCVvMQrzGP0FcCDo2FD5ADZivi+a8eQvhgCsnLX2KKtbqYnJXT3D2Ys/IXYBa85utkF9qPetl92KGxizRjVyu70ApYwGmwlCkXgqVDBKBXj9p3U8LKPOGUbPKfW9lL1JjuT/AzRdvBr8hOmBjg2e1Q9tSrOJAmt070ZGAUh5X2HX9tKexosLbY59wl4YhONBr2QWZqDvTtehV0vIRmI3rY6w0ryf9rNO4QcqloCIAF5iHxxN+SOW456m1XTCvZH2HEQHcpM9QjCmkwHthJk1RJxn289VKFoi23F+zwaREalzzR33uSECijs5tSq2Al4xMU/4RCQV0736j0mVR3Do4tb5+ivWi6dj6F6ha00HHHaQOIalhcNpfK+AiUsB68cW74ceyVAywV88rHdYWrkReuEtVnRcvn0iZVc/h5pBaf9vE1SVXeOc9pMxBBk4bAQUhgj3LF+6UbcQbR7/0u/cZ4i5WQohNUwlyRRvxdKKr0= X-MS-TrafficTypeDiagnostic: DB8PR01MB5948:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CB8gHIA0RJT/6LFeXm1WRHSBaIY5fYywZAEJogXMOXdF4aqervLOza5WSIqtU+swveB2dy58l/BD7pdUNEeCqzx+YQPmCk8arY8S513Lq8xYJen4JnU3EzWdkBJg/VemXR9ZcaCki0sRvGNJ+74exSHmM3iPUPv46i/wfxv0eW16l8/69N0Go0y3HdSZAm6KpAAe6m8M3TsPPWXRqVHrbuuX8G5SatHFvSxuAS/YcMffo4qvrGiMidrWX5+EOwr7uhsf8RsMI/vMiF8sTAu6bP0B+k53IYo0+lIyzYRekmrK7nAOUBmSTJE7wpJ7oYqjwqdSq386xp4cFr4LN9DsUKYvL0qYK7NZmF/2LxW6N5YXVNkNmr2+W0wysgDZvMyssy4GweKMPqBLdYlzGUXr67YRwLAtL0mi48IA8OBzz0bM6Q/fPQjHr8UmDrnawvMTmBCI4ifDg7zboR8LJ6MoSJ1KhyY5x8+L7E7Ir+mMrVltm/JVcth7HQOBxZEf8Ww1qR09iidpPq765wBfAXbeMTkWaeds+4HR64s4QJ4mFAjnnIkCjCYnXPpfmW6biqZ1DEMjynjBe7DEBA28eWdgHYW+jPl5jVE3603YA/JBlrUk4KKEfO3KgSavBEgQZtBxD3ZmM157O698SyniN1XcKQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Qa6FOIkwCfgQz5o2spjhdfDhdOHFmc2S9pcgMLYxOVMd93hXOt7wld/VjpkHjVmqvpj98j1N6Ww59bEihk8g9aXyz+arqMeCXtqawV5OkPDsokvuB6gr1lU6bRhxts7tyoRqjffTUauGOd8J10lH6kwv9NEgGuRxBLojVfnf0bhfW/8gRGQp22KsnRuRgRZryrIGfBWZjAZtsDjUF7jaJlgGbMy4x56LyrQSr1eWyot5Rv/wUiTCsOpBfyBTBIou34ClKSdS2p7bZ1gINOF1kVqeb4OXPpSaJLwRoDUJE9ejSfLyvl/FR0Fiv8DNleZ4YG87OVVISMZZPjkiu0JGB5VvY5+KYhWb6/oarnkJ46my15Pf1+HI2Yl/TXRYWpQd/4829r3FLaR+AfDcIXD0saPHvZioZmrQ8GJx27WjY1mRp/MwdsR/QQHNxyMF7fRbGtf9ruCJsU4kJotqMBweAklKgcR4XwIFBU0tEl6A57FYWzwQqWnST1u3KR/jWO69DZb1kBZjVwFp4coIOtzf1iz5iHjMOxPHOs6K44glXSjM7Dt8dMMZUL4ySU8n7viDkC0+RxRMk09yffVVKrmrDSUm7ySwDD85WNl5l7fzZ3jpWBgjV4NL4B7YXrKDOVtLEiGTcFMklR1XuHxH8hCXJZKMaP3W5Vx7VJwS9t1Yc7yI1YLQfkOiL7pu1BVpG2YITmfedIvISwKbaH4muO1DLKcmCawAm7LjjzuNvc1vBqXDrd/4J6iB7z6HxdTSa62jw+qUAXFHwUpauzJAlGWnUjAywTy2G3AIuNMZ3siXLj/wGFjhcGxaEe+g5TEmJ0GvZTp+4GAedTEk/VwflUNyvlvFV4Hhow5M5ZqCVIs36v30HGcA2ogcRa8zAr979ChmdfdJTaGyqwSvnXHQIMTjClTFA8ZZRxoqhfNuHhQN5JfVdFinaA5k/svbWzs90Q9TIeMmALH1bKPkBwvRW47mUOI4SBC+E0twiT7NpmTF9iIXhdBUgAhd6chyU1we0HpB+NY1gsQh6+owWsS+5aauea2tYZwCBwYOHIf1ZyTZb7NNsdDNO6t+L6ZoYJ34Dsl32Vy5dXljI4d0vQCqE1rYqDDlq3oy7pRSbV8Zc+yYFDk6PL3PyHS30mjfQwgGsRxRDenEOK4l+CiZotAf3clXqQwf2MyaISrinTc/G7IQ+HJ4Nwd4qgemUveNLJ37cCO9fa2QJXLYobUOSL05R20n5G09LARzxRMAhkcavywEZuyNVKK4ggfpvidz1UWPnkiUeinD1pMHO5T7t+NVoUlNBRYq6qQTS5Tjycgnx5nKtLo= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 43cd0dea-2181-43fb-9423-08da5c795f7e X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:39.1904 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR01MB5948 Subject: [FFmpeg-devel] [PATCH 18/20] avcodec/h26[45]_metadata_bsf: Fix range of chroma_sample_loc_type 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: iFgq6c79PtYk Signed-off-by: Andreas Rheinhardt --- libavcodec/h264_metadata_bsf.c | 2 +- libavcodec/h265_metadata_bsf.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/h264_metadata_bsf.c b/libavcodec/h264_metadata_bsf.c index 82b57a32fd..d318bf0cee 100644 --- a/libavcodec/h264_metadata_bsf.c +++ b/libavcodec/h264_metadata_bsf.c @@ -618,7 +618,7 @@ static const AVOption h264_metadata_options[] = { { "chroma_sample_loc_type", "Set chroma sample location type (figure E-1)", OFFSET(chroma_sample_loc_type), AV_OPT_TYPE_INT, - { .i64 = -1 }, -1, 6, FLAGS }, + { .i64 = -1 }, -1, 5, FLAGS }, { "tick_rate", "Set VUI tick rate (time_scale / num_units_in_tick)", OFFSET(tick_rate), AV_OPT_TYPE_RATIONAL, diff --git a/libavcodec/h265_metadata_bsf.c b/libavcodec/h265_metadata_bsf.c index 5edd984069..6787bd14a1 100644 --- a/libavcodec/h265_metadata_bsf.c +++ b/libavcodec/h265_metadata_bsf.c @@ -430,7 +430,7 @@ static const AVOption h265_metadata_options[] = { { "chroma_sample_loc_type", "Set chroma sample location type (figure E-1)", OFFSET(chroma_sample_loc_type), AV_OPT_TYPE_INT, - { .i64 = -1 }, -1, 6, FLAGS }, + { .i64 = -1 }, -1, 5, FLAGS }, { "tick_rate", "Set VPS and VUI tick rate (time_scale / num_units_in_tick)", From patchwork Sat Jul 2 22:21:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36614 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1884449pzh; Sat, 2 Jul 2022 15:25:02 -0700 (PDT) X-Google-Smtp-Source: AGRyM1s7+z8T6yKucMWq6IMt80kvpu24WZ2EZxCzQvr3ws5PgqaqEy8qqTzmcZV5ex2UvFpXY+G2 X-Received: by 2002:a05:6402:154a:b0:435:5261:f776 with SMTP id p10-20020a056402154a00b004355261f776mr27076806edx.118.1656800702174; Sat, 02 Jul 2022 15:25:02 -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 qb37-20020a1709077ea500b00711fb44149esi3366073ejc.769.2022.07.02.15.25.01; Sat, 02 Jul 2022 15:25:02 -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=@outlook.com header.s=selector1 header.b=XKSEWdGr; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8E1A368B9C3; Sun, 3 Jul 2022 01:22:52 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068054.outbound.protection.outlook.com [40.92.68.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B491268B992 for ; Sun, 3 Jul 2022 01:22:42 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZTIazCYfySWOkimOTU5Su/nB+cqNeyE3/sA6310+ASlMNzg8oeWeRANlqaJIvb0fERJe2RTvYZBM63MU3dc96XIxqfLQZ1jIcALOZmWI3cVUGRcIP+vHRMNrAZB4GkCdp9oeStbeb8+M0K9nyEbKG+wWxnumOq7I4bj2EYGM5Y4bCEcBStFsAWJFXvX5MUM/B8umNJXePHviXyzgf+DfJFobrW/k077AMzRS6OP+b0IglmHtzCYygpyujnNkswyFHhFp6KZY6W7JqeA8ODGoAO1hqouFvYoBcytIQmZkJTKUoqxfJJPa+sDZ3T2bPohx5MExKk/kamI9RlRIjCDusg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xlIPrkcDTrpwm0NKnEOsUgiL8WBwKx9VKkVx55mAGfE=; b=lv5wfxZxgmJOvC9DKjS5cR6EfAqs17vdNpxUJMNHuX/dAvY4FnQajh1OPBuoki0tyIlpFhBLnOCUeEE6oEvYD8STaSBptCs987pMNKnBqrjztEQhmPkuagXGrnB3PZHrsOIpUw+reYD5fJUSymaXGppNkl+5JZExouC9hf3NhyQmBgQCeKrAV268klkKQwT5p/vQaABX9u9Wd2SVJ9MZ/arTPJ+7o/Q6tDAodyvDMcWuu1H88MdGLZQe2eUw3yh9sw6a4mtyuGrBiGvwn4TBwARbgfNm/8MDVkRxWjr0INILuJDNyMh8umnOrf5Ws57qfvUKybdFPs8L3kxqs90LsQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xlIPrkcDTrpwm0NKnEOsUgiL8WBwKx9VKkVx55mAGfE=; b=XKSEWdGrDmjhK/Nh2JG2j8N3CVEN0l42sSwGGyD8HUcmzQ0RLqqyetydmoldvOMiX0x8qdzdpe2jpxBgP/q1kvgmgpoytrk3RlNL0/dmkfn8QgDaiqq+rLDGUI/DWfCbKgdX30MEEScCv/Oa8AdBbLJLdyGUMYjJ0Je5m7AuL2RAkRxEpiTj9Oy2vDhxZl5rcS8b0ydAFoZbGES+WmQsJ9Q4uykdef4xPOOOYCQPNXGFmCs4FonhqbUNLbe12WnsgTJ54K3QINaPsA2vkl5opq0TD4jZWSb7hRrFd3iXkAcwX0skkIhhwuVyi/iaoecYYCBXvhPhL4q1YvVe8/mELQ== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by DB8PR01MB5948.eurprd01.prod.exchangelabs.com (2603:10a6:10:e4::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.17; Sat, 2 Jul 2022 22:22:40 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:40 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:59 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [pfzU07MPQJ9gApreuciD3uqGvk/l5l1Q] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-18-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4740189f-34b3-4b8d-195c-08da5c796017 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNXwBRntoGkOsgo00FNZK4OlrAyQchzuOfdTYSKwIZ8Yb7O5WC73MNJro8D6qwPLPPYpwTG1OrphGUQxwqRygbtJZcXtoqH2mnCXnRo0Po7zVynaNNVU3p/yy64HO+e3vtB6Se9SsraT9cGbXhrPmYbBZb7c39azt8ap9ISXsv+rcMf4Iqn+m2Vau2gtKgycVGAv95wqt3CE/rGYdzmeqLf929KjMWoalcj9dabJM5+ee0VEH8AR3h0EOXJyR19rqpAxmmmgEqvSsucEQXVswYMSoONda4uP25pRMHnrLtY27331uYDNa+L921onJRtJLYV6jgePczt9kfRhVpyAYufAJetkMWZJwovU0rILXbzVaIOc13PlHFsZ9v0bbcnsiIPyMH8lEAMiSoIr8AsqjTu/9Ilwvnh5sGI1OTIbl+Z5Jr9ICTH6nrBHXfyY1fAvAhkbU/p1tYMhFS9OgKBEvaHUfuKkzKfhqNkMAXM0GUDQ/V7ib1ALmBtQz5QgGd63sWOeO/1s/jUlljqLY2VVvxMl1/LL5e/ZwgLlUrEhDvvYxy3xwzQ9VwiOjorEhgv4z1KZQnwmUyzl4+760tFETCROLS7u022z3gcpuxl4cnwdoo8jZ0nw7DWyyvRyUPK442F9v66kGTd8FvHf1m65k8yeD4WIcg9idIuOh6iCu68OpnktoAojh0ZUg0TvDuKvGQj3yLTwn80a8dfkkNO37ssUgIefJE2SyJA= X-MS-TrafficTypeDiagnostic: DB8PR01MB5948:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: U1lVpi9Kd4aBc3VJpmx7D3aPMhGPzwMLSIvjq1IXe433dYW4wlKL7ZtfhCWvgKeQIMfk1a8MX+Mh3UDXolfaWUFI6UrLMC99q+jFNF87gGVnzdWCpqTjV3MMZ8RHL5UIJye5/abLrB7suYNwbrHBnP5iFHqAZk9Fme0Z+UteEzniPSWRjyF3Gn1j8dXLh2EK9VjIwGSy2e6KeJcfhicQVsCWZ7FQbMBaPgqk6TZe/B9ZcroWgssOlOUl7cJfCIUU8ImEsSsiTffz4wJfnjqhV8vux2/ONtDdOQE8Utm7/IIj2PCysXjRv45hhPbZOVAkwcQKqZR5TEe/HLFqJxSwrTTVl+ody67lJ1HlVwqJwT8TZ7V/vJNehkbp0c9jYgc7cYrvitqh5wK7ZGWrZgE8rZZ5aqsm8hpfIwW/hGneoAVh3I5e8g8s/4JyzeGy9fFF9xFF8Q/MmWtuHW1ambQN3pFpt2b3Hsbtr0ZB5ejwuI/dq37W1pfTTRa8Okjh1t5STcwnUge5gkJf5kwecwtC6YNzMN3/8/Gz4YFb8oVicXbxZazsSmnlGj/HHVPbPNrevsqXCUWJaYIkMucDCcLSTm9M3j4FZL3zlY50uj/LdnNMtXxq2zt6DE2XbNVoxgQYKb5IH6E0n6Dd6vfUSl7HYw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JwrxwTTZMTAg3kSzBrOk4JpY5K8RXXgAYCyKo0mynjBrqImQ4tg9z2cs4f1HuHY6Dse/Rcnj0K0I1iutTsCC08wg43sZogVaWzJ1SveYfMGXfuKofIO3UR+CavlaW2f1SjtcXsz7eZpJWJiX37ul1V5ilB/6rrwpl8fH+zujOhwzgYtm6Kp8Smo9Ms/V5Rho4ktNc8ewR7Y9ANHZSFkJwvg+yTqOp8QmU7kugUEgCgwvQ1oaX8sPUNyC5aoilnycNRrD2c5ri2EOzcGIeqZhgtV+ML/FETRCScFkpQFE7Jido4yK9ckpOxXKPjftbBT7MZ2MEq8I/6+X+oh6rLipVPVlqY0gX69/LOD/aiASLWIgHumRcYZmzg9H1dUOl3ToyezU67SbS/zsd86I4tqj4szU0B8ZUcnR7D0xMe8UEPLtT5jVtbQ5zhU0C5ejja6+bg+Nv4IAe/wLZ5fDKZbf0XuPY7q2ujnXMK6qqSoDxP76BJyfMIs80Izwv/vSwLPEpQhhqqoC6CThV7dcNvk6q2OYqKckErhOt86iazdICd1SFqcRFWIux/9aXWBuSPdaOkxs9StC/Tye9UQtKOfmcwsqxHtQnqxOCrFGI2Bd6eswLuxRWGymrXglday1arMDGpRDyMtLgeSUgcHdup4JdK3lAt4YVes3vv4I9BNvSs5FgxhtWq/bbrZrQQCAEPLkcP6QBw0c8tFiTL0+uzNXzSZ2W8DAK6mqomkRWrhXkx/hN3w+p8WDqu2aRh0UV/Wc6kKLh5a208+Im1iig2x4I/EeS8v9j6BUI/iA4StS7MkLX/rC+aLUEanbNtG7soeRg0Bsb7Z6EDATuiOpSyQDmZRPVAYgyVUZq2jYgDkHcA0RIxIWYzvWwXk8RrpLJpfKnMyscqJrcuO8bZCOGLvgG6bMid3JJsuAhE15I0i07PJJTZqg2q6GiSx4So2LvXSFsO0tUmOOtQ4Ef7bAoNUlndxi0VXhIPiqsjzaCg0R7icJJjfoLoD6KQtj+SE+EDp4HnFWzNhN0pNc9pp1IoocPC+U9yFweXrH9iM/Ex0Oiuqqgc0amBYPzE/CK2q5Z6KMsT8WRINGkKCcGe1CN0bSkHRrPyEXSvgnt2tODK13QT2ioLqW9h1ivxyDa+RoTEfiyeoLdK3Yu6PiuGuOMlC+4zyCmUGLcV0zmVdU5FTqw8cH/mcStLDPcz6wVmVeRD5Di+p0qcZms0z6KpUZKOnr1Le6CYUWD81dL2i/ZwEhH4kiBnWvpaX/XwunQv6oSph1NgubpOTXs0Yj8WSIaFAhM11L/tAafHhYwKJ8/vPKids= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4740189f-34b3-4b8d-195c-08da5c796017 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:40.2224 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR01MB5948 Subject: [FFmpeg-devel] [PATCH 19/20] avcodec/(h264|hevc)_ps: Factor common VUI code out 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: qen053sDFvIT Signed-off-by: Andreas Rheinhardt --- libavcodec/Makefile | 5 ++- libavcodec/h2645_vui.c | 91 +++++++++++++++++++++++++++++++++++++++++ libavcodec/h2645_vui.h | 49 ++++++++++++++++++++++ libavcodec/h264_ps.c | 69 +++---------------------------- libavcodec/h264_ps.h | 10 +---- libavcodec/h264_slice.c | 36 ++++++++-------- libavcodec/hevc_ps.c | 54 ++++-------------------- libavcodec/hevc_ps.h | 19 ++------- libavcodec/hevcdec.c | 34 +++++++-------- 9 files changed, 197 insertions(+), 170 deletions(-) create mode 100644 libavcodec/h2645_vui.c create mode 100644 libavcodec/h2645_vui.h diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 5d6aedeba7..a210c46f49 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -97,12 +97,13 @@ OBJS-$(CONFIG_GOLOMB) += golomb.o OBJS-$(CONFIG_H263DSP) += h263dsp.o OBJS-$(CONFIG_H264CHROMA) += h264chroma.o OBJS-$(CONFIG_H264DSP) += h264dsp.o h264idct.o -OBJS-$(CONFIG_H264PARSE) += h264_parse.o h264_ps.o h2645data.o h2645_parse.o +OBJS-$(CONFIG_H264PARSE) += h264_parse.o h264_ps.o h2645data.o \ + h2645_parse.o h2645_vui.o OBJS-$(CONFIG_H264PRED) += h264pred.o OBJS-$(CONFIG_H264QPEL) += h264qpel.o OBJS-$(CONFIG_H264_SEI) += h264_sei.o h2645_sei.o OBJS-$(CONFIG_HEVCPARSE) += hevc_parse.o hevc_ps.o hevc_data.o \ - h2645data.o h2645_parse.o + h2645data.o h2645_parse.o h2645_vui.o OBJS-$(CONFIG_HEVC_SEI) += hevc_sei.o h2645_sei.o dynamic_hdr10_plus.o dynamic_hdr_vivid.o OBJS-$(CONFIG_HPELDSP) += hpeldsp.o OBJS-$(CONFIG_HUFFMAN) += huffman.o diff --git a/libavcodec/h2645_vui.c b/libavcodec/h2645_vui.c new file mode 100644 index 0000000000..fcc4b37105 --- /dev/null +++ b/libavcodec/h2645_vui.c @@ -0,0 +1,91 @@ +/* + * Common H.264/HEVC VUI Parameter decoding + * + * Copyright (c) 2003 Michael Niedermayer + * Copyright (C) 2012 - 2013 Guillaume Martres + * Copyright (C) 2012 - 2013 Mickael Raulet + * Copyright (C) 2012 - 2013 Gildas Cocherel + * Copyright (C) 2013 Vittorio Giovara + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "libavutil/log.h" +#include "libavutil/pixdesc.h" + +#include "get_bits.h" +#include "golomb.h" +#include "h2645data.h" +#include "h2645_vui.h" + +#define EXTENDED_SAR 255 + +void ff_h2645_decode_common_vui_params(GetBitContext *gb, H2645VUI *vui, void *logctx) +{ + int aspect_ratio_info_present_flag; + + av_log(logctx, AV_LOG_DEBUG, "Decoding VUI\n"); + + aspect_ratio_info_present_flag = get_bits1(gb); + if (aspect_ratio_info_present_flag) { + uint8_t aspect_ratio_idc = get_bits(gb, 8); + if (aspect_ratio_idc < FF_ARRAY_ELEMS(ff_h2645_pixel_aspect)) + vui->sar = ff_h2645_pixel_aspect[aspect_ratio_idc]; + else if (aspect_ratio_idc == EXTENDED_SAR) { + vui->sar.num = get_bits(gb, 16); + vui->sar.den = get_bits(gb, 16); + } else + av_log(logctx, AV_LOG_WARNING, + "Unknown SAR index: %u.\n", aspect_ratio_idc); + } else + vui->sar = (AVRational){ 0, 1 }; + + vui->overscan_info_present_flag = get_bits1(gb); + if (vui->overscan_info_present_flag) + vui->overscan_appropriate_flag = get_bits1(gb); + + vui->video_signal_type_present_flag = get_bits1(gb); + if (vui->video_signal_type_present_flag) { + vui->video_format = get_bits(gb, 3); + vui->video_full_range_flag = get_bits1(gb); + vui->colour_description_present_flag = get_bits1(gb); + if (vui->colour_description_present_flag) { + vui->colour_primaries = get_bits(gb, 8); + vui->transfer_characteristics = get_bits(gb, 8); + vui->matrix_coeffs = get_bits(gb, 8); + + // Set invalid values to "unspecified" + if (!av_color_primaries_name(vui->colour_primaries)) + vui->colour_primaries = AVCOL_PRI_UNSPECIFIED; + if (!av_color_transfer_name(vui->transfer_characteristics)) + vui->transfer_characteristics = AVCOL_TRC_UNSPECIFIED; + if (!av_color_space_name(vui->matrix_coeffs)) + vui->matrix_coeffs = AVCOL_SPC_UNSPECIFIED; + } + } + + vui->chroma_loc_info_present_flag = get_bits1(gb); + if (vui->chroma_loc_info_present_flag) { + vui->chroma_sample_loc_type_top_field = get_ue_golomb_31(gb); + vui->chroma_sample_loc_type_bottom_field = get_ue_golomb_31(gb); + if (vui->chroma_sample_loc_type_top_field <= 5U) + vui->chroma_location = vui->chroma_sample_loc_type_top_field + 1; + else + vui->chroma_location = AVCHROMA_LOC_UNSPECIFIED; + } else + vui->chroma_location = AVCHROMA_LOC_LEFT; +} \ No newline at end of file diff --git a/libavcodec/h2645_vui.h b/libavcodec/h2645_vui.h new file mode 100644 index 0000000000..7b9bbad2d3 --- /dev/null +++ b/libavcodec/h2645_vui.h @@ -0,0 +1,49 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_H2645_VUI_H +#define AVCODEC_H2645_VUI_H + +#include "libavutil/pixfmt.h" +#include "libavutil/rational.h" + +#include "get_bits.h" + +typedef struct H2645VUI { + AVRational sar; + + int overscan_info_present_flag; + int overscan_appropriate_flag; + + int video_signal_type_present_flag; + int video_format; + int video_full_range_flag; + int colour_description_present_flag; + enum AVColorPrimaries colour_primaries; + enum AVColorTransferCharacteristic transfer_characteristics; + enum AVColorSpace matrix_coeffs; + + int chroma_loc_info_present_flag; + int chroma_sample_loc_type_top_field; + int chroma_sample_loc_type_bottom_field; + enum AVChromaLocation chroma_location; +} H2645VUI; + +void ff_h2645_decode_common_vui_params(GetBitContext *gb, H2645VUI *vui, void *logctx); + +#endif /* AVCODEC_H2645_VUI_H */ \ No newline at end of file diff --git a/libavcodec/h264_ps.c b/libavcodec/h264_ps.c index 874790a3a3..d0d1e65903 100644 --- a/libavcodec/h264_ps.c +++ b/libavcodec/h264_ps.c @@ -31,14 +31,12 @@ #include "mathops.h" #include "avcodec.h" #include "h264data.h" -#include "h2645data.h" +#include "h2645_vui.h" #include "h264_ps.h" #include "golomb.h" #define MIN_LOG2_MAX_FRAME_NUM 4 -#define EXTENDED_SAR 255 - static const uint8_t default_scaling4[2][16] = { { 6, 13, 20, 28, 13, 20, 28, 32, 20, 28, 32, 37, 28, 32, 37, 42 }, @@ -133,62 +131,7 @@ static inline int decode_hrd_parameters(GetBitContext *gb, void *logctx, static inline int decode_vui_parameters(GetBitContext *gb, void *logctx, SPS *sps) { - int aspect_ratio_info_present_flag; - unsigned int aspect_ratio_idc; - - aspect_ratio_info_present_flag = get_bits1(gb); - - if (aspect_ratio_info_present_flag) { - aspect_ratio_idc = get_bits(gb, 8); - if (aspect_ratio_idc == EXTENDED_SAR) { - sps->sar.num = get_bits(gb, 16); - sps->sar.den = get_bits(gb, 16); - } else if (aspect_ratio_idc < FF_ARRAY_ELEMS(ff_h2645_pixel_aspect)) { - sps->sar = ff_h2645_pixel_aspect[aspect_ratio_idc]; - } else { - av_log(logctx, AV_LOG_WARNING, "Unknown SAR index: %u.\n", - aspect_ratio_idc); - } - } else { - sps->sar.num = - sps->sar.den = 0; - } - - if (get_bits1(gb)) /* overscan_info_present_flag */ - get_bits1(gb); /* overscan_appropriate_flag */ - - sps->video_signal_type_present_flag = get_bits1(gb); - if (sps->video_signal_type_present_flag) { - get_bits(gb, 3); /* video_format */ - sps->full_range = get_bits1(gb); /* video_full_range_flag */ - - sps->colour_description_present_flag = get_bits1(gb); - if (sps->colour_description_present_flag) { - sps->color_primaries = get_bits(gb, 8); /* colour_primaries */ - sps->color_trc = get_bits(gb, 8); /* transfer_characteristics */ - sps->colorspace = get_bits(gb, 8); /* matrix_coefficients */ - - // Set invalid values to "unspecified" - if (!av_color_primaries_name(sps->color_primaries)) - sps->color_primaries = AVCOL_PRI_UNSPECIFIED; - if (!av_color_transfer_name(sps->color_trc)) - sps->color_trc = AVCOL_TRC_UNSPECIFIED; - if (!av_color_space_name(sps->colorspace)) - sps->colorspace = AVCOL_SPC_UNSPECIFIED; - } - } - - /* chroma_location_info_present_flag */ - if (get_bits1(gb)) { - /* chroma_sample_location_type_top_field */ - sps->chroma_location = get_ue_golomb_31(gb); - if (sps->chroma_location <= 5U) - sps->chroma_location++; - else - sps->chroma_location = AVCHROMA_LOC_UNSPECIFIED; - get_ue_golomb_31(gb); /* chroma_sample_location_type_bottom_field */ - } else - sps->chroma_location = AVCHROMA_LOC_LEFT; + ff_h2645_decode_common_vui_params(gb, &sps->vui, logctx); if (show_bits1(gb) && get_bits_left(gb) < 10) { av_log(logctx, AV_LOG_WARNING, "Truncated VUI (%d)\n", get_bits_left(gb)); @@ -381,12 +324,12 @@ int ff_h264_decode_seq_parameter_set(GetBitContext *gb, AVCodecContext *avctx, sps->profile_idc = profile_idc; sps->constraint_set_flags = constraint_set_flags; sps->level_idc = level_idc; - sps->full_range = -1; + sps->vui.video_full_range_flag = -1; memset(sps->scaling_matrix4, 16, sizeof(sps->scaling_matrix4)); memset(sps->scaling_matrix8, 16, sizeof(sps->scaling_matrix8)); sps->scaling_matrix_present = 0; - sps->colorspace = 2; //AVCOL_SPC_UNSPECIFIED + sps->vui.matrix_coeffs = AVCOL_SPC_UNSPECIFIED; if (sps->profile_idc == 100 || // High profile sps->profile_idc == 110 || // High10 profile @@ -603,8 +546,8 @@ int ff_h264_decode_seq_parameter_set(GetBitContext *gb, AVCodecContext *avctx, } } - if (!sps->sar.den) - sps->sar.den = 1; + if (!sps->vui.sar.den) + sps->vui.sar.den = 1; if (avctx->debug & FF_DEBUG_PICT_INFO) { static const char csp[4][5] = { "Gray", "420", "422", "444" }; diff --git a/libavcodec/h264_ps.h b/libavcodec/h264_ps.h index dc52835ed4..5c35761fbc 100644 --- a/libavcodec/h264_ps.h +++ b/libavcodec/h264_ps.h @@ -33,6 +33,7 @@ #include "avcodec.h" #include "get_bits.h" #include "h264.h" +#include "h2645_vui.h" #define MAX_SPS_COUNT 32 #define MAX_PPS_COUNT 256 @@ -70,14 +71,7 @@ typedef struct SPS { unsigned int crop_top; ///< frame_cropping_rect_top_offset unsigned int crop_bottom; ///< frame_cropping_rect_bottom_offset int vui_parameters_present_flag; - AVRational sar; - int video_signal_type_present_flag; - int full_range; - int colour_description_present_flag; - enum AVColorPrimaries color_primaries; - enum AVColorTransferCharacteristic color_trc; - enum AVColorSpace colorspace; - enum AVChromaLocation chroma_location; + H2645VUI vui; int timing_info_present_flag; uint32_t num_units_in_tick; diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 205ad5f97b..ba873254ce 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -326,7 +326,7 @@ int ff_h264_update_thread_context(AVCodecContext *dst, !h->ps.sps || h->ps.sps->bit_depth_luma != h1->ps.sps->bit_depth_luma || h->ps.sps->chroma_format_idc != h1->ps.sps->chroma_format_idc || - h->ps.sps->colorspace != h1->ps.sps->colorspace)) { + h->ps.sps->vui.matrix_coeffs != h1->ps.sps->vui.matrix_coeffs)) { need_reinit = 1; } @@ -936,7 +936,7 @@ static int h264_slice_header_init(H264Context *h) goto fail; } - ff_set_sar(h->avctx, sps->sar); + ff_set_sar(h->avctx, sps->vui.sar); av_pix_fmt_get_chroma_sub_sample(h->avctx->pix_fmt, &h->chroma_x_shift, &h->chroma_y_shift); @@ -1061,7 +1061,7 @@ static int h264_init_ps(H264Context *h, const H264SliceContext *sl, int first_sl || (non_j_pixfmt(h->avctx->pix_fmt) != non_j_pixfmt(get_pixel_format(h, 0)))) must_reinit = 1; - if (first_slice && av_cmp_q(sps->sar, h->avctx->sample_aspect_ratio)) + if (first_slice && av_cmp_q(sps->vui.sar, h->avctx->sample_aspect_ratio)) must_reinit = 1; if (!h->setup_finished) { @@ -1083,15 +1083,15 @@ static int h264_init_ps(H264Context *h, const H264SliceContext *sl, int first_sl init_dimensions(h); - if (sps->video_signal_type_present_flag) { - h->avctx->color_range = sps->full_range > 0 ? AVCOL_RANGE_JPEG - : AVCOL_RANGE_MPEG; - if (sps->colour_description_present_flag) { - if (h->avctx->colorspace != sps->colorspace) + if (sps->vui.video_signal_type_present_flag) { + h->avctx->color_range = sps->vui.video_full_range_flag > 0 ? AVCOL_RANGE_JPEG + : AVCOL_RANGE_MPEG; + if (sps->vui.colour_description_present_flag) { + if (h->avctx->colorspace != sps->vui.matrix_coeffs) needs_reinit = 1; - h->avctx->color_primaries = sps->color_primaries; - h->avctx->color_trc = sps->color_trc; - h->avctx->colorspace = sps->colorspace; + h->avctx->color_primaries = sps->vui.colour_primaries; + h->avctx->color_trc = sps->vui.transfer_characteristics; + h->avctx->colorspace = sps->vui.matrix_coeffs; } } @@ -1101,7 +1101,7 @@ static int h264_init_ps(H264Context *h, const H264SliceContext *sl, int first_sl h->avctx->color_trc = h->sei.common.alternative_transfer.preferred_transfer_characteristics; } } - h->avctx->chroma_sample_location = sps->chroma_location; + h->avctx->chroma_sample_location = sps->vui.chroma_location; if (!h->context_initialized || must_reinit || needs_reinit) { int flush_changes = h->context_initialized; @@ -1249,14 +1249,14 @@ static int h264_export_frame_props(H264Context *h) } else { fgp->codec.h274.bit_depth_luma = sps->bit_depth_luma; fgp->codec.h274.bit_depth_chroma = sps->bit_depth_chroma; - if (sps->video_signal_type_present_flag) - fgp->codec.h274.color_range = sps->full_range + 1; + if (sps->vui.video_signal_type_present_flag) + fgp->codec.h274.color_range = sps->vui.video_full_range_flag + 1; else fgp->codec.h274.color_range = AVCOL_RANGE_UNSPECIFIED; - if (sps->colour_description_present_flag) { - fgp->codec.h274.color_primaries = sps->color_primaries; - fgp->codec.h274.color_trc = sps->color_trc; - fgp->codec.h274.color_space = sps->colorspace; + if (sps->vui.colour_description_present_flag) { + fgp->codec.h274.color_primaries = sps->vui.colour_primaries; + fgp->codec.h274.color_trc = sps->vui.transfer_characteristics; + fgp->codec.h274.color_space = sps->vui.matrix_coeffs; } else { fgp->codec.h274.color_primaries = AVCOL_PRI_UNSPECIFIED; fgp->codec.h274.color_trc = AVCOL_TRC_UNSPECIFIED; diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index 25620357de..b68656e352 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -25,7 +25,7 @@ #include "libavutil/imgutils.h" #include "golomb.h" -#include "h2645data.h" +#include "h2645_vui.h" #include "hevc_data.h" #include "hevc_ps.h" @@ -571,47 +571,15 @@ static void decode_vui(GetBitContext *gb, AVCodecContext *avctx, { VUI backup_vui, *vui = &sps->vui; GetBitContext backup; - int sar_present, alt = 0; - - av_log(avctx, AV_LOG_DEBUG, "Decoding VUI\n"); - - sar_present = get_bits1(gb); - if (sar_present) { - uint8_t sar_idx = get_bits(gb, 8); - if (sar_idx < FF_ARRAY_ELEMS(ff_h2645_pixel_aspect)) - vui->sar = ff_h2645_pixel_aspect[sar_idx]; - else if (sar_idx == 255) { - vui->sar.num = get_bits(gb, 16); - vui->sar.den = get_bits(gb, 16); - } else - av_log(avctx, AV_LOG_WARNING, - "Unknown SAR index: %u.\n", sar_idx); - } + int alt = 0; - vui->overscan_info_present_flag = get_bits1(gb); - if (vui->overscan_info_present_flag) - vui->overscan_appropriate_flag = get_bits1(gb); + ff_h2645_decode_common_vui_params(gb, &sps->vui.common, avctx); - vui->video_signal_type_present_flag = get_bits1(gb); - if (vui->video_signal_type_present_flag) { - vui->video_format = get_bits(gb, 3); - vui->video_full_range_flag = get_bits1(gb); - vui->colour_description_present_flag = get_bits1(gb); - if (vui->video_full_range_flag && sps->pix_fmt == AV_PIX_FMT_YUV420P) + if (vui->common.video_signal_type_present_flag) { + if (vui->common.video_full_range_flag && sps->pix_fmt == AV_PIX_FMT_YUV420P) sps->pix_fmt = AV_PIX_FMT_YUVJ420P; - if (vui->colour_description_present_flag) { - vui->colour_primaries = get_bits(gb, 8); - vui->transfer_characteristic = get_bits(gb, 8); - vui->matrix_coeffs = get_bits(gb, 8); - - // Set invalid values to "unspecified" - if (!av_color_primaries_name(vui->colour_primaries)) - vui->colour_primaries = AVCOL_PRI_UNSPECIFIED; - if (!av_color_transfer_name(vui->transfer_characteristic)) - vui->transfer_characteristic = AVCOL_TRC_UNSPECIFIED; - if (!av_color_space_name(vui->matrix_coeffs)) - vui->matrix_coeffs = AVCOL_SPC_UNSPECIFIED; - if (vui->matrix_coeffs == AVCOL_SPC_RGB) { + if (vui->common.colour_description_present_flag) { + if (vui->common.matrix_coeffs == AVCOL_SPC_RGB) { switch (sps->pix_fmt) { case AV_PIX_FMT_YUV444P: sps->pix_fmt = AV_PIX_FMT_GBRP; @@ -627,12 +595,6 @@ static void decode_vui(GetBitContext *gb, AVCodecContext *avctx, } } - vui->chroma_loc_info_present_flag = get_bits1(gb); - if (vui->chroma_loc_info_present_flag) { - vui->chroma_sample_loc_type_top_field = get_ue_golomb_long(gb); - vui->chroma_sample_loc_type_bottom_field = get_ue_golomb_long(gb); - } - vui->neutra_chroma_indication_flag = get_bits1(gb); vui->field_seq_flag = get_bits1(gb); vui->frame_field_info_present_flag = get_bits1(gb); @@ -1107,7 +1069,7 @@ int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id, sps->sps_temporal_mvp_enabled_flag = get_bits1(gb); sps->sps_strong_intra_smoothing_enable_flag = get_bits1(gb); - sps->vui.sar = (AVRational){0, 1}; + sps->vui.common.sar = (AVRational){0, 1}; vui_present = get_bits1(gb); if (vui_present) decode_vui(gb, avctx, apply_defdispwin, sps); diff --git a/libavcodec/hevc_ps.h b/libavcodec/hevc_ps.h index 2a1bbf6489..18894cfed1 100644 --- a/libavcodec/hevc_ps.h +++ b/libavcodec/hevc_ps.h @@ -29,6 +29,7 @@ #include "avcodec.h" #include "get_bits.h" +#include "h2645_vui.h" #include "hevc.h" typedef struct ShortTermRPS { @@ -47,22 +48,8 @@ typedef struct HEVCWindow { } HEVCWindow; typedef struct VUI { - AVRational sar; - - int overscan_info_present_flag; - int overscan_appropriate_flag; - - int video_signal_type_present_flag; - int video_format; - int video_full_range_flag; - int colour_description_present_flag; - uint8_t colour_primaries; - uint8_t transfer_characteristic; - uint8_t matrix_coeffs; - - int chroma_loc_info_present_flag; - int chroma_sample_loc_type_top_field; - int chroma_sample_loc_type_bottom_field; + H2645VUI common; + int neutra_chroma_indication_flag; int field_seq_flag; diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index fdb8de5b15..7147944bc6 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -337,18 +337,18 @@ static void export_stream_params(HEVCContext *s, const HEVCSPS *sps) avctx->profile = sps->ptl.general_ptl.profile_idc; avctx->level = sps->ptl.general_ptl.level_idc; - ff_set_sar(avctx, sps->vui.sar); + ff_set_sar(avctx, sps->vui.common.sar); - if (sps->vui.video_signal_type_present_flag) - avctx->color_range = sps->vui.video_full_range_flag ? AVCOL_RANGE_JPEG - : AVCOL_RANGE_MPEG; + if (sps->vui.common.video_signal_type_present_flag) + avctx->color_range = sps->vui.common.video_full_range_flag ? AVCOL_RANGE_JPEG + : AVCOL_RANGE_MPEG; else avctx->color_range = AVCOL_RANGE_MPEG; - if (sps->vui.colour_description_present_flag) { - avctx->color_primaries = sps->vui.colour_primaries; - avctx->color_trc = sps->vui.transfer_characteristic; - avctx->colorspace = sps->vui.matrix_coeffs; + if (sps->vui.common.colour_description_present_flag) { + avctx->color_primaries = sps->vui.common.colour_primaries; + avctx->color_trc = sps->vui.common.transfer_characteristics; + avctx->colorspace = sps->vui.common.matrix_coeffs; } else { avctx->color_primaries = AVCOL_PRI_UNSPECIFIED; avctx->color_trc = AVCOL_TRC_UNSPECIFIED; @@ -357,9 +357,9 @@ static void export_stream_params(HEVCContext *s, const HEVCSPS *sps) avctx->chroma_sample_location = AVCHROMA_LOC_UNSPECIFIED; if (sps->chroma_format_idc == 1) { - if (sps->vui.chroma_loc_info_present_flag) { - if (sps->vui.chroma_sample_loc_type_top_field <= 5) - avctx->chroma_sample_location = sps->vui.chroma_sample_loc_type_top_field + 1; + if (sps->vui.common.chroma_loc_info_present_flag) { + if (sps->vui.common.chroma_sample_loc_type_top_field <= 5) + avctx->chroma_sample_location = sps->vui.common.chroma_sample_loc_type_top_field + 1; } else avctx->chroma_sample_location = AVCHROMA_LOC_LEFT; } @@ -2851,14 +2851,14 @@ static int set_side_data(HEVCContext *s) const VUI *vui = &sps->vui; fgp->codec.h274.bit_depth_luma = sps->bit_depth; fgp->codec.h274.bit_depth_chroma = sps->bit_depth_chroma; - if (vui->video_signal_type_present_flag) - fgp->codec.h274.color_range = vui->video_full_range_flag + 1; + if (vui->common.video_signal_type_present_flag) + fgp->codec.h274.color_range = vui->common.video_full_range_flag + 1; else fgp->codec.h274.color_range = AVCOL_RANGE_UNSPECIFIED; - if (vui->colour_description_present_flag) { - fgp->codec.h274.color_primaries = vui->colour_primaries; - fgp->codec.h274.color_trc = vui->transfer_characteristic; - fgp->codec.h274.color_space = vui->matrix_coeffs; + if (vui->common.colour_description_present_flag) { + fgp->codec.h274.color_primaries = vui->common.colour_primaries; + fgp->codec.h274.color_trc = vui->common.transfer_characteristics; + fgp->codec.h274.color_space = vui->common.matrix_coeffs; } else { fgp->codec.h274.color_primaries = AVCOL_PRI_UNSPECIFIED; fgp->codec.h274.color_trc = AVCOL_TRC_UNSPECIFIED; From patchwork Sat Jul 2 22:22:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36615 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1884496pzh; Sat, 2 Jul 2022 15:25:11 -0700 (PDT) X-Google-Smtp-Source: AGRyM1s3HP5fdD/MvXuTNin7agegoNlYito6070TaGP7+mEXJp7RhRnI5nve852MX4VMA9XQYRYn X-Received: by 2002:a05:6402:240a:b0:437:d2b6:3dde with SMTP id t10-20020a056402240a00b00437d2b63ddemr28020829eda.62.1656800710871; Sat, 02 Jul 2022 15:25:10 -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 ga30-20020a1709070c1e00b00726bdd2bbc7si5101035ejc.1005.2022.07.02.15.25.10; Sat, 02 Jul 2022 15:25:10 -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=@outlook.com header.s=selector1 header.b=VDbjJ1qT; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8F12768B9C8; Sun, 3 Jul 2022 01:22:53 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068054.outbound.protection.outlook.com [40.92.68.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EE97B68B993 for ; Sun, 3 Jul 2022 01:22:42 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=knPOuI4K4F//WkAZ4V3oLDupm17h5K4hiWgIGSO7QHBLb6zM65fF1qWp/STnwixvd1udJ1VMMQsjxSzNvzHETuiHMfIEZKS+q5TGNZwjuUmjRaoalq0Q36eJfXcCTBYEEovSZUXAX/FcyJV61txluUAubEslGZiPrUD1B9V947BOwzs0p+UiLoZaGtnSYo26ykEDxZluiFyeQrIre74nYLBUqL0eZAKzUP6Ujv4IjNc9aw4HtnLS2C3r8fInN1TGY+kL29XL5l7ptsdSbdb0KYVZZ2P++yNMRnOTcZYWx5Ep8nlng2mu7FsPKisCWxsJ9nN6pbrXH+vSh4a/fH77TQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=hlXyeKgbR+wtdZR22/mY0dkcxkMIcDkQvAtMsHfNMvQ=; b=N0SjnEhknhSjhFGjvuvkm6+zORw0nWyFHP458EkcFtN5PmpivMwuT452HXiZIHNc2q+dJxCBNpuSZR4gj2kVj3fxUX7N62VDjA+Yw3mrwklTff4dxhIoC0Qx6oumYmq+0lSR78VN4YQcWd1m3RrXfi3JPpJJB3Phd9+dGzrDSSfo29SefiiV8m98PTL8a26MaF2Tew42uPZk78dPy0GlM4pkSbZOK9f9MR5KPZerO9oTnaUZ8t3AD5/3may07UZ200wlr9QqpRMZbtExM9e81NuwpKCOWwDKyIZ5j4Qwnh08yv4DsRrPHlTj4ymM1KIVKUqpGGYL1CKoW8VhkYriLw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hlXyeKgbR+wtdZR22/mY0dkcxkMIcDkQvAtMsHfNMvQ=; b=VDbjJ1qT8wISEIEYqTLGy//zk/EjplnV6gp/VKghQ1fwmcXaqtCCZyH1ZwwwtJr+E1aZ0kmpOtdznf6pjzwBzLgVHFc7Obvo4HubS2nljdyhFq+v+f1b4ZR6Q7wpazGBFR0Z6S8PIfTWiRxnnFUpfpmAFWM17Er2Ufnvg8fJOJgFnZ3/7Qc7M4F82pcqVq0XJ9I/oFcvkiV0MISdsLnIpDFKPxKlpET4FKB5WyDTV2rjpd53G/7WA8SWGBsDwrweYa6BizFIRtlsrkZhWsmZSyyKeVVHtlAvT06QhXNRPL1DB5O0Be1+LcVKnPDTki9c8QKfjH4B9AFiWOr1DZ1B0w== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by DB8PR01MB5948.eurprd01.prod.exchangelabs.com (2603:10a6:10:e4::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.17; Sat, 2 Jul 2022 22:22:41 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:41 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:22:00 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [f2py9n9dsl4Id+LHNI57MWkKTJed0CUZ] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-19-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 59bf02e4-0b6f-4a28-3afc-08da5c7960e5 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNXwBRntoGkOsgo00FNZK4OlUD7qpUkPvtQLUu/LrdGZ9xUDt3nlg8NPLB86CarAvXR3AjAJPSzR+pfdru9nVI9/uT1BvCgnRB7Z5CHoXKrSiA7SovtDlFlSyJpqpE+OFqABzqqtaxksWKFpI17bkUCK/iZWBu1D9BcM8N4SHIA3k+kv7w1D0mCFsbh3Ib7RGTTyFaLLfAAjRxg2D8OLet0lK8B2zSO44IjeNJfGdW/s+Mu0+LalOiPZhrZrcZaIv3+mQJhVS/vMIleLmBcCrBDe/o35Tkd+6uYvGtKPyGcTDdgPmilvwk+YN2iIW2nGhUX/RnVpuEUPLpawBYH4fdHNAGtQz9ifiGZCfEdqY6b1riO9zO9JW7AV38ilY0HzVyh0xwtd/5GhIIZbp1cKFSD8UwW72rmsvSlTJ6GfzeeqHnzcQzF6xYCpvRsPSOXcn7YyFEwgVbdSInryiR9RTN++ez1inh8fbwKIqE08Y4LJ6hX0pVJZ+xb80tHmAT6dMWFMDtFZbnovFHHMqhsTK0/Io9suzMV7Oie8TxgXHL7MXtv6p3fZ/tbBd8O/sRCnPLrJOYekWxvh4HEELsvJtfma6y72dApxgBtZglDxR95JZBgz/nj828vI/d2kG3NsD4TnduPKOhDTVnYgtl1HnJKIdVb3PgdSULHUGdecyiuiRT6D1E9o4WBDDpkGjQdtsAF4cfoVtpLd54gMoxd9LDvY5D44He0QmAw= X-MS-TrafficTypeDiagnostic: DB8PR01MB5948:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ITY6n6nXT2cHyVdIQEuYdDhEjFOOzltU1acZ5S941j7mUKOMRjPxse2d9spP57/GGvbzY0SIy7y2TaT4NFPMh5t1zfdt6VTgxpGhl9juGbFpua3Ip+pSgxy/mfBKL1amSHsy/G7oaZEmeH7g6YZFmkthZv7Z5p0JhGRaKSn/Dmr5x9v9/g5w0bxHg+1nEjPQM9MwNROlYQk/p7YIFb+mgqQarw2xo2OURO+mZARPRWi8VEqDrbXchF8mvtj1JG8VJqmiqEuo3+LIIg56TRHn5tgW8MO840005r+UP/k6KBWx9NhGbFfMwliEz0Fe1vcV0WOsqfzMN4+8zl0fGcq7LQBzOMVqnN1nJIehB0f8k5xgGqGYL8YHvbSnwndKE/c32EolaZdJN8ahSep9Yu3XBMMeEns1AK+75ppssQGQC5cWPaNCnjKCPx2SwPaWnRh1OKK8GU4xicblzLabotAwWvY4eGbXRVv0Ny/7mtcsT7Xb0JHb0LlMsY2Z47NgmJHwjymdlHEQ4B54rgl9sZJYcCS278m1AjFL57bHGGbppyNU9sUPln1fGNBlfvr+H+LtCw7vrReiSjLEdZkban+sl5ViP7NmE5hXX32tNNvky14mnIfdkRGKMj/IcGA9AbmVBPEPqkNd+ex0fBc6GrAYFw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: AljOBgwg9PI2RsgVxQeS/309QhX68RDCwgK/Sqmfyw8MdQemRosQ/yCnzNanY7FuDdHRoobTS1K9A9PQe52rrHjoa5fxsIESRsf5hTJ+H7lYAuE5VYyYAGHnMh7+Of0emWPcXbZsGq80J3mPSRsfgAP0PxkRflIWz4ynczWeTbgOwWUpl/u+dq/CuACAtfFXDawT8ZsDHNxKiYulbIGNKqvWYJuqVMrS3WTHiB4VjpuXZNlI38jtikDZ9NlZWuZT313iZLvcpvzs84CSCRvHW2NUgHwZ8WwM9UnLAp4ReJghAxIqsxjT2QSw2JjKyrj1/abOIHO+ttRQFfzjEwXgHIFv31DwaeIg1RCvtQ/RUFbzTGjjBAPXzmm6QEr+a2UXhkEYUvbK6Rb6eFN3PpyVM7J5IiFID8Pv5wXv7H4GR6BBHuA7BHGbKpVdfRMmkudgyHWwIWH0FgR9D7uElXAcZATKoFhfELYbJjMb6IJ0noR56d8noMJbZe1roLv3IRa17wT+d94bGJim7549dsAZdwvuTFtvgm3+w5skdrsDJLWHLEsRtq71utzpqNAuDdgSng+XY3PQWriZcZvwSMDHPx/dl6fSHxPrRdS8bcXAp7gSKU9/AUF+YpIvyOKRGEU8xCcnskjx3+F/lQ13iw5RakTz8NI8Qj0uIcqWytvldYTI9R6dTUY6PT7SYM2MOTMAznEAt/VxV4rLZbRRj/AS66xiaJEm9yAOx87DR1tdUaDKTvChTYtINnNoF2gPX6oj8abC2qTGj/3QAlSvbMYTaEhBrpAx6z51CyWbXpCw1RRU/2vg/paUTAxwbVvqem5mFIXxW2BX5dYKL+ta/XnCGYpMWjQpdivraDVGyNREUIOVI4T0kdQQyNNhYG32Nmyv+Wj7+3QX3WMwM/AZDjePlO13Wh3xB+nCkox0eOrAuTe5rg1eEBw4VwbOZkbyy+uE/Jwhzi2LI6AIKq2z1Kjqub2+06h1sC9BLNMKbKXO5+Td1+8UJE45P/7IX2hQGl8wEeTvRsBjHLW676F/R+/j0FqikTcZ1cE94a16ML3ZhshGv9U0HRafpJ87QGowy2YToukYHC248QTDH/hK+n84TCOS932hTGVqv/ancqurQYbv5QkbuSGkTFKVNRvf8o/jwAN1HNhTMU7pFkqgF66TK70MXilH2LrdkUTVfiWhUrlBg9O/6yMWyiNUlHL4CYo00AwhrsILJQfGbIaEsalWgYCzF+KzPcEhdHDMyOJJKfUXlqCQZB6VszqV9jZwbqS4brTP/Yxsq7fKNgGIiumAl7QwePw1jBgBBvCQ28NKLOo= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 59bf02e4-0b6f-4a28-3afc-08da5c7960e5 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:41.5788 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR01MB5948 Subject: [FFmpeg-devel] [PATCH 20/20] avcodec/h2645_sei: Factor attaching film grain side-data to frame out 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: lMZZvK+DOW7J This unfortunately involved adding some parameters to ff_h2645_sei_to_frame() that will be mostly unused. Signed-off-by: Andreas Rheinhardt --- libavcodec/h2645_sei.c | 67 ++++++++++++++++++++++++++++++++++++++++- libavcodec/h2645_sei.h | 5 ++- libavcodec/h264_slice.c | 59 ++---------------------------------- libavcodec/hevcdec.c | 60 +++--------------------------------- 4 files changed, 77 insertions(+), 114 deletions(-) diff --git a/libavcodec/h2645_sei.c b/libavcodec/h2645_sei.c index 1793c07285..72b976f92e 100644 --- a/libavcodec/h2645_sei.c +++ b/libavcodec/h2645_sei.c @@ -429,7 +429,9 @@ static int is_frame_packing_type_valid(SEIFpaType type, enum AVCodecID codec_id) int ff_h2645_sei_to_frame(AVFrame *frame, H2645SEI *sei, enum AVCodecID codec_id, - AVCodecContext *avctx) + AVCodecContext *avctx, const H2645VUI *vui, + unsigned bit_depth_luma, unsigned bit_depth_chroma, + int seed) { H2645SEIFramePacking *fp = &sei->frame_packing; @@ -544,6 +546,69 @@ int ff_h2645_sei_to_frame(AVFrame *frame, H2645SEI *sei, } } + if (sei->film_grain_characteristics.present) { + H2645SEIFilmGrainCharacteristics *fgc = &sei->film_grain_characteristics; + AVFilmGrainParams *fgp = av_film_grain_params_create_side_data(frame); + AVFilmGrainH274Params *h274; + + if (!fgp) + return AVERROR(ENOMEM); + + fgp->type = AV_FILM_GRAIN_PARAMS_H274; + h274 = &fgp->codec.h274; + + fgp->seed = seed; + + h274->model_id = fgc->model_id; + if (fgc->separate_colour_description_present_flag) { + h274->bit_depth_luma = fgc->bit_depth_luma; + h274->bit_depth_chroma = fgc->bit_depth_chroma; + h274->color_range = fgc->full_range + 1; + h274->color_primaries = fgc->color_primaries; + h274->color_trc = fgc->transfer_characteristics; + h274->color_space = fgc->matrix_coeffs; + } else { + h274->bit_depth_luma = bit_depth_luma; + h274->bit_depth_chroma = bit_depth_chroma; + if (vui->video_signal_type_present_flag) + h274->color_range = vui->video_full_range_flag + 1; + else + h274->color_range = AVCOL_RANGE_UNSPECIFIED; + if (vui->colour_description_present_flag) { + h274->color_primaries = vui->colour_primaries; + h274->color_trc = vui->transfer_characteristics; + h274->color_space = vui->matrix_coeffs; + } else { + h274->color_primaries = AVCOL_PRI_UNSPECIFIED; + h274->color_trc = AVCOL_TRC_UNSPECIFIED; + h274->color_space = AVCOL_SPC_UNSPECIFIED; + } + } + h274->blending_mode_id = fgc->blending_mode_id; + h274->log2_scale_factor = fgc->log2_scale_factor; + + memcpy(&h274->component_model_present, &fgc->comp_model_present_flag, + sizeof(h274->component_model_present)); + memcpy(&h274->num_intensity_intervals, &fgc->num_intensity_intervals, + sizeof(h274->num_intensity_intervals)); + memcpy(&h274->num_model_values, &fgc->num_model_values, + sizeof(h274->num_model_values)); + memcpy(&h274->intensity_interval_lower_bound, &fgc->intensity_interval_lower_bound, + sizeof(h274->intensity_interval_lower_bound)); + memcpy(&h274->intensity_interval_upper_bound, &fgc->intensity_interval_upper_bound, + sizeof(h274->intensity_interval_upper_bound)); + memcpy(&h274->comp_model_value, &fgc->comp_model_value, + sizeof(h274->comp_model_value)); + + if (IS_H264(codec_id)) + fgc->present = !!fgc->repetition_period; + else + fgc->present = fgc->persistence_flag; + + if (avctx) + avctx->properties |= FF_CODEC_PROPERTY_FILM_GRAIN; + } + return 0; } diff --git a/libavcodec/h2645_sei.h b/libavcodec/h2645_sei.h index eb00107abb..f3ee9af524 100644 --- a/libavcodec/h2645_sei.h +++ b/libavcodec/h2645_sei.h @@ -28,6 +28,7 @@ #include "bytestream.h" #include "codec_id.h" #include "get_bits.h" +#include "h2645_vui.h" #include "sei.h" typedef struct H2645SEIA53Caption { @@ -136,6 +137,8 @@ void ff_h2645_sei_reset(H2645SEI *s); int ff_h2645_sei_to_frame(AVFrame *frame, H2645SEI *sei, enum AVCodecID codec_id, - AVCodecContext *avctx); + AVCodecContext *avctx, const H2645VUI *vui, + unsigned bit_depth_luma, unsigned bit_depth_chroma, + int seed); #endif /* AVCODEC_H2645_SEI_H */ diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index ba873254ce..51d8d944be 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1225,65 +1225,12 @@ static int h264_export_frame_props(H264Context *h) } } - ret = ff_h2645_sei_to_frame(out, &h->sei.common, AV_CODEC_ID_H264, h->avctx); + ret = ff_h2645_sei_to_frame(out, &h->sei.common, AV_CODEC_ID_H264, h->avctx, + &sps->vui, sps->bit_depth_luma, sps->bit_depth_chroma, + cur->poc + (h->poc_offset << 5)); if (ret < 0) return ret; - if (h->sei.common.film_grain_characteristics.present) { - H2645SEIFilmGrainCharacteristics *fgc = &h->sei.common.film_grain_characteristics; - AVFilmGrainParams *fgp = av_film_grain_params_create_side_data(out); - if (!fgp) - return AVERROR(ENOMEM); - - fgp->type = AV_FILM_GRAIN_PARAMS_H274; - fgp->seed = cur->poc + (h->poc_offset << 5); - - fgp->codec.h274.model_id = fgc->model_id; - if (fgc->separate_colour_description_present_flag) { - fgp->codec.h274.bit_depth_luma = fgc->bit_depth_luma; - fgp->codec.h274.bit_depth_chroma = fgc->bit_depth_chroma; - fgp->codec.h274.color_range = fgc->full_range + 1; - fgp->codec.h274.color_primaries = fgc->color_primaries; - fgp->codec.h274.color_trc = fgc->transfer_characteristics; - fgp->codec.h274.color_space = fgc->matrix_coeffs; - } else { - fgp->codec.h274.bit_depth_luma = sps->bit_depth_luma; - fgp->codec.h274.bit_depth_chroma = sps->bit_depth_chroma; - if (sps->vui.video_signal_type_present_flag) - fgp->codec.h274.color_range = sps->vui.video_full_range_flag + 1; - else - fgp->codec.h274.color_range = AVCOL_RANGE_UNSPECIFIED; - if (sps->vui.colour_description_present_flag) { - fgp->codec.h274.color_primaries = sps->vui.colour_primaries; - fgp->codec.h274.color_trc = sps->vui.transfer_characteristics; - fgp->codec.h274.color_space = sps->vui.matrix_coeffs; - } else { - fgp->codec.h274.color_primaries = AVCOL_PRI_UNSPECIFIED; - fgp->codec.h274.color_trc = AVCOL_TRC_UNSPECIFIED; - fgp->codec.h274.color_space = AVCOL_SPC_UNSPECIFIED; - } - } - fgp->codec.h274.blending_mode_id = fgc->blending_mode_id; - fgp->codec.h274.log2_scale_factor = fgc->log2_scale_factor; - - memcpy(&fgp->codec.h274.component_model_present, &fgc->comp_model_present_flag, - sizeof(fgp->codec.h274.component_model_present)); - memcpy(&fgp->codec.h274.num_intensity_intervals, &fgc->num_intensity_intervals, - sizeof(fgp->codec.h274.num_intensity_intervals)); - memcpy(&fgp->codec.h274.num_model_values, &fgc->num_model_values, - sizeof(fgp->codec.h274.num_model_values)); - memcpy(&fgp->codec.h274.intensity_interval_lower_bound, &fgc->intensity_interval_lower_bound, - sizeof(fgp->codec.h274.intensity_interval_lower_bound)); - memcpy(&fgp->codec.h274.intensity_interval_upper_bound, &fgc->intensity_interval_upper_bound, - sizeof(fgp->codec.h274.intensity_interval_upper_bound)); - memcpy(&fgp->codec.h274.comp_model_value, &fgc->comp_model_value, - sizeof(fgp->codec.h274.comp_model_value)); - - fgc->present = !!fgc->repetition_period; - - h->avctx->properties |= FF_CODEC_PROPERTY_FILM_GRAIN; - } - if (h->sei.picture_timing.timecode_cnt > 0) { uint32_t *tc_sd; char tcbuf[AV_TIMECODE_STR_SIZE]; diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 7147944bc6..298edb782b 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -2799,7 +2799,10 @@ static int set_side_data(HEVCContext *s) metadata->MaxCLL, metadata->MaxFALL); } - ret = ff_h2645_sei_to_frame(out, &s->sei.common, AV_CODEC_ID_HEVC, NULL); + ret = ff_h2645_sei_to_frame(out, &s->sei.common, AV_CODEC_ID_HEVC, NULL, + &s->ps.sps->vui.common, + s->ps.sps->bit_depth, s->ps.sps->bit_depth_chroma, + s->ref->poc /* no poc_offset in HEVC */); if (ret < 0) return ret; @@ -2829,61 +2832,6 @@ static int set_side_data(HEVCContext *s) s->sei.timecode.num_clock_ts = 0; } - if (s->sei.common.film_grain_characteristics.present) { - H2645SEIFilmGrainCharacteristics *fgc = &s->sei.common.film_grain_characteristics; - AVFilmGrainParams *fgp = av_film_grain_params_create_side_data(out); - if (!fgp) - return AVERROR(ENOMEM); - - fgp->type = AV_FILM_GRAIN_PARAMS_H274; - fgp->seed = s->ref->poc; /* no poc_offset in HEVC */ - - fgp->codec.h274.model_id = fgc->model_id; - if (fgc->separate_colour_description_present_flag) { - fgp->codec.h274.bit_depth_luma = fgc->bit_depth_luma; - fgp->codec.h274.bit_depth_chroma = fgc->bit_depth_chroma; - fgp->codec.h274.color_range = fgc->full_range + 1; - fgp->codec.h274.color_primaries = fgc->color_primaries; - fgp->codec.h274.color_trc = fgc->transfer_characteristics; - fgp->codec.h274.color_space = fgc->matrix_coeffs; - } else { - const HEVCSPS *sps = s->ps.sps; - const VUI *vui = &sps->vui; - fgp->codec.h274.bit_depth_luma = sps->bit_depth; - fgp->codec.h274.bit_depth_chroma = sps->bit_depth_chroma; - if (vui->common.video_signal_type_present_flag) - fgp->codec.h274.color_range = vui->common.video_full_range_flag + 1; - else - fgp->codec.h274.color_range = AVCOL_RANGE_UNSPECIFIED; - if (vui->common.colour_description_present_flag) { - fgp->codec.h274.color_primaries = vui->common.colour_primaries; - fgp->codec.h274.color_trc = vui->common.transfer_characteristics; - fgp->codec.h274.color_space = vui->common.matrix_coeffs; - } else { - fgp->codec.h274.color_primaries = AVCOL_PRI_UNSPECIFIED; - fgp->codec.h274.color_trc = AVCOL_TRC_UNSPECIFIED; - fgp->codec.h274.color_space = AVCOL_SPC_UNSPECIFIED; - } - } - fgp->codec.h274.blending_mode_id = fgc->blending_mode_id; - fgp->codec.h274.log2_scale_factor = fgc->log2_scale_factor; - - memcpy(&fgp->codec.h274.component_model_present, &fgc->comp_model_present_flag, - sizeof(fgp->codec.h274.component_model_present)); - memcpy(&fgp->codec.h274.num_intensity_intervals, &fgc->num_intensity_intervals, - sizeof(fgp->codec.h274.num_intensity_intervals)); - memcpy(&fgp->codec.h274.num_model_values, &fgc->num_model_values, - sizeof(fgp->codec.h274.num_model_values)); - memcpy(&fgp->codec.h274.intensity_interval_lower_bound, &fgc->intensity_interval_lower_bound, - sizeof(fgp->codec.h274.intensity_interval_lower_bound)); - memcpy(&fgp->codec.h274.intensity_interval_upper_bound, &fgc->intensity_interval_upper_bound, - sizeof(fgp->codec.h274.intensity_interval_upper_bound)); - memcpy(&fgp->codec.h274.comp_model_value, &fgc->comp_model_value, - sizeof(fgp->codec.h274.comp_model_value)); - - fgc->present = fgc->persistence_flag; - } - if (s->sei.common.dynamic_hdr_plus.info) { AVBufferRef *info_ref = av_buffer_ref(s->sei.common.dynamic_hdr_plus.info); if (!info_ref)