Membrane.AAC (Membrane AAC Format v0.8.1)

Copy Markdown View Source

Capabilities for Advanced Audio Codec.

Summary

Types

Contains the configuration data of the audio stream. The options are

Indicates whether stream contains AAC frames only or are they encapsulated in ADTS

AAC frame length identifiers.

MPEG version identifiers.

t()

Types

audio_object_type_id()

@type audio_object_type_id() :: 1..5 | 29

Identifiers of MPEG Audio Object Types

channel_config_id()

@type channel_config_id() :: 0..7

Identifiers of MPEG Audio channel configurations

config()

@type config() :: {:esds | :audio_specific_config, binary()} | nil

Contains the configuration data of the audio stream. The options are:

  • Elementary Stream Descriptor, :esds - ISO/IEC 14496-14
  • Audio Specific Config, :audio_specific_config - ISO/IEC 14496-3 If the data is already parsed and the stream doesn't contain external config it can be set to nil.

encapsulation()

@type encapsulation() :: :none | :ADTS

Indicates whether stream contains AAC frames only or are they encapsulated in ADTS

frame_length_id()

@type frame_length_id() :: 0 | 1

AAC frame length identifiers.

0 indicates 1024 samples/frame and 1 - 960 samples/frame.

mpeg_version()

@type mpeg_version() :: 2 | 4

mpeg_version_id()

@type mpeg_version_id() :: 0 | 1

MPEG version identifiers.

0 indicates MPEG-4 and 1 indicates MPEG-2

profile()

@type profile() :: :main | :LC | :SSR | :LTP | :HE | :HEv2 | nil

samples_per_frame()

@type samples_per_frame() :: 1024 | 960

sampling_frequency_id()

@type sampling_frequency_id() :: 0..12 | 15

Identifiers of MPEG Audio sampling frequencies

t()

@type t() :: %Membrane.AAC{
  channels: pos_integer() | nil,
  config: config(),
  encapsulation: encapsulation(),
  frames_per_buffer: pos_integer(),
  mpeg_version: mpeg_version(),
  profile: profile(),
  sample_rate: pos_integer() | nil,
  samples_per_frame: samples_per_frame()
}

Functions

aot_id_to_profile(audio_object_type_id)

@spec aot_id_to_profile(audio_object_type_id()) :: profile()

channel_config_id_to_channels(channel_config_id)

@spec channel_config_id_to_channels(channel_config_id()) ::
  pos_integer() | :AOT_specific

channels_to_channel_config_id(channels)

@spec channels_to_channel_config_id(channels :: pos_integer() | :AOT_specific) ::
  channel_config_id()

frame_length_id_to_samples_per_frame(frame_length_id)

@spec frame_length_id_to_samples_per_frame(frame_length_id()) :: samples_per_frame()

mpeg_version_id_to_mpeg_version(mpeg_version_id)

@spec mpeg_version_id_to_mpeg_version(mpeg_version_id()) :: mpeg_version()

mpeg_version_to_mpeg_version_id(mpeg_version)

@spec mpeg_version_to_mpeg_version_id(mpeg_version()) :: mpeg_version_id()

profile_to_aot_id(profile)

@spec profile_to_aot_id(profile()) :: audio_object_type_id()

sample_rate_to_sampling_frequency_id(sample_rate)

@spec sample_rate_to_sampling_frequency_id(sample_rate :: pos_integer()) ::
  sampling_frequency_id()

samples_per_frame_to_frame_length_id(samples_per_frame)

@spec samples_per_frame_to_frame_length_id(samples_per_frame()) :: pos_integer()

sampling_frequency_id_to_sample_rate(sampling_frequency_id)

@spec sampling_frequency_id_to_sample_rate(sampling_frequency_id()) ::
  pos_integer() | :explicit