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 <stdint.h>
6
7 #include "ppapi/shared_impl/ppb_audio_config_shared.h"
8 #include "ppapi/thunk/enter.h"
9 #include "ppapi/thunk/ppb_audio_config_api.h"
10 #include "ppapi/thunk/resource_creation_api.h"
11 #include "ppapi/thunk/thunk.h"
12
13 namespace ppapi {
14 namespace thunk {
15
16 namespace {
17
CreateStereo16bit(PP_Instance instance,PP_AudioSampleRate sample_rate,uint32_t sample_frame_count)18 PP_Resource CreateStereo16bit(PP_Instance instance,
19 PP_AudioSampleRate sample_rate,
20 uint32_t sample_frame_count) {
21 VLOG(4) << "PPB_AudioConfig::CreateStereo16Bit()";
22 EnterResourceCreation enter(instance);
23 if (enter.failed())
24 return 0;
25 return enter.functions()->CreateAudioConfig(instance, sample_rate,
26 sample_frame_count);
27 }
28
RecommendSampleFrameCount_1_0(PP_AudioSampleRate sample_rate,uint32_t requested_sample_frame_count)29 uint32_t RecommendSampleFrameCount_1_0(PP_AudioSampleRate sample_rate,
30 uint32_t requested_sample_frame_count) {
31 VLOG(4) << "PPB_AudioConfig::RecommendSampleFrameCount()";
32 return PPB_AudioConfig_Shared::RecommendSampleFrameCount_1_0(sample_rate,
33 requested_sample_frame_count);
34 }
35
RecommendSampleFrameCount_1_1(PP_Instance instance,PP_AudioSampleRate sample_rate,uint32_t requested_sample_frame_count)36 uint32_t RecommendSampleFrameCount_1_1(PP_Instance instance,
37 PP_AudioSampleRate sample_rate,
38 uint32_t requested_sample_frame_count) {
39 VLOG(4) << "PPB_AudioConfig::RecommendSampleFrameCount()";
40 EnterInstance enter(instance);
41 if (enter.failed())
42 return 0;
43 return PPB_AudioConfig_Shared::RecommendSampleFrameCount_1_1(instance,
44 sample_rate, requested_sample_frame_count);
45 }
46
47
IsAudioConfig(PP_Resource resource)48 PP_Bool IsAudioConfig(PP_Resource resource) {
49 VLOG(4) << "PPB_AudioConfig::IsAudioConfig()";
50 EnterResource<PPB_AudioConfig_API> enter(resource, false);
51 return PP_FromBool(enter.succeeded());
52 }
53
GetSampleRate(PP_Resource config_id)54 PP_AudioSampleRate GetSampleRate(PP_Resource config_id) {
55 VLOG(4) << "PPB_AudioConfig::GetSampleRate()";
56 EnterResource<PPB_AudioConfig_API> enter(config_id, true);
57 if (enter.failed())
58 return PP_AUDIOSAMPLERATE_NONE;
59 return enter.object()->GetSampleRate();
60 }
61
GetSampleFrameCount(PP_Resource config_id)62 uint32_t GetSampleFrameCount(PP_Resource config_id) {
63 VLOG(4) << "PPB_AudioConfig::GetSampleFrameCount()";
64 EnterResource<PPB_AudioConfig_API> enter(config_id, true);
65 if (enter.failed())
66 return 0;
67 return enter.object()->GetSampleFrameCount();
68 }
69
RecommendSampleRate(PP_Instance instance)70 PP_AudioSampleRate RecommendSampleRate(PP_Instance instance) {
71 VLOG(4) << "PPB_AudioConfig::RecommendSampleRate()";
72 EnterInstance enter(instance);
73 if (enter.failed())
74 return PP_AUDIOSAMPLERATE_NONE;
75 return PPB_AudioConfig_Shared::RecommendSampleRate(instance);
76 }
77
78 const PPB_AudioConfig_1_0 g_ppb_audio_config_thunk_1_0 = {
79 &CreateStereo16bit,
80 &RecommendSampleFrameCount_1_0,
81 &IsAudioConfig,
82 &GetSampleRate,
83 &GetSampleFrameCount
84 };
85
86 const PPB_AudioConfig_1_1 g_ppb_audio_config_thunk_1_1 = {
87 &CreateStereo16bit,
88 &RecommendSampleFrameCount_1_1,
89 &IsAudioConfig,
90 &GetSampleRate,
91 &GetSampleFrameCount,
92 &RecommendSampleRate
93 };
94
95
96 } // namespace
97
GetPPB_AudioConfig_1_0_Thunk()98 const PPB_AudioConfig_1_0* GetPPB_AudioConfig_1_0_Thunk() {
99 return &g_ppb_audio_config_thunk_1_0;
100 }
101
GetPPB_AudioConfig_1_1_Thunk()102 const PPB_AudioConfig_1_1* GetPPB_AudioConfig_1_1_Thunk() {
103 return &g_ppb_audio_config_thunk_1_1;
104 }
105
106 } // namespace thunk
107 } // namespace ppapi
108