MediaCodecs.AV1.OBU (MediCodecs v0.10.0)

View Source

Module describing an AV1 OBU (Open Bitstream Unit).

Summary

Functions

Clears the obu_has_size flag.

Checks if an OBU is a keyframe.

Parses a binary into an OBU struct.

Same as parse/1, but raises in case of failure.

Sets the obu_has_size flag.

Returns the OBU type from a binary OBU.

Types

t()

@type t() :: %MediaCodecs.AV1.OBU{
  header: MediaCodecs.AV1.OBU.Header.t(),
  payload: binary() | MediaCodecs.AV1.OBU.SequenceHeader.t()
}

Functions

clear_size_flag(obu)

@spec clear_size_flag(binary()) :: binary()

Clears the obu_has_size flag.

iex> MediaCodecs.AV1.OBU.clear_size_flag(<<10, 10, 0, 0, 0, 3, 54, 57, 231, 255, 204, 66>>)
<<8, 0, 0, 0, 3, 54, 57, 231, 255, 204, 66>>

keyframe?(arg1)

@spec keyframe?(binary()) :: boolean()

Checks if an OBU is a keyframe.

iex> MediaCodecs.AV1.OBU.keyframe?(<<18, 0>>)
false

iex> MediaCodecs.AV1.OBU.keyframe?(<<10, 11, 0, 0, 0, 66, 167, 191, 230, 46, 223, 200, 66>>)
false

iex> MediaCodecs.AV1.OBU.keyframe?(<<50, 218, 169, 3, 20, 0, 52, 162, 224, 0, 0, 136, 0>>)
true

parse(data)

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

Parses a binary into an OBU struct.

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

parse!(data)

@spec parse!(binary()) :: t()

Same as parse/1, but raises in case of failure.

set_size_flag(obu)

@spec set_size_flag(binary()) :: binary()

Sets the obu_has_size flag.

iex> MediaCodecs.AV1.OBU.set_size_flag(<<8, 0, 0, 0, 3, 54, 57, 231, 255, 204, 66>>)
<<10, 10, 0, 0, 0, 3, 54, 57, 231, 255, 204, 66>>

type(obu)

Returns the OBU type from a binary OBU.

iex> MediaCodecs.AV1.OBU.type(<<10, 10, 0, 0, 0, 3, 54, 57, 231, 255, 204, 66>>)
:sequence_header