Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Dedicated Web Workers.
The decode() method of the ImageDecoder interface enqueues a control message to decode the frame of an image.
decode()
decode(options)options OptionalAn object containing the following members:
frameIndex OptionalAn integer representing the index of the frame to decode. Defaults to 0 (the first frame).
completeFramesOnly OptionalA Boolean defaulting to true. When true, the Promise returned by the method resolves only when the image is fully decoded. When false, the method will return a new Promise that may resolve with a partially decoded image. The method can be called repeatedly until result.complete is true, with each step providing an image with the next available level of detail.
A Promise that resolves with an object containing the following members:
imageA VideoFrame containing the decoded image.
completeA Boolean, if true indicates that image contains the final full-detail output.
If an error occurs, the promise will resolve with following exception:
InvalidStateError DOMExceptionReturned if any of the following conditions apply:
close is true, meaning close() has already been called.The following example decodes the second frame (at index 1) and prints the resulting VideoFrame to the console.
let result = await imageDecoder.decode({ frameIndex: 1 });
console.log(result.image);The following example decodes the first frame repeatedly until its complete:
let complete = false;
while (!complete) {
// The promise returned by `decode()` will only resolve when a new
// level of detail is available or the frame is complete. I.e.,
// calling `decode()` in a loop like this won't needlessly spin.
let result = await imageDecoder.decode({ completeFramesOnly: false });
// Do something with `result.image`.
complete = result.complete;
}