All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Drop support
channel_idsandchannel_labelsinAudioElementObuMetadatain favor ofChannelMetadata. - Drop support of
language_labelsin favor ofannotations_language. - Drop support of
MixPresentationAnnotationsandmix_presentation_annotations_arrayin favor oflocalized_presentation_annotations. - Drop support of
MixPresentationElementAnnotationsandmix_presentation_element_annotations_arrayin favor oflocalized_element_annotations. - Drop support of
element_mix_configandoutput_mix_configin favor ofelement_mix_gainandoutput_mix_gain. - Drop support of
num_sub_mixes,num_audio_elements,num_layouts,num_anchored_loudness, andnum_tagsinMixPresentationObuMetadataand related structures. - Drop support of
deprecated_info_typein favor ofinfo_type_bitmasks. - Drop support of
num_substreams,num_parameters, andnum_layersinAudioElementObuMetadatain favor of determining the count from related elements. - Drop support of
num_subblocksinParamDefinitionandParameterBlockMetadatain favor of determining the count from related elements. - Drop support of
extension_header_sizeinObuHeaderMetadatain favor of determining the size from related elements. - Drop support of
output_wav_file_bit_depth_overrideinTestVectorMetadatain favor ofoutput_rendered_file_formatinEncoderControlMetadata.
- Drop support of
ia_code, in favor of always inserting the correct one. - Deprecate
AAC_SAMPLE_FREQUENCY_INDEX_ESCAPE_VALUEand explicitsampling_frequency, these are usually forbidden by the IAMF spec. - Deprecate the spelling of
HEADPHONES_RENDERING_MODE_BINAURALin favor ofHEADPHONES_RENDERING_MODE_BINAURAL_WORLD_LOCKED. - Deprecate the spelling of
HEADPHONES_RENDERING_MODE_RESERVED_2in favor ofHEADPHONES_RENDERING_MODE_BINAURAL_HEAD_LOCKED.
- Forbid encoding or decoding with multiple Codec Config OBUs under Simple Base, and Base-Enhanced profiles.
- Improve spec compliance, when decoding streams with unknown Descriptor OBUs.
- Fix potential invalid memory access for certain bitstreams.
2.1.0 - 2025-11-06
- Add an example binary to decode IAMF.
- Deprecate
MixPresentationObuMetadata::count_label, in favor of calculating the size from related elements. - Deprecate
MixPresentationObuMetadata::info_type_size, in favor of calculating the size from related elements. - Deprecate
MixPresentationObuMetadata::rendering_config_extension_size, in favor of calculating the size from related elements. - Deprecate
FlacMetaBlockHeader::last_metadata_block_flagandmetadata_data_block_lengthin favor of automatically determining the related values. - Deprecate
param_definition_size, in favor of calculating the size from related elements. - Deprecate
param_data_size, in favor of calculating the size from related elements.
- Changed encoder API to take in serialized protos. The previous API was buggy due to directly taking in C++ proto classes, which is strongly discouraged.
- Update several library dependencies.
- Use
ABSL_LOGandABSL_CHECKfamily of functions, to avoid conflicts with users that need other logging libraries. - Avoid use of global static initializers.
- Fix issues when building under
-Wnullability-completeness.
- Fix a bug where the encoder would fail to finalize loudness under certain circumstances.
- Improve spec compliance, when decoding streams with unknown parameter blocks.
- Improve CPU/memory efficiency when decoding streams with multiple layouts and/or mix presentations.
- Fix potential buffer overflows, invalid memory access, or excessive memory usage for certain bitstreams.
2.0.0 - 2025-08-18
- Add a library to process ADM files into
UserMetadata. - Add support for ADM input in the encoder.
- Add support for binary proto input in the encoder.
- Add support for encoding Standalone IAMF Representation for Base-Enhanced. profile based on IAMF v1.1.0("Expanded" layouts, Mix Presentation Tags).
- Add an iterative encoding API.
- Add an iterative decoding API.
- Deprecate several fields and prefer using field names based on
IAMF v1.1.0:
- Deprecate
language_labelsin favor ofannotations_language. - Deprecate
MixPresentationAnnotationsandmix_presentation_annotations_arrayin favor oflocalized_presentation_annotations. - Deprecate
MixPresentationElementAnnotationsandmix_presentation_element_annotations_arrayin favor oflocalized_element_annotations. - Deprecate
OutputMixConfigandoutput_mix_configin favor ofoutput_mix_gain. - Deprecate
ElementMixConfigandelement_mix_configin favor ofelement_mix_gain.
- Deprecate
- Deprecate
channel_idsandchannel_labelsinAudioElementObuMetadatain favor ofChannelMetadata. - Deprecate several fields which redundantly provided the size. In favor of
calculating the size from related elements.
- Deprecate
num_substreams,num_parameters,num_layersinAudioElementObuMetadata. - Deprecate
num_subblocksinParamDefinitionandParameterBlockMetadata. - Deprecate
extension_header_sizeinObuHeaderMetadata. - Deprecate
num_sub_mixes,num_audio_elements,num_layouts,num_anchored_loudness, andnum_tagsinMixPresentationObuMetadata.
- Deprecate
- Remove support for integral
deprecated_codec_id,deprecated_info_type,deprecated_param_definition_type,deprecated_loudspeaker_layoutin favor of enumeration-based fields.
- Set sensible defaults for some proto fields.
- Default to automatically determining the correct
CodecConfig::audio_roll_distance, instead of throwing an error when user input was incorrect. - Default to automatically determining the correct
OpusDecoderConfig::pre_skip, instead of throwing an error when user input was incorrect. - Update Simple and Base profile to be based on IAMF v1.0.0-errata.
- Update several library dependencies.
- Fix parsing multi-byte UTF-8 characters on certain platforms.
- Fix crashes when attempting to encode audio frames without the correct
number of
substream_ids. - Prevent encoding Mix Presentation OBUs with an inconsistent number of annotations.
- Fix compliance with ISO 14496-1:2010 when writing AAC Codec Config OBUs (AOMediaCodec/libiamf#119).
- Fix issues decoding FLAC [https://github.com/AOMediaCodec/iamf-tools/commit/8c1a71378].
- Fix issues when using AAC with a 24 kHz sample rate.
- Permit one fully trimmed audio frame at the end of a substream.
- Fix several CPU and memory inefficiencies to improve performance.
- Avoid use of run-time type information (RTTI).
1.0.0 - 2024-01-26
- Add an IAMF encoder which takes in
UserMetadataand outputs IAMF files. - Add support for encoding Standalone IAMF Representation for Simple and Base profiles based on IAMF v1.0.0.
- Fork a test suite from
libiamf.*.proto: A schema to describe IA Sequences and metadata to process them.UserMetadatais the "top-level" file.*.textproto: A suite ofUserMetadatatextproto files to generate test IAMF files.
- Deprecate
deprecated_codec_id,deprecated_info_type,deprecated_param_definition_type,deprecated_loudspeaker_layoutfrom the forked.protos.