Open Audio Renderer (OAR) Specification for Immersive Audio Model and Formats

v1.0.0

Final Deliverable,

Editors:
(Samsung)
(Samsung)
(Samsung)
(Samsung)
(University of York)
(Google)

Copyright 2026, Alliance for Open Media

Licensing information is available at https://www.aomedia.org/license/

The MATERIALS ARE PROVIDED “AS IS.” The Alliance for Open Media, its members, and its contributors expressly disclaim any warranties (express, implied, or otherwise), including implied warranties of merchantability, non-infringement, fitness for a particular purpose, or title, related to the materials. The entire risk as to implementing or otherwise using the materials is assumed by the implementer and user. IN NO EVENT WILL THE ALLIANCE FOR OPEN MEDIA, ITS MEMBERS, OR CONTRIBUTORS BE LIABLE TO ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF ACTION OF ANY KIND WITH RESPECT TO THIS DELIVERABLE OR ITS GOVERNING AGREEMENT, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR NOT THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


Abstract

This document specifies the Open Audio Renderer (OAR), which defines the architecture and algorithms for a set of loudspeaker and binaural renderers for rendering immersive audio content.

1. Introduction

This document specifies the Open Audio Renderer (OAR) for rendering immersive audio content compliant with the Immersive Audio Model and Formats ([IAMF]) standard.

The OAR specification provides the architecture and algorithms for the rendering of channel-based, scene-based, and object-based Audio Elements to various loudspeaker layouts and headphones. It further defines how to mix these Audio Elements and handle the animation and application of dynamic parameters, such as position and gain, provided by [IAMF] metadata. This specification also includes provisions for loudness normalization and peak limiting to be applied before final playback.

2. Immersive Audio (IA) Processing Architecture

The Immersive Audio (IA) processing architecture includes two main components that process [IAMF]-compliant immersive audio content in sequence: the IAMF Decoder and the IAMF Renderer. The OAR specification defines the IAMF Renderer component. The IAMF Decoder is specified in [IAMF] and described here for background information only.

The figure below depicts an example of the IA processing architecture.

Immersive Audio Processing Architecture. AE: Audio Element, AS: Audio Substream.

IAMF Decoder

The IAMF Decoder is outside the scope of this specification. It consists of the OBU Parser, the Codec Decoder, and the Audio Element Reconstructor. For a given IA Sequence,

IAMF Renderer

The IAMF Renderer is within the scope of this specification. It consists of the Renderer, the Mixer, and the Post-Processor. For a given Mix Presentation,

3. Open Audio Renderer (OAR)

The Open Audio Renderer (OAR) defines the IAMF Renderer component of the IA processing architecture. It uses renderer libraries such as the Open Loudspeaker Renderer (OLR) and the Open Binaural Renderer (OBR) to render Audio Elements. It provides rendering algorithms for three types of Audio Elements.

It further provides an optional loudness processing module and an optional limiter for post processing the output audio signal after rendering and mixing.

3.1. OAR Structure

The modules in the OAR model defined by this specification are depicted in the figure below.
OAR Structure

3.1.1. OAR Configuration

The following inputs are REQUIRED to configure OAR. The exception is target_loudness, which is only REQUIRED when the Loudness Processor module is enabled.

OAR Configuration: Description
target_layout: Indicates the output layout used for rendering Audio Elements. Supported layouts are specified by sound_system in the [IAMF] specification.
frame_size: Indicates the frame length, in samples, of the input Audio Elements.
sampling_rate: Indicates the sample rate of the input Audio Elements in Hz.
target_loudness (Optional): Indicates the target output level for loudness normalization, as specified in § 7.1 Loudness Normalization.
3.1.1.1. Parameter Data Interpolation

The Parameter Data Interpolation module requires Parameter Block OBU information such as ParamDefinition() (including parameter_rate and subblock_duration) and AnimatedParameterData() (including gain and position). It then generates interpolated parameter data used by the Audio Element Renderers and Audio Mixer modules.

3.1.1.2. Audio Element Renderers

The Audio Element Renderers REQUIRE the following configuration and parameters to render an input Audio Element:

loudspeaker_layout Channel Layout Loudspeaker Location Ordering Reference
0 Mono C
1 Stereo L/R Loudspeaker configuration for Sound System A (0+2+0) of [ITU-2051-3]
2 5.1ch L/R/C/LFE/Ls/Rs Loudspeaker configuration for Sound System B (0+5+0) of [ITU-2051-3]
3 5.1.2ch L/R/C/LFE/Ls/Rs/Ltf/Rtf Loudspeaker configuration for Sound System C (2+5+0) of [ITU-2051-3]
4 5.1.4ch L/R/C/LFE/Ls/Rs/Ltf/Rtf/Ltr/Rtr Loudspeaker configuration for Sound System D (4+5+0) of [ITU-2051-3]
5 7.1ch L/R/C/LFE/Lss/Rss/Lrs/Rrs Loudspeaker configuration for Sound System I (0+7+0) of [ITU-2051-3]
6 7.1.2ch L/R/C/LFE/Lss/Rss/Lrs/Rrs/Ltf/Rtf The combination of 7.1ch and the Left and Right top front pair of 7.1.4ch
7 7.1.4ch L/R/C/LFE/Lss/Rss/Lrs/Rrs/Ltf/Rtf/Ltb/Rtb Loudspeaker configuration for Sound System J (4+7+0) of [ITU-2051-3]
8 3.1.2ch L/R/C/LFE/Ltf/Rtf The front subset (L/C/R/Ltf/Rtf/LFE) of 7.1.4ch
9 9.1.6ch FL/FR/FC/LFE1/BL/BR/FLc/FRc/SiL/SiR/TpFL/TpFR/TpBL/TpBR/TpSiL/TpSiR The subset of Loudspeaker configuration for Sound System H (9+10+3) of [ITU-2051-3]
10 10.2.9.3ch FL/FR/FC/LFE1/BL/BR/FLc/FRc/BC/LFE2/SiL/SiR/TpFL/TpFR/TpFC/TpC/TpBL/TpBR/TpSiL/TpSiR/TpBC/BtFC/BtFL/BtFR Loudspeaker configuration for Sound System H (9+10+3) of [ITU-2051-3]
11 7.1.5.4ch L/R/C/LFE/Lss/Rss/Lrs/Rrs/Ltf/Rtf/TpC/Ltb/Rtb/BtFL/BtFR/BtBL/BtBR Loudspeaker configuration with the top and the bottom speakers added to Loudspeaker configuration for Sound System J (4+7+0) of [ITU-2051-3]
12 Binaural L/R
13 LFE LFE The low-frequency effects subset (LFE) of 7.1.4ch
14 Stereo-S Ls/Rs The surround subset (Ls/Rs) of 5.1.4ch
15 Stereo-SS Lss/Rss The side surround subset (Lss/Rss) of 7.1.4ch
16 Stereo-RS Lrs/Rrs The rear surround subset (Lrs/Rrs) of 7.1.4ch
17 Stereo-TF Ltf/Rtf The top front subset (Ltf/Rtf) of 7.1.4ch
18 Stereo-TB Ltb/Rtb The top back subset (Ltb/Rtb) of 7.1.4ch
19 Top-4ch Ltf/Rtf/Ltb/Rtb The top 4 channels (Ltf/Rtf/Ltb/Rtb) of 7.1.4ch
20 3.0ch L/R/C The front 3 channels (L/C/R) of 7.1.4ch
21 Stereo-F FL/FR The front subset (FL/FR) of 9.1.6ch
22 Stereo-Si SiL/SiR The side subset (SiL/SiR) of 9.1.6ch
23 Stereo-TpSi TpSiL/TpSiR The top side subset (TpSiL/TpSiR) of 9.1.6ch
24 Top-6ch TpFL/TpFR/TpBL/TpBR/TpSiL/TpSiR The top 6 channels (TpFL/TpFR/TpSiL/TpSiR/TpBL/TpBR) of 9.1.6ch
25 LFE-Pair LFE1/LFE2 The low-frequency effects subset (LFE1/LFE2) of 10.2.9.3ch
26 Bottom-3ch BtFC/BtFL/BtFR The bottom 3 channels (BtFL/BtFC/BtFR) of 10.2.9.3ch
27 Bottom-4ch BtFL/BtFR/BtBL/BtBR The bottom 4 channels (BtFL/BtFR/BtBL/BtBR) of 7.1.5.4ch
28 Top-1ch TpC The top subset (TpC) of 7.1.5.4ch
29 Top-5ch Ltf/Rtf/TpC/Ltb/Rtb The top 5 channels (Ltf/Rtf/TpC/Ltb/Rtb) of 7.1.5.4ch
3.1.1.3. Audio Mixer

For each referenced and rendered Audio Element to be mixed by the Audio Mixer, the corresponding referenced and interpolated element_mix_gain parameter data is REQUIRED. If the element gain offset mode is enabled, the referenced element_gain_offset is additionally REQUIRED.

For each sub-mix, a referenced and interpolated output_mix_gain parameter data mix is REQUIRED to be applied to the summed Audio Element.

3.1.1.4. Loudness Processor

If the Loudness Processor module is enabled, loudness metadata, including current loudness and target_loudness, is REQUIRED to perform loudness normalization.

3.1.2. Channel- and Scene-Based Renderers

The IAMF Renderer receives Audio Elements, parameter data, and configuration information related to channel-based or scene-based audio from the IAMF Decoder, as detailed in § 3.1.1 OAR Configuration.

Renderer libraries such as EAR (m2m renderer, h2m renderer) ([ITU-2127-0]), § 4.2 Rendering an Audio Element to Headphones and a downmix renderer with demix parameters are used to render the Audio Elements to the target_layout.

The rendered Audio Elements are mixed using the referenced mix gains, and the loudness and limiter logic MAY be selectively applied.

OAR API Structure (Channel-based/Scene-based)

3.1.3. Object-Based Renderer

The IAMF Renderer receives Audio Elements, parameter data, and configuration information related to object-based audio from the IAMF Decoder, as detailed in § 3.1.1 OAR Configuration.

Renderer libraries such as OLR and OBR are used to render the audio data.

The rendered Audio Elements are mixed using the referenced mix gains, and the loudness and limiter logic MAY be selectively applied.

OAR API Structure (Object-based)

4. Rendering an Audio Element

This specification supports the rendering of either a channel-based, a scene-based, or an object-based Audio Element to either a target loudspeaker layout or binaurally, to headphones.

If a preferred renderer is not signaled in [IAMF] bitstream, rendering to either the target loudspeaker or binaurally, to headphones SHALL be done using the default renderer, defined in sub-sections. Otherwise, rendering to either the target loudspeaker or binaurally, to headphones SHALL be done using either the default renderer or the preferred renderer.

In this section, for a given x.y.z layout, the next highest layout x'.y'.z' means that x', y', and z' are greater than or equal to x, y, and z, respectively.

audio_element_type Playback layout Section
CHANNEL_BASED Loudspeakers § 4.1.1 Channel-Based Audio Loudspeaker Rendering
SCENE_BASED Loudspeakers § 4.1.2 Scene-Based Audio Loudspeaker Rendering
OBJECT_BASED Loudspeakers § 4.1.3 Object-Based Audio Loudspeaker Rendering
CHANNEL_BASED Headphones § 4.2.1 Channel-Based Audio Binaural Rendering
SCENE_BASED Headphones § 4.2.2 Scene-Based Audio Binaural Rendering
OBJECT_BASED Headphones § 4.2.3 Object-Based Audio Binaural Rendering

This section and sub-sections are normative unless noted otherwise.

4.1. Rendering an Audio Element to Loudspeakers

This section defines the loudspeaker renderer, which is used as the default renderer to render an Audio Element to a loudspeaker playback layout.

4.1.1. Channel-Based Audio Loudspeaker Rendering

This section defines the default renderer to use, given a channel-based Audio Element and a loudspeaker playback layout.

22.2ch represents the Loudspeaker configuration for Sound System H (9+10+3).

4.1.1.1. Rendering Without Demixing Info
4.1.1.2. Configuring the EAR Direct Speakers Renderer

If the EAR Direct Speakers renderer is used, the following SHALL be provided for each audio channel of the Audio Element:

In [ITU-2051-3], an LFE audio channel can be identified either by an explicit label or its frequency content. In this specification, the LFE channel SHALL be identified based on the explicit label only, given by loudspeaker_layout.

4.1.2. Scene-Based Audio Loudspeaker Rendering

This section defines the default renderer to use, given a scene-based Audio Element and a loudspeaker playback layout.

If the EAR HOA renderer is used, the following metadata SHALL be provided to the renderer for each audio channel:

  1. Ambisonics order

  2. Ambisonics degree

  3. Ambisonics normalization method

The AmbiX format uses ACN channel ordering and SN3D normalization, defined in [ITU-2076-2]. Accordingly, the Ambisonics order and degree are computed from the channel index \(k\) as follows:

\[ \begin{aligned}[c] \text{order} \qquad & n = \left\lfloor{\sqrt{k}}\right\rfloor\\ \text{degree} \qquad & m = k - n \times (n + 1) \end{aligned} \]

4.1.3. Object-Based Audio Loudspeaker Rendering

This section defines the default renderer to use, given an object-based Audio Element and a loudspeaker playback layout (i.e., target layout).

Open Loudspeaker Renderer (OLR) SHALL be used as the default renderer to render an object audio by using its associated and interpolated single position parameter data to the playback layout.

The figure below shows the OLR structure. The OLR receives an object audio and its associated polar coordinates (azimuth, elevation, distance), and renders the object audio to the target layout (i.e., outputs a rendered audio data).

Open Loudspeaker Renderer (OLR) Structure

The OLR (also referred to as Layer-Wise Spatial Audio Rendering) consists of three algorithms, Layer-Wise Panning, 2D Asymmetric Layer Rendering, and Combination of 2D VBAP and DBAP Rendering. For a given object audio, its associated polar coordinates (azimuth, elevation, distance), and a target layout, it is processed as follows:

4.1.3.1. Layer-Wise Spatial Audio Rendering
4.1.3.1.1. Layer-Wise Panning
Each horizontal plane of a 3D loudspeaker layout is treated independently with a 2D rendering algorithm. In the Layer-Wise Panning, an Object Source (an object audio) is separated into one or two Object Subsources based on one or two adjacent 2D layers by applying a gain based on the elevation difference to each layer, respectively. When the layer-wise panning is applied to the Object Source, the Object Source Elevation and the Target Layout Elevations are REQUIRED.

For a given Object Source, its associated polar coordinates, and a target layout, the procedure is as follows (Examples - 7.1.4 Layout of [ITU-2051-3] for Middle layer elevation = 0, Upper layer elevation = +30):

Example of 7.1.4 layout speakers Layer-Wise Panning method
4.1.3.1.2. 2D Asymmetric Layer Rendering
2D Asymmetric Layer Rendering defines the method to render an Object Subsource located in an asymmetric layout with no rear speakers. For example in the 7.1.2 layout, the height layer is asymmetric with 2 front speakers.

If only the 2D layer is used and there is no rear speakers, the Object Subsource is allocated to the front speakers.
To express the sound of the back side, allocate a part of the Object Subsource to another layer with a rear speaker by reducing the elevation ratio.

The procedure is as follows (Examples - 7.1.2 Layout of [IAMF] for two upper layer speakers U+045 and U-045):

Support Asymmetric Layer by adjusting elevation


A method for applying VBAP and DBAP to the Second Object Subsource remaining in the asymmetric layer after partially allocated to adjacent layers. Within a single asymmetric layer, which includes two or one speakers, there is the Second Object Subsource for which 2D VBAP cannot be applied. In cases where only front speakers exist without rear speakers, the Second Object Subsource located at the back SHALL be assigned to the front speakers using combination of VBAP and DBAP.

Support Asymmetric Layer by mirroring source
4.1.3.1.3. Combination of 2D VBAP and DBAP Rendering
Combination of 2D VBAP and DBAP Rendering defines the algorithm effectively combining the direction of [VBAP] with the spatial diffusion of [DBAP] by utilizing three distinct zones, enabling more expressive elevation control.

The term VBAP (Vector Base Amplitude Panning)

The term DBAP (Distance-Based Amplitude Panning)


The Object Subsource is divided into a VBAP Subsource for applying the VBAP method and a DBAP Subsource for applying the DBAP method. Finally, the VBAP Subsource and the DBAP Subsource are distributed to the speakers in the current layer of the target layout. The desired position of the object is expressed by combining the VBAP Subsource and the DBAP Subsource. The Object Subsource has the position (azimuth, elevation, distance), where the elevation is the same as the current layer elevation of the Target Layout Elevations.

Combination VBAP and DBAP Method


The gains of the separated VBAP Subsource and DBAP Subsource and the distance of the DBAP Subsource are calculated differently according to the three zones. When the object subsource crosses the boundary of a zone, continuity is preserved to achieve a smooth and natural transition.

4.2. Rendering an Audio Element to Headphones

This section defines Open Binaural Renderer (OBR), which is used as the default renderer to render an Audio Element to headphones.

OBR is capable of rendering multiple Audio Elements. That is, only one instance of the renderer is REQUIRED to render all audio elements present in an IAMF sub-mix. Configuration of the renderer is done using its API. PCM audio data associated with all Audio Elements SHOULD be aggregated into a single audio buffer in planar format and processed using a single audio processing call to the renderer.

Sections § 4.2.1 Channel-Based Audio Binaural Rendering, § 4.2.2 Scene-Based Audio Binaural Rendering, and § 4.2.3 Object-Based Audio Binaural Rendering describe the operations associated with rendering of Channel-Based, Scene-Based, and Object-Based content repectively. Section § 4.2.4 OBR Core Processing Architecture describes the core architecture of OBR which is the same for all three types of content. Section § 4.2.5 Binaural Filter Profiles describes the binaural filter profiles supported by OBR.

4.2.1. Channel-Based Audio Binaural Rendering

Open Binaural Renderer SHALL be used as the default renderer to render channel-based Audio Elements to headphones.

The rendering process operates as follows:

4.2.2. Scene-Based Audio Binaural Rendering

Open Binaural Renderer SHALL be used as the default renderer to render scene-based Audio Elements to headphones.

The rendering process operates as follows:

4.2.3. Object-Based Audio Binaural Rendering

Open Binaural Renderer SHALL be used as the default renderer to render object-based Audio Elements to headphones.

The rendering process operates as follows:

OBR Object-based distance rendering.

4.2.4. OBR Core Processing Architecture

OBR utilizes spherical harmonic (SH) representations of head-related impulse responses (HRIRs) and binaural room impulse responses (BRIRs) to enable efficient binaural rendering of channel-based, object-based, and Ambisonic content.
OBR Core Rendering Architecture

The renderer processes Ambisonic audio through the following stages:

4.2.5. Binaural Filter Profiles

OBR provides three purposely tuned binaural filter profiles that SHALL be used for rendering Audio Elements. The profiles support Ambisonic orders from 1st to 4th order. The binaural filter coefficients for each profile are provided in the form of C++ code in the liboar GitHub repository.

The profiles are as follows:

5. Mixing Audio Elements

For a given Mix Presentation, after rendering all Audio Elements to a common playback layout, each Audio Element SHALL be processed individually before mixing as follows, where steps 3 and 4 MAY be applied in any order:
  1. If all Audio Elements do not have a common sample rate, re-sample them to a common sample rate. This specification RECOMMENDs 48 kHz.

  2. If all Audio Elements do not have a common bit-depth, convert them to a common bit-depth. This specification RECOMMENDs using 16 bits.

  3. Apply the per-element gain using the gain value specified in element_mix_gain.

  4. Apply any per-element gain offset specified in element_gain_offset_config, if present.

The rendered and processed Audio Elements specified in one sub-mix of the Mix Presentation SHALL then be summed, and the output mix gain SHALL be applied using the value specified in output_mix_gain to generate one sub-mixed audio signal.

If there are two sub-mixes in the Mix Presentation, the above processing SHALL be repeated to generate the other sub-mixed audio signal. The loudness of each sub-mixed audio signal is normalized according to the process defined in § 7.1 Loudness Normalization, and finally, the two audio signals SHALL be summed.

6. Animated Parameters

This section describes how a set of parameter values is animated over a subblock in a Parameter Block OBU using the information provided in AnimatedParameterData().

The AnimatedParameterData() class provides a start point value for all animation_type values, either explicitly or implicitly. When animation_type is STEP, LINEAR or BEZIER, it is provided explicitly by start_point_value. When animation_type is INTER_LINEAR or INTER_BEZIER, it is provided implicitly and determined as follows.

NOTE: If the animation_type of the first sublock accessed by IA decoders (e.g., in random access) is INTER_LINEAR or INTER_BEZIER, IA decoders might derive the start_point_value of the first subblock by decoding the Parameter Block OBU (if present) in the Temporal Unit indicated by audio_roll_distance. Otherwise, IA decoders might set the start_point_value to the corresponding default value defined in the associated parameter definition or the end_point_value of the first subblock.

Parameter values are defined in the parameter time domain but applied to audio samples in the audio time domain. Resampling from parameter time domain to audio time domain is performed relative to the start of the currently processed parameter block. For the current subblock being processed, the subblock start time, duration and end times are defined as below and expressed in parameter ticks at the parameter_rate given in the associated parameter definition.

These are mapped to the audio sample indices \(N_{\text{start}}\) and \(N_{\text{end}}\) as

\[ N_{\text{start}} = \left\lfloor \frac{t_{\text{start}} \times \text{audio_sample_rate}}{\text{parameter_rate}} \right\rfloor, \]

\[ N_{\text{end}} = \left\lfloor \frac{t_{\text{end}} \times \text{audio_sample_rate}}{\text{parameter_rate}} \right\rfloor. \]

6.1. animation_type = STEP

If animation_type is equal to STEP, the parameter value provided by start_point_value SHALL be applied to all time steps in the subblock.

6.2. animation_type = LINEAR or INTER_LINEAR

If animation_type is equal to LINEAR or INTER_LINEAR, the set of parameter values is linearly interpolated. The exception is if its param_definition_type is equal to PARAMETER_DEFINITION_POLAR or PARAMETER_DEFINITION_DUAL_POLAR, in which case its interpolation method is described further below.

In the general linear interpolation case, compute the interpolation factor \(a\) at a given audio sample index \(n\) as

\[ a = \frac{n - N_{\text{start}}}{N_{\text{end}} - N_{\text{start}}}, \qquad 0 \le a \le 1. \]

The corresponding parameter value \(B_\text{linear}(a)\) to apply is

\[ B_{\text{linear}}(a) = (1 - a) \times \text{start_point_value} + a \times \text{end_point_value}. \]

If the param_definition_type is equal to PARAMETER_DEFINITION_POLAR or PARAMETER_DEFINITION_DUAL_POLAR, the distance value is interpolated as \(B_{\text{linear}}(a)\) and the azimuth and elevation angles are jointly interpolated along the shortest great-circle path on the unit sphere, using the spherical linear interpolation (slerp) method as follows.

If the start_point_values and end_point_values for both azimuth and elevation angles are identical, resulting in a subtended angle of 0, either endpoint may be used as the interpolated azimuth and elevation.

Otherwise, let \(\theta_{\text{start}}\) and \(\phi_{\text{start}}\) be the start_point_value of the azimuth and elevation angles respectively and converted to radians. They are then converted to a 3D Cartesian unit vector \(v_{\text{start}} = (v_{x0}, v_{y0}, v_{z0})\) as

\[ v_{x0} = \cos(\phi_{\text{start}}) \sin(-\theta_{\text{start}}), \]

\[ v_{y0} = \cos(\phi_{\text{start}}) \cos(-\theta_{\text{start}}), \]

\[ v_{z0} = \sin(\phi_{\text{start}}). \]

The end point unit vector \(v_{\text{end}}\) is similarly computed from the end_point_value of the azimuth and elevation angles.

The angle subtended by the arc is computed using the dot product as

\[ \Omega = \arccos(v_{\text{start}} \cdot v_{\text{end}}). \]

For a given interpolation factor \(a\), the interpolated 3D Cartesian vector along the arc, \(v(a) = \left(v_x(a), v_y(a), v_z(a)\right)\), is computed as

\[ v(a) = \frac{\sin((1-a)\Omega)}{\sin(\Omega)} v_{\text{start}} + \frac{\sin(a\Omega)}{\sin(\Omega)} v_{\text{end}}. \]

Finally, the interpolated vector is converted back to azimuth \(\theta(a)\) and elevation \(\phi(a)\) angles in radians as

\[ \theta(a) = -\text{atan2}(v_x(a), v_y(a)), \]

\[ \phi(a) = \arcsin(v_z(a)). \]

NOTE: \(\Omega\) can not be 180 degrees. Refer to [IAMF].

6.3. animation_type = BEZIER or INTER_BEZIER

If animation_type is equal to BEZIER or INTER_BEZIER, the information provided in AnimatedParameterData() combined with the timing information provided in ParamDefinition() and the Parameter Block OBU describe how the set of parameter values is animated as a quadratic Bezier curve.

In addition to mapping the subblock’s start and end times to audio sample indices \(N_{\text{start}}\) and \(N_{\text{end}}\), the subblock’s Bezier control point time is similarly mapped from parameter time domain. Let the control point time be

\[ t_{\text{ctrl}} = t_{\text{start}} + \text{round}(t_{\text{duration}} \times \text{control_point_relative_time}). \]

The value of \(t_{\text{ctrl}}\) is expressed in parameter ticks at the parameter_rate given in the assicated parameter definition.

The corresponding sample index is

\[ N_{\text{ctrl}} = \left\lfloor \frac{t_{\text{ctrl}} \times \text{audio_sample_rate}}{\text{parameter_rate}} \right\rfloor. \]

At a given audio sample \(n\), the mapping to the interpolation factor \(a\) (where \(0 \le a \le 1\)) is

\[ a = \begin{cases} -\frac{\gamma}{\beta}, & \text{if }~\alpha = 0,\\ \frac{-\beta + \sqrt{\beta^2 - 4 \alpha \gamma}}{2 \alpha} & \text{otherwise}, \end{cases} \]

where

\[ \alpha = n_{\text{start}} - 2 n_{\text{ctrl}} + n_{\text{end}}, \]

\[ \beta = 2(n_{\text{ctrl}} - n_{\text{start}}), \]

\[ \gamma = n_{\text{start}} - n. \]

The corresponding parameter value \(B_{\text{bezier}}(a)\) to apply is

\[ B_{\text{bezier}}(a) = (1 - a)^2 \times \text{start_point_value} + 2a(1 - a) \times \text{control_point_value} + a^2 \times \text{end_point_value}. \]

7. Post Processing

7.1. Loudness Normalization

Loudness normalization MAY be done by adjusting the loudness level to a target output level using the information provided in IAMF Mix Presentation Loudness. A control MAY be provided to set unique target output levels for each anchored loudness and/or the integrated loudness. If loudness normalization increases the output level, a peak limiter to prevent saturation and/or clipping MAY be necessary; true_peak or digital_peak SHOULD be used to determine if peak limiting is needed. Alternatively, the total amount of normalization MAY be limited.

The rendered layouts that were used to measure the loudness information of a sub-mix are provided by loudness_layouts.

If one of them matches the playback layout, the loudness information SHOULD be used directly for normalization. If there is a mismatch between loudness_layout and the playback layout, the implementation MAY choose to use the provided loudness information of the highest loudness_layout as-is.

7.2. Limiter

The limiter MAY be used to limit the true peak of an audio signal at -1 dBTP, where the true peak is defined in [ITU-1770-4]. The limiter MAY be applied to multichannel signals in a linked manner and further support auto-release.

8. Down-mix Matrix

8.1. Dynamic Down-mix Matrix

This specification provides dynamic down-mixing matrices generated by the down-mixing mechanism, which is specified in § 10.1 Annex A: Down-mix Mechanism.

8.2. Static Down-mix Matrix

This section provides static down-mix matrices to render to 3.1.2ch from 5.1.2ch, 5.1.4ch, 7.1.2ch, and 7.1.4ch, and to 9.1.6ch, 7.1.5.4ch from 22.2ch.

Implementations MAY use a limiter defined in § 7.2 Limiter to preserve the energy of audio signals instead of using normalization factors.

The 3.1.2ch down-mix matrix for 5.1.2ch is given below, where \(p = 0.707\).

\[ \begin{bmatrix} \text{L3} \\ \text{C} \\ \text{R3} \\ \text{Ltf3} \\ \text{Rtf3} \\ \text{LFE} \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 & p & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & p & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \end{bmatrix} \times \begin{bmatrix} \text{L5} \\ \text{C} \\ \text{R5} \\ \text{Ls} \\ \text{Rs} \\ \text{Ltf2} \\ \text{Rtf2} \\ \text{LFE} \end{bmatrix} \]

The 3.1.2ch down-mix matrix for 5.1.4ch is given below, where \(p = 0.707\).

\[ \begin{bmatrix} \text{L3} \\ \text{C} \\ \text{R3} \\ \text{Ltf3} \\ \text{Rtf3} \\ \text{LFE} \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 & p & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & p & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & p & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & p & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \end{bmatrix} \times \begin{bmatrix} \text{L5} \\ \text{C} \\ \text{R5} \\ \text{Ls} \\ \text{Rs} \\ \text{Ltf4} \\ \text{Rtf4} \\ \text{Ltb} \\ \text{Rtb} \\ \text{LFE} \end{bmatrix} \]

The 3.1.2ch down-mix matrix for 7.1.2ch is given below, where \(p = 0.707\).

\[ \begin{bmatrix} \text{L3} \\ \text{C} \\ \text{R3} \\ \text{Ltf3} \\ \text{Rtf3} \\ \text{LFE} \end{bmatrix} = \frac{2}{1 + 2 \times p} \times \begin{bmatrix} 1 & 0 & 0 & p & 0 & p & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & p & 0 & p & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \end{bmatrix} \times \begin{bmatrix} \text{L7} \\ \text{C} \\ \text{R7} \\ \text{Lss} \\ \text{Rss} \\ \text{Lrs} \\ \text{Rrs} \\ \text{Ltf2} \\ \text{Rtf2} \\ \text{LFE} \end{bmatrix} \]

The 3.1.2ch down-mix matrix for 7.1.4ch is given below, where \(p = 0.707\).

\[ \begin{bmatrix} \text{L3} \\ \text{C} \\ \text{R3} \\ \text{Ltf3} \\ \text{Rtf3} \\ \text{LFE} \end{bmatrix} = \frac{2}{1 + 2 \times p} \times \begin{bmatrix} 1 & 0 & 0 & p & 0 & p & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & p & 0 & p & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & p & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & p & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \end{bmatrix} \times \begin{bmatrix} \text{L7} \\ \text{C} \\ \text{R7} \\ \text{Lss} \\ \text{Rss} \\ \text{Lrs} \\ \text{Rrs} \\ \text{Ltf4} \\ \text{Rtf4} \\ \text{Ltb} \\ \text{Rtb} \\ \text{LFE} \end{bmatrix} \]

The 9.1.6ch down-mix matrix for 22.2ch is given below, where \(p = 0.707\) and \(q = 0.5\). This down-mix matrix is generated based on Section 8.1 and Table 16 of [ITU-2127-0].

\[ \begin{bmatrix} \text{FLc} \\ \text{FC} \\ \text{FRc} \\ \text{FL} \\ \text{FR} \\ \text{SiL} \\ \text{SiR} \\ \text{BL} \\ \text{BR} \\ \text{TpFL} \\ \text{TpFR} \\ \text{TpSiL} \\ \text{TpSiR} \\ \text{TpBL} \\ \text{TpBR} \\ \text{LFE1} \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & p & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & p & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & p & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & p & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & q & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & q & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & q & 0 & 1 & p & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & q & 0 & 0 & p & 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & p & p \\ \end{bmatrix} \times \begin{bmatrix} \text{FLc} \\ \text{FC} \\ \text{FRc} \\ \text{FL} \\ \text{FR} \\ \text{SiL} \\ \text{SiR} \\ \text{BL} \\ \text{BC} \\ \text{BR} \\ \text{TpFL} \\ \text{TpFC} \\ \text{TpFR} \\ \text{TpSiL} \\ \text{TpC} \\ \text{TpSiR} \\ \text{TpBL} \\ \text{TpBC} \\ \text{TpBR} \\ \text{BtFL} \\ \text{BtFC} \\ \text{BtFR} \\ \text{LFE1} \\ \text{LFE2} \\ \end{bmatrix} \]

The 7.1.5.4ch down-mix matrix for 22.2ch is given below, where \(p = 0.707\). This down-mix matrix is generated based on Section 8.1 and Table 16 of [ITU-2127-0] with added mapping rules for the bottom layer back speakers (B+/-135). The mapping rules for the bottom layer back speakers mirror the top layer back speakers (U+/-135) mapping rules.

\[ \begin{bmatrix} \text{L} \\ \text{C} \\ \text{R} \\ \text{Lss} \\ \text{Rss} \\ \text{Lrs} \\ \text{Rrs} \\ \text{Ltf} \\ \text{Rtf} \\ \text{TpC} \\ \text{Ltb} \\ \text{Rtb} \\ \text{BtFL} \\ \text{BtFR} \\ \text{BtBL} \\ \text{BtBR} \\ \text{LFE} \\ \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 & p & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & p & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & p & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & p & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & p & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & p & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & p & 0 & p & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & p & 1 & 0 & 0 & p & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & p & 0 & 0 & 1 & p & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & p & 0 & p & 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & p & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & p & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & p & p \\ \end{bmatrix} \times \begin{bmatrix} \text{FLc} \\ \text{FC} \\ \text{FRc} \\ \text{FL} \\ \text{FR} \\ \text{SiL} \\ \text{SiR} \\ \text{BL} \\ \text{BC} \\ \text{BR} \\ \text{TpFL} \\ \text{TpFC} \\ \text{TpFR} \\ \text{TpSiL} \\ \text{TpC} \\ \text{TpSiR} \\ \text{TpBL} \\ \text{TpBC} \\ \text{TpBR} \\ \text{BtFL} \\ \text{BtFC} \\ \text{BtFR} \\ \text{LFE1} \\ \text{LFE2} \\ \end{bmatrix} \]

Where FLc: Front Left Centre, FC: Front Centre, FRc: Front Right Centre, FL: Front Left, FR: Front Right, SiL: Side Left, SiR: Side Right, BL: Back Left, BC: Back Centre, BR: Back Right, TpFL: Top Front Left, TpFC: Top Front Cetnre, TpFR: Top Front Right, TpSiL: Top Side Left, TpC: Top Centre, TpSiR: Top Side Right, TpBL: Top Back Left, TpBC: Top Back Centre, TpBR: Top Back Right, BtFL: Bottom Front Left, BtFC: Bottom Front Centre, BtFR: Bottom Front Right, LFE1: Low-Frequency Effects-1, LFE2: Low-Frequency Effects-2, L: Left, C: Centre, R: Right, Lss: Left Side Surround, Rss: Right Side Surround, Lrs: Left Rear Surround, Rrs: Right Rear Surround, Ltf: Left Top Front, Rtf: Right Top Front, Ltb: Left Top Back, Rtb: Right Top Back, BtBL: Bottom Back Left, BtBR: Bottom Back Right, LFE: Low-Frequency Effects

9. Implementation Verification

All custom rendering and architecture modifications to OAR MUST adhere to the restrictions defined in this version of the specification.

Custom implementations and/or modifications to OAR, excluding the OLR or OBR renderers, MUST be verified using the IAMF conformance test vectors in conjunction with a compliant IAMF decoder.

Custom implementations and/or modifications to OLR or OBR only, excluding other OAR modules, SHOULD use ABX testing to validate perceptual parity with the reference OLR or OBR output. The ABX assessment SHOULD include listening test samples that emphasize the following attributes:

10. Annex

10.1. Annex A: Down-mix Mechanism

This section specifies the down-mixing mechanism to generate down-mixed audio from an input channel-based rendered 3D audio signal.

For a given channel-based input 3D audio signal that conforms to the 7.1.4ch, the surround and top channels (if any) are separately down-mixed and especially step by step until to get the target channels.

Implementers can use another method to get the down-mixed audio from the given input 3D audio signal, as long as the down-mixed audio signal is the same as the result of what is described in this section.

A Down-Mixer based on the down-mix mechanism is a combination of the following surround Down-Mixer(s) and top Down-Mixer(s) as depicted in the figure below.

IA Down-mix Mechanism

For example, to get the 3.1.2ch down-mixed audio from 7.1.4ch:

10.2. Annex B: ID Linking Scheme (Informative)

The figure below shows the linking scheme among IDs in the obu_header or OBU payload.
ID Linking Scheme

In the figure above,

Conformance

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 BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

All of the text of this specification is normative except sections explicitly marked as non-normative, examples, and notes. [RFC2119]

Examples in this specification are introduced with the words “for example” or are set apart from the normative text with class="example", like this:

This is an example of an informative example.

Informative notes begin with the word “Note” and are set apart from the normative text with class="note", like this:

Note, this is an informative note.

Index

Terms defined by this specification

Terms defined by reference

References

Normative References

[DBAP]
DBAP - DISTANCE-BASED AMPLITUDE PANNING. Standard. URL: https://jamoma.org/publications/attachments/icmc2009-dbap-rev1.pdf
[IAMF]
Immersive Audio Model and Formats (IAMF) standard specification. Spec. URL: https://aomediacodec.github.io/iamf/index.html
[ITU-1770-4]
Algorithms to measure audio programme loudness and true-peak audio level. Standard. URL: https://www.itu.int/rec/R-REC-BS.1770
[ITU-2051-3]
Advance sound system for programme production. Standard. URL: https://www.itu.int/rec/R-REC-BS.2051
[ITU-2076-2]
Audio Definition Model. Standard. URL: https://www.itu.int/rec/R-REC-BS.2076
[ITU-2127-0]
Audio Definition Model renderer for advanced sound systems. Standard. URL: https://www.itu.int/rec/R-REC-BS.2127
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. March 1997. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[RFC8174]
B. Leiba. Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. May 2017. Best Current Practice. URL: https://www.rfc-editor.org/info/rfc8174/
[VBAP]
Virtual Sound Source Positioning Using Vector Base Amplitude Panning. Standard. URL: https://www.audiolabs-erlangen.de/resources/aps-w23/papers/sap_Pulkki1997.pdf