web api instance method
ImageDecoder: decode() method
Secure contextAvailable in workers
The decode() method of the ImageDecoder interface enqueues a control message to decode the frame of an image.
Syntax
decode()
decode(options)
Parameters
optionsOptional- : An object containing the following members:
frameIndexOptional- : An integer representing the index of the frame to decode. Defaults to
0(the first frame).
- : An integer representing the index of the frame to decode. Defaults to
completeFramesOnlyOptional- : A
Booleandefaulting totrue. Whentrue, thePromisereturned by the method resolves only when the image is fully decoded. Whenfalse, the method will return a newPromisethat may resolve with a partially decoded image. The method can be called repeatedly untilresult.completeis true, with each step providing an image with the next available level of detail.
- : A
- : An object containing the following members:
Return value
A Promise that resolves with an object containing the following members:
image- : A
VideoFramecontaining the decoded image.
- : A
complete- : A
Boolean, iftrueindicates thatimagecontains the final full-detail output.
- : A
Exceptions
If an error occurs, the promise will resolve with following exception:
InvalidStateErrorDOMException- : Returned if any of the following conditions apply:
closeis true, meaningclose()has already been called.- The requested frame does not exist.
- : Returned if any of the following conditions apply:
Examples
Synchronous decoding of a completed image frame
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);
Partial decoding of a progressive image frame
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;
}
Specifications
SpecificationsStandards references are available on the canonical MDN page.
Browser compatibility
Browser compatibilityCompatibility data is available on the canonical MDN page.