ppb_audio_input_dev_thunk.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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// From dev/ppb_audio_input_dev.idl modified Fri Feb 22 11:43:43 2013.
6
7#include "ppapi/c/dev/ppb_audio_input_dev.h"
8#include "ppapi/c/pp_completion_callback.h"
9#include "ppapi/c/pp_errors.h"
10#include "ppapi/shared_impl/tracked_callback.h"
11#include "ppapi/thunk/enter.h"
12#include "ppapi/thunk/ppb_audio_input_api.h"
13#include "ppapi/thunk/ppb_instance_api.h"
14#include "ppapi/thunk/resource_creation_api.h"
15#include "ppapi/thunk/thunk.h"
16
17namespace ppapi {
18namespace thunk {
19
20namespace {
21
22PP_Resource Create(PP_Instance instance) {
23  EnterResourceCreation enter(instance);
24  if (enter.failed())
25    return 0;
26  return enter.functions()->CreateAudioInput(instance);
27}
28
29PP_Bool IsAudioInput(PP_Resource resource) {
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  EnterResource<PPB_AudioInput_API> enter(audio_input, callback, true);
38  if (enter.failed())
39    return enter.retval();
40  return enter.SetResult(enter.object()->EnumerateDevices0_2(
41      devices,
42      enter.callback()));
43}
44
45int32_t EnumerateDevices(PP_Resource audio_input,
46                         struct PP_ArrayOutput output,
47                         struct PP_CompletionCallback callback) {
48  EnterResource<PPB_AudioInput_API> enter(audio_input, callback, true);
49  if (enter.failed())
50    return enter.retval();
51  return enter.SetResult(enter.object()->EnumerateDevices(output,
52                                                          enter.callback()));
53}
54
55int32_t MonitorDeviceChange(PP_Resource audio_input,
56                            PP_MonitorDeviceChangeCallback callback,
57                            void* user_data) {
58  EnterResource<PPB_AudioInput_API> enter(audio_input, true);
59  if (enter.failed())
60    return enter.retval();
61  return enter.object()->MonitorDeviceChange(callback, user_data);
62}
63
64int32_t Open(PP_Resource audio_input,
65             PP_Resource device_ref,
66             PP_Resource config,
67             PPB_AudioInput_Callback audio_input_callback,
68             void* user_data,
69             struct PP_CompletionCallback callback) {
70  EnterResource<PPB_AudioInput_API> enter(audio_input, callback, true);
71  if (enter.failed())
72    return enter.retval();
73  return enter.SetResult(enter.object()->Open(device_ref,
74                                              config,
75                                              audio_input_callback,
76                                              user_data,
77                                              enter.callback()));
78}
79
80PP_Resource GetCurrentConfig(PP_Resource audio_input) {
81  EnterResource<PPB_AudioInput_API> enter(audio_input, true);
82  if (enter.failed())
83    return 0;
84  return enter.object()->GetCurrentConfig();
85}
86
87PP_Bool StartCapture(PP_Resource audio_input) {
88  EnterResource<PPB_AudioInput_API> enter(audio_input, true);
89  if (enter.failed())
90    return PP_FALSE;
91  return enter.object()->StartCapture();
92}
93
94PP_Bool StopCapture(PP_Resource audio_input) {
95  EnterResource<PPB_AudioInput_API> enter(audio_input, true);
96  if (enter.failed())
97    return PP_FALSE;
98  return enter.object()->StopCapture();
99}
100
101void Close(PP_Resource audio_input) {
102  EnterResource<PPB_AudioInput_API> enter(audio_input, true);
103  if (enter.succeeded())
104    enter.object()->Close();
105}
106
107const PPB_AudioInput_Dev_0_2 g_ppb_audioinput_dev_thunk_0_2 = {
108  &Create,
109  &IsAudioInput,
110  &EnumerateDevices_0_2,
111  &Open,
112  &GetCurrentConfig,
113  &StartCapture,
114  &StopCapture,
115  &Close
116};
117
118const PPB_AudioInput_Dev_0_3 g_ppb_audioinput_dev_thunk_0_3 = {
119  &Create,
120  &IsAudioInput,
121  &EnumerateDevices,
122  &MonitorDeviceChange,
123  &Open,
124  &GetCurrentConfig,
125  &StartCapture,
126  &StopCapture,
127  &Close
128};
129
130}  // namespace
131
132const PPB_AudioInput_Dev_0_2* GetPPB_AudioInput_Dev_0_2_Thunk() {
133  return &g_ppb_audioinput_dev_thunk_0_2;
134}
135
136const PPB_AudioInput_Dev_0_3* GetPPB_AudioInput_Dev_0_3_Thunk() {
137  return &g_ppb_audioinput_dev_thunk_0_3;
138}
139
140}  // namespace thunk
141}  // namespace ppapi
142