• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2024, Alliance for Open Media. All rights reserved
2#
3# This source code is subject to the terms of the BSD 3-Clause Clear License
4# and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear
5# License was not distributed with this source code in the LICENSE file, you
6# can obtain it at www.aomedia.org/license/software-license/bsd-3-c-c. If the
7# Alliance for Open Media Patent License 1.0 was not distributed with this
8# source code in the PATENTS file, you can obtain it at
9# www.aomedia.org/license/patent.
10
11# proto-file: iamf/cli/proto/user_metadata.proto
12# proto-message: UserMetadata
13
14test_vector_metadata {
15  human_readable_description:
16    "An invalid IAMF stream where the total duration of the parameter blocks "
17    "is longer than that of the audio frames."
18  file_name_prefix: "test_000133"
19  # Then encoder cannot encode a temporal unit with parameter blocks only.
20  is_valid: false
21  # A compliant decoder should reject a temporal unit with parameter
22  # blocks only.
23  is_valid_to_decode: false
24  mp4_fixed_timestamp: "2024-10-08 00:00:00"
25  test_repository_tags: [
26    "github/aomediacodec/libiamf/main",
27    "github/aomediacodec/libiamf/v1.0.0-errata"
28  ]
29  primary_tested_spec_sections: [
30    "3.8/duration",
31    "4/Parameter Substream"
32  ]
33  base_test: "test_000005"
34}
35
36encoder_control_metadata {
37  add_build_information_tag: false
38}
39
40ia_sequence_header_metadata {
41  primary_profile: PROFILE_VERSION_SIMPLE
42  additional_profile: PROFILE_VERSION_SIMPLE
43}
44
45codec_config_metadata {
46  codec_config_id: 200
47  codec_config {
48    codec_id: CODEC_ID_LPCM
49    num_samples_per_frame: 64
50    audio_roll_distance: 0
51    decoder_config_lpcm {
52      sample_format_flags: LPCM_LITTLE_ENDIAN
53      sample_size: 16
54      sample_rate: 16000
55    }
56  }
57}
58
59audio_element_metadata {
60  audio_element_id: 300
61  audio_element_type: AUDIO_ELEMENT_CHANNEL_BASED
62  reserved: 0
63  codec_config_id: 200
64  num_substreams: 1
65  audio_substream_ids: [0]
66  num_parameters: 0
67  scalable_channel_layout_config {
68    num_layers: 1
69    reserved: 0
70    channel_audio_layer_configs: [
71      {
72        loudspeaker_layout: LOUDSPEAKER_LAYOUT_STEREO
73        output_gain_is_present_flag: 0
74        recon_gain_is_present_flag: 0
75        reserved_a: 0
76        substream_count: 1
77        coupled_substream_count: 1
78      }
79    ]
80  }
81}
82
83mix_presentation_metadata {
84  mix_presentation_id: 42
85  count_label: 1
86  annotations_language: ["en-us"]
87  localized_presentation_annotations: ["test_mix_pres"]
88  num_sub_mixes: 1
89  sub_mixes {
90    num_audio_elements: 1
91    audio_elements {
92      audio_element_id: 300
93      localized_element_annotations: ["test_sub_mix_0_audio_element_0"]
94      rendering_config {
95        headphones_rendering_mode: HEADPHONES_RENDERING_MODE_STEREO
96      }
97      element_mix_gain {
98        param_definition {
99          parameter_id: 100
100          parameter_rate: 16000
101          param_definition_mode: 1
102          reserved: 0
103        }
104        default_mix_gain: 0
105      }
106    }
107    output_mix_gain {
108      param_definition {
109        parameter_id: 100
110        parameter_rate: 16000
111        param_definition_mode: 1
112        reserved: 0
113      }
114      default_mix_gain: 0
115    }
116    num_layouts: 1
117    layouts {
118      loudness_layout {
119        layout_type: LAYOUT_TYPE_LOUDSPEAKERS_SS_CONVENTION
120        ss_layout {
121          sound_system: SOUND_SYSTEM_A_0_2_0
122          reserved: 0
123        }
124      }
125      loudness {
126        info_type_bit_masks: []
127        integrated_loudness: -13733
128        digital_peak: -12879
129      }
130    }
131  }
132}
133
134audio_frame_metadata {
135  wav_filename: "sawtooth_100_stereo.wav"
136  samples_to_trim_at_end: 0
137  samples_to_trim_at_start: 0
138  audio_element_id: 300
139  channel_metadatas: [
140    { channel_id: 0 channel_label: CHANNEL_LABEL_L_2 },
141    { channel_id: 1 channel_label: CHANNEL_LABEL_R_2 }
142  ]
143}
144
145parameter_block_metadata {
146  parameter_id: 100
147  start_timestamp: 0
148  duration: 8000
149  num_subblocks: 1
150  constant_subblock_duration: 8000
151  subblocks: [
152    {
153      mix_gain_parameter_data {
154        animation_type: ANIMATE_STEP
155        param_data {
156          step {
157            start_point_value: 0
158          }
159        }
160      }
161    }
162  ]
163}
164
165temporal_delimiter_metadata {
166  enable_temporal_delimiters: false
167}
168
169arbitrary_obu_metadata {
170  invalidates_bitstream: true
171  insertion_hook: INSERTION_HOOK_AFTER_PARAMETER_BLOCKS_AT_TICK
172  # Audio frames end at tick 8000, so this parameter block starting at tick
173  # 8000 makes the total duration of a parameter longer than the audio.
174  insertion_tick: 8000
175  obu_type: OBU_IA_PARAMETER_BLOCK
176  payload:
177    "\x64"  # parameter_id (100).
178    "\x40"  # duration (64).
179    "\x40"  # constant duration (64).
180    "\x00"  # animation_type (0).
181    "\x00\x00"  # start_point_value (0).
182}
183