Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(654)

Unified Diff: ppapi/thunk/ppb_audio_input_thunk.cc

Issue 9557007: PPB_AudioInput_Dev: support multiple audio input devices - Part 1. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Changes in response to Trung's comments. Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ppapi/thunk/ppb_audio_input_api.h ('k') | ppapi/thunk/ppb_audio_input_trusted_thunk.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/thunk/ppb_audio_input_thunk.cc
diff --git a/ppapi/thunk/ppb_audio_input_thunk.cc b/ppapi/thunk/ppb_audio_input_thunk.cc
index f2a65c891b99f56cb7578f87eec7abe19fe188d5..9102dc588b9d5c4516d661dd3bad5097c7f92b8e 100644
--- a/ppapi/thunk/ppb_audio_input_thunk.cc
+++ b/ppapi/thunk/ppb_audio_input_thunk.cc
@@ -3,7 +3,9 @@
// found in the LICENSE file.
#include "ppapi/c/pp_errors.h"
+#include "ppapi/shared_impl/ppb_device_ref_shared.h"
#include "ppapi/thunk/enter.h"
+#include "ppapi/thunk/ppb_device_ref_api.h"
#include "ppapi/thunk/ppb_audio_input_api.h"
#include "ppapi/thunk/resource_creation_api.h"
#include "ppapi/thunk/thunk.h"
@@ -15,16 +17,24 @@ namespace {
typedef EnterResource<PPB_AudioInput_API> EnterAudioInput;
-PP_Resource Create(PP_Instance instance,
- PP_Resource config_id,
- PPB_AudioInput_Callback callback,
- void* user_data) {
- EnterFunction<ResourceCreationAPI> enter(instance, true);
+PP_Resource Create0_1(PP_Instance instance,
+ PP_Resource config,
+ PPB_AudioInput_Callback audio_input_callback,
+ void* user_data) {
+ EnterResourceCreation enter(instance);
if (enter.failed())
return 0;
- return enter.functions()->CreateAudioInput(instance, config_id,
- callback, user_data);
+ return enter.functions()->CreateAudioInput0_1(
+ instance, config, audio_input_callback, user_data);
+}
+
+PP_Resource Create0_2(PP_Instance instance) {
+ EnterResourceCreation enter(instance);
+ if (enter.failed())
+ return 0;
+
+ return enter.functions()->CreateAudioInput(instance);
}
PP_Bool IsAudioInput(PP_Resource resource) {
@@ -32,8 +42,42 @@ PP_Bool IsAudioInput(PP_Resource resource) {
return PP_FromBool(enter.succeeded());
}
-PP_Resource GetCurrentConfiguration(PP_Resource audio_id) {
- EnterAudioInput enter(audio_id, true);
+int32_t EnumerateDevices(PP_Resource audio_input,
+ PP_Resource* devices,
+ PP_CompletionCallback callback) {
+ EnterAudioInput enter(audio_input, callback, true);
+ if (enter.failed())
+ return enter.retval();
+
+ return enter.SetResult(enter.object()->EnumerateDevices(devices, callback));
+}
+
+int32_t Open(PP_Resource audio_input,
+ PP_Resource device_ref,
+ PP_Resource config,
+ PPB_AudioInput_Callback audio_input_callback,
+ void* user_data,
+ PP_CompletionCallback callback) {
+ EnterAudioInput enter(audio_input, callback, true);
+ if (enter.failed())
+ return enter.retval();
+
+ std::string device_id;
+ // |device_id| remains empty if |device_ref| is 0, which means the default
+ // device.
+ if (device_ref != 0) {
+ EnterResourceNoLock<PPB_DeviceRef_API> enter_device_ref(device_ref, true);
+ if (enter_device_ref.failed())
+ return enter.SetResult(PP_ERROR_BADRESOURCE);
+ device_id = enter_device_ref.object()->GetDeviceRefData().id;
+ }
+
+ return enter.SetResult(enter.object()->Open(
+ device_id, config, audio_input_callback, user_data, callback));
+}
+
+PP_Resource GetCurrentConfig(PP_Resource audio_input) {
+ EnterAudioInput enter(audio_input, true);
if (enter.failed())
return 0;
return enter.object()->GetCurrentConfig();
@@ -55,18 +99,39 @@ PP_Bool StopCapture(PP_Resource audio_input) {
return enter.object()->StopCapture();
}
-const PPB_AudioInput_Dev g_ppb_audioinput_thunk = {
- &Create,
+void Close(PP_Resource audio_input) {
+ EnterAudioInput enter(audio_input, true);
+ if (enter.succeeded())
+ enter.object()->Close();
+}
+
+const PPB_AudioInput_Dev_0_1 g_ppb_audioinput_0_1_thunk = {
+ &Create0_1,
&IsAudioInput,
- &GetCurrentConfiguration,
+ &GetCurrentConfig,
&StartCapture,
&StopCapture
};
+const PPB_AudioInput_Dev_0_2 g_ppb_audioinput_0_2_thunk = {
+ &Create0_2,
+ &IsAudioInput,
+ &EnumerateDevices,
+ &Open,
+ &GetCurrentConfig,
+ &StartCapture,
+ &StopCapture,
+ &Close
+};
+
} // namespace
const PPB_AudioInput_Dev_0_1* GetPPB_AudioInput_Dev_0_1_Thunk() {
- return &g_ppb_audioinput_thunk;
+ return &g_ppb_audioinput_0_1_thunk;
+}
+
+const PPB_AudioInput_Dev_0_2* GetPPB_AudioInput_Dev_0_2_Thunk() {
+ return &g_ppb_audioinput_0_2_thunk;
}
} // namespace thunk
« no previous file with comments | « ppapi/thunk/ppb_audio_input_api.h ('k') | ppapi/thunk/ppb_audio_input_trusted_thunk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698