RTCEncodedVideoFrame: type property

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

The readonly type property of the RTCEncodedVideoFrame interface indicates whether this frame is a key frame, delta frame, or empty frame.

Value

The type can have one of the following values:

key

This is a "key frame", which contains all the information needed to render an image. It can be decoded without reference to any other frames.

delta

This is a "delta frame", which contains changes to an image relative to some previous frame. The frame cannot be decoded without access to the frame(s) that it references.

empty

This frame contains no data. This value is unexpected, and may indicate that the transform is holding a reference to frames after they have been transformed and piped to RTCRtpScriptTransformer.writable (after transferring back to the main-thread WebRTC pipeline the worker side frame object will have no data).

Examples

The implementation of a transform() function in a WebRTC Encoded Transform can look at the type and modify the transform code based on whether it is dealing with a key frame or delta frame:

js
const transformer = new TransformStream({
  transform: async (encodedFrame, controller) => {
    if (encodedFrame.type === "key") {
      // Apply key frame transformation
    } else if (encodedFrame.type === "delta") {
      // Apply delta frame transformation
    } else {
      // Empty
      // Check transform is not holding reference to frames after processing!
    }
    controller.enqueue(encodedFrame);
  },
});

Specifications

Specification
WebRTC Encoded Transform
# dom-rtcencodedvideoframe-type

Browser compatibility

BCD tables only load in the browser

See also