lib/membrane_mp4/payload.ex

defmodule Membrane.MP4.Payload do
  @moduledoc """
  MP4 payload description.

  Only a payloaded stream can be muxed into MP4 container.
  """

  @typedoc """
  MP4 payload description.

  Contains the following fields:
  - content - a struct with content-specific information
  - timescale - used to express sample durations within MP4. Each sample duration
    should be a multiply of the timescale for good timing accuracy. Expressed in ticks per second.
  - height - frame height in pixels, should be set to 0 for non-visual streams
  - width - frame width in pixels, should be set to 0 for non-visual streams
  """
  @type t :: %__MODULE__{
          content: struct,
          timescale: pos_integer,
          height: non_neg_integer,
          width: non_neg_integer
        }
  @enforce_keys [:content, :timescale]
  defstruct @enforce_keys ++ [height: 0, width: 0]
end