// Copyright 2017 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/mojom/audio_parameters.mojom";
import "media/mojo/mojom/media_types.mojom";

// An interface for controlling an audio input stream.
// On error, the message pipe is closed.
// To close the stream, just close the message pipe.
interface AudioInputStream {
  // Starts recording audio, can be called only once.
  Record();

  // Sets volume. Volume must be in the range [0, 1].
  SetVolume(double volume);
};

// An interface for receiving notifications of state changes of an
// AudioInputStream.
interface AudioInputStreamClient {
  OnError(InputStreamErrorCode code);
  OnMutedStateChanged(bool is_muted);
};

// An AudioInputStreamObserver gets notifications about events related to an
// AudioInputStream. DidStartRecording() is invoked when the stream starts
// recording. Stream destruction is notified through binding connection error.
interface AudioInputStreamObserver {
  // These values are persisted to logs. Entries should not be renumbered and
  // numeric values should never be reused.
  enum DisconnectReason {
    // The Disconnect reason wasn't given explicitly. This probably means that
    // the audio service crashed.
    kDefault = 0,
    // This code is used as disconnect reason when stream ended or failed to
    // start due to an unrecoverable platform error, e.g. the hardware device is
    // busy or disconnected.
    kPlatformError = 1,
    kTerminatedByClient = 2,
    kStreamCreationFailed = 3,
    kDocumentDestroyed = 4,
    kSystemPermissions = 5,
    kDeviceInUse = 6,
  };

  // It will be called only once when input stream starts recording.
  DidStartRecording();
};
