From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 4032F47A7B for ; Fri, 29 Mar 2024 17:28:45 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0EAB168D360; Fri, 29 Mar 2024 19:28:43 +0200 (EET) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04olkn2015.outbound.protection.outlook.com [40.92.75.15]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 656EC68D225 for ; Fri, 29 Mar 2024 19:28:36 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iEoKbXo/6I9TtfA35fnxLpyvmWFMSRFC16ceZjflr60t/J7GY9XTAC0rXUXG2qh2eNnU1cwfcjEzKkvWwvzysz/QdMrpnMaXRIeAGCSQOEXO1Rs8ysf+RX81K8V3qK2aUeNl0EFztyqvkzmfH0PYSYLTnzLLa4MhvfumlBvRLa7q+shBYuJyqmRCBGY/i8swo+m+zoDzVLUC1SmnEaBYLBZ0FYH0kJ1V6QSdCRa0mkxl8zNEnVXXpGWAg2X3WytW9L+x2K1y7/7R8/Wtb/b/IiuqZJZtd2kWcCF1SdgJXVyRuV5kLwJ8JGhI8UlJN0HmgkGzEI+b1h9irMks+XlKQA== 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=cmH6S+jd0vEEClLQXTaw+SqHLUh5c08A7rF1B+g/gw8=; b=NSj53QeUHKUebjlH7NqcEUFlJr63SNSrh9OWEqkkYb3etodD3bcAU1Y/zflIWeV4WgjTQ36hnioukNXekqRkh2SNoPXl3Vlrs6MauGubIxdGMxgNNWoUphtb+kvu9OdvHHEfRt/boBTNGODHMad8lq1a93/1JTfi1fbl6DlKnSPgMW57pT00PHiSZTM32Q8jD0RTw1styCDYAivI1eZ95ZoREi/nPlcKFOeyTbwFo6S5byz0MueBrvoRglLnZRylFnHXT72s/xodFbfeGHAkL3y9hfNX8apgXffkpd01RbkuK6DnG2U2SMFp0WF6tyY5lJa1w08H5QvAzaHRt5FY9g== 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=cmH6S+jd0vEEClLQXTaw+SqHLUh5c08A7rF1B+g/gw8=; b=QSy+QaPrpBqOwSb1LF2n7osFotE5IFj3PHNzSPji2kNoktZ2TqIY8DbEbFWWYeO3IJp0FsvaKliZJo0le/ff2dEcKC4mIV4ycsU1yNH9NfBqHALAoTAz6hNidy9T1KD7y4czS2gaqDr5Q87acXE5dbgrde0K8L+WyU7ivqBGpUgWFANkOf6zTt2b1IGNefD9uZ82cZQwaaV5NX81ZAugEsQZqPEpDQRWy/KU90ljUrUxChYv2wh6ZEbUd3Jp0H1FKNEYIiY4g/8iFRlmNSXmGE+zxZuDm14xqv8jdFZt+np8vWDP6/IJ6OE33UNar1a799fQ+HWMuPIldeBW/sC15w== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0384.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:239::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.40; Fri, 29 Mar 2024 17:28:34 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d%4]) with mapi id 15.20.7409.039; Fri, 29 Mar 2024 17:28:33 +0000 Message-ID: Date: Fri, 29 Mar 2024 18:28:31 +0100 User-Agent: Mozilla Thunderbird Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20240329165910.24999-1-jamrial@gmail.com> From: Andreas Rheinhardt In-Reply-To: <20240329165910.24999-1-jamrial@gmail.com> X-TMN: [boadu2M4Y4rcE6GuH49Ms7s0cX0NKY6VN1ED/7WIaNc=] X-ClientProxiedBy: ZR2P278CA0047.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:53::12) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <4597afa6-4a57-4ab9-802f-c11644d92ff4@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0384:EE_ X-MS-Office365-Filtering-Correlation-Id: 4ed40953-9827-456d-55df-08dc5015a893 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: o3rQ4rO77mRNPvLEn+1RX8J5Cc1Ojhuz9az1WTivUCJkJ0cNRpzL1KAqYuy1t0jQ+rYmaJDs7kb9hhg5evn0PcRNwGEQmD50Jy3DuG3qqQ9SUqT2mFBo5kr0nUDJH+1XeVyl/qRf2G8B/7VMnRr2LtONxeKPqqcnykzZvXnqdhCavQfu87emxDpx+hNUy9wMnb320RVGKQk3YCtB2954q38F5zz1zMex0Sw/OcxNnCOCPPTONmqgypRMnpzDzWEd2wt/UclF9dZ7Jo5/u0S0hJyK7h5AP5VfV7R+uYiJ+fvxngQ5Do97dgGHaq2Cx8z8/gX8bd/0LQgeLWuS8QKBn14zbF/R92rNRw69L8z1XFdjKVRQt1UL87n2v0zKB++HgXL8Wd7B1IJq0cMovKHsCEv+YNymYePUUkkD0Jy0CPC+IcgDqaoZPka6JdroiQeq/A8+haLYMybxgTSU/jyqY8ArSUP5fTcn7bkjBY9RRbldVeeh7S3PUCRodNlUyZ916GQWep6jz8Um09nf92LUKUpDRxuNquzgVzqpFnSEuV77pYFf46624FMjkfkZNw+6 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UnJKeG1nUEc5V3ZIaHgwcWV3dmQrQ1hxaDB4SWoyemZRSElmU1VXdFJkS2JY?= =?utf-8?B?UlBIUXRuU1BKWGZDWmRRWEZIWW9wVE1GQjIvcXJZRnhzSWk1Uyswd09YMlpB?= =?utf-8?B?cHJTRlk1V2NjZzJHT0xIRjdQWEsxUGd3WlNLakpWNTZ2NURoNnZFeUoyRHRq?= =?utf-8?B?YWVSWEoxOCtUOVVxbTl6eTBkTTNPNnRwaDJVN2ljVDNZMkFOZ1o2ODdncVZY?= =?utf-8?B?aDlrY2ZaMUdJRXR2L1lRZklBTkNxemkrVEVDK1k4KzlqUXhyTTFBMGZNZ0lK?= =?utf-8?B?L1hWNmxRVE5pSy9sRER0UWp4TVZnR2RnVm1LakM5QWU1dHpVbVRnQUtGaUo5?= =?utf-8?B?M05xZGhFWDlMTGlEOE5qVEFRaitFL3FFYzFMRHR3b1FJUmgwWS9lYlE0RFhz?= =?utf-8?B?Q2lQbGgyMGErZEJIemJWelczZmJBVGZ0ME4wZjc0UHN5L3VEOEJSYVZyQ0ZK?= =?utf-8?B?QzAwSDh3ZE9FdHo5Y20rZUdVZURnOG0zQnFjdE9xM0Y2dkRuYXIvcncrZTc3?= =?utf-8?B?Vitsam1Id0hUZ0dEQ3ZDdTNvVWJSQ0Zndk5ZOGZKbXhRbm04S2g4bmRVK2hn?= =?utf-8?B?elBJWWZ4SThkQitSZ2hid2dieFd6ei95NkZ4amdnTjdpVTVzZTBuMVl2bjJY?= =?utf-8?B?dTR6Ti96bk44eXdndUgrekVzODdZUG9lRHVKRlIzakxaSTg4Zm9UUk42cVVM?= =?utf-8?B?b3NURXNocWFkSVJyK2hka2R1L0todnpQQnpvdmpNVWttZ1lBbWZEVW1GY1ZM?= =?utf-8?B?S0VsVitYKzhkSEQ3ZUVDTk0wNWxVMmVud0xTQnczOEFPeEhZTDExRnRJYXB5?= =?utf-8?B?WmdXek9YcWtPM1M5ZkVCYnUvbjFxQjZEQzN6aXhoelg1SWZNZ3kyT2cyTzVQ?= =?utf-8?B?MjVtbGIwRDNGVW0wVFBuc2pOaDRPVTQ1MnhMSjhKQ1Yzd0daTllUNGplVEt2?= =?utf-8?B?b2VrRTlJcnNoTjNaVVphYldjVk1SS25tL3dkM0tMdGtWS3FMOFhLRGFXaUN1?= =?utf-8?B?ZExUL000RHNkUWRSTVc3ZzFUWWgySDFabkg2WkxvdjJPWkl4SElwZUlBT0JH?= =?utf-8?B?c0dkb3ZMaHNkZzliNXQzdlpnK2wzd3VGbGJsV1kzUzJrNy9sd1RqZ2F2MS9V?= =?utf-8?B?VDRraDN5aTlsN3FUREVkNEt3U1NES2dvalo5MzFxdHlkT0FsUFI4WnpFTG5O?= =?utf-8?B?YlkzcW0rNHlWd2xrM1VkeHU0ZGNPbEVMZEFsTmtBTTd1VzYrSFdtZWY0dlJD?= =?utf-8?B?K21jWXdZUEhRYWtldjNyc1pBOGE3b1F4aVhXcEl2VlV2aTdFK1JZTDB3RjZu?= =?utf-8?B?YXFsWTJiSUgwdjVTRGlPdUViTmZZdUlpVkltbk51V3AweUFoMEYyMnNmTjNP?= =?utf-8?B?Yk9Vdml4V2o1cjhPVjEwaXZGdkRteTFub0xHbnZQM1VNTElSQUVsdTZMNTB3?= =?utf-8?B?U2l4VzdnRWFvbms4bG1NMEZJS3RsWXhZZ210Wm1BUWZKb2hBNEJld0k3ZmRa?= =?utf-8?B?YklrdlhKNEc0OUZaSzBVcnhBaitVc0hsSmxnbytXL1JrNkZ4NndZTjNiNXJ4?= =?utf-8?B?NDVianZBYStUaDNNVS9VTFJMYU1TR2wzNWMraFNLdnFoQ3hzcS8zeU04QkUw?= =?utf-8?B?a1FTanZLMHpRVWJxL1pXSWwzdm9EQlVHT1RGNmNlUjl2RG56UzdkZCtvWEF2?= =?utf-8?B?OEYxQmVDRS9lN1F0SkFxSkxzOVN4Y3BsREpUWDVtSTBkd3RkeUpHNzRBPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4ed40953-9827-456d-55df-08dc5015a893 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 17:28:33.5198 (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: DU2P250MB0384 Subject: Re: [FFmpeg-devel] [PATCH v2] avocdec/hevc_ps: don't use a fixed sized buffer for parameter set raw 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: James Almer: > Allocate it instead, and use it to compare sets instead of the parsed struct. > > Signed-off-by: James Almer > --- > libavcodec/hevc_ps.c | 127 +++++++++++++++++++++++-------------------- > libavcodec/hevc_ps.h | 14 +++-- > 2 files changed, 77 insertions(+), 64 deletions(-) > > diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c > index 6475d86d7d..7f74553fc1 100644 > --- a/libavcodec/hevc_ps.c > +++ b/libavcodec/hevc_ps.c > @@ -442,47 +442,42 @@ static int decode_hrd(GetBitContext *gb, int common_inf_present, > return 0; > } > > -static void uninit_vps(FFRefStructOpaque opaque, void *obj) > +static void hevc_vps_free(FFRefStructOpaque opaque, void *obj) > { > HEVCVPS *vps = obj; > > av_freep(&vps->hdr); > -} > - > -static int compare_vps(const HEVCVPS *vps1, const HEVCVPS *vps2) > -{ > - if (!memcmp(vps1, vps2, offsetof(HEVCVPS, hdr))) > - return !vps1->vps_num_hrd_parameters || > - !memcmp(vps1->hdr, vps2->hdr, vps1->vps_num_hrd_parameters * sizeof(*vps1->hdr)); > - > - return 0; > + av_freep(&vps->data); > } > > int ff_hevc_decode_nal_vps(GetBitContext *gb, AVCodecContext *avctx, > HEVCParamSets *ps) > { > int i,j; > - int vps_id = 0; > - ptrdiff_t nal_size; > - HEVCVPS *vps = ff_refstruct_alloc_ext(sizeof(*vps), 0, NULL, uninit_vps); > + int vps_id = get_bits(gb, 4); > + int ret = AVERROR_INVALIDDATA; > + HEVCVPS *vps; > > + if (ps->pps_list[vps_id]) { > + const HEVCVPS *vps1 = ps->vps_list[vps_id]; > + if (vps1->data_size == gb->buffer_end - gb->buffer && > + !memcmp(vps1->data, gb->buffer, vps1->data_size)) > + return 0; > + } > + > + vps = ff_refstruct_alloc_ext(sizeof(*vps), 0, NULL, hevc_vps_free); > if (!vps) > return AVERROR(ENOMEM); > > av_log(avctx, AV_LOG_DEBUG, "Decoding VPS\n"); > > - nal_size = gb->buffer_end - gb->buffer; > - if (nal_size > sizeof(vps->data)) { > - av_log(avctx, AV_LOG_WARNING, "Truncating likely oversized VPS " > - "(%"PTRDIFF_SPECIFIER" > %"SIZE_SPECIFIER")\n", > - nal_size, sizeof(vps->data)); > - vps->data_size = sizeof(vps->data); > - } else { > - vps->data_size = nal_size; > + vps->data_size = gb->buffer_end - gb->buffer; > + vps->data = av_memdup(gb->buffer, vps->data_size); > + if (!vps->data) { > + ret = AVERROR(ENOMEM); > + goto err; > } > - memcpy(vps->data, gb->buffer, vps->data_size); > - > - vps_id = vps->vps_id = get_bits(gb, 4); > + vps->vps_id = vps_id; > > if (get_bits(gb, 2) != 3) { // vps_reserved_three_2bits > av_log(avctx, AV_LOG_ERROR, "vps_reserved_three_2bits is not three\n"); > @@ -579,19 +574,14 @@ int ff_hevc_decode_nal_vps(GetBitContext *gb, AVCodecContext *avctx, > goto err; > } > > - if (ps->vps_list[vps_id] && > - compare_vps(ps->vps_list[vps_id], vps)) { > - ff_refstruct_unref(&vps); > - } else { > remove_vps(ps, vps_id); > ps->vps_list[vps_id] = vps; > - } > > return 0; > > err: > ff_refstruct_unref(&vps); > - return AVERROR_INVALIDDATA; > + return ret; > } > > static void decode_vui(GetBitContext *gb, AVCodecContext *avctx, > @@ -1294,36 +1284,43 @@ int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id, > return 0; > } > > +static void hevc_sps_free(FFRefStructOpaque opaque, void *obj) > +{ > + HEVCSPS *sps = obj; > + > + av_freep(&sps->data); > +} > + > +static int compare_sps(const HEVCSPS *sps1, const HEVCSPS *sps2) > +{ > + return sps1->data_size == sps2->data_size && > + !memcmp(sps1->data, sps2->data, sps1->data_size); > +} > + > int ff_hevc_decode_nal_sps(GetBitContext *gb, AVCodecContext *avctx, > HEVCParamSets *ps, int apply_defdispwin) > { > - HEVCSPS *sps = ff_refstruct_allocz(sizeof(*sps)); > + HEVCSPS *sps = ff_refstruct_alloc_ext(sizeof(*sps), 0, NULL, hevc_sps_free); > unsigned int sps_id; > int ret; > - ptrdiff_t nal_size; > > if (!sps) > return AVERROR(ENOMEM); > > av_log(avctx, AV_LOG_DEBUG, "Decoding SPS\n"); > > - nal_size = gb->buffer_end - gb->buffer; > - if (nal_size > sizeof(sps->data)) { > - av_log(avctx, AV_LOG_WARNING, "Truncating likely oversized SPS " > - "(%"PTRDIFF_SPECIFIER" > %"SIZE_SPECIFIER")\n", > - nal_size, sizeof(sps->data)); > - sps->data_size = sizeof(sps->data); > - } else { > - sps->data_size = nal_size; > + sps->data_size = gb->buffer_end - gb->buffer; > + sps->data = av_memdup(gb->buffer, sps->data_size); > + if (!sps->data) { > + ret = AVERROR(ENOMEM); > + goto err; > } > - memcpy(sps->data, gb->buffer, sps->data_size); > > ret = ff_hevc_parse_sps(sps, gb, &sps_id, > apply_defdispwin, > ps->vps_list, avctx); > if (ret < 0) { > - ff_refstruct_unref(&sps); > - return ret; > + goto err; > } > > if (avctx->debug & FF_DEBUG_BITSTREAM) { > @@ -1340,7 +1337,7 @@ int ff_hevc_decode_nal_sps(GetBitContext *gb, AVCodecContext *avctx, > * original one. > * otherwise drop all PPSes that depend on it */ > if (ps->sps_list[sps_id] && > - !memcmp(ps->sps_list[sps_id], sps, sizeof(*sps))) { > + compare_sps(ps->sps_list[sps_id], sps)) { > ff_refstruct_unref(&sps); > } else { > remove_sps(ps, sps_id); > @@ -1348,6 +1345,9 @@ int ff_hevc_decode_nal_sps(GetBitContext *gb, AVCodecContext *avctx, > } > > return 0; > +err: > + ff_refstruct_unref(&sps); > + return ret; > } > > static void hevc_pps_free(FFRefStructOpaque unused, void *obj) > @@ -1364,6 +1364,7 @@ static void hevc_pps_free(FFRefStructOpaque unused, void *obj) > av_freep(&pps->tile_pos_rs); > av_freep(&pps->tile_id); > av_freep(&pps->min_tb_addr_zs_tab); > + av_freep(&pps->data); > } > > static void colour_mapping_octants(GetBitContext *gb, HEVCPPS *pps, int inp_depth, > @@ -1762,27 +1763,35 @@ int ff_hevc_decode_nal_pps(GetBitContext *gb, AVCodecContext *avctx, > const HEVCSPS *sps = NULL; > const HEVCVPS *vps = NULL; > int i, ret = 0; > - unsigned int pps_id = 0; > - ptrdiff_t nal_size; > + unsigned int pps_id = get_ue_golomb_long(gb); > unsigned log2_parallel_merge_level_minus2; > + HEVCPPS *pps; > + > + av_log(avctx, AV_LOG_DEBUG, "Decoding PPS\n"); > + > + if (pps_id >= HEVC_MAX_PPS_COUNT) { > + av_log(avctx, AV_LOG_ERROR, "PPS id out of range: %d\n", pps_id); > + ret = AVERROR_INVALIDDATA; > + goto err; return AVERROR_INVALIDDATA; goto err would use pps which is uninitialized. > + } > > - HEVCPPS *pps = ff_refstruct_alloc_ext(sizeof(*pps), 0, NULL, hevc_pps_free); > + if (ps->pps_list[pps_id]) { > + const HEVCPPS *pps1 = ps->pps_list[pps_id]; > + if (pps1->data_size == gb->buffer_end - gb->buffer && > + !memcmp(pps1->data, gb->buffer, pps1->data_size)) > + return 0; > + } > > + pps = ff_refstruct_alloc_ext(sizeof(*pps), 0, NULL, hevc_pps_free); > if (!pps) > return AVERROR(ENOMEM); > > - av_log(avctx, AV_LOG_DEBUG, "Decoding PPS\n"); > - > - nal_size = gb->buffer_end - gb->buffer; > - if (nal_size > sizeof(pps->data)) { > - av_log(avctx, AV_LOG_WARNING, "Truncating likely oversized PPS " > - "(%"PTRDIFF_SPECIFIER" > %"SIZE_SPECIFIER")\n", > - nal_size, sizeof(pps->data)); > - pps->data_size = sizeof(pps->data); > - } else { > - pps->data_size = nal_size; > + pps->data_size = gb->buffer_end - gb->buffer; > + pps->data = av_memdup(gb->buffer, pps->data_size); > + if (!pps->data) { > + ret = AVERROR_INVALIDDATA; > + goto err; > } > - memcpy(pps->data, gb->buffer, pps->data_size); > > // Default values > pps->loop_filter_across_tiles_enabled_flag = 1; > @@ -1795,7 +1804,7 @@ int ff_hevc_decode_nal_pps(GetBitContext *gb, AVCodecContext *avctx, > pps->log2_max_transform_skip_block_size = 2; > > // Coded parameters > - pps_id = pps->pps_id = get_ue_golomb_long(gb); > + pps->pps_id = pps_id; > if (pps_id >= HEVC_MAX_PPS_COUNT) { > av_log(avctx, AV_LOG_ERROR, "PPS id out of range: %d\n", pps_id); > ret = AVERROR_INVALIDDATA; You already check for this above. > diff --git a/libavcodec/hevc_ps.h b/libavcodec/hevc_ps.h > index 0d8eaf2b3e..bed406770f 100644 > --- a/libavcodec/hevc_ps.h > +++ b/libavcodec/hevc_ps.h > @@ -172,11 +172,11 @@ typedef struct HEVCVPS { > int vps_num_ticks_poc_diff_one; ///< vps_num_ticks_poc_diff_one_minus1 + 1 > int vps_num_hrd_parameters; > > - uint8_t data[4096]; > - int data_size; > - /* Put this at the end of the structure to make it easier to calculate the > + /* Keep this at the end of the structure to make it easier to calculate the > * size before this pointer, which is used for memcmp */ > HEVCHdrParams *hdr; > + uint8_t *data; > + int data_size; > } HEVCVPS; > > typedef struct ScalingList { > @@ -299,7 +299,9 @@ typedef struct HEVCSPS { > > int qp_bd_offset; > > - uint8_t data[4096]; > + /* Keep this at the end of the structure to make it easier to calculate the > + * size before this pointer, which is used for memcmp */ > + uint8_t *data; > int data_size; > } HEVCSPS; > > @@ -434,7 +436,9 @@ typedef struct HEVCPPS { > int *min_tb_addr_zs; ///< MinTbAddrZS > int *min_tb_addr_zs_tab;///< MinTbAddrZS > > - uint8_t data[4096]; > + /* Keep this at the end of the structure to make it easier to calculate the > + * size before this pointer, which is used for memcmp */ You are adding comments that are already wrong at the time you add them. > + uint8_t *data; > int data_size; > } HEVCPPS; > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".