| // Copyright (c) 2012 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/resource.h" | |
| /// @file | |
| /// This file defines the API to create realtime stereo audio streaming | |
| /// capabilities. | |
| namespace pp { | |
| class InstanceHandle; | |
| /// An audio resource. Refer to the | |
| /// <a href="/native-client/devguide/coding/audio.html">Audio</a> | |
| /// chapter in the Developer's Guide for information on using this interface. | |
| class Audio : public Resource { | |
| public: | |
| /// An empty constructor for an Audio resource. | |
| Audio() {} | |
| /// A constructor that creates an Audio resource. No sound will be heard | |
| /// until StartPlayback() is called. The callback is called with the buffer | |
| /// address and given user data whenever the buffer needs to be filled. | |
| /// From within the callback, you should not call <code>PPB_Audio</code> | |
| /// functions. The callback will be called on a different thread than the one | |
| /// which created the interface. For performance-critical applications (such | |
| /// as low-latency audio), the callback should avoid blocking or calling | |
| /// functions that can obtain locks, such as malloc. The layout and the size | |
| /// of the buffer passed to the audio callback will be determined by | |
| /// the device configuration and is specified in the <code>AudioConfig</code> | |
| /// documentation. | |
| /// | |
| /// @param[in] instance The instance with which this resource will be | |
| /// associated. | |
| /// @param[in] config An <code>AudioConfig</code> containing the audio config | |
| /// resource. | |
| /// @param[in] callback A <code>PPB_Audio_Callback</code> callback function | |
| /// that the browser calls when it needs more samples to play. | |
| /// @param[in] user_data A pointer to user data used in the callback function. | |
| Audio(const InstanceHandle& instance, | |
| const AudioConfig& config, | |
| PPB_Audio_Callback callback, | |
| void* user_data); | |
| /// A constructor that creates an Audio resource. | |
| /// | |
| /// @param[in] instance The instance with which this resource will be | |
| /// associated. | |
| /// @param[in] config An <code>AudioConfig</code> containing the audio config | |
| /// resource. | |
| /// @param[in] callback A <code>PPB_Audio_Callback_1_0</code> callback | |
| /// function that the browser calls when it needs more samples to play. | |
| /// @param[in] user_data A pointer to user data used in the callback function. | |
| Audio(const InstanceHandle& instance, | |
| const AudioConfig& config, | |
| PPB_Audio_Callback_1_0 callback, | |
| void* user_data); | |
| /// Getter function for returning the internal <code>PPB_AudioConfig</code> | |
| /// struct. | |
| /// | |
| /// @return A mutable reference to the PPB_AudioConfig struct. | |
| AudioConfig& config() { return config_; } | |
| /// Getter function for returning the internal <code>PPB_AudioConfig</code> | |
| /// struct. | |
| /// | |
| /// @return A const reference to the internal <code>PPB_AudioConfig</code> | |
| /// struct. | |
| const AudioConfig& config() const { return config_; } | |
| /// StartPlayback() starts playback of audio. | |
| /// | |
| /// @return true if successful, otherwise false. | |
| bool StartPlayback(); | |
| /// StopPlayback stops playback of audio. | |
| /// | |
| /// @return true if successful, otherwise false. | |
| bool StopPlayback(); | |
| private: | |
| AudioConfig config_; | |
| bool use_1_0_interface_; | |
| }; | |
| } // namespace pp | |
| #endif // PPAPI_CPP_AUDIO_H_ | |