From patchwork Fri May 17 13:42:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 48949 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp2886686pzb; Fri, 17 May 2024 06:43:22 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVYAbdAo60fPBmvJLq4qUVfoEHNatF+QpthYTUFv2z4M5U6qzQIXjWgkPF7iuKef9efaiBSlrvzmQhKEQAZUHxO89JVTGASS359vg== X-Google-Smtp-Source: AGHT+IEaYIP8RTz8vGG/cy8QUq5bwPelintwv3Fv9GPiepLpFQ+KxfI06qdURqg8vKH0Qfh8wQ4U X-Received: by 2002:a50:f69b:0:b0:56d:fdb3:bcc5 with SMTP id 4fb4d7f45d1cf-5734d5bfbe3mr15741486a12.12.1715953402299; Fri, 17 May 2024 06:43:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1715953402; cv=none; d=google.com; s=arc-20160816; b=MQM5yt6oET8BAtq/HOHVEmsrEuN786dafZLNzRXxa+D+fpjADJ8zz5mjJlwjBCwz4h cduJ33dzP1j0o4MbPf9jbRU00DdFH/Q967oJjIQoMl4y3U+yQCy75947xjDzQ/q1NYWf 9rxB9N0c8SFT75xCROEjjNGO2/TRIupxVhRWv2ZPjPR/VeswgX0ISyq1aoalb9vhsym1 PYEOVfZnIcdU/UxvCrIqm3U1A2KLz5fZOju76WXIbhveZpETzWDTe4WQSlmWShklzLXQ Iz4hxIZkAEXP64LPAyJL7Vums9AqOtltGSSzMGRYGrA7VI58stKrSaY71B4ex7rjTcsI oK+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=Peu7R+ykzw9WAvNUsSuxubdVHvf6yF6A6iviwC9yV5k=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=q9fKpMp56yyyWOewiKpMFg6bQ+AFxbliF2ynwaUJRWpmNPLV28AljuVUGUqNfKZd5e uE+uZCpjATTg5hDFAZIaYask44Xyc4SxsC2NnHz3MsVZii7li1Pa+10dzl5Ypjlhgt6H YZEApjC3pog2NIvpzn9etHwxyAq1a1UQhGZPyJ7WgDDrZYoTJ1g/X/od5oJOIeRZ5OQx YC930Bd7WV/2skOp4dGMUB5wg7/AQe1FDK8M+30BhCuuwmsIYv4EV1vFgMVzcBQWA3oZ Terc//kbnx1ETMoAeHFwGjuO+rU1Ji9PYvtmVe3tlpuWWGculrDGL50LBLy+MVEgK9SH xwUQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=imP23LtM; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-5733c379102si10090707a12.679.2024.05.17.06.43.21; Fri, 17 May 2024 06:43:22 -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=@gmail.com header.s=20230601 header.b=imP23LtM; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1AED568CFAB; Fri, 17 May 2024 16:43:18 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C64EA68D1C4 for ; Fri, 17 May 2024 16:43:10 +0300 (EEST) Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-1ed835f3c3cso10012035ad.3 for ; Fri, 17 May 2024 06:43:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1715953388; x=1716558188; 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=Ie+870ZSmebYNJH3T8S6AtPu/rRdgfskcV86wSj1a38=; b=imP23LtMhBv49CfTK8eOCxfKQJ7U/KwrDg3ujIbSF701pMOwvt8SZ8jUeqEQZmyQoj raWR5CuWxOPMff0t/NsyNw4RQhKzJeJsHoY6m9SrtdJJGUAs2Oyh2ydl1DUg07/VN+ng ZqF6LhHzeWHDITjZaH+QXCChy6oHRT5JPxQbaVWNEcs6tbiHwLAfcxrOP2HQivj5zR3U JIBoDXDOS8wbWiw7rOxj1OVYhs+jhB1EH9Pr1FQZnwUel2mgyClz2y380W8OYitC+bOG x4qgjbFsfId3au+ndEJspJjrFhFOAiszlBuKJeonZzMy//CFnKnBZUZBoMqwIkV91lqT oChw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715953388; x=1716558188; 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=Ie+870ZSmebYNJH3T8S6AtPu/rRdgfskcV86wSj1a38=; b=pRn1wrbmurP5M4uNgKcecG+5dMl85kTxu2hcm1yhWkU958PC7tJez4D/vP0k5aecvp HgjJo7SbrEn3Jb9NLGMtiH1x80MXZxUYtLh7CaR27v5v4SrFrR7K6CPW1qnH3Ab6wqBT 6fG4ZAABQnCt+Vd3wdf2LWfTiAisGOeItWkhPFXXv3pJLHaTUOyGxN4sE0q8/0uUu8iF ihdFYDCR9/yuRSyKnPrOd30IKc7gHT2RCxywrYYthplgR+c5vRh879Vp5BZ590od68AE eWfVRtOLpGsnVxPc9l7+/2a0ESU715iX1CeiiJKhVFQ4SU+FGgbTjNcut8tAsAmBY1lf ETWw== X-Gm-Message-State: AOJu0YxMbOCBiApHillSsky11dsjAmvNBCG64novQ1O9IFZcoB7WCPM/ Ib4g3l/SBNjDQ+9mIgsgt1KnJpXDAKCiAzLuk2FsLLMcGBIiaRaRWsfo5w== X-Received: by 2002:a17:903:230b:b0:1e6:7731:80 with SMTP id d9443c01a7336-1ef43d16e69mr283749905ad.11.1715953387677; Fri, 17 May 2024 06:43:07 -0700 (PDT) Received: from localhost.localdomain ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1ef0b9d15dfsm157145935ad.62.2024.05.17.06.43.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 May 2024 06:43:07 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 May 2024 10:42:26 -0300 Message-ID: <20240517134228.288-1-jamrial@gmail.com> X-Mailer: git-send-email 2.45.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3 v3] avformat/vvc: fix writing general_constraint_info bytes 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: NPunyTbHtbza The existing implementation was completely broken. Signed-off-by: James Almer --- libavformat/Makefile | 2 +- libavformat/bitstream.c | 1 + libavformat/vvc.c | 38 ++++++++++++++++++++------------------ tests/ref/fate/source | 1 + 4 files changed, 23 insertions(+), 19 deletions(-) create mode 100644 libavformat/bitstream.c diff --git a/libavformat/Makefile b/libavformat/Makefile index 2d4e0e0c95..211ccf45e5 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -727,7 +727,7 @@ OBJS-$(CONFIG_LIBSSH_PROTOCOL) += libssh.o OBJS-$(CONFIG_LIBZMQ_PROTOCOL) += libzmq.o # Objects duplicated from other libraries for shared builds -SHLIBOBJS += log2_tab.o to_upper4.o +SHLIBOBJS += log2_tab.o to_upper4.o bitstream.o SHLIBOBJS-$(CONFIG_ISO_MEDIA) += mpegaudiotabs.o SHLIBOBJS-$(CONFIG_FLV_MUXER) += mpeg4audio_sample_rates.o SHLIBOBJS-$(CONFIG_HLS_DEMUXER) += ac3_channel_layout_tab.o diff --git a/libavformat/bitstream.c b/libavformat/bitstream.c new file mode 100644 index 0000000000..2afda37c30 --- /dev/null +++ b/libavformat/bitstream.c @@ -0,0 +1 @@ +#include "libavcodec/bitstream.c" diff --git a/libavformat/vvc.c b/libavformat/vvc.c index 3123cd8d83..98177a7ad8 100644 --- a/libavformat/vvc.c +++ b/libavformat/vvc.c @@ -21,6 +21,7 @@ */ #include "libavcodec/get_bits.h" +#include "libavcodec/put_bits.h" #include "libavcodec/golomb.h" #include "libavcodec/vvc.h" #include "libavutil/intreadwrite.h" @@ -138,9 +139,8 @@ static void vvcc_update_ptl(VVCDecoderConfigurationRecord *vvcc, vvcc->ptl.num_bytes_constraint_info = 9; memcpy(&vvcc->ptl.general_constraint_info[0], &ptl->gci_general_constraints[0], sizeof(uint8_t) * 9); - } else { - vvcc->ptl.num_bytes_constraint_info = 1; + vvcc->ptl.num_bytes_constraint_info = 0; memset(&vvcc->ptl.general_constraint_info[0], 0, sizeof(uint8_t) * 9); } @@ -185,7 +185,7 @@ static void vvcc_parse_ptl(GetBitContext *gb, unsigned int profileTierPresentFlag, unsigned int max_sub_layers_minus1) { - VVCCProfileTierLevel general_ptl; + VVCCProfileTierLevel general_ptl = { 0 }; int j; if (profileTierPresentFlag) { @@ -326,6 +326,7 @@ static int vvcc_parse_vps(GetBitContext *gb, for (int i = 0; i <= vps_num_ptls_minus1; i++) vvcc_parse_ptl(gb, vvcc, vps_pt_present_flag[i], vps_ptl_max_tid[i]); + vvcc->ptl_present_flag = 1; /* nothing useful for vvcc past this point */ return 0; @@ -356,8 +357,10 @@ static int vvcc_parse_sps(GetBitContext *gb, vvcc->chroma_format_idc = get_bits(gb, 2); sps_log2_ctu_size_minus5 = get_bits(gb, 2); - if (get_bits1(gb)) // sps_ptl_dpb_hrd_params_present_flag + if (get_bits1(gb)) { // sps_ptl_dpb_hrd_params_present_flag + vvcc->ptl_present_flag = 1; vvcc_parse_ptl(gb, vvcc, 1, sps_max_sublayers_minus1); + } skip_bits1(gb); // sps_gdr_enabled_flag if (get_bits(gb, 1)) // sps_ref_pic_resampling_enabled_flag @@ -579,10 +582,6 @@ static void vvcc_init(VVCDecoderConfigurationRecord *vvcc) { memset(vvcc, 0, sizeof(VVCDecoderConfigurationRecord)); vvcc->lengthSizeMinusOne = 3; // 4 bytes - - vvcc->ptl.num_bytes_constraint_info = 1; - - vvcc->ptl_present_flag = 1; } static void vvcc_close(VVCDecoderConfigurationRecord *vvcc) @@ -603,7 +602,6 @@ static int vvcc_write(AVIOContext *pb, VVCDecoderConfigurationRecord *vvcc) { uint8_t i; uint16_t j, vps_count = 0, sps_count = 0, pps_count = 0; - unsigned char *buf = NULL; /* * It's unclear how to properly compute these fields, so * let's always set them to values meaning 'unspecified'. @@ -735,6 +733,10 @@ static int vvcc_write(AVIOContext *pb, VVCDecoderConfigurationRecord *vvcc) avio_w8(pb, vvcc->lengthSizeMinusOne << 1 | vvcc->ptl_present_flag | 0xf8); if (vvcc->ptl_present_flag) { + uint8_t buf[64]; + PutBitContext pbc; + + init_put_bits(&pbc, buf, sizeof(buf)); /* * unsigned int(9) ols_idx; * unsigned int(3) num_sublayers; @@ -766,15 +768,15 @@ static int vvcc_write(AVIOContext *pb, VVCDecoderConfigurationRecord *vvcc) * unsigned int (1) ptl_frame_only_constraint_flag * unsigned int (1) ptl_multilayer_enabled_flag * unsigned int (8*num_bytes_constraint_info -2) general_constraint_info */ - buf = - (unsigned char *) malloc(sizeof(unsigned char) * - vvcc->ptl.num_bytes_constraint_info); - *buf = vvcc->ptl.ptl_frame_only_constraint_flag << vvcc->ptl. - num_bytes_constraint_info * 8 - 1 | vvcc->ptl. - ptl_multilayer_enabled_flag << vvcc->ptl.num_bytes_constraint_info * - 8 - 2 | *vvcc->ptl.general_constraint_info >> 2; - avio_write(pb, buf, vvcc->ptl.num_bytes_constraint_info); - free(buf); + put_bits(&pbc, 1, vvcc->ptl.ptl_frame_only_constraint_flag); + put_bits(&pbc, 1, vvcc->ptl.ptl_multilayer_enabled_flag); + if (vvcc->ptl.num_bytes_constraint_info) { + ff_copy_bits(&pbc, vvcc->ptl.general_constraint_info, (vvcc->ptl.num_bytes_constraint_info - 1) * 8); + put_bits(&pbc, 6, vvcc->ptl.general_constraint_info[vvcc->ptl.num_bytes_constraint_info - 1] & 0x3f); + } else + put_bits(&pbc, 6, 0); + flush_put_bits(&pbc); + avio_write(pb, buf, put_bytes_count(&pbc, 1)); if (vvcc->num_sublayers > 1) { uint8_t ptl_sublayer_level_present_flags = 0; diff --git a/tests/ref/fate/source b/tests/ref/fate/source index 7b5f14b4f0..d8d4224145 100644 --- a/tests/ref/fate/source +++ b/tests/ref/fate/source @@ -10,6 +10,7 @@ libavdevice/reverse.c libavfilter/af_arnndn.c libavfilter/file_open.c libavfilter/log2_tab.c +libavformat/bitstream.c libavformat/file_open.c libavformat/golomb_tab.c libavformat/log2_tab.c From patchwork Fri May 17 13:42:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 48950 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp2886780pzb; Fri, 17 May 2024 06:43:32 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWtj/UU7f8g4a2zJ8F+bW51seOyKfCg7Vv+MMiUm3CkC9Ih+/UqmACZYcwImPdWbCAvuQ+3vHfCaptAXXWN1jHCdPao4+i/PtS4AQ== X-Google-Smtp-Source: AGHT+IFAd18gw118eeRb9pYsvZ2jqXTc2g8YCGUyboxmMSzG+mmqDZtfTugavJNsTOz2mi76466e X-Received: by 2002:a17:907:1b28:b0:a5a:5f31:7663 with SMTP id a640c23a62f3a-a5a5f31777bmr1329422566b.56.1715953412465; Fri, 17 May 2024 06:43:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1715953412; cv=none; d=google.com; s=arc-20160816; b=ej1hpU5b8py6RPzg3k4w8LLpwdEnKkAR+czU8+tF3e/5WY84gtis2BO5VDNqiU5YD5 SDFwIidx2itrpngmuA5cwlj05NZKwgK8rXzIvA+f02RzxRjdLGL23XrZndc/HmONQN3b w/hwBKm5foIvOPU9tfrLg7+iDBJ5l5/uxIcDn5jUN+oqec1bXHiH2JO5NFiDjJuy014H ehzl1xmBzIoTv6tnqP7vA0ZvmNgsuiNdDhcBMF02X45JcgUuJiKpDMTN+VfP3pmODjur d0p9t02RU0o7KjcEnxDFQ9Jf7QmQ/o+oSFZ9+/DsEgaMkswPGSIpyYappfxCSAj3Jmkd +60A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=+tbVXcWnHwoWMegZJrRZSFxDBW9y7GiPGS+LdDG6dps=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=gAgjir/kXCF4t3rcLPG3O7r0ZFE7QmrveKK+o+Gw1L4Yvbp9VDLvyjcGGE5bCzYQL0 llCsdZTIaa9okz0qQ/viZfK8nygLTOcdJBSHOgHUQ9MWGeTgahpOQc0cnPdHQydJaH5P HfuryOgYaOV88ks89VVZctHg8pJawsnbUnusknKrtxJHfPCYd8wsvJhYIHxwk91Sc7Nu /EYlE1ummiAt/Sa7kzMYNWz9zLTimfo6jWIe127cs5Ac/xPSGCs23zStuE9G1SxsESV1 IcNNSs735ECbg05kOV+4A6tSxbP3oJznZYGiZ5qAnbdj9AVSyekUE5710AdQ4qorQiEN 0Y/w==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=RU4FiThQ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a5a1b602bcbsi983702166b.489.2024.05.17.06.43.32; Fri, 17 May 2024 06:43:32 -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=@gmail.com header.s=20230601 header.b=RU4FiThQ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 61B6D68D306; Fri, 17 May 2024 16:43:19 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C14C668D1C4 for ; Fri, 17 May 2024 16:43:11 +0300 (EEST) Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-1ed012c1afbso4895905ad.1 for ; Fri, 17 May 2024 06:43:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1715953389; x=1716558189; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=DaETZOxei8smchKrH3w5q3mVO+rUiSeBadcPAMIAe+s=; b=RU4FiThQ2pRUN89+vhkSHMTO4WFsgzIPTpAjOLLMFXSXT+kdHIA85Gpfm1u0AiifjX QfY1TKhIW89b9dmD7dE9NpMurH3FaM/46+oPUo/x85CrZVTNSOv3I/v6a3SxEMo/2NxB gfW0Bleb7iXmZorjSIdrjteB2+JnlGf2FkxCM5EdqRgD8MNnZLHEVW1kVM8NHIRy5BL6 E7xDndfwwLyCjljJoAYaRE1rjbALs0tZOQrhcVUJzJ0UxI7BJ5QWNb+10nv72wz6bFuU y1Iywmj5qQ//cIcLAB8Pea85ZpRwLRn7tLanxxAzp4rRYRf7xPycT9vFYzJ8tCha9n+O MyTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715953389; x=1716558189; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DaETZOxei8smchKrH3w5q3mVO+rUiSeBadcPAMIAe+s=; b=YLn2u6tSmsRhnOJrycgQVWUFagSU/pCpxOMjPfr3q1gSA3RwKQDb7dexHIm11tWiiV oCtLsCg5ksmgme6T33Dw7gu9+Ap5cRUzvGPYzNM5x3lBl+aAlTdF1rJFzck/PbbYmBMF 5P1D63VThWQn4a1bkXuKSrwN+ZrYejDBjiH8Op/rtiHem7tUrlZD3QkywECtlxGNRpRj jJl1Y91VxUmHlxP44UmNeh5eZXqQkTyuK8Cu9tkMYFwYGzZbURe8OUd3hhsSeLWcwwbS Gby1dVAzjgFZUzQeolkOrC+ii39MNmg5L4ndtSYPzBcql6aSGnbXKRWw6MZ4DaLRumNU gULQ== X-Gm-Message-State: AOJu0YxBzrvFBhyty3A6b0JHrCIaxRz/Eq1xpJah1VhnTq03C2wCpAWj CZQ/Y9QvPvgdfbkSoxaP8iHuFPTNHS+VMJS0Jy3cmakB2zkuMD5x3af8JQ== X-Received: by 2002:a17:903:2442:b0:1f0:9994:ff5f with SMTP id d9443c01a7336-1f09995037emr75776565ad.12.1715953389436; Fri, 17 May 2024 06:43:09 -0700 (PDT) Received: from localhost.localdomain ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1ef0b9d15dfsm157145935ad.62.2024.05.17.06.43.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 May 2024 06:43:08 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 May 2024 10:42:27 -0300 Message-ID: <20240517134228.288-2-jamrial@gmail.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240517134228.288-1-jamrial@gmail.com> References: <20240517134228.288-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3] avformat/vvc: include additional bits in general_constraint_info 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Ihl/Nr0x6afT Based on code from cbs_h266. Signed-off-by: James Almer --- libavformat/vvc.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/libavformat/vvc.c b/libavformat/vvc.c index 98177a7ad8..e8301d4247 100644 --- a/libavformat/vvc.c +++ b/libavformat/vvc.c @@ -46,7 +46,7 @@ typedef struct VVCPTLRecord { uint8_t general_level_idc; uint8_t ptl_frame_only_constraint_flag; uint8_t ptl_multilayer_enabled_flag; - uint8_t general_constraint_info[9]; + uint8_t general_constraint_info[10]; uint8_t ptl_sublayer_level_present_flag[VVC_MAX_SUBLAYERS - 1]; uint8_t sublayer_level_idc[VVC_MAX_SUBLAYERS - 1]; uint8_t ptl_num_sub_profiles; @@ -77,8 +77,8 @@ typedef struct VVCCProfileTierLevel { uint8_t ptl_multilayer_enabled_flag; // general_constraint_info uint8_t gci_present_flag; - uint8_t gci_general_constraints[9]; - uint8_t gci_num_reserved_bits; + uint8_t gci_general_constraints[10]; + uint8_t num_bytes_constraint_info; // end general_constraint_info uint8_t ptl_sublayer_level_present_flag[VVC_MAX_SUBLAYERS - 1]; uint8_t sublayer_level_idc[VVC_MAX_SUBLAYERS - 1]; @@ -135,13 +135,12 @@ static void vvcc_update_ptl(VVCDecoderConfigurationRecord *vvcc, /* * Constraints Info */ + vvcc->ptl.num_bytes_constraint_info = ptl->num_bytes_constraint_info; if (ptl->gci_present_flag) { - vvcc->ptl.num_bytes_constraint_info = 9; memcpy(&vvcc->ptl.general_constraint_info[0], - &ptl->gci_general_constraints[0], sizeof(uint8_t) * 9); + &ptl->gci_general_constraints[0], ptl->num_bytes_constraint_info); } else { - vvcc->ptl.num_bytes_constraint_info = 0; - memset(&vvcc->ptl.general_constraint_info[0], 0, sizeof(uint8_t) * 9); + memset(&vvcc->ptl.general_constraint_info[0], 0, sizeof(vvcc->ptl.general_constraint_info)); } /* @@ -186,7 +185,6 @@ static void vvcc_parse_ptl(GetBitContext *gb, unsigned int max_sub_layers_minus1) { VVCCProfileTierLevel general_ptl = { 0 }; - int j; if (profileTierPresentFlag) { general_ptl.profile_idc = get_bits(gb, 7); @@ -199,12 +197,20 @@ static void vvcc_parse_ptl(GetBitContext *gb, if (profileTierPresentFlag) { // parse constraint info general_ptl.gci_present_flag = get_bits1(gb); if (general_ptl.gci_present_flag) { + int gci_num_reserved_bits, j; for (j = 0; j < 8; j++) general_ptl.gci_general_constraints[j] = get_bits(gb, 8); - general_ptl.gci_general_constraints[8] = get_bits(gb, 7); - - general_ptl.gci_num_reserved_bits = get_bits(gb, 8); - skip_bits(gb, general_ptl.gci_num_reserved_bits); + general_ptl.gci_general_constraints[j++] = get_bits(gb, 7); + + gci_num_reserved_bits = get_bits(gb, 8); + if (gci_num_reserved_bits > 5) { + general_ptl.gci_general_constraints[8] = + (general_ptl.gci_general_constraints[8] << 1) | get_bits1(gb); + general_ptl.gci_general_constraints[j++] = get_bits(gb, 5); + gci_num_reserved_bits -= 6; + } + general_ptl.num_bytes_constraint_info = j; + skip_bits(gb, gci_num_reserved_bits); } while (gb->index % 8 != 0) skip_bits1(gb); From patchwork Fri May 17 13:42:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 48951 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp2886880pzb; Fri, 17 May 2024 06:43:42 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWDdYm08JJREronAGo7Jwrn/m8SXd5huQFizMg3+47Vyu3zf8JTt6wlhD977CsSjALQD2AAAzBVLmCdGn75DVQAx7w5qFBDoDp5/w== X-Google-Smtp-Source: AGHT+IEAA5qQVhfiVgHrglcz4l9bbgIW5re+C4SnvUEQZdp9EOGpCPjlBBzBBlkfBwdmJlGrkLz8 X-Received: by 2002:a50:8a84:0:b0:572:d1e1:b4b3 with SMTP id 4fb4d7f45d1cf-5734d59d528mr16556350a12.7.1715953421976; Fri, 17 May 2024 06:43:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1715953421; cv=none; d=google.com; s=arc-20160816; b=XeSg9lVrHjQnHENs2eVVzOLlKp7u1FgUtToH64S5xik3Di3mhR3ASpiZv6nFTbKBou oGELLrGr2k+7AnLp89Urr50yo57xNyXOfdjA9zVIlBsSbjZdSaWHWWoakaPS1GeBObqD o6SIQCBI5wRhPYQkYZTP3QKBw6dPI752ruXGXrF7RY8EY5tSqLGv7zHo7qpxnl8KgEN5 skTDjim2dxT0dyZxP92CdMsGSKZXTQxacn+A9WKZEmwTqa/dfEYwNz1dMKsB5fgoHGtc P7wXgBVpYY/lhxQ9n1oUebb5pr75PyvDifLTGfddVcrLdDAI7q1I4Otp1zb7GRxF+hSZ +dUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=st0UlCvc168y632z1usH80Y0iRirU76OOJaq7/Juum0=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=O9WyCLy7buRMmsqrhUIQbpK3D8dvKwIDJdqbLilfRiMcdd2kxcO9tk7+5RQUvqN+MM w+uNknUhYXLv9yHJPJwn/6r7G5Oszw2FeHbMLKQ6oNe3d3tuzabxQgOlkBpwhJiiRN3t Yufm0aWwE/7f5OiXfc3Pf6KXmLZiE4JTeIIcQhmZcc26VqJZa070JLCFuGRJ5TQLW8uy kDuFF9BnUVcEjcxWMJIAR2cx16FOb7cI3UnfCoUaAtfgEHsaTLbgDgj+GlYeKavKepsg VgO7fvpKJeUbx/Klf+BdMQyv6jg5LBeu8holj8FzgdwC6R9921HvDdE3Yy1akcxYEEcr hfSA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=cjahLYTf; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-5750c3057e7si1840000a12.440.2024.05.17.06.43.41; Fri, 17 May 2024 06:43:41 -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=@gmail.com header.s=20230601 header.b=cjahLYTf; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B70DC68D307; Fri, 17 May 2024 16:43:21 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8051768D2A5 for ; Fri, 17 May 2024 16:43:13 +0300 (EEST) Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-1eeb1a4c10aso8291985ad.3 for ; Fri, 17 May 2024 06:43:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1715953391; x=1716558191; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=siD+H8rEJdHLC6LG2E28hiLjUY7YegiL0+yaQBuNhJY=; b=cjahLYTf0yE7BjssvHkOUlO9JYMOZxUVZklx/nmesv/X0XTmhZKx1dYeTDAy6ubATa kpl8edzOcy3biVHoOVvMjvHASnhTUPtn8s/aPOiS4lqb7HtWmW45C+rn9NzBhP6ubmdN 6yKxy9L/B1YLZEzzpp3NCkD2bXQbqs0dX58ZVqMGmwtTLYdBI8kyaLr8dlBuK0eAfUzz LSR/LU/wbG341XfIgQfhuNJQItjVCm9MssRd9wVtORp6QA2Kz5RFqOtAefxM8UTnj4in MsES40nnOeBak3v1OWAxuXE4wwS881U0XALcqMl3Ii+ajiT3agBoVzgbytYqu54Qr0+h 9Eeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715953391; x=1716558191; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=siD+H8rEJdHLC6LG2E28hiLjUY7YegiL0+yaQBuNhJY=; b=I1Da3WNCNG6ijWlBA0Ema3xp2jS3Jr7rGApmwdpDOSKSqROtJ4+M64CepXaEX+aOdX IkzaSPpYyqrkKM3vR+TXtp1jllEedSIN+/IiRhsPV7H46NiqkLIs3caIVDECYKIRIL/d PDbVsxwnpVzAZPzkIVBjzk/cOt2c4OcPgMCxSaUBrqBYS621m9fCGtJXA9Cjmsd1Ij8X Wf1wDdT7Decvu+5jZO2UTU3yXe1nh+SLWZWzNLM0v1xxU+SzVS3DHi91+WCFCOv2nEIx f0wnr9waJVK9o4RKL3RN37+CDL7h5k9m0mGYr1I59Zx5kAfgXJcSMdMTZkoH4XaFiPyo iiFg== X-Gm-Message-State: AOJu0YxqSIf9AUM5HMqjgkD2Y+598EXnIpEtzJZcqzg8FKsmQpJHR21q 6XvU2zueT8fzfOxk8FU78KH2munTJZF0zqSc/q2+yyyXuQfHutui5nxd/A== X-Received: by 2002:a05:6a20:9785:b0:1ac:c455:c132 with SMTP id adf61e73a8af0-1afde10f54bmr21126724637.30.1715953391141; Fri, 17 May 2024 06:43:11 -0700 (PDT) Received: from localhost.localdomain ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1ef0b9d15dfsm157145935ad.62.2024.05.17.06.43.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 May 2024 06:43:10 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 May 2024 10:42:28 -0300 Message-ID: <20240517134228.288-3-jamrial@gmail.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240517134228.288-1-jamrial@gmail.com> References: <20240517134228.288-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] configure: split ISOBMFF writer helpers into a separate component 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: QRKs1lW7KLi2 Signed-off-by: James Almer --- configure | 10 ++++++---- libavformat/Makefile | 16 ++++++++-------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/configure b/configure index 275fa59bfd..b16722d83d 100755 --- a/configure +++ b/configure @@ -2587,6 +2587,7 @@ CONFIG_EXTRA=" inflate_wrapper intrax8 iso_media + iso_writer ividsp jpegtables lgplv3 @@ -3611,7 +3612,7 @@ evc_demuxer_select="evc_frame_merge_bsf evc_parser" f4v_muxer_select="mov_muxer" fifo_muxer_deps="threads" flac_demuxer_select="flac_parser" -flv_muxer_select="aac_adtstoasc_bsf" +flv_muxer_select="aac_adtstoasc_bsf iso_writer" gxf_muxer_select="pcm_rechunk_bsf" hds_muxer_select="flv_muxer" hls_demuxer_select="aac_demuxer ac3_demuxer adts_header ac3_parser eac3_demuxer mov_demuxer mpegts_demuxer" @@ -3629,12 +3630,12 @@ latm_muxer_select="aac_adtstoasc_bsf mpeg4audio" matroska_audio_muxer_select="matroska_muxer" matroska_demuxer_select="riffdec" matroska_demuxer_suggest="bzlib zlib" -matroska_muxer_select="mpeg4audio riffenc aac_adtstoasc_bsf pgs_frame_merge_bsf vp9_superframe_bsf" +matroska_muxer_select="iso_writer mpeg4audio riffenc aac_adtstoasc_bsf pgs_frame_merge_bsf vp9_superframe_bsf" mlp_demuxer_select="mlp_parser" mmf_muxer_select="riffenc" mov_demuxer_select="iso_media riffdec" mov_demuxer_suggest="iamfdec zlib" -mov_muxer_select="iso_media riffenc rtpenc_chain vp9_superframe_bsf aac_adtstoasc_bsf ac3_parser" +mov_muxer_select="iso_media iso_writer riffenc rtpenc_chain vp9_superframe_bsf aac_adtstoasc_bsf ac3_parser" mov_muxer_suggest="iamfenc" mp3_demuxer_select="mpegaudio_parser" mp3_muxer_select="mpegaudioheader" @@ -3642,7 +3643,7 @@ mp4_muxer_select="mov_muxer" mpegts_demuxer_select="iso_media" mpegts_muxer_select="ac3_parser adts_muxer latm_muxer h264_mp4toannexb_bsf hevc_mp4toannexb_bsf vvc_mp4toannexb_bsf" mpegtsraw_demuxer_select="mpegts_demuxer" -mxf_muxer_select="pcm_rechunk_bsf rangecoder" +mxf_muxer_select="iso_writer pcm_rechunk_bsf rangecoder" mxf_d10_muxer_select="mxf_muxer" mxf_opatom_muxer_select="mxf_muxer" nut_muxer_select="riffenc" @@ -3655,6 +3656,7 @@ ogv_muxer_select="ogg_muxer" opus_muxer_select="ogg_muxer" psp_muxer_select="mov_muxer" rtp_demuxer_select="sdp_demuxer" +rtp_muxer_select="iso_writer" rtp_mpegts_muxer_select="mpegts_muxer rtp_muxer" rtpdec_select="asf_demuxer mov_demuxer mpegts_demuxer rm_demuxer rtp_protocol srtp" rtsp_demuxer_select="http_protocol rtpdec" diff --git a/libavformat/Makefile b/libavformat/Makefile index 211ccf45e5..1c4d9deccd 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -35,6 +35,7 @@ OBJS-$(HAVE_LIBC_MSVCRT) += file_open.o # subsystems OBJS-$(CONFIG_ISO_MEDIA) += isom.o +OBJS-$(CONFIG_ISO_WRITER) += av1.o avc.o hevc.o vvc.o vpcc.o OBJS-$(CONFIG_IAMFDEC) += iamf_reader.o iamf_parse.o iamf.o OBJS-$(CONFIG_IAMFENC) += iamf_writer.o iamf.o OBJS-$(CONFIG_NETWORK) += network.o @@ -220,7 +221,7 @@ OBJS-$(CONFIG_FLAC_MUXER) += flacenc.o flacenc_header.o \ OBJS-$(CONFIG_FLIC_DEMUXER) += flic.o OBJS-$(CONFIG_FLV_DEMUXER) += flvdec.o OBJS-$(CONFIG_LIVE_FLV_DEMUXER) += flvdec.o -OBJS-$(CONFIG_FLV_MUXER) += flvenc.o avc.o hevc.o av1.o vpcc.o +OBJS-$(CONFIG_FLV_MUXER) += flvenc.o OBJS-$(CONFIG_FOURXM_DEMUXER) += 4xm.o OBJS-$(CONFIG_FRAMECRC_MUXER) += framecrcenc.o framehash.o OBJS-$(CONFIG_FRAMEHASH_MUXER) += hashenc.o framehash.o @@ -260,7 +261,7 @@ OBJS-$(CONFIG_HEVC_MUXER) += rawenc.o OBJS-$(CONFIG_EVC_DEMUXER) += evcdec.o rawdec.o OBJS-$(CONFIG_EVC_MUXER) += rawenc.o OBJS-$(CONFIG_HLS_DEMUXER) += hls.o hls_sample_encryption.o -OBJS-$(CONFIG_HLS_MUXER) += hlsenc.o hlsplaylist.o avc.o +OBJS-$(CONFIG_HLS_MUXER) += hlsenc.o hlsplaylist.o OBJS-$(CONFIG_HNM_DEMUXER) += hnm.o OBJS-$(CONFIG_IAMF_DEMUXER) += iamfdec.o OBJS-$(CONFIG_IAMF_MUXER) += iamfenc.o @@ -349,7 +350,6 @@ OBJS-$(CONFIG_MATROSKA_DEMUXER) += matroskadec.o matroska.o \ oggparsevorbis.o vorbiscomment.o \ qtpalette.o replaygain.o dovi_isom.o OBJS-$(CONFIG_MATROSKA_MUXER) += matroskaenc.o matroska.o \ - av1.o avc.o hevc.o vvc.o\ flacenc_header.o avlanguage.o \ vorbiscomment.o wv.o dovi_isom.o OBJS-$(CONFIG_MCA_DEMUXER) += mca.o @@ -371,7 +371,7 @@ OBJS-$(CONFIG_MODS_DEMUXER) += mods.o OBJS-$(CONFIG_MOFLEX_DEMUXER) += moflex.o OBJS-$(CONFIG_MOV_DEMUXER) += mov.o mov_chan.o mov_esds.o \ qtpalette.o replaygain.o dovi_isom.o -OBJS-$(CONFIG_MOV_MUXER) += movenc.o av1.o avc.o hevc.o vvc.o vpcc.o \ +OBJS-$(CONFIG_MOV_MUXER) += movenc.o \ movenchint.o mov_chan.o rtp.o \ movenccenc.o movenc_ttml.o rawutils.o \ dovi_isom.o evc.o @@ -404,7 +404,7 @@ OBJS-$(CONFIG_MUSX_DEMUXER) += musx.o OBJS-$(CONFIG_MV_DEMUXER) += mvdec.o OBJS-$(CONFIG_MVI_DEMUXER) += mvi.o OBJS-$(CONFIG_MXF_DEMUXER) += mxfdec.o mxf.o avlanguage.o -OBJS-$(CONFIG_MXF_MUXER) += mxfenc.o mxf.o avc.o +OBJS-$(CONFIG_MXF_MUXER) += mxfenc.o mxf.o OBJS-$(CONFIG_MXG_DEMUXER) += mxg.o OBJS-$(CONFIG_NC_DEMUXER) += ncdec.o OBJS-$(CONFIG_NISTSPHERE_DEMUXER) += nistspheredec.o pcm.o @@ -526,8 +526,7 @@ OBJS-$(CONFIG_RTP_MUXER) += rtp.o \ rtpenc_vc2hq.o \ rtpenc_vp8.o \ rtpenc_vp9.o \ - rtpenc_xiph.o \ - avc.o hevc.o vvc.o + rtpenc_xiph.o OBJS-$(CONFIG_RTSP_DEMUXER) += rtsp.o rtspdec.o httpauth.o \ urldecode.o OBJS-$(CONFIG_RTSP_MUXER) += rtsp.o rtspenc.o httpauth.o \ @@ -727,8 +726,9 @@ OBJS-$(CONFIG_LIBSSH_PROTOCOL) += libssh.o OBJS-$(CONFIG_LIBZMQ_PROTOCOL) += libzmq.o # Objects duplicated from other libraries for shared builds -SHLIBOBJS += log2_tab.o to_upper4.o bitstream.o +SHLIBOBJS += log2_tab.o to_upper4.o SHLIBOBJS-$(CONFIG_ISO_MEDIA) += mpegaudiotabs.o +SHLIBOBJS-$(CONFIG_ISO_WRITER) += bitstream.o SHLIBOBJS-$(CONFIG_FLV_MUXER) += mpeg4audio_sample_rates.o SHLIBOBJS-$(CONFIG_HLS_DEMUXER) += ac3_channel_layout_tab.o SHLIBOBJS-$(CONFIG_IMAGE_JPEGXL_PIPE_DEMUXER) += jpegxl_parse.o