[Bf-blender-cvs] [c3c2a3b] gooseberry: Revert "Attempted fix for OpenAL synchronization."
Antony Riakiotakis
noreply at git.blender.org
Mon Mar 16 11:54:34 CET 2015
Commit: c3c2a3bbe86dc400d4f5a6194f8d7c28624af231
Author: Antony Riakiotakis
Date: Mon Mar 16 11:45:59 2015 +0100
Branches: gooseberry
https://developer.blender.org/rBc3c2a3bbe86dc400d4f5a6194f8d7c28624af231
Revert "Attempted fix for OpenAL synchronization."
This reverts commit d10e80fe792c1c8f00c9c7ce4409002a4515570d.
===================================================================
M intern/audaspace/OpenAL/AUD_OpenALDevice.cpp
M intern/audaspace/OpenAL/AUD_OpenALDevice.h
M source/blender/blenkernel/intern/sound.c
===================================================================
diff --git a/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp b/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp
index 434928c..d055c13 100644
--- a/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp
+++ b/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp
@@ -97,7 +97,7 @@ bool AUD_OpenALDevice::AUD_OpenALHandle::pause(bool keep)
return false;}
AUD_OpenALDevice::AUD_OpenALHandle::AUD_OpenALHandle(AUD_OpenALDevice* device, ALenum format, boost::shared_ptr<AUD_IReader> reader, bool keep) :
- m_isBuffered(false), m_reader(reader), m_keep(keep), m_format(format), m_current(0), m_bytepos(0),
+ m_isBuffered(false), m_reader(reader), m_keep(keep), m_format(format), m_current(0),
m_eos(false), m_loopcount(0), m_stop(NULL), m_stop_data(NULL), m_status(AUD_STATUS_PLAYING),
m_device(device)
{
@@ -208,8 +208,6 @@ bool AUD_OpenALDevice::AUD_OpenALHandle::stop()
if(!m_isBuffered)
alDeleteBuffers(CYCLE_BUFFERS, m_buffers);
- m_bytepos = 0;
-
for(AUD_HandleIterator it = m_device->m_playingSounds.begin(); it != m_device->m_playingSounds.end(); it++)
{
if(it->get() == this)
@@ -271,8 +269,7 @@ bool AUD_OpenALDevice::AUD_OpenALHandle::seek(float position)
alSourcef(m_source, AL_SEC_OFFSET, position);
else
{
- int offset = (int)(position * m_reader->getSpecs().rate);
- m_reader->seek(offset);
+ m_reader->seek((int)(position * m_reader->getSpecs().rate));
m_eos = false;
ALint info;
@@ -318,14 +315,10 @@ bool AUD_OpenALDevice::AUD_OpenALHandle::seek(float position)
m_eos = false;
alSourceQueueBuffers(m_source, CYCLE_BUFFERS, m_buffers);
- m_bytepos = offset;
}
alSourceRewind(m_source);
}
- else {
- m_bytepos = offset;
- }
}
if(m_status == AUD_STATUS_STOPPED)
@@ -351,7 +344,8 @@ float AUD_OpenALDevice::AUD_OpenALHandle::getPosition()
if(!m_isBuffered)
{
AUD_Specs specs = m_reader->getSpecs();
- position += (m_bytepos) / specs.rate;
+ position += (m_reader->getPosition() - m_device->m_buffersize *
+ CYCLE_BUFFERS) / (float)specs.rate;
}
return position;
@@ -956,7 +950,6 @@ void AUD_OpenALDevice::updateStreams()
// unqueue buffer (warning: this might fail for slow early returning sources (none exist so far) if the buffer was not queued due to recent changes - has to be tested)
alSourceUnqueueBuffers(sound->m_source, 1, &sound->m_buffers[sound->m_current]);
- sound->m_bytepos += length;
ALenum err;
if((err = alGetError()) != AL_NO_ERROR)
{
diff --git a/intern/audaspace/OpenAL/AUD_OpenALDevice.h b/intern/audaspace/OpenAL/AUD_OpenALDevice.h
index 142d482..f0e4782 100644
--- a/intern/audaspace/OpenAL/AUD_OpenALDevice.h
+++ b/intern/audaspace/OpenAL/AUD_OpenALDevice.h
@@ -75,8 +75,6 @@ private:
/// The first buffer to be read next.
int m_current;
- /// Amount of buffers already passed to OpenAL for processing. Used for proper timing
- unsigned int m_bytepos;
/// Whether the stream doesn't return any more data.
bool m_eos;
diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c
index 6acd727..b9d7066 100644
--- a/source/blender/blenkernel/intern/sound.c
+++ b/source/blender/blenkernel/intern/sound.c
@@ -621,7 +621,7 @@ void sound_seek_scene(struct Main *bmain, struct Scene *scene)
}
}
- if ((scene->audio.flag & AUDIO_SCRUB) && !animation_playing) {
+ if (scene->audio.flag & AUDIO_SCRUB && !animation_playing) {
if (scene->audio.flag & AUDIO_SYNC) {
AUD_seek(scene->sound_scene_handle, cur_time);
AUD_seekSequencer(scene->sound_scene_handle, cur_time);
More information about the Bf-blender-cvs
mailing list