| // 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; |
| }; |