// Copyright 2016 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.

module media.mojom;

import "media/mojo/interfaces/media_types.mojom";

interface AudioDecoder {
  // Initialize the decoder. This must be called before any other method.
  //
  // TODO(sandersd): Rename to Initialize() if/when
  // media::AudioDecoder::Initialize() is renamed to Configure().
  Construct(associated AudioDecoderClient client);

  // Initializes the AudioDecoder with the audio codec configuration and CDM id.
  // For the unencrypted streams the |cdm_id| is ignored. Executed the callback
  // with whether the initialization succeeded, and whether the pipeline needs
  // bitstream conversion.
  Initialize(AudioDecoderConfig config, int32 cdm_id)
    => (bool success, bool needs_bitstream_conversion);

  // Establishes data connection. Should be called before Decode().
  SetDataSource(handle<data_pipe_consumer> receive_pipe);

  // Sends the |buffer| to the underlying codec. Should be called only after
  // Initialize() succeeds. The callback with the status is called after the
  // decoder has accepted corresponding DecoderBuffer, indicating that the
  // pipeline can send next buffer to decode.
  // If |buffer| is an EOS buffer then the decoder must be flushed, i.e. all
  // pending buffers should be processed, the corresponding decoded buffers
  // should be returned to the proxy, and only then the service should return
  // DecoderStatus.
  Decode(DecoderBuffer buffer) => (DecodeStatus status);

  // Resets decoder state. Should be called only if Initialize() succeeds.
  // All pending Decode() requests will be finished or aborted, then the method
  // executes the callback.
  Reset() => ();
};

interface AudioDecoderClient {
  // Sends the decoded audio buffer back to the proxy.
  OnBufferDecoded(AudioBuffer buffer);
};
