mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 821737 - r=kinetik
This commit is contained in:
parent
934df64ff5
commit
c4835a573f
@ -604,6 +604,10 @@ class BufferedAudioStream : public AudioStream
|
|||||||
int64_t GetPositionInFramesInternal();
|
int64_t GetPositionInFramesInternal();
|
||||||
bool IsPaused();
|
bool IsPaused();
|
||||||
int32_t GetMinWriteSize();
|
int32_t GetMinWriteSize();
|
||||||
|
// This method acquires the monitor and forward the call to the base
|
||||||
|
// class, to prevent a race on |mTimeStretcher|, in
|
||||||
|
// |AudioStream::EnsureTimeStretcherInitialized|.
|
||||||
|
void EnsureTimeStretcherInitialized();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static long DataCallback_S(cubeb_stream*, void* aThis, void* aBuffer, long aFrames)
|
static long DataCallback_S(cubeb_stream*, void* aThis, void* aBuffer, long aFrames)
|
||||||
@ -702,6 +706,13 @@ BufferedAudioStream::~BufferedAudioStream()
|
|||||||
Shutdown();
|
Shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
BufferedAudioStream::EnsureTimeStretcherInitialized()
|
||||||
|
{
|
||||||
|
MonitorAutoLock mon(mMonitor);
|
||||||
|
AudioStream::EnsureTimeStretcherInitialized();
|
||||||
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
BufferedAudioStream::Init(int32_t aNumChannels, int32_t aRate,
|
BufferedAudioStream::Init(int32_t aNumChannels, int32_t aRate,
|
||||||
const dom::AudioChannelType aAudioChannelType)
|
const dom::AudioChannelType aAudioChannelType)
|
||||||
@ -962,7 +973,8 @@ BufferedAudioStream::GetTimeStretched(void* aBuffer, long aFrames)
|
|||||||
{
|
{
|
||||||
long processedFrames = 0;
|
long processedFrames = 0;
|
||||||
|
|
||||||
EnsureTimeStretcherInitialized();
|
// We need to call the non-locking version, because we already have the lock.
|
||||||
|
AudioStream::EnsureTimeStretcherInitialized();
|
||||||
|
|
||||||
uint8_t* wpos = reinterpret_cast<uint8_t*>(aBuffer);
|
uint8_t* wpos = reinterpret_cast<uint8_t*>(aBuffer);
|
||||||
double playbackRate = static_cast<double>(mInRate) / mOutRate;
|
double playbackRate = static_cast<double>(mInRate) / mOutRate;
|
||||||
|
@ -160,7 +160,7 @@ public:
|
|||||||
int GetChannels() { return mChannels; }
|
int GetChannels() { return mChannels; }
|
||||||
|
|
||||||
// This should be called before attempting to use the time stretcher.
|
// This should be called before attempting to use the time stretcher.
|
||||||
void EnsureTimeStretcherInitialized();
|
virtual void EnsureTimeStretcherInitialized();
|
||||||
// Set playback rate as a multiple of the intrinsic playback rate. This is to
|
// Set playback rate as a multiple of the intrinsic playback rate. This is to
|
||||||
// be called only with aPlaybackRate > 0.0.
|
// be called only with aPlaybackRate > 0.0.
|
||||||
virtual nsresult SetPlaybackRate(double aPlaybackRate);
|
virtual nsresult SetPlaybackRate(double aPlaybackRate);
|
||||||
|
Loading…
Reference in New Issue
Block a user