Pepper_47_C++_interfaces
audio_input_dev.cc
Go to the documentation of this file.
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 
6 
7 #include "ppapi/c/pp_bool.h"
8 #include "ppapi/c/pp_errors.h"
10 #include "ppapi/cpp/module_impl.h"
11 
12 namespace pp {
13 
14 namespace {
15 
16 template <> const char* interface_name<PPB_AudioInput_Dev_0_3>() {
17  return PPB_AUDIO_INPUT_DEV_INTERFACE_0_3;
18 }
19 
20 template <> const char* interface_name<PPB_AudioInput_Dev_0_4>() {
21  return PPB_AUDIO_INPUT_DEV_INTERFACE_0_4;
22 }
23 
24 } // namespace
25 
27 }
28 
30  if (has_interface<PPB_AudioInput_Dev_0_4>()) {
31  PassRefFromConstructor(get_interface<PPB_AudioInput_Dev_0_4>()->Create(
32  instance.pp_instance()));
33  } else if (has_interface<PPB_AudioInput_Dev_0_3>()) {
34  PassRefFromConstructor(get_interface<PPB_AudioInput_Dev_0_3>()->Create(
35  instance.pp_instance()));
36  }
37 }
38 
40 }
41 
42 // static
44  return has_interface<PPB_AudioInput_Dev_0_4>() ||
45  has_interface<PPB_AudioInput_Dev_0_3>();
46 }
47 
49  const CompletionCallbackWithOutput<std::vector<DeviceRef_Dev> >& callback) {
50  if (has_interface<PPB_AudioInput_Dev_0_4>()) {
51  return get_interface<PPB_AudioInput_Dev_0_4>()->EnumerateDevices(
52  pp_resource(), callback.output(), callback.pp_completion_callback());
53  }
54  if (has_interface<PPB_AudioInput_Dev_0_3>()) {
55  return get_interface<PPB_AudioInput_Dev_0_3>()->EnumerateDevices(
56  pp_resource(), callback.output(), callback.pp_completion_callback());
57  }
58 
59  return callback.MayForce(PP_ERROR_NOINTERFACE);
60 }
61 
63  PP_MonitorDeviceChangeCallback callback,
64  void* user_data) {
65  if (has_interface<PPB_AudioInput_Dev_0_4>()) {
66  return get_interface<PPB_AudioInput_Dev_0_4>()->MonitorDeviceChange(
67  pp_resource(), callback, user_data);
68  }
69  if (has_interface<PPB_AudioInput_Dev_0_3>()) {
70  return get_interface<PPB_AudioInput_Dev_0_3>()->MonitorDeviceChange(
71  pp_resource(), callback, user_data);
72  }
73 
74  return PP_ERROR_NOINTERFACE;
75 }
76 
78  const AudioConfig& config,
79  PPB_AudioInput_Callback audio_input_callback,
80  void* user_data,
81  const CompletionCallback& callback) {
82  if (has_interface<PPB_AudioInput_Dev_0_4>()) {
83  return get_interface<PPB_AudioInput_Dev_0_4>()->Open(
84  pp_resource(), device_ref.pp_resource(), config.pp_resource(),
85  audio_input_callback, user_data, callback.pp_completion_callback());
86  }
87 
88  return callback.MayForce(PP_ERROR_NOINTERFACE);
89 }
90 
92  const DeviceRef_Dev& device_ref,
93  const AudioConfig& config,
94  PPB_AudioInput_Callback_0_3 audio_input_callback_0_3,
95  void* user_data,
96  const CompletionCallback& callback) {
97  if (has_interface<PPB_AudioInput_Dev_0_3>()) {
98  return get_interface<PPB_AudioInput_Dev_0_3>()->Open(
99  pp_resource(), device_ref.pp_resource(), config.pp_resource(),
100  audio_input_callback_0_3, user_data, callback.pp_completion_callback());
101  }
102 
103  return callback.MayForce(PP_ERROR_NOINTERFACE);
104 }
105 
107  if (has_interface<PPB_AudioInput_Dev_0_4>()) {
108  return PP_ToBool(get_interface<PPB_AudioInput_Dev_0_4>()->StartCapture(
109  pp_resource()));
110  }
111  if (has_interface<PPB_AudioInput_Dev_0_3>()) {
112  return PP_ToBool(get_interface<PPB_AudioInput_Dev_0_3>()->StartCapture(
113  pp_resource()));
114  }
115 
116  return false;
117 }
118 
120  if (has_interface<PPB_AudioInput_Dev_0_4>()) {
121  return PP_ToBool(get_interface<PPB_AudioInput_Dev_0_4>()->StopCapture(
122  pp_resource()));
123  }
124  if (has_interface<PPB_AudioInput_Dev_0_3>()) {
125  return PP_ToBool(get_interface<PPB_AudioInput_Dev_0_3>()->StopCapture(
126  pp_resource()));
127  }
128 
129  return false;
130 }
131 
133  if (has_interface<PPB_AudioInput_Dev_0_4>()) {
134  get_interface<PPB_AudioInput_Dev_0_4>()->Close(pp_resource());
135  } else if (has_interface<PPB_AudioInput_Dev_0_3>()) {
136  get_interface<PPB_AudioInput_Dev_0_3>()->Close(pp_resource());
137  }
138 }
139 
140 } // namespace pp
int32_t MonitorDeviceChange(PP_MonitorDeviceChangeCallback callback, void *user_data)
void PassRefFromConstructor(PP_Resource resource)
Definition: resource.cc:50
AudioInput_Dev()
An empty constructor for an AudioInput resource.
int32_t MayForce(int32_t result) const
int32_t Open(const DeviceRef_Dev &device_ref, const AudioConfig &config, PPB_AudioInput_Callback audio_input_callback, void *user_data, const CompletionCallback &callback)
const PP_CompletionCallback & pp_completion_callback() const
int32_t EnumerateDevices(const CompletionCallbackWithOutput< std::vector< DeviceRef_Dev > > &callback)
static bool IsAvailable()
PP_Resource pp_resource() const
Definition: resource.h:47
PP_Instance pp_instance() const