diff options
author | nfullagar@google.com <nfullagar@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-15 01:04:00 +0000 |
---|---|---|
committer | nfullagar@google.com <nfullagar@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-15 01:04:00 +0000 |
commit | b9a598494478fe8c04b6b7ba1f982ab91be6a521 (patch) | |
tree | 9b76d2753d28ace9a7efa5957342e8ad5cdadf45 /ppapi/cpp | |
parent | 97d2f1d24de99d6c19bf053fa7d3e61ede99e9c5 (diff) | |
download | chromium_src-b9a598494478fe8c04b6b7ba1f982ab91be6a521.zip chromium_src-b9a598494478fe8c04b6b7ba1f982ab91be6a521.tar.gz chromium_src-b9a598494478fe8c04b6b7ba1f982ab91be6a521.tar.bz2 |
Move ppapi audio interface out of dev, but
for this CL, also keep the old dev interface
around temporarily, to avoid tree breakage.
Add sample_rate to RecommendSampleFrameCount() to the
non-dev audio interface. Currently ignored, but useful
information to use when we need to refine RecommendSampleFrameCount()
Review URL: http://codereview.chromium.org/6279003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71527 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/cpp')
-rw-r--r-- | ppapi/cpp/audio.cc | 41 | ||||
-rw-r--r-- | ppapi/cpp/audio.h | 37 | ||||
-rw-r--r-- | ppapi/cpp/audio_config.cc | 49 | ||||
-rw-r--r-- | ppapi/cpp/audio_config.h | 61 | ||||
-rw-r--r-- | ppapi/cpp/dev/audio_config_dev.h | 2 |
5 files changed, 189 insertions, 1 deletions
diff --git a/ppapi/cpp/audio.cc b/ppapi/cpp/audio.cc new file mode 100644 index 0000000..00478c5 --- /dev/null +++ b/ppapi/cpp/audio.cc @@ -0,0 +1,41 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ppapi/cpp/audio.h" + +#include "ppapi/cpp/module_impl.h" + +namespace pp { + +namespace { + +template <> const char* interface_name<PPB_Audio>() { + return PPB_AUDIO_INTERFACE; +} + +} // namespace + +Audio::Audio(Instance* instance, + const AudioConfig& config, + PPB_Audio_Callback callback, + void* user_data) + : config_(config) { + if (has_interface<PPB_Audio>()) { + PassRefFromConstructor(get_interface<PPB_Audio>()->Create( + instance->pp_instance(), config.pp_resource(), callback, user_data)); + } +} + +bool Audio::StartPlayback() { + return has_interface<PPB_Audio>() && + get_interface<PPB_Audio>()->StartPlayback(pp_resource()); +} + +bool Audio::StopPlayback() { + return has_interface<PPB_Audio>() && + get_interface<PPB_Audio>()->StopPlayback(pp_resource()); +} + +} // namespace pp + diff --git a/ppapi/cpp/audio.h b/ppapi/cpp/audio.h new file mode 100644 index 0000000..6c75d42 --- /dev/null +++ b/ppapi/cpp/audio.h @@ -0,0 +1,37 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef PPAPI_CPP_AUDIO_H_ +#define PPAPI_CPP_AUDIO_H_ + +#include "ppapi/c/pp_stdint.h" +#include "ppapi/c/ppb_audio.h" +#include "ppapi/cpp/audio_config.h" +#include "ppapi/cpp/instance.h" +#include "ppapi/cpp/resource.h" + +namespace pp { + +class Audio : public Resource { + public: + Audio() {} + Audio(Instance* instance, + const AudioConfig& config, + PPB_Audio_Callback callback, + void* user_data); + + AudioConfig& config() { return config_; } + const AudioConfig& config() const { return config_; } + + bool StartPlayback(); + bool StopPlayback(); + + private: + AudioConfig config_; +}; + +} // namespace pp + +#endif // PPAPI_CPP_AUDIO_H_ + diff --git a/ppapi/cpp/audio_config.cc b/ppapi/cpp/audio_config.cc new file mode 100644 index 0000000..b553dad --- /dev/null +++ b/ppapi/cpp/audio_config.cc @@ -0,0 +1,49 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ppapi/cpp/audio_config.h" + +#include "ppapi/cpp/instance.h" +#include "ppapi/cpp/module.h" +#include "ppapi/cpp/module_impl.h" + +namespace pp { + +namespace { + +template <> const char* interface_name<PPB_AudioConfig>() { + return PPB_AUDIO_CONFIG_INTERFACE; +} + +} // namespace + +AudioConfig::AudioConfig() + : sample_rate_(PP_AUDIOSAMPLERATE_NONE), + sample_frame_count_(0) { +} + +AudioConfig::AudioConfig(Instance* instance, + PP_AudioSampleRate sample_rate, + uint32_t sample_frame_count) + : sample_rate_(sample_rate), + sample_frame_count_(sample_frame_count) { + if (has_interface<PPB_AudioConfig>()) { + PassRefFromConstructor( + get_interface<PPB_AudioConfig>()->CreateStereo16Bit( + instance->pp_instance(), sample_rate, sample_frame_count)); + } +} + +// static +uint32_t AudioConfig::RecommendSampleFrameCount( + PP_AudioSampleRate sample_rate, + uint32_t requested_sample_frame_count) { + if (!has_interface<PPB_AudioConfig>()) + return 0; + return get_interface<PPB_AudioConfig>()-> + RecommendSampleFrameCount(sample_rate, requested_sample_frame_count); +} + +} // namespace pp + diff --git a/ppapi/cpp/audio_config.h b/ppapi/cpp/audio_config.h new file mode 100644 index 0000000..82d8b97 --- /dev/null +++ b/ppapi/cpp/audio_config.h @@ -0,0 +1,61 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef PPAPI_CPP_AUDIO_CONFIG_H_ +#define PPAPI_CPP_AUDIO_CONFIG_H_ + +#include "ppapi/c/ppb_audio_config.h" +#include "ppapi/c/pp_stdint.h" +#include "ppapi/cpp/resource.h" + +namespace pp { + +class Instance; + +// Typical usage: +// +// // Create an audio config with a supported frame count. +// uint32_t sample_frame_count = AudioConfig::RecommendSampleFrameCount( +// PP_AUDIOSAMPLERATE_44100, 4096); +// AudioConfig config(PP_AUDIOSAMPLERATE_44100, sample_frame_count); +// if (config.is_null()) +// return false; // Couldn't configure audio. +// +// // Then use the config to create your audio resource. +// Audio audio(..., config, ...); +// if (audio.is_null()) +// return false; // Couldn't create audio. +class AudioConfig : public Resource { + public: + AudioConfig(); + + // Creates an audio config based on the given sample rate and frame count. + // If the rate and frame count aren't supported, the resulting resource + // will be is_null(). Pass the result of RecommendSampleFrameCount as the + // sample frame count. + // + // See PPB_AudioConfig.CreateStereo16Bit for more. + AudioConfig(Instance* instance, + PP_AudioSampleRate sample_rate, + uint32_t sample_frame_count); + + // Returns a supported frame count for use in the constructor. + // + // See PPB_AudioConfig.RecommendSampleFrameCount. + static uint32_t RecommendSampleFrameCount( + PP_AudioSampleRate sample_rate, + uint32_t requested_sample_frame_count); + + PP_AudioSampleRate sample_rate() const { return sample_rate_; } + uint32_t sample_frame_count() { return sample_frame_count_; } + + private: + PP_AudioSampleRate sample_rate_; + uint32_t sample_frame_count_; +}; + +} // namespace pp + +#endif // PPAPI_CPP_AUDIO_CONFIG_H_ + diff --git a/ppapi/cpp/dev/audio_config_dev.h b/ppapi/cpp/dev/audio_config_dev.h index 6b0f1f2..64079f0 100644 --- a/ppapi/cpp/dev/audio_config_dev.h +++ b/ppapi/cpp/dev/audio_config_dev.h @@ -33,7 +33,7 @@ class AudioConfig_Dev : public Resource { // Creates an audio config based on the given sample rate and frame count. // If the rate and frame count aren't supported, the resulting resource // will be is_null(). Pass the result of RecommendSampleFrameCount as the - // semple frame count. + // sample frame count. // // See PPB_AudioConfigDev.CreateStereo16Bit for more. AudioConfig_Dev(Instance* instance, |