class AudioBus;
class ExceptionState;
-class AudioBuffer : public ScriptWrappable, public RefCounted<AudioBuffer> {
+class AudioBuffer : public RefCountedWillBeGarbageCollectedFinalized<AudioBuffer>, public ScriptWrappable {
public:
- static PassRefPtr<AudioBuffer> create(unsigned numberOfChannels, size_t numberOfFrames, float sampleRate);
+ static PassRefPtrWillBeRawPtr<AudioBuffer> create(unsigned numberOfChannels, size_t numberOfFrames, float sampleRate);
+ static PassRefPtrWillBeRawPtr<AudioBuffer> create(unsigned numberOfChannels, size_t numberOfFrames, float sampleRate, ExceptionState&);
// Returns 0 if data is not a valid audio file.
- static PassRefPtr<AudioBuffer> createFromAudioFileData(const void* data, size_t dataSize, bool mixToMono, float sampleRate);
+ static PassRefPtrWillBeRawPtr<AudioBuffer> createFromAudioFileData(const void* data, size_t dataSize, bool mixToMono, float sampleRate);
+
+ static PassRefPtrWillBeRawPtr<AudioBuffer> createFromAudioBus(AudioBus*);
// Format
size_t length() const { return m_length; }
- double duration() const { return length() / sampleRate(); }
+ double duration() const { return length() / static_cast<double>(sampleRate()); }
float sampleRate() const { return m_sampleRate; }
// Channel data access
Float32Array* getChannelData(unsigned channelIndex);
void zero();
- // Scalar gain
- double gain() const { return m_gain; }
- void setGain(double gain) { m_gain = gain; }
-
static float minAllowedSampleRate();
static float maxAllowedSampleRate();
+
+ void trace(Visitor*) { }
+
protected:
AudioBuffer(unsigned numberOfChannels, size_t numberOfFrames, float sampleRate);
explicit AudioBuffer(AudioBus*);
bool createdSuccessfully(unsigned desiredNumberOfChannels) const;
- double m_gain; // scalar gain
float m_sampleRate;
size_t m_length;