diff --git a/index.bs b/index.bs index 04dca1f1..9ef2ca6f 100644 --- a/index.bs +++ b/index.bs @@ -687,7 +687,7 @@ class AudioElementOBU() { else if (param_definition_type == PARAMETER_DEFINITION_RECON_GAIN) { ReconGainParamDefinition recon_gain_info; } - else if (param_definition_type > 3) { + else if (param_definition_type > 4) { leb128() param_definition_size; unsigned int (8 x param_definition_size) param_definition_bytes; } @@ -776,18 +776,22 @@ NOTE: For a given [=audio_element_type=], a future version of the specification
fLaC or ipcm, the type PARAMETER_DEFINITION_RECON_GAIN SHALL NOT be present.
- When [=num_layers=] > 1, the type PARAMETER_DEFINITION_RECON_GAIN SHALL be present.
- When the [=loudspeaker_layout=] = 15 or the [=loudspeaker_layout=] of the (non-)scalable channel audio (i.e., [=num_layers=] = 1) is less than or equal to 3.1.2ch (i.e., Mono, Stereo, or 3.1.2ch), the type PARAMETER_DEFINITION_DEMIXING SHALL NOT be present.
- When the highest [=loudspeaker_layout=] of the scalable channel audio (i.e., [=num_layers=] > 1) is greater than 3.1.2ch, both PARAMETER_DEFINITION_DEMIXING and PARAMETER_DEFINITION_RECON_GAIN types SHALL be present.
- When [=num_layers=] = 1 and [=loudspeaker_layout=] is greater than 3.1.2ch (i.e., 5.1.2ch, 5.1.4ch, 7.1.2ch, or 7.1.4ch), the type PARAMETER_DEFINITION_DEMIXING MAY be present.
-- An OBU parser SHALL be able to parse [=audio_element_obu/param_definition_type=] = P (where P > 3) and [=param_definition_size=]. The OBU parser SHOULD ignore the bytes indicated by [=param_definition_size=] that it does not recognize.
+- An OBU parser SHALL be able to parse [=audio_element_obu/param_definition_type=] = P (where P > 4) and [=param_definition_size=]. The OBU parser SHOULD ignore the bytes indicated by [=param_definition_size=] that it does not recognize.
demixing_info is an instance of the [=DemixingParamDefinition()=] class, which provides the parameter definition for the demixing information, which is used to reconstruct a scalable channel audio representation. The corresponding parameter data to be provided in [=Parameter Block OBU=]s with the same [=parameter_block_obu/parameter_id=] is specified in the [=DemixingInfoParameterData()=] class.
@@ -1408,6 +1412,8 @@ class RenderingConfig() {
leb128() param_definition_type;
if (param_definition_type == PARAMETER_DEFINITION_SINGLE_POSITION) {
SinglePositionParamDefinition single_position;
+ } else if (param_definition_type == PARAMETER_DEFINITION_DUAL_POSITION) {
+ DualPositionParamDefinition dual_position;
}
else {
leb128() rendering_config_params_extension_size;
@@ -1439,6 +1445,7 @@ Parsers encountering a reserved value of [=headphones_rendering_mode=] SHALL ign
- The type SHALL NOT be duplicated in one [=RenderingConfig()=].
- The PARAMETER_DEFINITION_SINGLE_POSITION type SHALL be present only when the referenced [=Audio Element=] has [=audio_element_type=] = OBJECT_BASED and [=num_objects=] = 1.
+- The PARAMETER_DEFINITION_DUAL_POSITION type SHALL be present only when the referenced [=Audio Element=] has [=audio_element_type=] = OBJECT_BASED and [=num_objects=] = 2.
- The following types SHALL NOT be present in [=RenderingConfig()=]:
- PARAMETER_DEFINITION_MIX_GAIN
- PARAMETER_DEFINITION_DEMIXING
@@ -1446,6 +1453,8 @@ Parsers encountering a reserved value of [=headphones_rendering_mode=] SHALL ign
single_position is an instance of the [=SinglePositionParamDefinition()=] class. It provides the parameter definition for the position that is used when rendering an [=Audio Element=] with one object. The corresponding parameter data to be provided in [=Parameter Block OBU=]s with the same [=parameter_block_obu/parameter_id=] is specified in the [=SinglePositionParameterData()=] class.
+dual_position is an instance of the [=DualPositionParamDefinition()=] class. It provides the parameter definition for the position that is used when rendering an [=Audio Element=] with two objects. The corresponding parameter data to be provided in [=Parameter Block OBU=]s with the same [=parameter_block_obu/parameter_id=] is specified in the [=DualPositionParameterData()=] class.
+
rendering_config_params_extension_size indicates the size in bytes of [=rendering_config_params_extension_bytes=].
rendering_config_params_extension_bytes represents reserved bytes for future use. Parsers that don't understand these bytes SHOULD ignore them.
@@ -1485,6 +1494,40 @@ where 0 degrees is horizontally ahead and positive angles are going up, followin
default_distance specifies the default distance, when there are no [=Parameter Block OBU=]s with the same [=parameter_block_obu/parameter_id=] provided. The value is expressed as a normalized distance from the origin in the range [0.0, 1.0], where 1.0 is on the surface of the unit sphere.
+### Dual Position Parameter Definition Syntax and Semantics ### {#syntax-dual-position-parameter-definition}
+
+The DualPositionParamDefinition() class provides the parameter definition for two objects' positions.
+
+This section specifies the syntax structures of the [=DualPositionParamDefinition()=] class.
+
+Syntax
+
+```
+class DualPositionParamDefinition() extends ParamDefinition() {
+ signed int (9) default_first_azimuth;
+ signed int (8) default_first_elevation;
+ unsigned int (3) default_first_distance;
+
+ signed int (9) default_second_azimuth;
+ signed int (8) default_second_elevation;
+ unsigned int (3) default_second_distance;
+}
+```
+
+Semantics
+
+default_first_azimuth is the same as [=default_azimuth=] in [=SinglePositionParamDefinition()=] except that this applies to the first object in the referenced [=Audio Substream=].
+
+default_first_elevation is the same as [=default_elevation=] in [=SinglePositionParamDefinition()=] except that this applies to the first object in the referenced [=Audio Substream=].
+
+default_first_distance is the same as [=default_distance=] in [=SinglePositionParamDefinition()=] except that this applies to the first object in the referenced [=Audio Substream=].
+
+default_second_azimuth is the same as [=default_azimuth=] in [=SinglePositionParamDefinition()=] except that this applies to the second object in the referenced [=Audio Substream=].
+
+default_second_elevation is the same as [=default_elevation=] in [=SinglePositionParamDefinition()=] except that this applies to the second object in the referenced [=Audio Substream=].
+
+default_second_distance is the same as [=default_distance=] in [=SinglePositionParamDefinition()=] except that this applies to the second object in the referenced [=Audio Substream=].
+
### Mix Gain Parameter Definition Syntax and Semantics ### {#syntax-mixgain-parameter-definition}
@@ -1714,6 +1757,9 @@ class ParameterBlockOBU() {
else if (param_definition_type == PARAMETER_DEFINITION_SINGLE_POSITION) {
SinglePositionParameterData single_position_parameter_data;
}
+ else if (param_definition_type == PARAMETER_DEFINITION_DUAL_POSITION) {
+ DualPositionParameterData dual_position_parameter_data;
+ }
else {
leb128() parameter_data_size;
unsigned int (8 x parameter_data_size) parameter_data_bytes;
@@ -1756,6 +1802,8 @@ The values of [=parameter_block_obu/duration=], [=parameter_block_obu/constant_s
single_position_parameter_data is an instance of the [=SinglePositionParameterData()=] class, which provides the parameter values to apply in this parameter block.
+dual_position_parameter_data is an instance of the [=DualPositionParameterData()=] class, which provides the parameter values to apply in this parameter block.
+
parameter_data_size indicates the size in bytes of [=parameter_data_bytes=].
parameter_data_bytes represents reserved bytes for future use when new syntaxes are defined. Parsers that don't understand these bytes SHOULD ignore them.
@@ -1954,6 +2002,46 @@ where 0 degrees is horizontally ahead and positive angles are going up, followin
+### Dual Position Parameter Data Syntax and Semantics ### {#syntax-dual-position-param}
+
+The DualPositionParameterData() class provides the position parameter data to be used when rendering an object-based [=Audio Element=] with two objects. This section specifies the syntax structure of the [=DualPositionParameterData()=] class.
+
+Syntax
+
+```
+class DualPositionParameterData() {
+ leb128() dual_position_parameter_data_size;
+ leb128() animation_type;
+
+ AnimatedParameterData