summaryrefslogtreecommitdiffstats
path: root/ppapi/cpp/audio_config.cc
diff options
context:
space:
mode:
authorviettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-07 03:13:31 +0000
committerviettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-07 03:13:31 +0000
commit4c6c09479dfd42b666218d793f1750d82194b6a5 (patch)
tree0bd05937a936a179216d99f44b4d8ce8ad2b7a2a /ppapi/cpp/audio_config.cc
parenteb2942c05adc81f5e1af0559b959bc4d71cb8c79 (diff)
downloadchromium_src-4c6c09479dfd42b666218d793f1750d82194b6a5.zip
chromium_src-4c6c09479dfd42b666218d793f1750d82194b6a5.tar.gz
chromium_src-4c6c09479dfd42b666218d793f1750d82194b6a5.tar.bz2
Pepper: Make C++ wrappers for PPB_AudioConfig backwards compatible.
This makes the wrappers work transparently with both versions 1.1 and 1.0 of the interface. (The compatibility is needed for Pepper Flash to use the wrappers; Pepper Flash needs to work with M18 until M19 ships, at which point we can remove the 1.0-compatibility.) Review URL: http://codereview.chromium.org/9617018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@125310 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/cpp/audio_config.cc')
-rw-r--r--ppapi/cpp/audio_config.cc44
1 files changed, 29 insertions, 15 deletions
diff --git a/ppapi/cpp/audio_config.cc b/ppapi/cpp/audio_config.cc
index ef03922..eaf019c 100644
--- a/ppapi/cpp/audio_config.cc
+++ b/ppapi/cpp/audio_config.cc
@@ -12,8 +12,12 @@ namespace pp {
namespace {
-template <> const char* interface_name<PPB_AudioConfig>() {
- return PPB_AUDIO_CONFIG_INTERFACE;
+template <> const char* interface_name<PPB_AudioConfig_1_1>() {
+ return PPB_AUDIO_CONFIG_INTERFACE_1_1;
+}
+
+template <> const char* interface_name<PPB_AudioConfig_1_0>() {
+ return PPB_AUDIO_CONFIG_INTERFACE_1_0;
}
} // namespace
@@ -28,9 +32,13 @@ AudioConfig::AudioConfig(const InstanceHandle& instance,
uint32_t sample_frame_count)
: sample_rate_(sample_rate),
sample_frame_count_(sample_frame_count) {
- if (has_interface<PPB_AudioConfig>()) {
+ if (has_interface<PPB_AudioConfig_1_1>()) {
+ PassRefFromConstructor(
+ get_interface<PPB_AudioConfig_1_1>()->CreateStereo16Bit(
+ instance.pp_instance(), sample_rate, sample_frame_count));
+ } else if (has_interface<PPB_AudioConfig_1_0>()) {
PassRefFromConstructor(
- get_interface<PPB_AudioConfig>()->CreateStereo16Bit(
+ get_interface<PPB_AudioConfig_1_0>()->CreateStereo16Bit(
instance.pp_instance(), sample_rate, sample_frame_count));
}
}
@@ -38,10 +46,11 @@ AudioConfig::AudioConfig(const InstanceHandle& instance,
// static
PP_AudioSampleRate AudioConfig::RecommendSampleRate(
const InstanceHandle& instance) {
- if (!has_interface<PPB_AudioConfig>())
- return PP_AUDIOSAMPLERATE_NONE;
- return get_interface<PPB_AudioConfig>()->
- RecommendSampleRate(instance.pp_instance());
+ if (has_interface<PPB_AudioConfig_1_1>()) {
+ return get_interface<PPB_AudioConfig_1_1>()->
+ RecommendSampleRate(instance.pp_instance());
+ }
+ return PP_AUDIOSAMPLERATE_NONE;
}
// static
@@ -49,13 +58,18 @@ uint32_t AudioConfig::RecommendSampleFrameCount(
const InstanceHandle& instance,
PP_AudioSampleRate sample_rate,
uint32_t requested_sample_frame_count) {
- if (!has_interface<PPB_AudioConfig>())
- return 0;
- return get_interface<PPB_AudioConfig>()->
- RecommendSampleFrameCount(instance.pp_instance(),
- sample_rate,
- requested_sample_frame_count);
+ if (has_interface<PPB_AudioConfig_1_1>()) {
+ return get_interface<PPB_AudioConfig_1_1>()->
+ RecommendSampleFrameCount(instance.pp_instance(),
+ sample_rate,
+ requested_sample_frame_count);
+ }
+ if (has_interface<PPB_AudioConfig_1_0>()) {
+ return get_interface<PPB_AudioConfig_1_0>()->
+ RecommendSampleFrameCount(sample_rate,
+ requested_sample_frame_count);
+ }
+ return 0;
}
} // namespace pp
-