[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40124] trunk/blender: Audio:

Joerg Mueller nexyon at gmail.com
Sun Sep 11 14:24:12 CEST 2011


Revision: 40124
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40124
Author:   nexyon
Date:     2011-09-11 12:24:11 +0000 (Sun, 11 Sep 2011)
Log Message:
-----------
Audio:
* Fix for high quality upsampling which was wrong.
* Fix for doppler effects which were calculated wrong for scenes.
* Improved animation evaluation at the beginning and end of a scene.

Modified Paths:
--------------
    trunk/blender/intern/audaspace/intern/AUD_JOSResampleReader.cpp
    trunk/blender/intern/audaspace/intern/AUD_SequencerHandle.cpp
    trunk/blender/intern/audaspace/intern/AUD_SequencerHandle.h
    trunk/blender/intern/audaspace/intern/AUD_SequencerReader.cpp
    trunk/blender/source/blender/editors/sound/sound_ops.c

Modified: trunk/blender/intern/audaspace/intern/AUD_JOSResampleReader.cpp
===================================================================
--- trunk/blender/intern/audaspace/intern/AUD_JOSResampleReader.cpp	2011-09-11 11:44:19 UTC (rev 40123)
+++ trunk/blender/intern/audaspace/intern/AUD_JOSResampleReader.cpp	2011-09-11 12:24:11 UTC (rev 40124)
@@ -118,7 +118,8 @@
 {\
 	sample_t* buf = m_buffer.getBuffer();\
 \
-	int P, l, end, channel, i;\
+	unsigned int P, l;\
+	int end, channel, i;\
 	double eta, v, f_increment, factor;\
 \
 	m_sums.assureSize(m_channels * sizeof(double));\
@@ -222,7 +223,7 @@
 \
 			for(channel = 0; channel < m_channels; channel++)\
 			{\
-				*buffer = f_increment / m_L * sums[channel];\
+								*buffer = factor * sums[channel];\
 				buffer++;\
 			}\
 		}\
@@ -230,7 +231,7 @@
 		m_P += fmod(1.0 / factor, 1.0);\
 		m_n += floor(1.0 / factor);\
 \
-		if(m_P >= 1.0)\
+		while(m_P >= 1.0)\
 		{\
 			m_P -= 1.0;\
 			m_n++;\
@@ -364,9 +365,9 @@
 	double factor = AUD_MIN(target_factor, m_last_factor);
 
 	if(factor >= 1)
-		len = (m_n - m_cache_valid) + int(ceil(length / factor)) + ceil(num_samples);
+		len = (int(m_n) - m_cache_valid) + int(ceil(length / factor)) + ceil(num_samples);
 	else
-		len = (m_n - m_cache_valid) + int(ceil(length / factor) + ceil(num_samples / factor));
+		len = (int(m_n) - m_cache_valid) + int(ceil(length / factor) + ceil(num_samples / factor));
 
 	if(len > 0)
 	{

Modified: trunk/blender/intern/audaspace/intern/AUD_SequencerHandle.cpp
===================================================================
--- trunk/blender/intern/audaspace/intern/AUD_SequencerHandle.cpp	2011-09-11 11:44:19 UTC (rev 40123)
+++ trunk/blender/intern/audaspace/intern/AUD_SequencerHandle.cpp	2011-09-11 12:24:11 UTC (rev 40124)
@@ -66,7 +66,7 @@
 		m_handle->stop();
 }
 
-void AUD_SequencerHandle::update(float position, float frame)
+void AUD_SequencerHandle::update(float position, float frame, float fps)
 {
 	if(!m_handle.isNull())
 	{
@@ -132,7 +132,7 @@
 		m_3dhandle->setSourceLocation(v);
 		m_entry->m_location.read(frame + 1, v2.get());
 		v2 -= v;
-		m_3dhandle->setSourceVelocity(v2);
+		m_3dhandle->setSourceVelocity(v2 * fps);
 
 		if(m_entry->m_muted)
 			m_handle->setVolume(0);

Modified: trunk/blender/intern/audaspace/intern/AUD_SequencerHandle.h
===================================================================
--- trunk/blender/intern/audaspace/intern/AUD_SequencerHandle.h	2011-09-11 11:44:19 UTC (rev 40123)
+++ trunk/blender/intern/audaspace/intern/AUD_SequencerHandle.h	2011-09-11 12:24:11 UTC (rev 40124)
@@ -94,8 +94,9 @@
 	 * Updates the handle for playback.
 	 * \param position The current time during playback.
 	 * \param frame The current frame during playback.
+	 * \param fps The animation frames per second.
 	 */
-	void update(float position, float frame);
+	void update(float position, float frame, float fps);
 
 	/**
 	 * Seeks the handle to a specific time position.

Modified: trunk/blender/intern/audaspace/intern/AUD_SequencerReader.cpp
===================================================================
--- trunk/blender/intern/audaspace/intern/AUD_SequencerReader.cpp	2011-09-11 11:44:19 UTC (rev 40123)
+++ trunk/blender/intern/audaspace/intern/AUD_SequencerReader.cpp	2011-09-11 12:24:11 UTC (rev 40124)
@@ -162,7 +162,7 @@
 
 		for(AUD_HandleIterator it = m_handles.begin(); it != m_handles.end(); it++)
 		{
-			(*it)->update(time, frame);
+			(*it)->update(time, frame, m_factory->m_fps);
 		}
 
 		m_factory->m_volume.read(frame, &volume);
@@ -174,7 +174,7 @@
 		m_device.setListenerLocation(v);
 		m_factory->m_location.read(frame + 1, v2.get());
 		v2 -= v;
-		m_device.setListenerVelocity(v2);
+		m_device.setListenerVelocity(v2 * m_factory->m_fps);
 
 		m_device.read(reinterpret_cast<data_t*>(buffer + specs.channels * pos), len);
 

Modified: trunk/blender/source/blender/editors/sound/sound_ops.c
===================================================================
--- trunk/blender/source/blender/editors/sound/sound_ops.c	2011-09-11 11:44:19 UTC (rev 40123)
+++ trunk/blender/source/blender/editors/sound/sound_ops.c	2011-09-11 12:24:11 UTC (rev 40124)
@@ -691,7 +691,7 @@
 
 	update_animation_flags_exec(C, NULL);
 
-	for(cfra = scene->r.sfra; cfra <= scene->r.efra; cfra++)
+	for(cfra = scene->r.sfra > 0 ? scene->r.sfra - 1 : 0; cfra <= scene->r.efra + 1; cfra++)
 	{
 		scene->r.cfra = cfra;
 		scene_update_for_newframe(bmain, scene, scene->lay);




More information about the Bf-blender-cvs mailing list