lib/errors/invalid_smpte_rate.ex

defmodule Vtc.Framerate.InvalidSMPTEValueError do
  @moduledoc """
  Exception returned when a function expects a valid SMPTE framerate.

  Valid SMPTE rates are:

  - Non-drop NTSC framerates. Must be cleanly divisible by 1001.
  - Drop-frame framerates. Must be cleanly divisible by 30_000/1001.
  - Whole-frame framerates such as 24fps.
  """
  defexception []

  @typedoc """
  Type of [InvalidSMPTEValueError](`Vtc.Framerate.InvalidSMPTEValueError`).
  """
  @type t() :: %__MODULE__{}

  @doc """
  Exception message.
  """
  @spec message(t()) :: String.t()
  def message(_), do: "framerate not valid SMPTE value. must be non-drop, drop, or whole-frame"
end