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 1B052497FF for ; Wed, 20 Mar 2024 23:42:23 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B48CD68D515; Thu, 21 Mar 2024 01:42:20 +0200 (EET) Received: from mail-qt1-f178.google.com (mail-qt1-f178.google.com [209.85.160.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8119E68D4D9 for ; Thu, 21 Mar 2024 01:42:14 +0200 (EET) Received: by mail-qt1-f178.google.com with SMTP id d75a77b69052e-42f2d02fbdeso1951021cf.1 for ; Wed, 20 Mar 2024 16:42:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710978132; x=1711582932; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=CndJQYU19G524G1PImXKdPwH+MtJfxR0PomtCccROYU=; b=nkaZMMVYNEu3G/lHlc9pwH/5OkcCXF5s3CArevXbkmhpx+Qvggd5ez5PhThEIjPpKU t06HP/ZWcHv+/INt3692xWEClcSgrM5ExYSaIcStVviNPywhGUY2M38DQToO+EmDbP23 T0PJhGWFmtAxDEMeMzZnx2o5HGLsMP+BUDHb+V4zo7tv0PPnJQjDda826YMV7YCWjHRr KI0qBUxMFhXPPypG4w5ZqU+Cvb0jvNOboz2my1Z536sl6+qi8Ge4Tq1qYdjHbejfLQpN 9ULyD8Iqx6T2lrRIh4QpQfJyN+KnMb8H73Alp/YZBbBtk7kVQVciyknyL4y1u+V+Q9R0 yq7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710978132; x=1711582932; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=CndJQYU19G524G1PImXKdPwH+MtJfxR0PomtCccROYU=; b=me3gAzZ2huVyuejUIxyQ34lvYV0+gZqA3v3rHfqtmuB9lhbq8aGOZw66ygBwW6Jxgk P6K7Pu2VJwjIUxRD2IkByG7Wrh4qyGQw80VJaUfn0w1jTWQrU2LuJEFPaYwKbLGBU9kv mB464D+9KXLaIeFuNn07+kH8YTIiOORyQSmD9aHeRMGxSkeLMsSdvK8V8al4JtmVx/k7 0onoKmIlWRvf3r62pkU4JW1Z52XxrLLK1dd60wfity63bWVdA7O/+V6O2yFSR3B934+s Qc0FSlpJ3Hb22X5NI6VzIVZl0KtrglH7+P+6r9keYbyDNjxaabxQqAveVpI5lx8ZeLFU l3xQ== X-Gm-Message-State: AOJu0YwDKc40PS6cpr2vp8xtWpb1f/4H7U1AOTDe7llKc/MWS+oZDCOm MQcaqJbeHI7Zok8g0p4qn2qFWfsP39EIAnlNA+1hyu+DuzipKB1DvQpq2IwV X-Google-Smtp-Source: AGHT+IEp3SpdYqjzqaywQApYqlMWZyg6x9yZUp2OXJRGO6h5iLjgAw+lGnLrDhzoulV22EBYj2bgFw== X-Received: by 2002:a05:6a20:2446:b0:1a3:6b43:6191 with SMTP id t6-20020a056a20244600b001a36b436191mr4128713pzc.15.1710977718502; Wed, 20 Mar 2024 16:35:18 -0700 (PDT) Received: from localhost.localdomain ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id t22-20020a170902b21600b001ddd5e158bdsm8497095plr.284.2024.03.20.16.35.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Mar 2024 16:35:18 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Mar 2024 20:35:25 -0300 Message-ID: <20240320233525.29361-1-jamrial@gmail.com> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/hevc_ps: allocate only the required HEVCHdrParams within a VPS 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: Signed-off-by: James Almer --- libavcodec/hevc_ps.c | 17 +++++++++++++++-- libavcodec/hevc_ps.h | 2 +- libavcodec/vulkan_hevc.c | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index 20ceb09829..d3edc0810d 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -442,13 +442,21 @@ static int decode_hrd(GetBitContext *gb, int common_inf_present, return 0; } +static void uninit_vps(FFRefStructOpaque opaque, void *obj) +{ + HEVCVPS *vps = obj; + + for (int i = 0; i < vps->vps_num_hrd_parameters; i++) + ff_refstruct_unref(&vps->hdr[i]); +} + 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_allocz(sizeof(*vps)); + HEVCVPS *vps = ff_refstruct_alloc_ext(sizeof(*vps), 0, NULL, uninit_vps); if (!vps) return AVERROR(ENOMEM); @@ -538,12 +546,17 @@ int ff_hevc_decode_nal_vps(GetBitContext *gb, AVCodecContext *avctx, goto err; } for (i = 0; i < vps->vps_num_hrd_parameters; i++) { + HEVCHdrParams *hdr = ff_refstruct_allocz(sizeof(*hdr)); int common_inf_present = 1; + if (!hdr) + return AVERROR(ENOMEM); + get_ue_golomb_long(gb); // hrd_layer_set_idx if (i) common_inf_present = get_bits1(gb); - decode_hrd(gb, common_inf_present, &vps->hdr[i], + + decode_hrd(gb, common_inf_present, hdr, vps->vps_max_sub_layers); } } diff --git a/libavcodec/hevc_ps.h b/libavcodec/hevc_ps.h index 9cdec9b6c1..ff94f90a5e 100644 --- a/libavcodec/hevc_ps.h +++ b/libavcodec/hevc_ps.h @@ -150,7 +150,7 @@ typedef struct PTL { typedef struct HEVCVPS { unsigned int vps_id; - HEVCHdrParams hdr[HEVC_MAX_LAYER_SETS]; + HEVCHdrParams *hdr[HEVC_MAX_LAYER_SETS]; uint8_t vps_temporal_id_nesting_flag : 1; uint8_t vps_sub_layer_ordering_info_present_flag : 1; diff --git a/libavcodec/vulkan_hevc.c b/libavcodec/vulkan_hevc.c index 239bff75e5..a89d09a372 100644 --- a/libavcodec/vulkan_hevc.c +++ b/libavcodec/vulkan_hevc.c @@ -563,7 +563,7 @@ static void set_vps(const HEVCVPS *vps, HEVCHeaderVPSSet sls[]) { for (int i = 0; i < vps->vps_num_hrd_parameters; i++) { - const HEVCHdrParams *src = &vps->hdr[i]; + const HEVCHdrParams *src = vps->hdr[i]; sls_hdr[i] = (StdVideoH265HrdParameters) { .flags = (StdVideoH265HrdFlags) { -- 2.44.0 _______________________________________________ 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".