- add sources.
[platform/framework/web/crosswalk.git] / src / ppapi / thunk / ppb_audio_thunk.cc
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/pp_errors.h"
6 #include "ppapi/c/ppb_audio.h"
7 #include "ppapi/shared_impl/tracked_callback.h"
8 #include "ppapi/thunk/enter.h"
9 #include "ppapi/thunk/ppb_audio_api.h"
10 #include "ppapi/thunk/ppb_instance_api.h"
11 #include "ppapi/thunk/resource_creation_api.h"
12 #include "ppapi/thunk/thunk.h"
13
14 namespace ppapi {
15 namespace thunk {
16
17 namespace {
18
19 PP_Resource Create_1_0(PP_Instance instance,
20                       PP_Resource config,
21                       PPB_Audio_Callback_1_0 audio_callback,
22                       void* user_data) {
23   VLOG(4) << "PPB_Audio::Create()";
24   EnterResourceCreation enter(instance);
25   if (enter.failed())
26     return 0;
27   return enter.functions()->CreateAudio1_0(instance,
28                                            config,
29                                            audio_callback,
30                                            user_data);
31 }
32
33 PP_Resource Create(PP_Instance instance,
34                    PP_Resource config,
35                    PPB_Audio_Callback audio_callback,
36                    void* user_data) {
37   VLOG(4) << "PPB_Audio::Create()";
38   EnterResourceCreation enter(instance);
39   if (enter.failed())
40     return 0;
41   return enter.functions()->CreateAudio(instance,
42                                         config,
43                                         audio_callback,
44                                         user_data);
45 }
46
47 PP_Bool IsAudio(PP_Resource resource) {
48   VLOG(4) << "PPB_Audio::IsAudio()";
49   EnterResource<PPB_Audio_API> enter(resource, false);
50   return PP_FromBool(enter.succeeded());
51 }
52
53 PP_Resource GetCurrentConfig(PP_Resource audio) {
54   VLOG(4) << "PPB_Audio::GetCurrentConfig()";
55   EnterResource<PPB_Audio_API> enter(audio, true);
56   if (enter.failed())
57     return 0;
58   return enter.object()->GetCurrentConfig();
59 }
60
61 PP_Bool StartPlayback(PP_Resource audio) {
62   VLOG(4) << "PPB_Audio::StartPlayback()";
63   EnterResource<PPB_Audio_API> enter(audio, true);
64   if (enter.failed())
65     return PP_FALSE;
66   return enter.object()->StartPlayback();
67 }
68
69 PP_Bool StopPlayback(PP_Resource audio) {
70   VLOG(4) << "PPB_Audio::StopPlayback()";
71   EnterResource<PPB_Audio_API> enter(audio, true);
72   if (enter.failed())
73     return PP_FALSE;
74   return enter.object()->StopPlayback();
75 }
76
77 const PPB_Audio_1_0 g_ppb_audio_thunk_1_0 = {
78   &Create_1_0,
79   &IsAudio,
80   &GetCurrentConfig,
81   &StartPlayback,
82   &StopPlayback
83 };
84
85 const PPB_Audio_1_1 g_ppb_audio_thunk_1_1 = {
86   &Create,
87   &IsAudio,
88   &GetCurrentConfig,
89   &StartPlayback,
90   &StopPlayback
91 };
92
93 }  // namespace
94
95 const PPB_Audio_1_0* GetPPB_Audio_1_0_Thunk() {
96   return &g_ppb_audio_thunk_1_0;
97 }
98
99 const PPB_Audio_1_1* GetPPB_Audio_1_1_Thunk() {
100   return &g_ppb_audio_thunk_1_1;
101 }
102
103 }  // namespace thunk
104 }  // namespace ppapi