Internet DRAFT - draft-wilaw-moq-catalogformat
draft-wilaw-moq-catalogformat
Media Over QUIC S. Nandakumar
Internet-Draft Cisco
Intended status: Informational W. Law
Expires: 2 June 2024 Akamai
M. Zanaty
Cisco
30 November 2023
Common Catalog Format for moq-transport
draft-wilaw-moq-catalogformat-02
Abstract
This specification defines a 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 2 June 2024 [Page 1]
Internet-Draft Common Catalog Format for moq-transport November 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 2 June 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 . . . . . . . . . . . . . . . . . . 7
3.2.2. Streaming format version . . . . . . . . . . . . . . 8
3.2.3. Tracks . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.4. Catalogs . . . . . . . . . . . . . . . . . . . . . . 8
3.2.5. Catalog object . . . . . . . . . . . . . . . . . . . 8
3.2.6. Tracks object . . . . . . . . . . . . . . . . . . . . 8
3.2.7. Track namespace . . . . . . . . . . . . . . . . . . . 8
3.2.8. Track name . . . . . . . . . . . . . . . . . . . . . 8
3.2.9. Packaging . . . . . . . . . . . . . . . . . . . . . . 8
3.2.10. Track operations . . . . . . . . . . . . . . . . . . 9
3.2.11. Track label . . . . . . . . . . . . . . . . . . . . . 10
3.2.12. Render group . . . . . . . . . . . . . . . . . . . . 10
3.2.13. Alternate group . . . . . . . . . . . . . . . . . . . 10
3.2.14. Initialization data . . . . . . . . . . . . . . . . . 10
3.2.15. Initialization track . . . . . . . . . . . . . . . . 10
Nandakumar, et al. Expires 2 June 2024 [Page 2]
Internet-Draft Common Catalog Format for moq-transport November 2023
3.2.16. Selection parameters . . . . . . . . . . . . . . . . 10
3.2.17. Dependencies . . . . . . . . . . . . . . . . . . . . 11
3.2.18. Temporal ID . . . . . . . . . . . . . . . . . . . . . 11
3.2.19. Spatial ID . . . . . . . . . . . . . . . . . . . . . 11
3.2.20. Codec . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.21. Mimetype . . . . . . . . . . . . . . . . . . . . . . 11
3.2.22. Framerate . . . . . . . . . . . . . . . . . . . . . . 11
3.2.23. Bitrate . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.24. Width . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.25. Height . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.26. Audio sample rate . . . . . . . . . . . . . . . . . . 12
3.2.27. Channel configuration . . . . . . . . . . . . . . . . 12
3.2.28. Display width . . . . . . . . . . . . . . . . . . . . 12
3.2.29. Display height . . . . . . . . . . . . . . . . . . . 12
3.2.30. Language . . . . . . . . . . . . . . . . . . . . . . 12
3.3. Catalog Patch . . . . . . . . . . . . . . . . . . . . . . 12
3.4. Catalog Examples . . . . . . . . . . . . . . . . . . . . 13
3.4.1. Time-aligned Audio/Video Tracks with single
quality . . . . . . . . . . . . . . . . . . . . . . . 13
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. Patch update adding a track . . . . . . . . . . . . . 17
3.4.5. Patch update removing a track . . . . . . . . . . . . 18
3.4.6. Patch 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 2 June 2024 [Page 3]
Internet-Draft Common Catalog Format for moq-transport November 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 guarantee that future
catalog versions are backwards compatible and field definitions and
interpretation 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 2 June 2024 [Page 4]
Internet-Draft Common Catalog Format for moq-transport November 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 |
+--------------+----------------------+--------+--------+------+----------+
|Tracks |tracks |opt |R |Array |Section |
| | | | | |3.2.3 |
+--------------+----------------------+--------+--------+------+----------+
|Catalogs |catalogs |opt |R |Array |Section |
| | | | | |3.2.4 |
+--------------+----------------------+--------+--------+------+----------+
|Track |namespace |opt |RTC |String|Section |
|namespace | | | | |3.2.7 |
+--------------+----------------------+--------+--------+------+----------+
|Track name |name |yes |TC |String|Section |
| | | | | |3.2.8 |
+--------------+----------------------+--------+--------+------+----------+
|Packaging |packaging |yes |RT |String|Section |
| | | | | |3.2.9 |
+--------------+----------------------+--------+--------+------+----------+
|Track |operation |yes |RT |String|Section |
Nandakumar, et al. Expires 2 June 2024 [Page 5]
Internet-Draft Common Catalog Format for moq-transport November 2023
|operation | | | | |3.2.10 |
+--------------+----------------------+--------+--------+------+----------+
|Track label |label |opt |RT |String|Section |
| | | | | |3.2.11 |
+--------------+----------------------+--------+--------+------+----------+
|Render group |renderGroup |opt |RT |Number|Section |
| | | | | |3.2.12 |
+--------------+----------------------+--------+--------+------+----------+
|Alternate |altGroup |opt |RT |Number|Section |
|group | | | | |3.2.13 |
+--------------+----------------------+--------+--------+------+----------+
|Initialization|initData |opt |RT |String|Section |
|data | | | | |3.2.14 |
+--------------+----------------------+--------+--------+------+----------+
|Initialization|initTrack |opt |RT |String|Section |
|track | | | | |3.2.15 |
+--------------+----------------------+--------+--------+------+----------+
|Selection |selectionParams |opt |RT |Object|Section |
|parameters | | | | |3.2.16 |
+--------------+----------------------+--------+--------+------+----------+
|Dependencies |depends |opt |T |Array |Section |
| | | | | |3.2.17 |
+--------------+----------------------+--------+--------+------+----------+
|Temporal ID |temporalId |opt |T |Number|Section |
| | | | | |3.2.18 |
+--------------+----------------------+--------+--------+------+----------+
|Spatial ID |spatialId |opt |T |Number|Section |
| | | | | |3.2.19 |
+--------------+----------------------+--------+--------+------+----------+
|Codec |codec |opt |S |String|Section |
| | | | | |3.2.20 |
+--------------+----------------------+--------+--------+------+----------+
|Mime type |mimeType |opt |S |String|Section |
| | | | | |3.2.21 |
+--------------+----------------------+--------+--------+------+----------+
|Framerate |framerate |opt |S |Number|Section |
| | | | | |3.2.22 |
+--------------+----------------------+--------+--------+------+----------+
|Bitrate |bitrate |opt |S |Number|Section |
| | | | | |3.2.23 |
+--------------+----------------------+--------+--------+------+----------+
|Width |width |opt |S |Number|Section |
| | | | | |3.2.24 |
+--------------+----------------------+--------+--------+------+----------+
|Height |height |opt |S |Number|Section |
| | | | | |3.2.25 |
+--------------+----------------------+--------+--------+------+----------+
|Audio sample |samplerate |opt |S |Number|Section |
Nandakumar, et al. Expires 2 June 2024 [Page 6]
Internet-Draft Common Catalog Format for moq-transport November 2023
|rate | | | | |3.2.26 |
+--------------+----------------------+--------+--------+------+----------+
|Channel |channelConfig |opt |S |String|Section |
|configuration | | | | |3.2.27 |
+--------------+----------------------+--------+--------+------+----------+
|Display width |displayWidth |opt |S |Number|Section |
| | | | | |3.2.28 |
+--------------+----------------------+--------+--------+------+----------+
|Display height|displayHeight |opt |S |Number|Section |
| | | | | |3.2.29 |
+--------------+----------------------+--------+--------+------+----------+
|Language |lang |opt |S |String|Section |
| | | | | |3.2.30 |
+--------------+----------------------+--------+--------+------+----------+
Table 1
Required: 'yes' indicates a mandatory field in non-patch catalogs,
'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.
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.
Nandakumar, et al. Expires 2 June 2024 [Page 7]
Internet-Draft Common Catalog Format for moq-transport November 2023
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. Tracks
An array of track objects Section 3.2.6. If the 'tracks' field is
present then the 'catalog' field MUST NOT be present.
3.2.4. Catalogs
An array of catalog objects Section 3.2.5. 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.5. Catalog object
A catalog object is a collection of fields whose location is
specified as 'RC', 'TC' or 'RTC' in Table 1.
3.2.6. Tracks object
A track object is a collection of fields whose location is specified
as 'RT', 'TC' or 'RTC' in Table 1.
3.2.7. Track namespace
The name space under which the track name is defined. See section
2.3 of [MoQTransport]. 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. The track namespace is
optional. If it is not declared at the root or track level, then
each track MUST inherit the namespace of the catalog track.
3.2.8. 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.9. Packaging
A string defining the type of payload encapsulation. Allowed values
are strings as defined in Table 2.
Nandakumar, et al. Expires 2 June 2024 [Page 8]
Internet-Draft Common Catalog Format for moq-transport November 2023
Table 2: Allowed packaging values
+======+========+==============+
| Name | Value | Draft |
+======+========+==============+
| CMAF | "cmaf" | See RFC XXXX |
+------+--------+--------------+
| LOC | "loc" | See RFC XXXX |
+------+--------+--------------+
Table 2
3.2.10. Track operations
Each track description can specify an optional operation value that
identifies the catalog producer's intent. Track operation is an
enumeration of values as defined below.
* 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.
Nandakumar, et al. Expires 2 June 2024 [Page 9]
Internet-Draft Common Catalog Format for moq-transport November 2023
3.2.11. 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.12. 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.
3.2.13. 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.22 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.14. Initialization data
A string holding Base64 [BASE64] encoded initialization data for the
track.
3.2.15. 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.3. They are
referenced only via the initialization track field of the track which
they initialize.
3.2.16. 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.
Nandakumar, et al. Expires 2 June 2024 [Page 10]
Internet-Draft Common Catalog Format for moq-transport November 2023
3.2.17. Dependencies
Certain tracks may depend on other tracks for decoding. Dependencies
holds an array of track names Section 3.2.8 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.18. 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.
3.2.19. 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.20. 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.21. Mimetype
A string defining the mime type [MIME] of the track. This parameter
is typically supplied with CMAF packaged content.
3.2.22. Framerate
A number defining the framerate of the track, expressed as frames per
second.
3.2.23. Bitrate
A number defining the bitrate of track, expressed in bits second.
3.2.24. Width
A number expressing the encoded width of the track content in pixels.
Nandakumar, et al. Expires 2 June 2024 [Page 11]
Internet-Draft Common Catalog Format for moq-transport November 2023
3.2.25. Height
A number expressing the encoded height of the video frames in pixels.
3.2.26. Audio sample rate
The number of audio frame samples per second. This property SHOULD
only accompany audio codecs.
3.2.27. 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.
3.2.28. Display width
A number expressing the intended display width of the track content
in pixels.
3.2.29. Display height
A number expressing the intended display height of the track content
in pixels.
3.2.30. 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 Patch
A catalog update 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 patch
to describe these small changes. Changes are described
incrementally, meaning that a patch can itself modify a prior patch.
Patching leverages JSON PATCH [JSON-PATCH] to modify the catalog.
JSON Patch is a format for expressing a sequence of operations to
apply to a target JSON document.
The following rules MUST be followed in processing patches:
* The target JSON to be modified is the JSON document described by
the preceding [MoQTransport] Object in the Catalog track, post any
patching that may have been applied to that Object.
Nandakumar, et al. Expires 2 June 2024 [Page 12]
Internet-Draft Common Catalog Format for moq-transport November 2023
* A Catalog Patch is identified by having a single array at the root
level, holding a series of JSON objects, each object representing
a single operation to be applied to the target JSON document.
* Operations are applied sequentially in the order they appear in
the array. Each operation in the sequence is applied to the
target document; the resulting document becomes the target of the
next operation. Evaluation continues until all operations are
successfully applied or until an error condition is encountered.
* Track namespaces and track names may not be changed across patch
updates. To change either namespace or name, remove the track and
then add a new track with matching properties and the new
namespace and name.
* 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.
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.
Nandakumar, et al. Expires 2 June 2024 [Page 13]
Internet-Draft Common Catalog Format for moq-transport November 2023
{
"version": 1,
"sequence": 0,
"streamingFormat": 1,
"streamingFormatVersion": "0.2",
"namespace": "conference.example.com/conference123/alice",
"packaging": "loc",
"renderGroup": 1,
"tracks": [
{
"name": "video",
"selectionParams":{"codec":"av01.0.08M.10.0.110.09","width":1920,"height":1080,"framerate":30,"bitrate":1500000}
},
{
"name": "audio",
"selectionParams":{"codec":"opus","samplerate":48000,"channelConfig":"2","bitrate":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. In
this example the namesapce is absent, which infers that each track
must inherit the namespace of the catalog.
Nandakumar, et al. Expires 2 June 2024 [Page 14]
Internet-Draft Common Catalog Format for moq-transport November 2023
{
"version": 1,
"sequence": 0,
"streamingFormat": 1,
"streamingFormatVersion": "0.2",
"renderGroup": 1,
"packaging": "loc",
"tracks":[
{
"name": "hd",
"selectionParams": {"codec":"av01","width":1920,"height":1080,"bitrate":5000000,"framerate":30},
"altGroup":1
},
{
"name": "md",
"selectionParams": {"codec":"av01","width":720,"height":640,"bitrate":3000000,"framerate":30},
"altGroup":1
},
{
"name": "sd",
"selectionParams": {"codec":"av01","width":192,"height":144,"bitrate":500000,"framerate":30},
"altGroup":1
},
{
"name": "audio",
"selectionParams":{"codec":"opus","samplerate":48000,"channelConfig":"2","bitrate":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 2 June 2024 [Page 15]
Internet-Draft Common Catalog Format for moq-transport November 2023
+----------+
+----------->| S1T1 |
| | 1080p30 |
| +----------+
| ^
| |
+----------+ |
| S1TO | |
| 1080p15 | |
+----------+ +-----+----+
^ | SOT1 |
| | 480p30 |
| +----------+
| ^
+----------+ |
| SOTO | |
| 480p15 |---------+
+----------+
The corresponding catalog uses "depends" attribute to express the
track relationships.
Nandakumar, et al. Expires 2 June 2024 [Page 16]
Internet-Draft Common Catalog Format for moq-transport November 2023
{
"version": 1,
"sequence": 0,
"streamingFormat": 1,
"streamingFormatVersion": "0.2",
"namespace": "conference.example.com/conference123/alice",
"renderGroup": 1,
"packaging": "loc",
"tracks":[
{
"name": "480p15",
"selectionParams": {"codec":"av01.0.01M.10.0.110.09","width":640,"height":480,"bitrate":3000000,"framerate":15},
},
{
"name": "480p30",
"selectionParams": {"codec":"av01.0.04M.10.0.110.09","width":640,"height":480,"bitrate":3000000,"framerate":30},
"depends": ["480p15"],
},
{
"name": "1080p15",
"selectionParams": {"codec":"av01.0.05M.10.0.110.09","width":1920,"height":1080,"bitrate":3000000,"framerate":15},
"depends":["480p15"]
},
{
"name": "1080p30",
"selectionParams": {"codec":"av01.0.08M.10.0.110.09","width":1920,"height":1080,"bitrate":5000000,"framerate":30},
"depends": ["480p30", "1080p15"]
},
{
"name": "audio",
"selectionParams":{"codec":"opus","samplerate":48000,"channelConfig":"2","bitrate":32000},
}
]
}
3.4.4. Patch 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 2 June 2024 [Page 17]
Internet-Draft Common Catalog Format for moq-transport November 2023
[
{
"op": "add",
"path": "/tracks/-",
"value": {
"name": "slides",
"selectionParams": {
"codec": "av01.0.08M.10.0.110.09",
"width": 1920,
"height": 1080,
"framerate": 15,
"Bitrate": 750000
},
"renderGroup": 1
}
}
]
3.4.5. Patch update removing a track
This example shows patch catalog update for a media producer removing
the track from an established video conference.
[
{ "op": "remove", "path": "/tracks/2"}
]
3.4.6. Patch update removing all tracks and terminating the broadcast
This example shows a patch catalog update for a media producer
removing all tracks and terminating the broadcast.
[
{ "op": "remove", "path": "/tracks/2"},
{ "op": "remove", "path": "/tracks/1"},
{ "op": "remove", "path": "/tracks/0"},
]
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 2 June 2024 [Page 18]
Internet-Draft Common Catalog Format for moq-transport November 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":{"codec":"avc1.640033","mimeType":"video/mp4","width":3840,"height":2160,"framerate":30,"bitrate":14931538},
"initTrack":"init_video_4k",
"altGroup": 1
},
{
"name": "video_1080",
"selectionParams":{"codec":"avc1.640028","mimeType":"video/mp4","width":1920,"height":1080,"framerate":30,"bitrate":9914554},
"initTrack":"init_video_1080",
"altGroup": 1
},
{
"name": "video_720",
"selectionParams":{"codec":"avc1.64001f","mimeType":"video/mp4","width":1280,"height":720,"framerate":30,"bitrate":4952892},
"initTrack":"init_video_720",
"altGroup": 1
},
{
"name": "audio_aac",
"selectionParams":{"codec":"mp4a.40.5","mimeType":"audio/mp4","samplerate":48000,"channelConfig":"2","bitrate":67071},
"initTrack":"init_audio_aac",
"altGroup": 2
},
{
"name": "audio_ec3",
"selectionParms":{"codec":"ec-3","mimeType":"audio/mp4","samplerate":48000,"channelConfig":"F801","bitrate":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 2 June 2024 [Page 19]
Internet-Draft Common Catalog Format for moq-transport November 2023
{
"version": 1,
"sequence": 0,
"streamingFormat": 1,
"streamingFormatVersion": "0.2",
"namespace": "output.example.com/event/12345",
"renderGroup":1
"tracks": [
{
"name": "video0",
"selectionParams":{"codec":"avc1.64001f","mimeType":"video/mp4","width":1280,"height":720,"framerate":30,"bitrate":4952892},
"initTrack":"init_video_720",
"packaging":"cmaf",
},
{
"name": "audio",
"selectionParams":{"codec":"opus","samplerate":48000,"channelConfig":"2","bitrate":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 2 June 2024 [Page 20]
Internet-Draft Common Catalog Format for moq-transport November 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":{"codec":"avc1.640028","mimeType":"video/mp4","width":1920,"height":1080,"framerate":30,"bitrate":9914554},
"initData":"AAAAGGZ0eXBpc282AAAAAWlzbzZkYXNoAAAARWZyZWVJc29NZWRpYSBGaWxlIFByb2R1Y2VkIHdpdGggR1BBQyAxLjAuMS1yZXYwLWdkODUzOGU4YS1tYXN0ZXIAAAADLW1vb3YAAABsbXZoZAAAAADfdnly33Z5cgABX5AAAAAAAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAA4bXZleAAAABBtZWhkAAAAAAPwOXgAAAAgdHJleAAAAAAAAAABAAAAAQAAA+gAAAAAAAEAAAAAAkd0cmFrAAAAXHRraGQAAAAB33Y1w992eXIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAABQAAAAIWAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAAAAAAD6AABAAAAAAG/bWRpYQAAACBtZGhkAAAAAN92NcPfdnlyAABdwAAAAAAVxwAAAAAAQGhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAAAfTWFpbmNvbmNlcHQgVmlkZW8gTWVkaWEgSGFuZGxlcgAAAVdtaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAADkc3RibAAAAJhzdHNkAAAAAAAAAAEAAACIYXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAUAAhYASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAADJhdmNDAU1AH//hABpnTUAfllKAoAi/NNQYGBkAAAMAAQAAAwAwhAEABWjpCTUgAAAAEHN0dHMAAAAAAAAAAAAAABBzdHNjAAAAAAAAAAAAAAAUc3RzegAAAAAAAAAAAAAAAAAAABBzdGNvAAAAAAAAAAAAAAAzaGRscgAAAAAAAAAAYWxpcwAAAAAAAAAAAAAAAEFsaWFzIERhdGEgSGFuZGxlcgAAAAA6dWR0YQAAABepVElNAAsAADAwOjAwOjAwOjAwAAAADqlUU0MAAgAAMjQAAAANqVRTWgABAAAx"
},
{
"name": "audio_aac",
"selectionParams":{"codec":"mp4a.40.5","mimeType":"audio/mp4","samplerate":48000,"channelConfig":"2","bitrate":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 2 June 2024 [Page 21]
Internet-Draft Common Catalog Format for moq-transport November 2023
{
"version": 1,
"sequence": 0,
"streamingFormat": 1,
"streamingFormatVersion": "0.2",
"namespace": "conference.example.com/conference123/alice",
"packaging": "loc",
"renderGroup": 1,
"tracks": [
{
"name": "video",
"selectionParams":{"codec":"av01.0.08M.10.0.110.09","width":1920,"height":1080,"framerate":30,"bitrate":1500000},
"com.example-billing-code": 3201,
"com.example-tier": "premium",
"com.example-debug": "h349835bfkjfg82394d945034jsdfn349fns"
},
{
"name": "audio",
"selectionParams":{"codec":"opus","samplerate":48000,"channelConfig":"2","bitrate":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 2 June 2024 [Page 22]
Internet-Draft Common Catalog Format for moq-transport November 2023
4. Security Considerations
The catalog contents MAY be encrypted. The mechanism of encryption
and the signaling 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,
<https://www.rfc-editor.org/rfc/rfc4648>.
[CMAF] "Information technology -- Multimedia application format
(MPEG-A) -- Part 19: Common media application format
(CMAF) for segmented media", March 2020.
Nandakumar, et al. Expires 2 June 2024 [Page 23]
Internet-Draft Common Catalog Format for moq-transport November 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,
<https://datatracker.ietf.org/doc/html/draft-ietf-avtext-
framemarking-15>.
[JSON] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data
Interchange Format", STD 90, RFC 8259,
DOI 10.17487/RFC8259, December 2017,
<https://www.rfc-editor.org/rfc/rfc8259>.
[JSON-PATCH]
Bryan, P., Ed. and M. Nottingham, Ed., "JavaScript Object
Notation (JSON) Patch", RFC 6902, DOI 10.17487/RFC6902,
April 2013, <https://www.rfc-editor.org/rfc/rfc6902>.
[LANG] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying
Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646,
September 2009, <https://www.rfc-editor.org/rfc/rfc5646>.
[MIME] Freed, N., Klensin, J., and T. Hansen, "Media Type
Specifications and Registration Procedures", BCP 13,
RFC 6838, DOI 10.17487/RFC6838, January 2013,
<https://www.rfc-editor.org/rfc/rfc6838>.
[MoQTransport]
Curley, L., Pugin, K., Nandakumar, S., and V. Vasiliev,
"Media over QUIC Transport", Work in Progress, Internet-
Draft, draft-ietf-moq-transport-01, 23 October 2023,
<https://datatracker.ietf.org/doc/html/draft-ietf-moq-
transport-01>.
[WebCodecs]
"WebCodecs", July 2023,
<https://www.w3.org/TR/webcodecs/>.
[WEBCODECS-CODEC-REGISTRY]
"WebCodecs Codec Registry", July 2023,
<https://www.w3.org/TR/webcodecs-codec-registry/>.
Authors' Addresses
Suhas Nandakumar
Cisco
Email: snandaku@cisco.com
Nandakumar, et al. Expires 2 June 2024 [Page 24]
Internet-Draft Common Catalog Format for moq-transport November 2023
Will Law
Akamai
Email: wilaw@akamai.com
Mo Zanaty
Cisco
Email: mzanaty@cisco.com
Nandakumar, et al. Expires 2 June 2024 [Page 25]