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;