# `Parlora.AudioFrame`
[🔗](https://github.com/hfiguera/parlora/blob/v0.1.0/lib/parlora/audio_frame.ex#L1)

An ordered audio fragment. Locally derived timestamps are explicitly labeled.

# `clock`

```elixir
@type clock() :: :local_monotonic | :provider | :unknown
```

# `t`

```elixir
@type t() :: %Parlora.AudioFrame{
  clock: clock(),
  data: binary(),
  discontinuity: boolean(),
  duration_us: non_neg_integer(),
  format: Parlora.AudioFormat.t(),
  generation: non_neg_integer(),
  playback_epoch: non_neg_integer() | nil,
  sequence: non_neg_integer(),
  stream_id: String.t(),
  timestamp_us: integer() | nil
}
```

# `new`

```elixir
@spec new(binary(), Parlora.AudioFormat.t(), String.t(), non_neg_integer(), keyword()) ::
  t()
```

# `pcm`

```elixir
@spec pcm(binary(), String.t(), non_neg_integer(), keyword()) :: t()
```

# `validate`

```elixir
@spec validate(term(), Parlora.AudioFormat.t(), Parlora.Limits.t()) ::
  :ok | {:error, Parlora.Error.t()}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
