- AudioDecoder can decode AAC, FLAC, MP3, Opus, and Vorbis.
- VideoDecoder can decode VP8, VP9, H.264 and AV1 (AV1 not available on Android).
- VideoEncoder can encode VP8 and VP9.
- ImageDecoder can decode BMP, GIF, JPG, PNG, ICO, AVIF, and WebP.
- AudioEncoder is not yet implemented.
- VideoEncoder can encode H.264, but it is limited:
- H.264 encoding is not available on all platforms.
- The output format is Annex B. We expect the format to be AVC in the future.
- new VideoFrame(pixelFormat, planes, frameInit) is not available.
- ImageDecoder can’t decode SVG. We don’t expect SVG to ever be supported.
- AudioDecoder and VideoDecoder call error(undefined) to report an error. We expect the value to be a DOMException in the future.
- VideoDecoder, VideoEncoder, and EncodedVideoChunk are not available in Worker contexts. Worker support will be added in the future.
- VideoEncoder does not emit VideoDecoderConfig objects to describe its output. We expect configs to be emitted in the future.
- Constructing a VideoFrame from an ImageBitmap produces an I420 frame. We expect this to change to RGBA or an opaque format in the future.
- In some cases a valid VideoFrame has format === null and planes === null. VideoFrame.createImageBitmap() is available. We expect to add explicit conversion APIs to address these cases in the future.
- ImageFrame does not provide YUV access. We expect that ImageDecoder will output VideoFrame objects in the future.
- H.264 extradata and payload must be provided in AVC format.
AudioDecoder, VideoDecoder, and VideoEncoder may produce outputs or errors after calling reset().