# `VideoInterop.Format`
[🔗](https://github.com/emerge-elixir/video_interop/blob/v0.1.0/lib/video_interop/format.ex#L1)

Framework-neutral video format associated with a sequence of frames.

`framerate: nil` represents an unknown cadence. The storage-specific format
is held in `storage`, allowing future non-DMA-BUF storage without changing
the outer video interpretation fields. `acquire_sync` declares whether frames
use implicit synchronization, sync files, or a compatibility per-frame mix.

# `acquire_sync`

```elixir
@type acquire_sync() :: :implicit | :sync_file | :per_frame
```

# `interlace_mode`

```elixir
@type interlace_mode() ::
  :progressive | :interlaced_top_first | :interlaced_bottom_first | :mixed
```

# `t`

```elixir
@type t() :: %VideoInterop.Format{
  acquire_sync: acquire_sync(),
  alpha_mode: :opaque | :straight | :premultiplied,
  colorimetry: VideoInterop.Colorimetry.t(),
  framerate: {pos_integer(), pos_integer()} | nil,
  height: pos_integer(),
  interlace_mode: interlace_mode(),
  pixel_aspect_ratio: {pos_integer(), pos_integer()},
  storage: VideoInterop.Binary.Format.t() | VideoInterop.DMABuf.Format.t(),
  width: pos_integer()
}
```

---

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