[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27010] trunk/blender/source/blender: Basic AV Sync for forward playing.

Joerg Mueller nexyon at gmail.com
Thu Feb 18 15:17:53 CET 2010


Revision: 27010
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27010
Author:   nexyon
Date:     2010-02-18 15:17:53 +0100 (Thu, 18 Feb 2010)

Log Message:
-----------
Basic AV Sync for forward playing.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_sound.h
    trunk/blender/source/blender/blenkernel/intern/sound.c
    trunk/blender/source/blender/editors/screen/screen_ops.c

Modified: trunk/blender/source/blender/blenkernel/BKE_sound.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sound.h	2010-02-18 11:49:17 UTC (rev 27009)
+++ trunk/blender/source/blender/blenkernel/BKE_sound.h	2010-02-18 14:17:53 UTC (rev 27010)
@@ -86,6 +86,8 @@
 
 void sound_seek_scene(struct bContext *C);
 
+float sound_sync_scene(struct Scene *scene);
+
 int sound_read_sound_buffer(struct bSound* sound, float* buffer, int length);
 
 #endif

Modified: trunk/blender/source/blender/blenkernel/intern/sound.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sound.c	2010-02-18 11:49:17 UTC (rev 27009)
+++ trunk/blender/source/blender/blenkernel/intern/sound.c	2010-02-18 14:17:53 UTC (rev 27010)
@@ -394,6 +394,11 @@
 	AUD_unlock();
 }
 
+float sound_sync_scene(struct Scene *scene)
+{
+	return AUD_getPosition(scene->sound_scene_handle);
+}
+
 int sound_read_sound_buffer(bSound* sound, float* buffer, int length)
 {
 	return AUD_readSound(sound->cache, buffer, length);

Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c	2010-02-18 11:49:17 UTC (rev 27009)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c	2010-02-18 14:17:53 UTC (rev 27010)
@@ -2429,13 +2429,17 @@
 		else sync= (scene->audio.flag & AUDIO_SYNC);
 		
 		if(sync) {
-			/* skip frames */
-			int step = floor(wt->duration * FPS);
 			if(sad->flag & ANIMPLAY_FLAG_REVERSE) // XXX does this option work with audio?
+			{                                     // XXX - no
+				/* skip frames */
+				int step = floor(wt->duration * FPS);
 				scene->r.cfra -= step;
+				wt->duration -= ((float)step)/FPS;
+			}
 			else
-				scene->r.cfra += step;
-			wt->duration -= ((float)step)/FPS;
+			{
+				scene->r.cfra = floor(sound_sync_scene(scene) * FPS);
+			}
 		}
 		else {
 			/* one frame +/- */





More information about the Bf-blender-cvs mailing list