/* Copyright (c) 2012 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.
 */
/**
 * This file defines the trusted audio input interface.
 */

label Chrome {
  M17 = 0.1
};

/**
 * This interface is to be used by proxy implementations. All functions should
 * be called from the main thread only. The resource returned is an Audio input
 * resource; most of the PPB_AudioInput interface is also usable on this
 * resource.
 */
[version=0.1, macro="PPB_AUDIO_INPUT_TRUSTED_DEV_INTERFACE"]
interface PPB_AudioInputTrusted_Dev {
  /** Returns an audio input resource. */
  PP_Resource CreateTrusted(
      [in] PP_Instance instance);

  /**
   * Opens a paused audio input interface, used by trusted side of proxy.
   * Returns PP_ERROR_WOULD_BLOCK on success, and invokes the |create_callback|
   * asynchronously to complete. As this function should always be invoked from
   * the main thread, do not use the blocking variant of PP_CompletionCallback.
   */
  int32_t Open(
      [in] PP_Resource audio_input,
      [in] PP_Resource config,
      [in] PP_CompletionCallback create_callback);

  /**
   * Get the sync socket. Use once Open has completed.
   * Returns PP_OK on success.
   */
  int32_t GetSyncSocket(
      [in] PP_Resource audio_input,
      [out] handle_t sync_socket);

  /**
   * Get the shared memory interface. Use once Open has completed.
   * Returns PP_OK on success.
   */
  int32_t GetSharedMemory(
      [in] PP_Resource audio_input,
      [out] handle_t shm_handle,
      [out] uint32_t shm_size);
};