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

Side by Side Diff: ppapi/cpp/dev/audio_input_dev.cc

Issue 11366038: Rewrite PPB_AudioInput_Dev to use the new-style host/resource. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ppapi/cpp/dev/audio_input_dev.h" 5 #include "ppapi/cpp/dev/audio_input_dev.h"
6 6
7 #include "ppapi/c/pp_bool.h" 7 #include "ppapi/c/pp_bool.h"
8 #include "ppapi/c/pp_errors.h" 8 #include "ppapi/c/pp_errors.h"
9 #include "ppapi/cpp/dev/resource_array_dev.h" 9 #include "ppapi/cpp/dev/resource_array_dev.h"
10 #include "ppapi/cpp/instance_handle.h" 10 #include "ppapi/cpp/instance_handle.h"
11 #include "ppapi/cpp/module_impl.h" 11 #include "ppapi/cpp/module_impl.h"
12 12
13 namespace pp { 13 namespace pp {
14 14
15 namespace { 15 namespace {
16 16
17 template <> const char* interface_name<PPB_AudioInput_Dev_0_2>() { 17 template <> const char* interface_name<PPB_AudioInput_Dev_0_2>() {
18 return PPB_AUDIO_INPUT_DEV_INTERFACE_0_2; 18 return PPB_AUDIO_INPUT_DEV_INTERFACE_0_2;
19 } 19 }
20 20
21 template <> const char* interface_name<PPB_AudioInput_Dev_0_1>() {
22 return PPB_AUDIO_INPUT_DEV_INTERFACE_0_1;
23 }
24
25 } // namespace 21 } // namespace
26 22
27 AudioInput_Dev::AudioInput_Dev() : audio_input_callback_(NULL), 23 AudioInput_Dev::AudioInput_Dev() : audio_input_callback_(NULL),
28 user_data_(NULL) { 24 user_data_(NULL) {
29 } 25 }
30 26
31 AudioInput_Dev::AudioInput_Dev(const InstanceHandle& instance,
32 const AudioConfig& config,
33 PPB_AudioInput_Callback callback,
34 void* user_data)
35 : config_(config),
36 audio_input_callback_(callback),
37 user_data_(user_data) {
38 if (has_interface<PPB_AudioInput_Dev_0_2>()) {
39 PassRefFromConstructor(get_interface<PPB_AudioInput_Dev_0_2>()->Create(
40 instance.pp_instance()));
41 } else if (has_interface<PPB_AudioInput_Dev_0_1>()) {
42 PassRefFromConstructor(get_interface<PPB_AudioInput_Dev_0_1>()->Create(
43 instance.pp_instance(), config.pp_resource(), callback, user_data));
44 }
45 }
46
47 AudioInput_Dev::AudioInput_Dev(const InstanceHandle& instance) 27 AudioInput_Dev::AudioInput_Dev(const InstanceHandle& instance)
48 : audio_input_callback_(NULL), 28 : audio_input_callback_(NULL),
49 user_data_(NULL) { 29 user_data_(NULL) {
50 if (has_interface<PPB_AudioInput_Dev_0_2>()) { 30 if (has_interface<PPB_AudioInput_Dev_0_2>()) {
51 PassRefFromConstructor(get_interface<PPB_AudioInput_Dev_0_2>()->Create( 31 PassRefFromConstructor(get_interface<PPB_AudioInput_Dev_0_2>()->Create(
52 instance.pp_instance())); 32 instance.pp_instance()));
53 } 33 }
54 } 34 }
55 35
56 AudioInput_Dev::~AudioInput_Dev() { 36 AudioInput_Dev::~AudioInput_Dev() {
57 } 37 }
58 38
59 // static 39 // static
60 bool AudioInput_Dev::IsAvailable() { 40 bool AudioInput_Dev::IsAvailable() {
61 return has_interface<PPB_AudioInput_Dev_0_2>() || 41 return has_interface<PPB_AudioInput_Dev_0_2>();
62 has_interface<PPB_AudioInput_Dev_0_1>();
63 } 42 }
64 43
65 int32_t AudioInput_Dev::EnumerateDevices( 44 int32_t AudioInput_Dev::EnumerateDevices(
66 const CompletionCallbackWithOutput<std::vector<DeviceRef_Dev> >& callback) { 45 const CompletionCallbackWithOutput<std::vector<DeviceRef_Dev> >& callback) {
67 if (!has_interface<PPB_AudioInput_Dev_0_2>()) 46 if (!has_interface<PPB_AudioInput_Dev_0_2>())
68 return callback.MayForce(PP_ERROR_NOINTERFACE); 47 return callback.MayForce(PP_ERROR_NOINTERFACE);
69 if (!callback.pp_completion_callback().func) 48 if (!callback.pp_completion_callback().func)
70 return callback.MayForce(PP_ERROR_BLOCKS_MAIN_THREAD); 49 return callback.MayForce(PP_ERROR_BLOCKS_MAIN_THREAD);
71 50
72 // ArrayOutputCallbackConverter is responsible to delete it. 51 // ArrayOutputCallbackConverter is responsible to delete it.
73 ResourceArray_Dev::ArrayOutputCallbackData* data = 52 ResourceArray_Dev::ArrayOutputCallbackData* data =
74 new ResourceArray_Dev::ArrayOutputCallbackData( 53 new ResourceArray_Dev::ArrayOutputCallbackData(
75 callback.output(), callback.pp_completion_callback()); 54 callback.output(), callback.pp_completion_callback());
76 return get_interface<PPB_AudioInput_Dev_0_2>()->EnumerateDevices( 55 return get_interface<PPB_AudioInput_Dev_0_2>()->EnumerateDevices(
77 pp_resource(), &data->resource_array_output, 56 pp_resource(), &data->resource_array_output,
78 PP_MakeCompletionCallback( 57 PP_MakeCompletionCallback(
79 &ResourceArray_Dev::ArrayOutputCallbackConverter, data)); 58 &ResourceArray_Dev::ArrayOutputCallbackConverter, data));
80 } 59 }
81 60
82 int32_t AudioInput_Dev::Open(const DeviceRef_Dev& device_ref, 61 int32_t AudioInput_Dev::Open(const DeviceRef_Dev& device_ref,
83 const CompletionCallback& callback) {
84 if (has_interface<PPB_AudioInput_Dev_0_2>()) {
85 return get_interface<PPB_AudioInput_Dev_0_2>()->Open(
86 pp_resource(), device_ref.pp_resource(), config_.pp_resource(),
87 audio_input_callback_, user_data_, callback.pp_completion_callback());
88 }
89
90 if (has_interface<PPB_AudioInput_Dev_0_1>()) {
91 if (is_null())
92 return callback.MayForce(PP_ERROR_FAILED);
93
94 // If the v0.1 interface is being used and there is a valid resource handle,
95 // then the default device has been successfully opened during resource
96 // creation.
97 if (device_ref.is_null())
98 return callback.MayForce(PP_OK);
99
100 // The v0.1 interface doesn't support devices other than the default one.
101 return callback.MayForce(PP_ERROR_NOTSUPPORTED);
102 }
103
104 return callback.MayForce(PP_ERROR_NOINTERFACE);
105 }
106
107 int32_t AudioInput_Dev::Open(const DeviceRef_Dev& device_ref,
108 const AudioConfig& config, 62 const AudioConfig& config,
109 PPB_AudioInput_Callback audio_input_callback, 63 PPB_AudioInput_Callback audio_input_callback,
110 void* user_data, 64 void* user_data,
111 const CompletionCallback& callback) { 65 const CompletionCallback& callback) {
112 if (has_interface<PPB_AudioInput_Dev_0_2>()) { 66 if (has_interface<PPB_AudioInput_Dev_0_2>()) {
113 return get_interface<PPB_AudioInput_Dev_0_2>()->Open( 67 return get_interface<PPB_AudioInput_Dev_0_2>()->Open(
114 pp_resource(), device_ref.pp_resource(), config.pp_resource(), 68 pp_resource(), device_ref.pp_resource(), config.pp_resource(),
115 audio_input_callback, user_data, callback.pp_completion_callback()); 69 audio_input_callback, user_data, callback.pp_completion_callback());
116 } 70 }
117 71
118 return callback.MayForce(PP_ERROR_NOINTERFACE); 72 return callback.MayForce(PP_ERROR_NOINTERFACE);
119 } 73 }
120 74
121 bool AudioInput_Dev::StartCapture() { 75 bool AudioInput_Dev::StartCapture() {
122 if (has_interface<PPB_AudioInput_Dev_0_2>()) { 76 if (has_interface<PPB_AudioInput_Dev_0_2>()) {
123 return PP_ToBool(get_interface<PPB_AudioInput_Dev_0_2>()->StartCapture( 77 return PP_ToBool(get_interface<PPB_AudioInput_Dev_0_2>()->StartCapture(
124 pp_resource())); 78 pp_resource()));
125 } 79 }
126 80
127 if (has_interface<PPB_AudioInput_Dev_0_1>()) {
128 return PP_ToBool(get_interface<PPB_AudioInput_Dev_0_1>()->StartCapture(
129 pp_resource()));
130 }
131
132 return false; 81 return false;
133 } 82 }
134 83
135 bool AudioInput_Dev::StopCapture() { 84 bool AudioInput_Dev::StopCapture() {
136 if (has_interface<PPB_AudioInput_Dev_0_2>()) { 85 if (has_interface<PPB_AudioInput_Dev_0_2>()) {
137 return PP_ToBool(get_interface<PPB_AudioInput_Dev_0_2>()->StopCapture( 86 return PP_ToBool(get_interface<PPB_AudioInput_Dev_0_2>()->StopCapture(
138 pp_resource())); 87 pp_resource()));
139 } 88 }
140 89
141 if (has_interface<PPB_AudioInput_Dev_0_1>()) {
142 return PP_ToBool(get_interface<PPB_AudioInput_Dev_0_1>()->StopCapture(
143 pp_resource()));
144 }
145
146 return false; 90 return false;
147 } 91 }
148 92
149 void AudioInput_Dev::Close() { 93 void AudioInput_Dev::Close() {
150 if (has_interface<PPB_AudioInput_Dev_0_2>()) 94 if (has_interface<PPB_AudioInput_Dev_0_2>())
151 get_interface<PPB_AudioInput_Dev_0_2>()->Close(pp_resource()); 95 get_interface<PPB_AudioInput_Dev_0_2>()->Close(pp_resource());
152 } 96 }
153 97
154 } // namespace pp 98 } // namespace pp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698