From patchwork Sun Nov 26 01:28:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 35015 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:bca6:b0:181:818d:5e7f with SMTP id fx38csp2451754pzb; Sat, 25 Nov 2023 17:29:33 -0800 (PST) X-Google-Smtp-Source: AGHT+IEjvdkRQn2hrJEC2CfQqQG+j+prs+IiPnUk5EELS0LWAvjwEdmcpuJKbQMvFxzLja1T59qx X-Received: by 2002:a17:906:7384:b0:9d3:85b9:afdf with SMTP id f4-20020a170906738400b009d385b9afdfmr5124744ejl.3.1700962173440; Sat, 25 Nov 2023 17:29:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700962173; cv=none; d=google.com; s=arc-20160816; b=vqi0Z8PWkZff+Q2LhRnDJKOEY/oCQ+nOqIf0fIxJxNImk1diFENHzGKgJP+Dx9aokZ n5rKw/KddNDAw0V56tBPk8bRGYfebSUVJkdgAyuwKCWW+zWB9gIHm/O/mrwvc43ZsnUL fyJfAKVIJtYv2bIpTI/gth6oZiUsyVhkZCCBdLE8lgOlx1y5d6XvSyClX3rSbRsZ/7OV hGa3vYHy9q/N0R1lLUaQeihOq+MT1272YMjYZ1ptg3fCi4qEmqHjtscCJ1rL4XJiif1b IeBgIr56xfo5YFiuRGrjU8roGnjLiTIu8iYU6rMBqcKXbFZ3U+10RwSYfo5ZBwZaTEXW jADw== 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=lRq3EI8QmWnEGdpgK2QqiPY6tq5w8a3rPrlhF/PADsw=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=xIksPPlu+KixC/2bQxQpTq3ptmdmikEYD1hPYnWMzQDDs/3lSzIZtenS7gAE53PvgF YpP1Q5VJdx6OmM3OGnQKOc3xl7SUKipHofkx9FIA/BIQqehiAAol1q1GGDbHxxo5Uf0C xkxMDOMFqmGRU1UFTakn9cww4h3G+laMndYGxSe4fHafalz/b7rbuGa/9sIrI7HcBVSS UXQsuOG39BepLpuv4Spv8q+dA+rtLaF832OogdNxwEpHZ+N9G8BPG4oqk0yUzjS8IZMe yinRECMmIIBij5xmO8IFld7N+aQe+lMuU18dJOy6HyBOqRXwqeN5MhMZHKf2Uql5QzmR WhEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=CMQ4Vql+; 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 f13-20020a17090624cd00b009888e599645si3615478ejb.771.2023.11.25.17.29.32; Sat, 25 Nov 2023 17:29:33 -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=CMQ4Vql+; 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 4E9FB68CDA0; Sun, 26 Nov 2023 03:29:29 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f179.google.com (mail-oi1-f179.google.com [209.85.167.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B232868CD88 for ; Sun, 26 Nov 2023 03:29:21 +0200 (EET) Received: by mail-oi1-f179.google.com with SMTP id 5614622812f47-3b844357f7cso1957775b6e.1 for ; Sat, 25 Nov 2023 17:29:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700962159; x=1701566959; 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=LB/3teoZRdHJu7/8ucxvkw8cvQrz7ONMk+RfZZRGdRw=; b=CMQ4Vql+Tjk4jIJpGBm1KXVdGsH1PSXi0SDdqfJP9nA3oN1AHHdabU7BW0pKD2zqxA pFzEd7wQhF5O+/N38tdWzjOPHhxLBM2OGsars/qZa/qjMlN4uyEEXtkA41gbh1sE7rNu YBN8T36OD8kDZSLv8KEH3Dh/gW3usTJV89ezW1WiNaWAU5Trx5ZhN0lZvCeaGhhGP2Ep L+orOJYc4C9/B3rc8HlNjCtHIcj2RMm8yvWkLH8Klk3SREE6Z0+MT3H6eyaLQESIz2Gi SpczZfo9LGU+MoSyRcey6jErQWAH0ch/BOovQv1dOYdYDnleaachrKyMHgaWhYdRM41x 1aag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700962159; x=1701566959; 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=LB/3teoZRdHJu7/8ucxvkw8cvQrz7ONMk+RfZZRGdRw=; b=GnmSyXwvf5EZaW523lOo4Ld51lrSDfYfXOv4vjgTaegchEcWp/G8r89ObwRND/59ha LuMonxFwQe9x2vC15NI9F5PU9XhTdhrU2vzmRPx05/FhCCRg+qujRy9xHEWSRo7TpOAu J45m14p9bK4QiuS+OUVZaXQmrezqXvh0bWgje4ChzRR5mqu0t7wNOi/R6YXz6kQBwPA0 v/oYAYqnZ8L+qQSZeN2KY/3Vxy69VhEWtTGUktf+geffutzP+AvBO2wjlsSgSunrE5Ox cmJLENEVUoG1lX7gA77FNAFTicZZ5Gs98w1P3hm7LXk/yU97WbKkVwTLPYUJcwm4YzgB c9Cg== X-Gm-Message-State: AOJu0YzBDJY2VJUhZ/vFlowXobYXQ52vPbuTRNuklf9RpkbW4wVxxpGO IGQo+WUclSyPX+3nNgjjT7esLx3nJ2c= X-Received: by 2002:a05:6808:4d9:b0:3b2:e799:97f6 with SMTP id a25-20020a05680804d900b003b2e79997f6mr7379785oie.59.1700962159096; Sat, 25 Nov 2023 17:29:19 -0800 (PST) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id g3-20020a62e303000000b0068a13b0b300sm5049519pfh.11.2023.11.25.17.29.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Nov 2023 17:29:18 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sat, 25 Nov 2023 22:28:49 -0300 Message-ID: <20231126012858.40388-1-jamrial@gmail.com> X-Mailer: git-send-email 2.42.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v5 0/9] 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: PLjUOpPy8S8D Addressed Marton's comments regarding documentation for the stream specifier changes, moved the IAMF API to libavutil as packet side data can't depend on structs and API defined in libavformat (And future bsfs may make use of it too), and moved the leb reading and writing functions to get_bits and avio so they may be used by other modules. James Almer (9): avutil/mem: add av_dynarray2_add_nofree avcodec/get_bits: add get_leb() avformat/aviobuf: add ffio_read_leb() and ffio_write_leb() 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 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 | 327 +++++++++ fftools/ffmpeg_opt.c | 2 + libavcodec/avpacket.c | 3 + libavcodec/bitstream.h | 2 + libavcodec/bitstream_template.h | 22 + libavcodec/get_bits.h | 23 + libavcodec/packet.h | 24 + libavformat/Makefile | 2 + libavformat/allformats.c | 2 + libavformat/avformat.c | 185 ++++- libavformat/avformat.h | 169 +++++ libavformat/avio_internal.h | 4 + libavformat/aviobuf.c | 37 + libavformat/dump.c | 147 +++- libavformat/iamf.c | 1149 +++++++++++++++++++++++++++++++ libavformat/iamf.h | 167 +++++ libavformat/iamfdec.c | 495 +++++++++++++ libavformat/iamfenc.c | 1091 +++++++++++++++++++++++++++++ libavformat/internal.h | 33 + libavformat/options.c | 139 ++++ libavutil/Makefile | 2 + libavutil/iamf.c | 582 ++++++++++++++++ libavutil/iamf.h | 377 ++++++++++ libavutil/mem.c | 17 + libavutil/mem.h | 32 +- 27 files changed, 5015 insertions(+), 37 deletions(-) create mode 100644 libavformat/iamf.c create mode 100644 libavformat/iamf.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