Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@

[![Hex.pm](https://img.shields.io/hexpm/v/membrane_aac_format.svg)](https://hex.pm/packages/membrane_aac_format)
[![API Docs](https://img.shields.io/badge/api-docs-yellow.svg?style=flat)](https://hexdocs.pm/membrane_aac_format/)
[![CircleCI](https://circleci.com/gh/membraneframework/membrane_aac_format.svg?style=svg)](https://circleci.com/gh/membraneframework/membrane_aac_format)

## Installation

Add the following line to your `deps` in `mix.exs`. Run `mix deps.get`.

```elixir
{:membrane_aac_format, "~> 0.8.1"}
{:membrane_aac_format, "~> 0.9.0"}
```

## Copyright and License
Expand Down
61 changes: 51 additions & 10 deletions lib/membrane_aac_format/aac.ex
Original file line number Diff line number Diff line change
Expand Up @@ -127,44 +127,85 @@ defmodule Membrane.AAC do
1 => 2
})

@spec aot_id_to_profile(audio_object_type_id()) :: profile()
@spec aot_id_to_profile(audio_object_type_id()) :: {:ok, profile()} | :error
def aot_id_to_profile(audio_object_type_id),
do: BiMap.fetch(audio_object_type_map(), audio_object_type_id)

@spec aot_id_to_profile!(audio_object_type_id()) :: profile()
def aot_id_to_profile!(audio_object_type_id),
do: BiMap.fetch!(audio_object_type_map(), audio_object_type_id)

@spec profile_to_aot_id(profile()) :: audio_object_type_id()
def profile_to_aot_id(profile), do: BiMap.fetch_key!(audio_object_type_map(), profile)
@spec profile_to_aot_id(profile()) :: {:ok, audio_object_type_id()} | :error
def profile_to_aot_id(profile), do: BiMap.fetch_key(audio_object_type_map(), profile)

@spec profile_to_aot_id!(profile()) :: audio_object_type_id()
def profile_to_aot_id!(profile), do: BiMap.fetch_key!(audio_object_type_map(), profile)

@spec sampling_frequency_id_to_sample_rate(sampling_frequency_id()) :: pos_integer() | :explicit
@spec sampling_frequency_id_to_sample_rate(sampling_frequency_id()) ::
{:ok, pos_integer() | :explicit} | :error
def sampling_frequency_id_to_sample_rate(sampling_frequency_id),
do: BiMap.fetch(sampling_frequency_map(), sampling_frequency_id)

@spec sampling_frequency_id_to_sample_rate!(sampling_frequency_id()) ::
pos_integer() | :explicit
def sampling_frequency_id_to_sample_rate!(sampling_frequency_id),
do: BiMap.fetch!(sampling_frequency_map(), sampling_frequency_id)

@spec sample_rate_to_sampling_frequency_id(sample_rate :: pos_integer()) ::
sampling_frequency_id()
def sample_rate_to_sampling_frequency_id(sample_rate),
do: BiMap.get_key(sampling_frequency_map(), sample_rate, 15)

@spec channel_config_id_to_channels(channel_config_id()) :: pos_integer() | :AOT_specific
@spec channel_config_id_to_channels(channel_config_id()) ::
{:ok, pos_integer() | :AOT_specific} | :error
def channel_config_id_to_channels(channel_config_id),
do: BiMap.fetch(channel_config_map(), channel_config_id)

@spec channel_config_id_to_channels!(channel_config_id()) :: pos_integer() | :AOT_specific
def channel_config_id_to_channels!(channel_config_id),
do: BiMap.fetch!(channel_config_map(), channel_config_id)

@spec channels_to_channel_config_id(channels :: pos_integer() | :AOT_specific) ::
channel_config_id()
{:ok, channel_config_id()} | :error
def channels_to_channel_config_id(channels),
do: BiMap.fetch_key(channel_config_map(), channels)

@spec channels_to_channel_config_id!(channels :: pos_integer() | :AOT_specific) ::
channel_config_id()
def channels_to_channel_config_id!(channels),
do: BiMap.fetch_key!(channel_config_map(), channels)

@spec frame_length_id_to_samples_per_frame(frame_length_id()) :: samples_per_frame()
@spec frame_length_id_to_samples_per_frame(frame_length_id()) ::
{:ok, samples_per_frame()} | :error
def frame_length_id_to_samples_per_frame(frame_length_id),
do: BiMap.fetch(frame_length_map(), frame_length_id)

@spec frame_length_id_to_samples_per_frame!(frame_length_id()) :: samples_per_frame()
def frame_length_id_to_samples_per_frame!(frame_length_id),
do: BiMap.fetch!(frame_length_map(), frame_length_id)

@spec samples_per_frame_to_frame_length_id(samples_per_frame()) :: pos_integer()
@spec samples_per_frame_to_frame_length_id(samples_per_frame()) ::
{:ok, frame_length_id()} | :error
def samples_per_frame_to_frame_length_id(samples_per_frame),
do: BiMap.fetch_key(frame_length_map(), samples_per_frame)

@spec samples_per_frame_to_frame_length_id!(samples_per_frame()) :: frame_length_id()
def samples_per_frame_to_frame_length_id!(samples_per_frame),
do: BiMap.fetch_key!(frame_length_map(), samples_per_frame)

@spec mpeg_version_to_mpeg_version_id(mpeg_version()) :: mpeg_version_id()
@spec mpeg_version_to_mpeg_version_id(mpeg_version()) :: {:ok, mpeg_version_id()} | :error
def mpeg_version_to_mpeg_version_id(mpeg_version),
do: BiMap.fetch_key(mpeg_version_map(), mpeg_version)

@spec mpeg_version_to_mpeg_version_id!(mpeg_version()) :: mpeg_version_id()
def mpeg_version_to_mpeg_version_id!(mpeg_version),
do: BiMap.fetch_key!(mpeg_version_map(), mpeg_version)

@spec mpeg_version_id_to_mpeg_version(mpeg_version_id()) :: mpeg_version()
@spec mpeg_version_id_to_mpeg_version(mpeg_version_id()) :: {:ok, mpeg_version()} | :error
def mpeg_version_id_to_mpeg_version(mpeg_version_id),
do: BiMap.fetch(mpeg_version_map(), mpeg_version_id)

@spec mpeg_version_id_to_mpeg_version!(mpeg_version_id()) :: mpeg_version()
def mpeg_version_id_to_mpeg_version!(mpeg_version_id),
do: BiMap.fetch!(mpeg_version_map(), mpeg_version_id)
end
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
defmodule Membrane.AAC.Format.MixProject do
use Mix.Project

@version "0.8.1"
@version "0.9.0"
@github_url "https://github.com/membraneframework/membrane_aac_format"

def project do
Expand Down
Loading