lib/membrane_vp9.ex

defmodule Membrane.VP9 do
  @moduledoc """
  This module provides a format for a VP9 encoded video stream.
  """

  @typedoc """
  Width of single frame in pixels.

  Allowed values may be restricted by used encoding parameters, for example, when using
  4:2:0 chroma subsampling dimensions must be divisible by 2.
  """
  @type width :: pos_integer()

  @typedoc """
  Height of single frame in pixels.

  Allowed values may be restricted by used encoding parameters, for example, when using
  4:2:0 chroma subsampling dimensions must be divisible by 2.
  """
  @type height :: pos_integer()

  @typedoc """
  Format definition for a VP9 video stream.
  """
  @type t :: %__MODULE__{
          width: width(),
          height: height()
        }

  @enforce_keys [
    :width,
    :height
  ]
  defstruct @enforce_keys
end