Skip to main content

Overview

This module provides core type definitions used throughout the WebCodecs API. These types ensure type safety and compatibility with the W3C WebCodecs specification while adapting to Node.js environments.

Type Aliases

Common type definitions like BufferSource and CodecState

Classes

DOMRectReadOnly and WebCodecsDOMException classes

Error Handling

DOM exception types with standard error codes

Codec States

State machine for encoder and decoder lifecycles

BufferSource

A union type representing binary data that can be passed to WebCodecs APIs.
BufferSource accepts any typed array (Uint8Array, Float32Array, etc.) or raw ArrayBuffer. This is the standard way to pass binary data like encoded video frames or audio samples.

Examples


CodecState

Represents the current state of a video or audio encoder/decoder.

State Values

unconfigured
string
Initial state before configure() is called. The codec cannot process data in this state.
configured
string
Active state after successful configure() call. The codec is ready to encode or decode data.
closed
string
Terminal state after close() is called. The codec cannot be used again and resources are released.

State Transitions

The codec follows a strict state machine:
1

unconfigured to configured

Call configure() with a valid configuration object. The codec validates the configuration and prepares internal resources.
2

configured to unconfigured

Call reset() to return to the unconfigured state. This clears any pending work and allows reconfiguration with different parameters.
3

Any state to closed

Call close() from any state to permanently shut down the codec and release all resources. This is irreversible.
Attempting to call encode(), decode(), or configure() on a closed codec will throw an InvalidStateError. Always check the state property before performing operations.

Usage Example


WebCodecsDOMException

A DOM-style exception class for WebCodecs errors. Extends the standard Error class with a numeric code property for compatibility with browser APIs.

Constructor

message
string
Optional error message describing what went wrong.
name
string
Optional error name (e.g., “NotSupportedError”, “InvalidStateError”). Determines the numeric code.

Instance Properties

name
string
required
The name of the error (e.g., “NotSupportedError”, “InvalidStateError”, “AbortError”).
code
number
required
Numeric error code matching the W3C DOM exception codes.
message
string
required
Human-readable description of the error.

Common Error Codes

The following table lists the error codes most frequently encountered when using WebCodecs:
NotSupportedError (code 9) is thrown when:
  • The codec string is invalid or not recognized
  • The codec is not available on the current platform
  • The configuration parameters are outside supported ranges
InvalidStateError (code 11) is thrown when:
  • Calling encode()/decode() before configure()
  • Calling any method on a closed codec
  • Calling configure() on an already closed codec
AbortError (code 20) is thrown when:
  • reset() is called while operations are pending
  • close() is called while operations are pending
  • The codec encounters an unrecoverable internal error

All Error Codes

Error Handling Example


DOMRectReadOnly

An immutable rectangle class representing position and dimensions. Used by VideoFrame.visibleRect to describe the visible region of a video frame.

Constructor

x
number
default:"0"
The x-coordinate of the rectangle’s origin.
y
number
default:"0"
The y-coordinate of the rectangle’s origin.
width
number
default:"0"
The width of the rectangle.
height
number
default:"0"
The height of the rectangle.

Properties

x
number
required
The x-coordinate of the rectangle’s origin (left edge for positive width).
y
number
required
The y-coordinate of the rectangle’s origin (top edge for positive height).
width
number
required
The width of the rectangle.
height
number
required
The height of the rectangle.
top
number
required
The y-coordinate of the top edge (minimum of y and y + height).
right
number
required
The x-coordinate of the right edge (maximum of x and x + width).
bottom
number
required
The y-coordinate of the bottom edge (maximum of y and y + height).
left
number
required
The x-coordinate of the left edge (minimum of x and x + width).

Methods

toJSON()

Returns a plain object representation of the rectangle.

Usage Example


Helper Functions

createDOMException()

Factory function to create a WebCodecsDOMException instance.
message
string
Optional error message.
name
string
Optional error name that determines the numeric code.

Type Aliases

WebCodecsError

An alias for WebCodecsDOMException for convenience.

DOMException

Re-export of WebCodecsDOMException for browser API compatibility.

See Also

VideoEncoder

Encode raw video frames to compressed chunks

VideoDecoder

Decode compressed video to raw frames

AudioEncoder

Encode raw audio samples to compressed data

AudioDecoder

Decode compressed audio to raw samples