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/cpp/audio_config.h" 6 7#include "ppapi/cpp/instance_handle.h" 8#include "ppapi/cpp/module.h" 9#include "ppapi/cpp/module_impl.h" 10 11namespace pp { 12 13namespace { 14 15template <> const char* interface_name<PPB_AudioConfig_1_1>() { 16 return PPB_AUDIO_CONFIG_INTERFACE_1_1; 17} 18 19template <> const char* interface_name<PPB_AudioConfig_1_0>() { 20 return PPB_AUDIO_CONFIG_INTERFACE_1_0; 21} 22 23} // namespace 24 25AudioConfig::AudioConfig() 26 : sample_rate_(PP_AUDIOSAMPLERATE_NONE), 27 sample_frame_count_(0) { 28} 29 30AudioConfig::AudioConfig(const InstanceHandle& instance, 31 PP_AudioSampleRate sample_rate, 32 uint32_t sample_frame_count) 33 : sample_rate_(sample_rate), 34 sample_frame_count_(sample_frame_count) { 35 if (has_interface<PPB_AudioConfig_1_1>()) { 36 PassRefFromConstructor( 37 get_interface<PPB_AudioConfig_1_1>()->CreateStereo16Bit( 38 instance.pp_instance(), sample_rate, sample_frame_count)); 39 } else if (has_interface<PPB_AudioConfig_1_0>()) { 40 PassRefFromConstructor( 41 get_interface<PPB_AudioConfig_1_0>()->CreateStereo16Bit( 42 instance.pp_instance(), sample_rate, sample_frame_count)); 43 } 44} 45 46// static 47PP_AudioSampleRate AudioConfig::RecommendSampleRate( 48 const InstanceHandle& instance) { 49 if (has_interface<PPB_AudioConfig_1_1>()) { 50 return get_interface<PPB_AudioConfig_1_1>()-> 51 RecommendSampleRate(instance.pp_instance()); 52 } 53 return PP_AUDIOSAMPLERATE_NONE; 54} 55 56// static 57uint32_t AudioConfig::RecommendSampleFrameCount( 58 const InstanceHandle& instance, 59 PP_AudioSampleRate sample_rate, 60 uint32_t requested_sample_frame_count) { 61 if (has_interface<PPB_AudioConfig_1_1>()) { 62 return get_interface<PPB_AudioConfig_1_1>()-> 63 RecommendSampleFrameCount(instance.pp_instance(), 64 sample_rate, 65 requested_sample_frame_count); 66 } 67 if (has_interface<PPB_AudioConfig_1_0>()) { 68 return get_interface<PPB_AudioConfig_1_0>()-> 69 RecommendSampleFrameCount(sample_rate, 70 requested_sample_frame_count); 71 } 72 return 0; 73} 74 75} // namespace pp 76