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 11namespace ppapi { 12namespace thunk { 13 14namespace { 15 16PP_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 27uint32_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 34uint32_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 46PP_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 52PP_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 60uint32_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 68PP_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 76const 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 84const 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 96const PPB_AudioConfig_1_0* GetPPB_AudioConfig_1_0_Thunk() { 97 return &g_ppb_audio_config_thunk_1_0; 98} 99 100const 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