[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12979] trunk/blender/source/blender/src: == Sequencer (Peach request) ==

Peter Schlaile peter at schlaile.de
Sun Dec 23 18:01:44 CET 2007


Revision: 12979
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12979
Author:   schlaile
Date:     2007-12-23 18:01:44 +0100 (Sun, 23 Dec 2007)

Log Message:
-----------
== Sequencer (Peach request) ==

Make the "Sync" button work when sound is disabled, Animators use this as a way to play animations at the right speed, could be renamed to "Drop Frames" and work even when blender built without audio enabled.

(do not forget to give credit to me :)

Modified Paths:
--------------
    trunk/blender/source/blender/src/drawview.c
    trunk/blender/source/blender/src/editscreen.c
    trunk/blender/source/blender/src/seqaudio.c

Modified: trunk/blender/source/blender/src/drawview.c
===================================================================
--- trunk/blender/source/blender/src/drawview.c	2007-12-23 11:47:45 UTC (rev 12978)
+++ trunk/blender/source/blender/src/drawview.c	2007-12-23 17:01:44 UTC (rev 12979)
@@ -3274,8 +3274,7 @@
 	static double ltime;
 	double time;
 
-	if ((U.mixbufsize)
-	    && (audiostream_pos() != CFRA)
+	if ((audiostream_pos() != CFRA)
 	    && (G.scene->audio.flag & AUDIO_SYNC)) {
 		return 0;
 	}
@@ -3507,7 +3506,6 @@
 		cached = cached_dynamics(PSFRA,PEFRA);
 	} else {
 		if (cached
-			&& U.mixbufsize 
 		    && (G.scene->audio.flag & AUDIO_SYNC)) {
 			CFRA = audiostream_pos();
 		} else {

Modified: trunk/blender/source/blender/src/editscreen.c
===================================================================
--- trunk/blender/source/blender/src/editscreen.c	2007-12-23 11:47:45 UTC (rev 12978)
+++ trunk/blender/source/blender/src/editscreen.c	2007-12-23 17:01:44 UTC (rev 12979)
@@ -1086,7 +1086,7 @@
 
 static void animated_screen(bScreen *sc, short val)
 {
-	if (U.mixbufsize && (val & TIME_WITH_SEQ_AUDIO)) {
+	if ((val & TIME_WITH_SEQ_AUDIO)) {
 		if(CFRA>=PEFRA) {
 			CFRA= PSFRA;
 			audiostream_stop();

Modified: trunk/blender/source/blender/src/seqaudio.c
===================================================================
--- trunk/blender/source/blender/src/seqaudio.c	2007-12-23 11:47:45 UTC (rev 12978)
+++ trunk/blender/source/blender/src/seqaudio.c	2007-12-23 17:01:44 UTC (rev 12979)
@@ -96,6 +96,7 @@
 static int audio_playing=0;
 static int audio_initialised=0;
 static int audio_startframe=0;
+static double audio_starttime = 0.0;
 /////
 //
 /* local protos ------------------- */
@@ -494,7 +495,7 @@
 		sound_init_audio();
 	}
 
-   	if (!audio_initialised && !(duration + mixdown)) {
+   	if (U.mixbufsize && !audio_initialised && !(duration + mixdown)) {
    		desired.freq=G.scene->audio.mixrate;
 		desired.format=AUDIO_S16SYS;
    		desired.channels=2;
@@ -508,7 +509,8 @@
 	audio_startframe = startframe;
 	audio_pos = ( ((int)( FRA2TIME(startframe)
 			      *(G.scene->audio.mixrate)*4 )) & (~3) );
-	
+	audio_starttime = PIL_check_seconds_timer();
+
 	audio_scrub = duration;
 	if (!mixdown) {
 		SDL_PauseAudio(0);
@@ -535,11 +537,16 @@
 int audiostream_pos(void) 
 {
 	int pos;
-	
-	pos = (int) (((double)(audio_pos-U.mixbufsize)
-		      / ( G.scene->audio.mixrate*4 ))
-		     * FPS );
 
+	if (U.mixbufsize) {
+		pos = (int) (((double)(audio_pos-U.mixbufsize)
+			      / ( G.scene->audio.mixrate*4 ))
+			     * FPS );
+	} else { /* fallback to seconds_timer when no audio available */
+		pos = (int) ((PIL_check_seconds_timer() - audio_starttime) 
+			     * FPS);
+	}
+
 	if (pos < audio_startframe) pos = audio_startframe;
 	return ( pos );
 }





More information about the Bf-blender-cvs mailing list