Media Over QUIC S. Nandakumar Internet-Draft Cisco Intended status: Informational W. Law Expires: 29 March 2024 Akamai M. Zanaty Cisco 26 September 2023 Common Catalog Format for moq-transport draft-wilaw-moq-catalogformat-00 Abstract This specification defines an Common Catalog specification for streaming formats implementing the MOQ Transport Protocol [MoQTransport]. Media over QUIC Transport (MOQT) defines a publish/ subscribe based unified media delivery protocol for delivering media for streaming and interactive applications over QUIC. The catalog describes the content made available by a publisher, including information necessary for subscribers to select, subscribe and initialize tracks. About This Document This note is to be removed before publishing as an RFC. The latest revision of this draft can be found at https://wilaw.github.io/catalog-format/draft-wilaw-moq- catalogformat.html. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-wilaw-moq- catalogformat/. Discussion of this document takes place on the Media Over QUIC Working Group mailing list (mailto:moq@ietf.org), which is archived at https://mailarchive.ietf.org/arch/browse/moq/. Subscribe at https://www.ietf.org/mailman/listinfo/moq/. Source for this draft and an issue tracker can be found at https://github.com/wilaw/catalog-format. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Nandakumar, et al. Expires 29 March 2024 [Page 1] Internet-Draft Common Catalog Format for moq-transport September 2023 Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on 29 March 2024. Copyright Notice Copyright (c) 2023 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/ license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Conventions and Definitions . . . . . . . . . . . . . . . . . 4 3. Catalog . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.1. Catalog version . . . . . . . . . . . . . . . . . . . . . 4 3.2. Catalog Fields . . . . . . . . . . . . . . . . . . . . . 5 3.2.1. Streaming format . . . . . . . . . . . . . . . . . . 8 3.2.2. Streaming format version . . . . . . . . . . . . . . 8 3.2.3. Catalog sequence number . . . . . . . . . . . . . . . 8 3.2.4. Tracks . . . . . . . . . . . . . . . . . . . . . . . 8 3.2.5. Catalogs . . . . . . . . . . . . . . . . . . . . . . 8 3.2.6. Catalog object . . . . . . . . . . . . . . . . . . . 8 3.2.7. Tracks object . . . . . . . . . . . . . . . . . . . . 8 3.2.8. Parent sequence number . . . . . . . . . . . . . . . 9 3.2.9. Track namespace . . . . . . . . . . . . . . . . . . . 9 3.2.10. Track name . . . . . . . . . . . . . . . . . . . . . 9 3.2.11. Packaging . . . . . . . . . . . . . . . . . . . . . . 9 3.2.12. Track operations . . . . . . . . . . . . . . . . . . 9 3.2.13. Track label . . . . . . . . . . . . . . . . . . . . . 10 3.2.14. Render group . . . . . . . . . . . . . . . . . . . . 10 3.2.15. Alternate group . . . . . . . . . . . . . . . . . . . 11 Nandakumar, et al. Expires 29 March 2024 [Page 2] Internet-Draft Common Catalog Format for moq-transport September 2023 3.2.16. Initialization data . . . . . . . . . . . . . . . . . 11 3.2.17. Initialization track . . . . . . . . . . . . . . . . 11 3.2.18. Selection parameters . . . . . . . . . . . . . . . . 11 3.2.19. Dependencies . . . . . . . . . . . . . . . . . . . . 11 3.2.20. Temporal ID . . . . . . . . . . . . . . . . . . . . . 11 3.2.21. Spatial ID . . . . . . . . . . . . . . . . . . . . . 12 3.2.22. Codec . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.23. Mimetype . . . . . . . . . . . . . . . . . . . . . . 12 3.2.24. Framerate . . . . . . . . . . . . . . . . . . . . . . 12 3.2.25. Bitrate . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.26. Width . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.27. Height . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.28. Audio sample rate . . . . . . . . . . . . . . . . . . 12 3.2.29. Channel configuration . . . . . . . . . . . . . . . . 12 3.2.30. Display width . . . . . . . . . . . . . . . . . . . . 13 3.2.31. Display height . . . . . . . . . . . . . . . . . . . 13 3.2.32. Language . . . . . . . . . . . . . . . . . . . . . . 13 3.3. Catalog Delta Updates . . . . . . . . . . . . . . . . . . 13 3.4. Catalog Examples . . . . . . . . . . . . . . . . . . . . 14 3.4.1. Time-aligned Audio/Video Tracks with single quality . . . . . . . . . . . . . . . . . . . . . . . 14 3.4.2. Simulcast video tracks - 3 alternate qualities along with audio . . . . . . . . . . . . . . . . . . . . . 14 3.4.3. SVC video tracks with 2 spatial and 2 temporal qualities . . . . . . . . . . . . . . . . . . . . . . 15 3.4.4. Delta update adding a track . . . . . . . . . . . . . 17 3.4.5. Delta update removing a track . . . . . . . . . . . . 18 3.4.6. Delta update removing all tracks and terminating the broadcast . . . . . . . . . . . . . . . . . . . . . . 18 3.4.7. CMAF Tracks with multiple qualities of audio and video . . . . . . . . . . . . . . . . . . . . . . . . 18 3.4.8. Mixed format example - CMAF and LOC packaging in the same catalog . . . . . . . . . . . . . . . . . . . . 19 3.4.9. CMAF Tracks with inband init segments . . . . . . . . 20 3.4.10. Time-aligned Audio/Video Tracks with custom field values . . . . . . . . . . . . . . . . . . . . . . . 21 3.4.11. A catalog referencing catalogs for two different formats . . . . . . . . . . . . . . . . . . . . . . . 22 4. Security Considerations . . . . . . . . . . . . . . . . . . . 23 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23 5.1. MoQ Streaming Format Type Registry . . . . . . . . . . . 23 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 23 Normative References . . . . . . . . . . . . . . . . . . . . . . 23 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 Nandakumar, et al. Expires 29 March 2024 [Page 3] Internet-Draft Common Catalog Format for moq-transport September 2023 1. Introduction MOQT [MoQTransport] defines a transport protocol that utilizes the QUIC network protocol [QUIC] and WebTransport[WebTrans] to move objects between publishers, subscribers and intermediaries. Tracks are identified using a tuple of the Track Namespace and the Track Name. A MOQT Catalog is a specialized track which captures details of all the tracks output by a publisher, including the identities, media profiles, initialization data and inter-track relationships. The mapping of media characteristics of objects with the tracks, as well as relative prioritization of those objects, are captured in separate MoQ Streaming Format specifications. This specification defines a JSON encoded catalog. 2. Conventions and Definitions The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119]. 3. Catalog A Catalog is a MOQT Object that provides information about tracks from a given publisher. A Catalog is used by publishers for advertising their output and for subscribers in consuming that output. The payload of the Catalog object is opaque to Relays and can be end-to-end encrypted. The Catalog provides the names and namespaces of the tracks being produced, along with the relationship between tracks, properties of the tracks that consumers may use for selection and any relevant initialization data. A special case of the catalog exists which describes other catalogs instead of tracks. A catalog might describe tracks, or catalogs, but never both at the same time. 3.1. Catalog version Versions of this catalog specification are defined using monotonically increasing integers. There is no gaurantee that future catalog versions are backwards compatible and field definitions and interpretaiton may change between versions. A subscriber MUST NOT attempt to parse a catalog version which it does not understand. This document defines version 1. Nandakumar, et al. Expires 29 March 2024 [Page 4] Internet-Draft Common Catalog Format for moq-transport September 2023 3.2. Catalog Fields A catalog is a JSON [JSON] document, comprised of a series of mandatory and optional fields. At a minimum, a catalog MUST provide all mandatory fields and one of either a 'tracks' field or a 'catalogs' field. A producer MAY add additional fields to the ones described in this draft. Custom field names MUST NOT collide with field names described in this draft. To prevent custom field name collisions with future versions, custom field names SHOULD be prefixed using reverse domain name notation e.g "com.example-size". The order of field names within the JSON document is not important. Any track or catalog field declared at the root level is inherited by all tracks or catalogs. Any track or catalog field declared within a track or catalog object overwrites any inherited value. A parser MUST ignore fields it does not understand. Table 1 provides an overview of all fields defined by this document. +==============+======================+========+========+======+==========+ |Field |Name |Required|Location|JSON |Definition| | | | | |type | | +==============+======================+========+========+======+==========+ |Catalog |version |yes |R |String|Section | |version | | | | |3.1 | +--------------+----------------------+--------+--------+------+----------+ |Streaming |streamingFormat |yes |RC |String|Section | |format | | | | |3.2.1 | +--------------+----------------------+--------+--------+------+----------+ |Streaming |streamingFormatVersion|yes |RC |String|Section | |format version| | | | |3.2.2 | +--------------+----------------------+--------+--------+------+----------+ |Catalog |sequence |yes |R |Number|Section | |sequence | | | | |3.2.3 | |number | | | | | | +--------------+----------------------+--------+--------+------+----------+ |Tracks |tracks |opt |R |Array |Section | | | | | | |3.2.4 | +--------------+----------------------+--------+--------+------+----------+ |Catalogs |catalogs |opt |R |Array |Section | | | | | | |3.2.5 | +--------------+----------------------+--------+--------+------+----------+ |Parent |parentSequence |opt |R |Array |Section | |sequence | | | | |3.2.8 | |number | | | | | | +--------------+----------------------+--------+--------+------+----------+ |Track |namespace |yes |RTC |String|Section | |namespace | | | | |3.2.9 | Nandakumar, et al. Expires 29 March 2024 [Page 5] Internet-Draft Common Catalog Format for moq-transport September 2023 +--------------+----------------------+--------+--------+------+----------+ |Track name |name |yes |TC |String|Section | | | | | | |3.2.10 | +--------------+----------------------+--------+--------+------+----------+ |Packaging |packaging |yes |RT |String|Section | | | | | | |3.2.11 | +--------------+----------------------+--------+--------+------+----------+ |Track |operation |yes |RT |String|Section | |operation | | | | |3.2.12 | +--------------+----------------------+--------+--------+------+----------+ |Track label |label |opt |RT |String|Section | | | | | | |3.2.13 | +--------------+----------------------+--------+--------+------+----------+ |Render group |renderGroup |opt |RT |Number|Section | | | | | | |3.2.14 | +--------------+----------------------+--------+--------+------+----------+ |Alternate |altGroup |opt |RT |Number|Section | |group | | | | |3.2.15 | +--------------+----------------------+--------+--------+------+----------+ |Initialization|initData |opt |RT |String|Section | |data | | | | |3.2.16 | +--------------+----------------------+--------+--------+------+----------+ |Initialization|initTrack |opt |RT |String|Section | |track | | | | |3.2.17 | +--------------+----------------------+--------+--------+------+----------+ |Selection |selectionParams |opt |RT |Object|Section | |parameters | | | | |3.2.18 | +--------------+----------------------+--------+--------+------+----------+ |Dependencies |depends |opt |T |Array |Section | | | | | | |3.2.19 | +--------------+----------------------+--------+--------+------+----------+ |Temporal ID |temporalId |opt |T |Number|Section | | | | | | |3.2.20 | +--------------+----------------------+--------+--------+------+----------+ |Spatial ID |spatialId |opt |T |Number|Section | | | | | | |3.2.21 | +--------------+----------------------+--------+--------+------+----------+ |Codec |codec |opt |S |String|Section | | | | | | |3.2.22 | +--------------+----------------------+--------+--------+------+----------+ |Mime type |mimeType |opt |S |String|Section | | | | | | |3.2.23 | +--------------+----------------------+--------+--------+------+----------+ |Framerate |framerate |opt |S |Number|Section | | | | | | |3.2.24 | +--------------+----------------------+--------+--------+------+----------+ |Bitrate |bitrate |opt |S |Number|Section | | | | | | |3.2.25 | Nandakumar, et al. Expires 29 March 2024 [Page 6] Internet-Draft Common Catalog Format for moq-transport September 2023 +--------------+----------------------+--------+--------+------+----------+ |Width |width |opt |S |Number|Section | | | | | | |3.2.26 | +--------------+----------------------+--------+--------+------+----------+ |Height |height |opt |S |Number|Section | | | | | | |3.2.27 | +--------------+----------------------+--------+--------+------+----------+ |Audio sample |sampleRate |opt |S |Number|Section | |rate | | | | |3.2.28 | +--------------+----------------------+--------+--------+------+----------+ |Channel |channelConfig |opt |S |String|Section | |configuration | | | | |3.2.29 | +--------------+----------------------+--------+--------+------+----------+ |Display width |displayWidth |opt |S |Number|Section | | | | | | |3.2.30 | +--------------+----------------------+--------+--------+------+----------+ |Display height|displayHeight |opt |S |Number|Section | | | | | | |3.2.31 | +--------------+----------------------+--------+--------+------+----------+ |Language |lang |opt |S |String|Section | | | | | | |3.2.32 | +--------------+----------------------+--------+--------+------+----------+ Table 1 Required: 'yes' indicates a mandatory field, 'opt' indicates an optional field Location: * 'R' - the field is located in the Root of the JSON object. * 'RC' - the field may be located in either the Root or a Catalog object. * 'RTC' - the field may be located in either the Root, or a Track object or a Catalog object. * 'TC' - the field may be located in either a Track object or a Catalog object. * 'RT' - the field may be located in either the Root or a Track object. * 'T' - the field is located in a Track object. * 'S' - the field is located in the Selection Parameters object. Nandakumar, et al. Expires 29 March 2024 [Page 7] Internet-Draft Common Catalog Format for moq-transport September 2023 3.2.1. Streaming format A number indicating the streaming format type. Every MoQ Streaming Format normatively referencing this catalog format MUST register itself in the "MoQ Streaming Format Type" table. See Section 5 for additional details. 3.2.2. Streaming format version A string indicating the version of the streaming format to which this catalog applies. The structure of the version string is defined by the streaming format. 3.2.3. Catalog sequence number An integer indicating the sequence of this catalog object update. The first catalog object produced under a given name|namespace carries a sequence number of zero. Each successive update of that catalog, either as an independent or delta update, increments the sequence number by one. 3.2.4. Tracks An array of track objects Section 3.2.7. If the 'tracks' field is present then the 'catalog' field MUST NOT be present. 3.2.5. Catalogs An array of catalog objects Section 3.2.6. If the 'catalogs' field is present then the 'tracks' field MUST NOT be present. A catalog MUST NOT list itself in the catalog array. 3.2.6. Catalog object A catalog object is a collection of fields whose location is specified as 'RC', 'TC' or 'RTC' in Table 1. 3.2.7. Tracks object A track object is a collection of fields whose location is specified as 'RT', 'TC' or 'RTC' in Table 1. Nandakumar, et al. Expires 29 March 2024 [Page 8] Internet-Draft Common Catalog Format for moq-transport September 2023 3.2.8. Parent sequence number An optional integer specifying the catalog sequence number Section 3.2.3 number from which this catalog represents a delta update. See Section 3.3 for additional details. Absence of this parent sequence number indicates that this catalog is independent and completely describes the content available in the broadcast. 3.2.9. Track namespace The name space under which the track name is defined. See section 2.3 of [MoQTransport]. The track namespace is required to be specified for each track object. If the track namespace is declared in the root of the JSON document, then its value is inherited by all tracks and catalogs and it does not need to be re-declared within each track or catalog object. A namespace declared in a track object or catalog object overwrites any inherited name space. 3.2.10. Track name A string defining the name of the track. See section 2.3 of [MoQTransport]. Within the catalog, track names MUST be unique per namespace. 3.2.11. Packaging A string defining the type of payload encapsulation. Allowed values are strings as defined in Table 2. Table 2: Allowed packaging values +======+========+==============+ | Name | Value | Draft | +======+========+==============+ | CMAF | "cmaf" | See RFC XXXX | +------+--------+--------------+ | LOC | "loc" | See RFC XXXX | +------+--------+--------------+ Table 2 3.2.12. Track operations Each track description can specify an optional operation value that identifies the catalog producer's intent. Track operation is a enumeration of values as defined below. Nandakumar, et al. Expires 29 March 2024 [Page 9] Internet-Draft Common Catalog Format for moq-transport September 2023 * Add: Indicates the track is added to the catalog and the consumers of the catalog may subscribe to the track. * Delete: Indicates that media producer is no longer producing media on the associated track. Subscribers SHOULD terminate their subscriptions. A catalog update in which all previously added tracks are deleted SHOULD be interpreted by a subscriber to indicate that the publisher has terminated the broadcast. Table 3 defines the numerical values for the track operations. Table 3: Allowed track operations +========+========+===============+ | Name | Value | Default value | +========+========+===============+ | Add | add | yes | +--------+--------+---------------+ | Delete | delete | | +--------+--------+---------------+ Table 3 The default track operation is 'add'. This value does not need to be declared in the track object. 3.2.13. Track label A string defining a human-readable label for the track. Examples might be "Overhead camera view" or "Deutscher Kommentar". Note that the [JSON] spec requires UTF-8 support by decoders. 3.2.14. Render group An integer specifying a group of tracks which are designed to be rendered together. Tracks with the same group number SHOULD be rendered simultaneously, are usually time-aligned and are designed to accompany one another. A common example would be tying together audio and video tracks. Nandakumar, et al. Expires 29 March 2024 [Page 10] Internet-Draft Common Catalog Format for moq-transport September 2023 3.2.15. Alternate group An integer specifying a group of tracks which are alternate versions of one-another. Alternate tracks represent the same media content, but differ in their selection properties. Alternate tracks SHOULD have matching framerate Section 3.2.24 and media time sequences. A subscriber typically subscribes to one track from a set of tracks specifying the same alternate group number. A common example would be a set video tracks of the same content offered in alternate bitrates. 3.2.16. Initialization data A string holding Base64 [BASE64] encoded initialization data for the track. 3.2.17. Initialization track A string specifying the track name of another track which holds initialization data for the current track. Initialization tracks MUST NOT be added to the tracks array Section 3.2.4. They are referenced only via the initialization track field of the track which they initialize. 3.2.18. Selection parameters An object holding a series of name/value pairs which a subscriber can use to select tracks for subscription. If present, the selection parameters object MUST NOT be empty. Any selection parameters declared at the root level are inherited by all tracks. A selection parameters object may exist at both the root and track level. Any declaration of a selection parameter at the track level overrides the inherited root value. 3.2.19. Dependencies Certain tracks may depend on other tracks for decoding. Dependencies holds an array of track names Section 3.2.10 on which the current track is dependent. Since only the track name is signaled, the namespace of the dependencies is assumed to match that of the track declaring the dependencies. 3.2.20. Temporal ID A number identifying the temporal layer/sub-layer encoding of the track, starting with 0 for the base layer, and increasing with higher temporal fidelity. Nandakumar, et al. Expires 29 March 2024 [Page 11] Internet-Draft Common Catalog Format for moq-transport September 2023 3.2.21. Spatial ID A number identifying the spatial layer encoding of the track, starting with 0 for the base layer, and increasing with higher fidelity. 3.2.22. Codec A string defining the codec used to encode the track. For LOC packaged content, the string codec registrations are defined in Sect 3 and Section 4 of [WEBCODECS-CODEC-REGISTRY]. For CMAF packaged content, the string codec registrations are defined in XXX. 3.2.23. Mimetype A string defining the mime type [MIME] of the track. This parameter is typically supplied with CMAF packaged content. 3.2.24. Framerate A number defining the framerate of the track, expressed as frames per second. 3.2.25. Bitrate A number defining the bitrate of track, expressed in bits second. 3.2.26. Width A number expressing the encoded width of the track content in pixels. 3.2.27. Height A number expressing the encoded height of the video frames in pixels. 3.2.28. Audio sample rate The number of audio frame samples per second. This property SHOULD only accompany audio codecs. 3.2.29. Channel configuration A string specifying the audio channel configuration. This property SHOULD only accompany audio codecs. A string is used in order to provide the flexibility to describe complex channel configurations for multi-channel and Next Generation Audio schemas. Nandakumar, et al. Expires 29 March 2024 [Page 12] Internet-Draft Common Catalog Format for moq-transport September 2023 3.2.30. Display width A number expressing the intended display width of the track content in pixels. 3.2.31. Display height A number expressing the intended display height of the track content in pixels. 3.2.32. Language A string defining the dominant language of the track. The string MUST be one of the standard Tags for Identifying Languages as defined by [LANG]. 3.3. Catalog Delta Updates A catalog might contain incremental changes. This is a useful property if many tracks may be initially declared but then there are small changes to a subset of tracks. The producer can issue a delta update to describe these small changes. Changes are described incrementally, meaning that a delta-update can itself depend on a previous delta update. The following rules MUST be followed in processing delta updates: * If a catalog is received without the parent sequence number field Section 3.2.8 defined, then it is an independent catalog and no delta update processing is required. * If a catalog is received with the parent sequence number field present, then the contents of the catalog MUST be parsed as if the catalog contents had been added to the state represented by the catalog whose sequence number matches the parent sequence number. Newer field definitions overwrite older field definitions. * Track namespaces may not be changed across delta updates. * Contents of the track selection properties object may not be varied across updates. To adjust a track selection property, the track must first be removed and then added with the new selection properties and a different name. * Track names may not be changed across delta updates. To change a track name, remove the track and then add a new track with the new name and matching properties. Nandakumar, et al. Expires 29 March 2024 [Page 13] Internet-Draft Common Catalog Format for moq-transport September 2023 3.4. Catalog Examples The following section provides non-normative JSON examples of various catalogs compliant with this draft. 3.4.1. Time-aligned Audio/Video Tracks with single quality This example shows catalog for a media producer capable of sending LOC packaged, time-aligned audio and video tracks. { "version": 1, "sequence": 0, "streamingFormat": 1, "streamingFormatVersion": "0.2", "namespace": "conference.example.com/conference123/alice", "packaging": "loc", "renderGroup": 1, "tracks": [ { "name": "video", "selectionParams":{"c":"av01.0.08M.10.0.110.09","wd":1920,"ht":1080,"fr":30,"br":1500000} }, { "name": "audio", "selectionParams":{"c":"opus","sr":48000,"cc":"2","br":32000} } ] } 3.4.2. Simulcast video tracks - 3 alternate qualities along with audio This example shows catalog for a media producer capable of sending 3 time-aligned video tracks for high definition, low definition and medium definition video qualities, along with an audio track. Nandakumar, et al. Expires 29 March 2024 [Page 14] Internet-Draft Common Catalog Format for moq-transport September 2023 { "version": 1, "sequence": 0, "streamingFormat": 1, "streamingFormatVersion": "0.2", "namespace": "conference.example.com/conference123/alice", "renderGroup": 1, "packaging": "loc", "tracks":[ { "name": "hd", "selectionParams": {"c":"av01","wd":1920,"ht":1080,"br":5000000,"fr":30}, "altGroup":1 }, { "name": "md", "selectionParams": {"c":"av01","wd":720,"ht":640,"br":3000000,"fr":30}, "altGroup":1 }, { "name": "sd", "selectionParams": {"c":"av01","wd":192,"ht":144,"br":500000,"fr":30}, "altGroup":1 }, { "name": "audio", "selectionParams":{"c":"opus","sr":48000,"cc":"2","br":32000}, } ] } 3.4.3. SVC video tracks with 2 spatial and 2 temporal qualities This example shows catalog for a media producer capable of sending scalable video codec with 2 spatial and 2 temporal layers with a dependency relation as shown below: Nandakumar, et al. Expires 29 March 2024 [Page 15] Internet-Draft Common Catalog Format for moq-transport September 2023 +----------+ +----------->| S1T1 | | | 1080p30 | | +----------+ | ^ | | +----------+ | | S1TO | | | 1080p15 | | +----------+ +-----+----+ ^ | SOT1 | | | 480p30 | | +----------+ | ^ +----------+ | | SOTO | | | 480p15 |---------+ +----------+ The corresponding catalog uses "depends" attribute to express the track relationships. Nandakumar, et al. Expires 29 March 2024 [Page 16] Internet-Draft Common Catalog Format for moq-transport September 2023 { "version": 1, "sequence": 0, "streamingFormat": 1, "streamingFormatVersion": "0.2", "namespace": "conference.example.com/conference123/alice", "renderGroup": 1, "packaging": "loc", "tracks":[ { "name": "480p15", "selectionParams": {"c":"av01.0.01M.10.0.110.09","wd":640,"ht":480,"br":3000000,"fr":15}, }, { "name": "480p30", "selectionParams": {"c":"av01.0.04M.10.0.110.09","wd":640,"ht":480,"br":3000000,"fr":30}, "depends": ["480p15"], }, { "name": "1080p15", "selectionParams": {"c":"av01.0.05M.10.0.110.09","wd":1920,"ht":1080,"br":3000000,"fr":15}, "depends":["480p15"] }, { "name": "1080p30", "selectionParams": {"c":"av01.0.08M.10.0.110.09","wd":1920,"ht":1080,"br":5000000,"fr":30}, "depends": ["480p30", "1080p15"] }, { "name": "audio", "selectionParams":{"c":"opus","sr":48000,"cc":"2","br":32000}, } ] } 3.4.4. Delta update adding a track This example shows catalog for the media producer adding a slide track to an established video conference Nandakumar, et al. Expires 29 March 2024 [Page 17] Internet-Draft Common Catalog Format for moq-transport September 2023 { "sequence": 1, "parentSequence":0, "tracks": [ { "name": "slides", "selectionParams":{"c":"av01.0.08M.10.0.110.09","wd":1920,"ht":1080,"fr":15,"br":750000}, "renderGroup":1 } ] } 3.4.5. Delta update removing a track This example shows delat catalog update for a media producer removing a slide track from an established video conference { "sequence": 2, "parentSequence":1, "tracks": [ { "name": "slides", "operation": "delete" } ] } 3.4.6. Delta update removing all tracks and terminating the broadcast This example shows a delta catalog update for a media producer removing all tracks and terminating the broadcast. { "sequence": 3, "parentSequence":2, "operation": "delete", "tracks": [{"name": "audio"},{"name": "video"}] } 3.4.7. CMAF Tracks with multiple qualities of audio and video This example shows catalog for a sports broadcast sending time- aligned audio and video tracks using CMAF packaging. Init segments are delivered as separate tracks. Nandakumar, et al. Expires 29 March 2024 [Page 18] Internet-Draft Common Catalog Format for moq-transport September 2023 { "version": 1, "sequence": 0, "streamingFormat": 1, "streamingFormatVersion": "0.2", "namespace": "sports.example.com/games/08-08-23/12345", "packaging": "cmaf", "renderGroup":1, "tracks": [ { "name": "video_4k", "selectionParams":{"c":"avc1.640033","mt":"video/mp4","wd":3840,"ht":2160,"fr":30,"br":14931538}, "initTrack":"init_video_4k", "altGroup": 1 }, { "altGroup": "video_1080", "selectionParams":{"c":"avc1.640028","mt":"video/mp4","wd":1920,"ht":1080,"fr":30,"br":9914554}, "initTrack":"init_video_1080", "altGroup": 1 }, { "altGroup": "video_720", "selectionParams":{"c":"avc1.64001f","mt":"video/mp4","wd":1280,"ht":720,"fr":30,"br":4952892}, "initTrack":"init_video_720", "altGroup": 1 }, { "altGroup": "audio_aac", "selectionParams":{"c":"mp4a.40.5","mt":"audio/mp4","sr":48000,"cc":"2","br":67071}, "initTrack":"init_audio_aac", "altGroup": 2 }, { "name": "audio_ec3", "selectionParms":{"c":"ec-3","mt":"audio/mp4","sr":48000,"cc":"F801","br":256000}, "initTrack":"init_audio_ec3", "altGroup": 2 } ] } 3.4.8. Mixed format example - CMAF and LOC packaging in the same catalog This example shows catalog describing a broadcast with CMAF packaged video and LOC packaged audio. Nandakumar, et al. Expires 29 March 2024 [Page 19] Internet-Draft Common Catalog Format for moq-transport September 2023 { "version": 1, "sequence": 0, "streamingFormat": 1, "streamingFormatVersion": "0.2", "namespace": "output.example.com/event/12345", "renderGroup":1 "tracks": [ { "name": "video0", "selectionParams":{"c":"avc1.64001f","mt":"video/mp4","wd":1280,"ht":720,"fr":30,"br":4952892}, "initTrack":"init_video_720", "packaging":"cmaf", }, { "name": "audio", "selectionParams":{"c":"opus","sr":48000,"cc":"2","br":32000}, "packaging": "loc", } ] } 3.4.9. CMAF Tracks with inband init segments This example shows catalog for a sports broadcast sending time- aligned audio and video tracks using CMAF packaging. Init segments are delivered as inband data. Nandakumar, et al. Expires 29 March 2024 [Page 20] Internet-Draft Common Catalog Format for moq-transport September 2023 { "version": 1, "sequence": 0, "streamingFormat": 1, "streamingFormatVersion": "0.2", "namespace": "sports.example.com/games/08-08-23/12345", "packaging": "cmaf", "renderGroup":1, "tracks": [ { "name": "video_1080", "selectionParams":{"c":"avc1.640028","mt":"video/mp4","wd":1920,"ht":1080,"fr":30,"br":9914554}, "initData":"AAAAGGZ0eXBpc282AAAAAWlzbzZkYXNoAAAARWZyZWVJc29NZWRpYSBGaWxlIFByb2R1Y2VkIHdpdGggR1BBQyAxLjAuMS1yZXYwLWdkODUzOGU4YS1tYXN0ZXIAAAADLW1vb3YAAABsbXZoZAAAAADfdnly33Z5cgABX5AAAAAAAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAA4bXZleAAAABBtZWhkAAAAAAPwOXgAAAAgdHJleAAAAAAAAAABAAAAAQAAA+gAAAAAAAEAAAAAAkd0cmFrAAAAXHRraGQAAAAB33Y1w992eXIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAABQAAAAIWAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAAAAAAD6AABAAAAAAG/bWRpYQAAACBtZGhkAAAAAN92NcPfdnlyAABdwAAAAAAVxwAAAAAAQGhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAAAfTWFpbmNvbmNlcHQgVmlkZW8gTWVkaWEgSGFuZGxlcgAAAVdtaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAADkc3RibAAAAJhzdHNkAAAAAAAAAAEAAACIYXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAUAAhYASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAADJhdmNDAU1AH//hABpnTUAfllKAoAi/NNQYGBkAAAMAAQAAAwAwhAEABWjpCTUgAAAAEHN0dHMAAAAAAAAAAAAAABBzdHNjAAAAAAAAAAAAAAAUc3RzegAAAAAAAAAAAAAAAAAAABBzdGNvAAAAAAAAAAAAAAAzaGRscgAAAAAAAAAAYWxpcwAAAAAAAAAAAAAAAEFsaWFzIERhdGEgSGFuZGxlcgAAAAA6dWR0YQAAABepVElNAAsAADAwOjAwOjAwOjAwAAAADqlUU0MAAgAAMjQAAAANqVRTWgABAAAx" }, { "name": "audio_aac", "selectionParams":{"c":"mp4a.40.5","mt":"audio/mp4","sr":48000,"cc":"2","br":67071}, "initData":"AAAAGGZ0eXBpc282AAAAAWlzbzZkYXNoAAAARWZyZWVJc29NZWRpYSBGaWxlIFByb2R1Y2VkIHdpdGggR1BBQyAxLjAuMS1yZXYwLWdkODUzOGU4YS1tYXN0ZXIAAAACzG1vb3YAAABsbXZoZAAAAADfdnly33Z5cgABX5AAAAAAAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAA4bXZleAAAABBtZWhkAAAAAAPwSAAAAAAgdHJleAAAAAAAAAACAAAAAQAABAAAAAAAAgAAAAAAAeZ0cmFrAAAAXHRraGQAAAAB33Y1w992eXIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAGCbWRpYQAAACBtZGhkAAAAAN92NcPfdnlyAAC7gAAAAAAVxwAAAAAARGhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAAAjTWFpbmNvbmNlcHQgTVA0IFNvdW5kIE1lZGlhIEhhbmRsZXIAAAEWbWluZgAAABBzbWhkAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAACnc3RibAAAAFtzdHNkAAAAAAAAAAEAAABLbXA0YQAAAAAAAAABAAAAAAAAAAAAAgAQAAAAALuAAAAAAAAnZXNkcwAAAAADGQAAAAQRQBUABgAACBXTAATXtwUCEZAGAQIAAAAQc3R0cwAAAAAAAAAAAAAAEHN0c2MAAAAAAAAAAAAAABRzdHN6AAAAAAAAAAAAAAAAAAAAEHN0Y28AAAAAAAAAAAAAADNoZGxyAAAAAAAAAABhbGlzAAAAAAAAAAAAAAAAQWxpYXMgRGF0YSBIYW5kbGVyAAAAADp1ZHRhAAAAF6lUSU0ACwAAMDA6MDA6MDA6MDAAAAAOqVRTQwACAAAyNAAAAA2pVFNaAAEAADE=" } ] } 3.4.10. Time-aligned Audio/Video Tracks with custom field values This example shows catalog for a media producer capable of sending LOC packaged, time-aligned audio and video tracks along with custom fields in each track description. Nandakumar, et al. Expires 29 March 2024 [Page 21] Internet-Draft Common Catalog Format for moq-transport September 2023 { "version": 1, "sequence": 0, "streamingFormat": 1, "streamingFormatVersion": "0.2", "namespace": "conference.example.com/conference123/alice", "packaging": "loc", "renderGroup": 1, "tracks": [ { "name": "video", "selectionParams":{"c":"av01.0.08M.10.0.110.09","wd":1920,"ht":1080,"fr":30,"br":1500000}, "com.example-billing-code": 3201, "com.example-tier": "premium", "com.example-debug": "h349835bfkjfg82394d945034jsdfn349fns" }, { "name": "audio", "selectionParams":{"c":"opus","sr":48000,"cc":"2","br":32000} } ] } 3.4.11. A catalog referencing catalogs for two different formats This example shows the catalog for a media producer that is outputting two streaming formats simultaneously under different namespaces. Note that each track name referenced points at another catalog object. { "version": 1, "sequence": 0, "catalogs": [ { "name": "catalog-for-format-one", "namespace": "sports.example.com/games/08-08-23/live", "streamingFormat":1, "streamingFormatVersion": "0.2" }, { "name": "catalog-for-format-five", "namespace": "chat.example.com/games/08-08-23/chat", "streamingFormat":5, "streamingFormatVersion": "1.6.2" } ] } Nandakumar, et al. Expires 29 March 2024 [Page 22] Internet-Draft Common Catalog Format for moq-transport September 2023 4. Security Considerations The catalog contents MAY be encrypted. The mechanism of encryption and the signalling of the keys are left to the Streaming Format referencing this catalog format. 5. IANA Considerations This section details how the MoQ Streaming Format Type can be registered. The type registry can be updated by incrementally expanding the type space, i.e., by allocating and reserving new type identifiers. As per [RFC8126], this section details the creation of the "MoQ Streaming Format Type" registry. 5.1. MoQ Streaming Format Type Registry This document creates a new registry, "MoQ Streaming Format Type". The registry policy is "RFC Required". The Type value is 2 octets. The range is 0x0000-0xFFFF.The initial entry in the registry is: +--------+-------------+----------------------------------+ | Type | Name | RFC | +--------+-------------+----------------------------------+ | 0x0000 | Reserved | | +--------+-------------+----------------------------------+ Every MoQ streaming format draft normatively referencing this catalog format MUST register itself a unique type identifier. Acknowledgments * Suhas Nandakumar & Mo Zanaty - this draft (https://github.com/suhasHere/moq-drafts/tree/master/moq-catalog). * The IETF MoQ mailing lists and discussion groups. Normative References [BASE64] Josefsson, S., "The Base16, Base32, and Base64 Data Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, . [CMAF] "Information technology -- Multimedia application format (MPEG-A) -- Part 19: Common media application format (CMAF) for segmented media", March 2020. Nandakumar, et al. Expires 29 March 2024 [Page 23] Internet-Draft Common Catalog Format for moq-transport September 2023 [Framemarking] Zanaty, M., Berger, E., and S. Nandakumar, "Video Frame Marking RTP Header Extension", Work in Progress, Internet- Draft, draft-ietf-avtext-framemarking-15, 26 July 2023, . [JSON] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data Interchange Format", STD 90, RFC 8259, DOI 10.17487/RFC8259, December 2017, . [LANG] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646, September 2009, . [MIME] Freed, N., Klensin, J., and T. Hansen, "Media Type Specifications and Registration Procedures", BCP 13, RFC 6838, DOI 10.17487/RFC6838, January 2013, . [MoQTransport] Curley, L., Pugin, K., Nandakumar, S., and V. Vasiliev, "Media over QUIC Transport", Work in Progress, Internet- Draft, draft-ietf-moq-transport-00, 5 July 2023, . [WebCodecs] "WebCodecs", July 2023, . [WEBCODECS-CODEC-REGISTRY] "WebCodecs Codec Registry", July 2023, . Authors' Addresses Suhas Nandakumar Cisco Email: snandaku@cisco.com Will Law Akamai Email: wilaw@akamai.com Nandakumar, et al. Expires 29 March 2024 [Page 24] Internet-Draft Common Catalog Format for moq-transport September 2023 Mo Zanaty Cisco Email: mzanaty@cisco.com Nandakumar, et al. Expires 29 March 2024 [Page 25]