blob: cfec86c32b9744a909849523eb719aaad9f2e0a3 [file] [log] [blame]
// Copyright 2021 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 AudioEncoder {
[CallWith=ScriptState, RaisesException, MeasureAs=WebCodecsAudioEncoder]
constructor(AudioEncoderInit 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 audio encoder for encoding
// audio frames as described by config.
[RaisesException]
void configure(AudioEncoderConfig config);
// Enqueues a request to encode a frame.
// Results of the encoding (EncodedAudioChunk) are returned via
// the output callback provided in configure().
[RaisesException]
void encode(AudioFrame frame);
// 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;
};