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