1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "ppapi/c/dev/ppb_audio_input_dev.h" 6#include "ppapi/c/pp_completion_callback.h" 7#include "ppapi/c/pp_errors.h" 8#include "ppapi/shared_impl/tracked_callback.h" 9#include "ppapi/thunk/enter.h" 10#include "ppapi/thunk/ppb_audio_input_api.h" 11#include "ppapi/thunk/ppb_instance_api.h" 12#include "ppapi/thunk/resource_creation_api.h" 13#include "ppapi/thunk/thunk.h" 14 15namespace ppapi { 16namespace thunk { 17 18namespace { 19 20PP_Resource Create(PP_Instance instance) { 21 VLOG(4) << "PPB_AudioInput_Dev::Create()"; 22 EnterResourceCreation enter(instance); 23 if (enter.failed()) 24 return 0; 25 return enter.functions()->CreateAudioInput(instance); 26} 27 28PP_Bool IsAudioInput(PP_Resource resource) { 29 VLOG(4) << "PPB_AudioInput_Dev::IsAudioInput()"; 30 EnterResource<PPB_AudioInput_API> enter(resource, false); 31 return PP_FromBool(enter.succeeded()); 32} 33 34int32_t EnumerateDevices_0_2(PP_Resource audio_input, 35 PP_Resource* devices, 36 struct PP_CompletionCallback callback) { 37 VLOG(4) << "PPB_AudioInput_Dev::EnumerateDevices()"; 38 EnterResource<PPB_AudioInput_API> enter(audio_input, callback, true); 39 if (enter.failed()) 40 return enter.retval(); 41 return enter.SetResult(enter.object()->EnumerateDevices0_2( 42 devices, 43 enter.callback())); 44} 45 46int32_t EnumerateDevices(PP_Resource audio_input, 47 struct PP_ArrayOutput output, 48 struct PP_CompletionCallback callback) { 49 VLOG(4) << "PPB_AudioInput_Dev::EnumerateDevices()"; 50 EnterResource<PPB_AudioInput_API> enter(audio_input, callback, true); 51 if (enter.failed()) 52 return enter.retval(); 53 return enter.SetResult(enter.object()->EnumerateDevices(output, 54 enter.callback())); 55} 56 57int32_t MonitorDeviceChange(PP_Resource audio_input, 58 PP_MonitorDeviceChangeCallback callback, 59 void* user_data) { 60 VLOG(4) << "PPB_AudioInput_Dev::MonitorDeviceChange()"; 61 EnterResource<PPB_AudioInput_API> enter(audio_input, true); 62 if (enter.failed()) 63 return enter.retval(); 64 return enter.object()->MonitorDeviceChange(callback, user_data); 65} 66 67int32_t Open_0_2(PP_Resource audio_input, 68 PP_Resource device_ref, 69 PP_Resource config, 70 PPB_AudioInput_Callback_0_2 audio_input_callback, 71 void* user_data, 72 struct PP_CompletionCallback callback) { 73 VLOG(4) << "PPB_AudioInput_Dev::Open()"; 74 EnterResource<PPB_AudioInput_API> enter(audio_input, callback, true); 75 if (enter.failed()) 76 return enter.retval(); 77 return enter.SetResult(enter.object()->Open0_2(device_ref, 78 config, 79 audio_input_callback, 80 user_data, 81 enter.callback())); 82} 83 84int32_t Open(PP_Resource audio_input, 85 PP_Resource device_ref, 86 PP_Resource config, 87 PPB_AudioInput_Callback audio_input_callback, 88 void* user_data, 89 struct PP_CompletionCallback callback) { 90 VLOG(4) << "PPB_AudioInput_Dev::Open()"; 91 EnterResource<PPB_AudioInput_API> enter(audio_input, callback, true); 92 if (enter.failed()) 93 return enter.retval(); 94 return enter.SetResult(enter.object()->Open(device_ref, 95 config, 96 audio_input_callback, 97 user_data, 98 enter.callback())); 99} 100 101PP_Resource GetCurrentConfig(PP_Resource audio_input) { 102 VLOG(4) << "PPB_AudioInput_Dev::GetCurrentConfig()"; 103 EnterResource<PPB_AudioInput_API> enter(audio_input, true); 104 if (enter.failed()) 105 return 0; 106 return enter.object()->GetCurrentConfig(); 107} 108 109PP_Bool StartCapture(PP_Resource audio_input) { 110 VLOG(4) << "PPB_AudioInput_Dev::StartCapture()"; 111 EnterResource<PPB_AudioInput_API> enter(audio_input, true); 112 if (enter.failed()) 113 return PP_FALSE; 114 return enter.object()->StartCapture(); 115} 116 117PP_Bool StopCapture(PP_Resource audio_input) { 118 VLOG(4) << "PPB_AudioInput_Dev::StopCapture()"; 119 EnterResource<PPB_AudioInput_API> enter(audio_input, true); 120 if (enter.failed()) 121 return PP_FALSE; 122 return enter.object()->StopCapture(); 123} 124 125void Close(PP_Resource audio_input) { 126 VLOG(4) << "PPB_AudioInput_Dev::Close()"; 127 EnterResource<PPB_AudioInput_API> enter(audio_input, true); 128 if (enter.failed()) 129 return; 130 enter.object()->Close(); 131} 132 133const PPB_AudioInput_Dev_0_2 g_ppb_audioinput_dev_thunk_0_2 = { 134 &Create, 135 &IsAudioInput, 136 &EnumerateDevices_0_2, 137 &Open_0_2, 138 &GetCurrentConfig, 139 &StartCapture, 140 &StopCapture, 141 &Close 142}; 143 144const PPB_AudioInput_Dev_0_3 g_ppb_audioinput_dev_thunk_0_3 = { 145 &Create, 146 &IsAudioInput, 147 &EnumerateDevices, 148 &MonitorDeviceChange, 149 &Open_0_2, 150 &GetCurrentConfig, 151 &StartCapture, 152 &StopCapture, 153 &Close 154}; 155 156const PPB_AudioInput_Dev_0_4 g_ppb_audioinput_dev_thunk_0_4 = { 157 &Create, 158 &IsAudioInput, 159 &EnumerateDevices, 160 &MonitorDeviceChange, 161 &Open, 162 &GetCurrentConfig, 163 &StartCapture, 164 &StopCapture, 165 &Close 166}; 167 168} // namespace 169 170const PPB_AudioInput_Dev_0_2* GetPPB_AudioInput_Dev_0_2_Thunk() { 171 return &g_ppb_audioinput_dev_thunk_0_2; 172} 173 174const PPB_AudioInput_Dev_0_3* GetPPB_AudioInput_Dev_0_3_Thunk() { 175 return &g_ppb_audioinput_dev_thunk_0_3; 176} 177 178const PPB_AudioInput_Dev_0_4* GetPPB_AudioInput_Dev_0_4_Thunk() { 179 return &g_ppb_audioinput_dev_thunk_0_4; 180} 181 182} // namespace thunk 183} // namespace ppapi 184