blob: 94ee06fa6c79dd793b02975258bbe1cc4d1877e3 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// https://github.com/WICG/web-codecs
[
Exposed=(Window,DedicatedWorker),
RuntimeEnabled=WebCodecs,
ActiveScriptWrappable
] interface VideoEncoder {
[CallWith=ScriptState, RaisesException, MeasureAs=WebCodecsVideoEncoder]
constructor(VideoEncoderInit init);
// The number of pending encode requests. This does not include requests
// that have been sent to the underlying codec.
readonly attribute long encodeQueueSize;
// Enqueues a control message to configure the video encoder for encoding
// frames as described by config.
[RaisesException]
void configure(VideoEncoderConfig config);
// Enqueues a request to encode a frame.
// Results of the encoding (EncodedVideoChunk) are returned via
// the output callback provided in configure().
[RaisesException]
void encode(VideoFrame frame,
optional VideoEncoderEncodeOptions options = {});
// Enqueues a request to produce outputs for all already encoded frames.
// Resolved after emitting outputs for all previously encoded frames.
[RaisesException]
Promise<void> flush();
// Discard all pending work and current encoder configuration.
//
// Output for earlier encoding requests will not be emitted.
// The next encoded frame will be a keyframe.
// Requires configure() to be call to set configuration once again.
[RaisesException]
void reset();
// Enqueues a request to shut down the encoder and free its resources.
[RaisesException]
void close();
// Which state the encoder is in, indicating which methods can be called.
readonly attribute CodecState state;
};