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
11 namespace pp {
12
13 namespace {
14
interface_name()15 template <> const char* interface_name<PPB_AudioConfig_1_1>() {
16 return PPB_AUDIO_CONFIG_INTERFACE_1_1;
17 }
18
interface_name()19 template <> const char* interface_name<PPB_AudioConfig_1_0>() {
20 return PPB_AUDIO_CONFIG_INTERFACE_1_0;
21 }
22
23 } // namespace
24
AudioConfig()25 AudioConfig::AudioConfig()
26 : sample_rate_(PP_AUDIOSAMPLERATE_NONE),
27 sample_frame_count_(0) {
28 }
29
AudioConfig(const InstanceHandle & instance,PP_AudioSampleRate sample_rate,uint32_t sample_frame_count)30 AudioConfig::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
RecommendSampleRate(const InstanceHandle & instance)47 PP_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
RecommendSampleFrameCount(const InstanceHandle & instance,PP_AudioSampleRate sample_rate,uint32_t requested_sample_frame_count)57 uint32_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