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