// 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_