MediaCodecs.AV1.OBU.Header (MediCodecs v0.10.0)

View Source

Module describing an AV1 OBU (Open Bitstream Unit) header.

Summary

Functions

Parses an OBU header.

Types

obu_extension_header()

@type obu_extension_header() :: %{temporal_id: integer(), spatial_id: integer()}

obu_type()

@type obu_type() ::
  :sequence_header
  | :temporal_delimiter
  | :frame_header
  | :tile_group
  | :metadata
  | :frame
  | :redudant_frame_header
  | :tile_list
  | :padding
  | :reserved

t()

@type t() :: %MediaCodecs.AV1.OBU.Header{
  extension_flag: boolean(),
  extension_header: obu_extension_header() | nil,
  has_size: boolean(),
  type: obu_type()
}

Functions

parse(data)

@spec parse(binary()) :: {:ok, t(), binary()} | {:error, :invalid_header}

Parses an OBU header.

iex> MediaCodecs.AV1.OBU.Header.parse(<<18, 0>>)
{:ok, %MediaCodecs.AV1.OBU.Header{
  type: :temporal_delimiter,
  extension_flag: false,
  has_size: true,
  extension_header: nil
}, <<0>>}

iex> MediaCodecs.AV1.OBU.Header.parse(<<10, 10, 0, 0, 0, 3, 54, 57>>)
{:ok, %MediaCodecs.AV1.OBU.Header{
  type: :sequence_header,
  extension_flag: false,
  has_size: true,
  extension_header: nil
}, <<10, 0, 0, 0, 3, 54, 57>>}

iex> MediaCodecs.AV1.OBU.Header.parse(<<31, 200, 0, 0, 0, 3, 54, 57>>)
{:ok, %MediaCodecs.AV1.OBU.Header{
  type: :frame_header,
  extension_flag: true,
  has_size: true,
  extension_header: %{spatial_id: 1, temporal_id: 6}
}, <<0, 0, 0, 3, 54, 57>>}

iex> MediaCodecs.AV1.OBU.Header.parse(<<31>>)
{:error, :invalid_header}