15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* From dev/ppb_audio_input_dev.idl modified Thu Dec 12 15:35:39 2013. */ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_C_DEV_PPB_AUDIO_INPUT_DEV_H_ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_C_DEV_PPB_AUDIO_INPUT_DEV_H_ 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/dev/ppb_device_ref_dev.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/pp_array_output.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_bool.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_completion_callback.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_instance.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_macros.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_resource.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_stdint.h" 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/c/pp_time.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define PPB_AUDIO_INPUT_DEV_INTERFACE_0_3 "PPB_AudioInput(Dev);0.3" 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define PPB_AUDIO_INPUT_DEV_INTERFACE_0_4 "PPB_AudioInput(Dev);0.4" 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define PPB_AUDIO_INPUT_DEV_INTERFACE PPB_AUDIO_INPUT_DEV_INTERFACE_0_4 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @file 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file defines the <code>PPB_AudioInput_Dev</code> interface, which 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * provides realtime audio input capture. 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Typedefs 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{ 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_AudioInput_Callback</code> defines the type of an audio callback 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * function used to provide the audio buffer with data. This callback will be 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * called on a separate thread from the creation thread. 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] sample_buffer A buffer providing audio input data. 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] buffer_size_in_bytes The size of the buffer in bytes. 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] latency The time that has elapsed since the data was recorded. 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[inout] user_data An opaque pointer that was passed into 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * <code>PPB_AudioInput_Dev.Open()</code>. 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*PPB_AudioInput_Callback)(const void* sample_buffer, 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t buffer_size_in_bytes, 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_TimeDelta latency, 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void* user_data); 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)typedef void (*PPB_AudioInput_Callback_0_3)(const void* sample_buffer, 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch uint32_t buffer_size_in_bytes, 54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void* user_data); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @} 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Interfaces 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{ 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <code>PPB_AudioInput_Dev</code> interface contains pointers to several 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * functions for handling audio input resources. 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * TODO(brettw) before moving out of dev, we need to resolve the issue of 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * the mismatch between the current audio config interface and this one. 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * In particular, the params for input assume stereo, but this class takes 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * everything as mono. We either need to not use an audio config resource, or 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * add mono support. 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * In addition, RecommendSampleFrameCount is completely wrong for audio input. 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * RecommendSampleFrameCount returns the frame count for the current 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * low-latency output device, which is likely inappropriate for a random input 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * device. We may want to move the "recommend" functions to the input or output 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * classes rather than the config. 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 80eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochstruct PPB_AudioInput_Dev_0_4 { 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Creates an audio input resource. 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] instance A <code>PP_Instance</code> identifying one instance of 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * a module. 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Resource</code> corresponding to an audio input resource 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * if successful, 0 if failed. 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Resource (*Create)(PP_Instance instance); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Determines if the given resource is an audio input resource. 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> containing a resource. 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Bool</code> containing <code>PP_TRUE</code> if the given 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * resource is an audio input resource, otherwise <code>PP_FALSE</code>. 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool (*IsAudioInput)(PP_Resource resource); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Enumerates audio input devices. 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] audio_input A <code>PP_Resource</code> corresponding to an audio 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * input resource. 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] output An output array which will receive 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * <code>PPB_DeviceRef_Dev</code> resources on success. Please note that the 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * ref count of those resources has already been increased by 1 for the 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * caller. 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to run on 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * completion. 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return An error code from <code>pp_errors.h</code>. 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t (*EnumerateDevices)(PP_Resource audio_input, 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct PP_ArrayOutput output, 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PP_CompletionCallback callback); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Requests device change notifications. 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] audio_input A <code>PP_Resource</code> corresponding to an audio 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * input resource. 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] callback The callback to receive notifications. If not NULL, it 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * will be called once for the currently available devices, and then every 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * time the list of available devices changes. All calls will happen on the 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * same thread as the one on which MonitorDeviceChange() is called. It will 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * receive notifications until <code>audio_input</code> is destroyed or 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * <code>MonitorDeviceChange()</code> is called to set a new callback for 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * <code>audio_input</code>. You can pass NULL to cancel sending 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * notifications. 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[inout] user_data An opaque pointer that will be passed to 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * <code>callback</code>. 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @return An error code from <code>pp_errors.h</code>. 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int32_t (*MonitorDeviceChange)(PP_Resource audio_input, 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_MonitorDeviceChangeCallback callback, 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void* user_data); 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Opens an audio input device. No sound will be captured until 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * StartCapture() is called. 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] audio_input A <code>PP_Resource</code> corresponding to an audio 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * input resource. 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] device_ref Identifies an audio input device. It could be one of 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the resource in the array returned by EnumerateDevices(), or 0 which means 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the default device. 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] config A <code>PPB_AudioConfig</code> audio configuration 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * resource. 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] audio_input_callback A <code>PPB_AudioInput_Callback</code> 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * function that will be called when data is available. 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[inout] user_data An opaque pointer that will be passed into 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>audio_input_callback</code>. 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to run when this 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * open operation is completed. 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return An error code from <code>pp_errors.h</code>. 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t (*Open)(PP_Resource audio_input, 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Resource device_ref, 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Resource config, 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PPB_AudioInput_Callback audio_input_callback, 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void* user_data, 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PP_CompletionCallback callback); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns an audio config resource for the given audio input resource. 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] audio_input A <code>PP_Resource</code> corresponding to an audio 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * input resource. 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Resource</code> containing the audio config resource if 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * successful. 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Resource (*GetCurrentConfig)(PP_Resource audio_input); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Starts the capture of the audio input resource and begins periodically 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * calling the callback. 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] audio_input A <code>PP_Resource</code> corresponding to an audio 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * input resource. 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Bool</code> containing <code>PP_TRUE</code> if 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * successful, otherwise <code>PP_FALSE</code>. 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Also returns <code>PP_TRUE</code> (and is a no-op) if called while capture 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * is already started. 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool (*StartCapture)(PP_Resource audio_input); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Stops the capture of the audio input resource. 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] audio_input A PP_Resource containing the audio input resource. 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Bool</code> containing <code>PP_TRUE</code> if 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * successful, otherwise <code>PP_FALSE</code>. 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Also returns <code>PP_TRUE</code> (and is a no-op) if called while capture 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * is already stopped. If a buffer is being captured, StopCapture will block 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * until the call completes. 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool (*StopCapture)(PP_Resource audio_input); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Closes the audio input device, and stops capturing if necessary. It is 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * not valid to call Open() again after a call to this method. 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * If an audio input resource is destroyed while a device is still open, then 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * it will be implicitly closed, so you are not required to call this method. 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] audio_input A <code>PP_Resource</code> corresponding to an audio 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * input resource. 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void (*Close)(PP_Resource audio_input); 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 211eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochtypedef struct PPB_AudioInput_Dev_0_4 PPB_AudioInput_Dev; 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 213eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochstruct PPB_AudioInput_Dev_0_3 { 214eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_Resource (*Create)(PP_Instance instance); 215eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_Bool (*IsAudioInput)(PP_Resource resource); 216eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32_t (*EnumerateDevices)(PP_Resource audio_input, 217eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch struct PP_ArrayOutput output, 218eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch struct PP_CompletionCallback callback); 219eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32_t (*MonitorDeviceChange)(PP_Resource audio_input, 220eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_MonitorDeviceChangeCallback callback, 221eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void* user_data); 222eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32_t (*Open)(PP_Resource audio_input, 223eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_Resource device_ref, 224eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_Resource config, 2255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PPB_AudioInput_Callback_0_3 audio_input_callback, 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void* user_data, 2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct PP_CompletionCallback callback); 2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_Resource (*GetCurrentConfig)(PP_Resource audio_input); 2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_Bool (*StartCapture)(PP_Resource audio_input); 2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_Bool (*StopCapture)(PP_Resource audio_input); 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void (*Close)(PP_Resource audio_input); 2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @} 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* PPAPI_C_DEV_PPB_AUDIO_INPUT_DEV_H_ */ 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 239