From patchwork Tue Dec 5 22:43:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 35020 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:9153:b0:181:818d:5e7f with SMTP id x19csp658745pzc; Tue, 5 Dec 2023 14:43:57 -0800 (PST) X-Google-Smtp-Source: AGHT+IF6J+1MEFNfNvvButurIjneZAkdfpsi16bla77LpKC7hMru9LvCZMt400ANmzq7leuQ9Orb X-Received: by 2002:a17:906:ae4d:b0:a19:a409:37cf with SMTP id lf13-20020a170906ae4d00b00a19a40937cfmr2187073ejb.40.1701816237079; Tue, 05 Dec 2023 14:43:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701816237; cv=none; d=google.com; s=arc-20160816; b=cb8onGCqa/fAIgCqWPsDeM9PAhCySpkTNnXmTgOynkzyoIZN8Hi/dxgfa4g1guMjxR QMggx1pj3vYGGou2CVPP7QP6cznRjnthZnRGakgPN6RjdllUWuhTkpFw4oUcXyOXQivf dIl3UTdqhdVzRDrUxdmtSfTOdqL84pEKZJyLVUPMYk55CNMoMdAv+SLz0HlTYHzLFu/W NoRiZo5kEKljjkUpbQbujE013HeC7qqkawssAINmWOK/Y+uxZevXm/p2j5c65JBaLBLN lbPeCwHrKYjkprLIW7GUmFnD3R6oDGSAtPmNFbzpaxkzM/ENqDVmLZlKIlHW0ZZxWUVw cbyQ== 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=FSxhcCrO+yZTi0bguciuZ0j+e5dpIBslUXUf2V+Or5M=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=hxN7ocoDHd6UNMNZY02VjsGZgRXs8tNFp/X2U7z+lJfwm90NJZoQ9htMdnzUDU3Bpq mc4dDJFHEH8b8LuU5LtlVS7j30uZ+FJrJyhzO+gWejWrrqbEkK09RqG7vSpDzKCTsUxk D/5ARNW/EYA5SLFZafrIVQEozBvzij7UsIbh1P2N9Q95G0hnMIsBXplA8RDYX11yfnnh oMMC64G6lsnm1W2oRPmy0rpv6aPOmmn7srid/aXhjBIB4nMLbPWgeb1Sx2aMjomiSgmm eo54TV4JQRQE1XXTN5yRn0aUVM93F27UrJ2ZPssrmsGRHiDkkjts/EhBPQFfvjqw8cfP Qp4A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=JaSuTACc; 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 c9-20020a170906170900b00a18615c66fasi5975752eje.952.2023.12.05.14.43.55; Tue, 05 Dec 2023 14:43:57 -0800 (PST) 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=JaSuTACc; 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 BEDE168CCEE; Wed, 6 Dec 2023 00:43:50 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oo1-f51.google.com (mail-oo1-f51.google.com [209.85.161.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 070A26899D7 for ; Wed, 6 Dec 2023 00:43:44 +0200 (EET) Received: by mail-oo1-f51.google.com with SMTP id 006d021491bc7-58d521f12ebso4153680eaf.2 for ; Tue, 05 Dec 2023 14:43:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701816221; x=1702421021; 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=wPjA+7is17m+9CnXeEcP+DzZGFLAU/JhgjobLbRV6Vg=; b=JaSuTACcacspX6h8Cpw4kRCVMJEfDYwb7/UK1Vd3IRNjR5GBmynbm2K4WNLcBmEfOc jCBpC55Lbd1C64yYxtMPJJ88nFIVJh1uBg9NOm9YrVUwK4N23nILQQfIgE/wvidgEhZf x64UG8sydU3BjWKCnnyf/iK6LoBnxdF+0AD2OrD9tWJT9oHTmOPsXKaZRhj3DksZKCGJ 1769LV2pDXzXJH1RPkduXkfDfG98/lpCiL5xpmzVjY3cLoOHnPlIfSL9KPFDr49xk/7W mnxF/hXdMmMrI2ahsgSpmJHjN71rQgVKJVrsiN36tynon9UV3C9SlUEEI/gTTE7+7pWz 1xwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701816221; x=1702421021; 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=wPjA+7is17m+9CnXeEcP+DzZGFLAU/JhgjobLbRV6Vg=; b=hGu2bXmR962xmLhaxKu+RpXC5F5q1aO9ZzFcrfhXfj0l6jgpAAhcTnoQ/KAVRUBPBj SL/AQNVnu1dSWcgnWDXAnt8YrcN5GVMqKYhfp7QieWIDMqKtJElOwX1tNxJ3Kwa/106D TIGmnbWPxG8/c9rto95sqJ5/UN+5T4sf1CoHtWouNDIBPCx+fE+WFFjipvk5jY+gIQts Rl1kLyHhf83bLGEW3qynOzMerbxXbuwCrZaaz8CKCNi1GIBhjLynySGfE3vw5EcIcCLm oQn0aFBDWiBHn2jEF/t9VikmIV3JMNVuyCNS1mphCicnb/Yo3AoJaOeKp6VI8n4Miof1 Z9RQ== X-Gm-Message-State: AOJu0YxYxHSHQY22ikaITJ8erMbRIAu31B2Eql79A1hy7Hh3nrx/Aidm l4UjxBhe8O+SDk9ZBZ3+Y6oYoZyIuh4= X-Received: by 2002:a05:6358:60c1:b0:16e:2740:7cfc with SMTP id i1-20020a05635860c100b0016e27407cfcmr20666rwi.25.1701816221167; Tue, 05 Dec 2023 14:43:41 -0800 (PST) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id hq25-20020a056a00681900b0064fd4a6b306sm2037688pfb.76.2023.12.05.14.43.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Dec 2023 14:43:40 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 5 Dec 2023 19:43:54 -0300 Message-ID: <20231205224402.14540-1-jamrial@gmail.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v6 0/8] avformat: introduce AVStreamGroup 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: 8o24ZWwXbFkG Addressed Anton's comments and added some documentation. Also split the common code some more in order to facilitate using it from different modules. I'm withdrawing the MP4 code for now as i've noticed a bug in the spec and reported it. Depending on what happens to that, i'll resubmit it. James Almer (8): avutil: introduce an Immersive Audio Model and Formats API avformat: introduce AVStreamGroup ffmpeg: add support for muxing AVStreamGroups avcodec/packet: add IAMF Parameters side data types avcodec/get_bits: add get_leb() avformat/aviobuf: add ffio_read_leb() and ffio_write_leb() avformat: Immersive Audio Model and Formats demuxer avformat: Immersive Audio Model and Formats muxer doc/fftools-common-opts.texi | 17 +- fftools/ffmpeg.h | 2 + fftools/ffmpeg_mux_init.c | 335 ++++++++++ fftools/ffmpeg_opt.c | 2 + libavcodec/avpacket.c | 3 + libavcodec/bitstream.h | 2 + libavcodec/bitstream_template.h | 23 + libavcodec/get_bits.h | 24 + libavcodec/packet.h | 24 + libavformat/Makefile | 2 + libavformat/allformats.c | 2 + libavformat/avformat.c | 185 +++++- libavformat/avformat.h | 169 +++++ libavformat/avio_internal.h | 10 + libavformat/aviobuf.c | 33 + libavformat/dump.c | 147 +++- libavformat/iamf.c | 125 ++++ libavformat/iamf.h | 162 +++++ libavformat/iamf_parse.c | 1106 +++++++++++++++++++++++++++++++ libavformat/iamf_parse.h | 38 ++ libavformat/iamf_writer.c | 823 +++++++++++++++++++++++ libavformat/iamf_writer.h | 51 ++ libavformat/iamfdec.c | 495 ++++++++++++++ libavformat/iamfenc.c | 388 +++++++++++ libavformat/internal.h | 33 + libavformat/options.c | 139 ++++ libavutil/Makefile | 2 + libavutil/iamf.c | 564 ++++++++++++++++ libavutil/iamf.h | 573 ++++++++++++++++ 29 files changed, 5445 insertions(+), 34 deletions(-) create mode 100644 libavformat/iamf.c create mode 100644 libavformat/iamf.h create mode 100644 libavformat/iamf_parse.c create mode 100644 libavformat/iamf_parse.h create mode 100644 libavformat/iamf_writer.c create mode 100644 libavformat/iamf_writer.h create mode 100644 libavformat/iamfdec.c create mode 100644 libavformat/iamfenc.c create mode 100644 libavutil/iamf.c create mode 100644 libavutil/iamf.h