[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14142] trunk/blender/source/blender/src/ seqaudio.c: == Sequencer ==

Peter Schlaile peter at schlaile.de
Sun Mar 16 18:34:41 CET 2008


Revision: 14142
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14142
Author:   schlaile
Date:     2008-03-16 18:34:39 +0100 (Sun, 16 Mar 2008)

Log Message:
-----------
== Sequencer ==

This fixes:  	

[#8554] Sequencer: some metastrip plays audio outside of its limits

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

Modified: trunk/blender/source/blender/src/seqaudio.c
===================================================================
--- trunk/blender/source/blender/src/seqaudio.c	2008-03-16 17:24:29 UTC (rev 14141)
+++ trunk/blender/source/blender/src/seqaudio.c	2008-03-16 17:34:39 UTC (rev 14142)
@@ -359,38 +359,54 @@
 }
 
 static void audio_fill_seq(Sequence * seq, void * mixdown,
-			   Uint8 *sstream, int len)
+			   Uint8 *sstream, int len, int advance_only)
 {
 	while(seq) {
 		if (seq->type == SEQ_META &&
 		    (!(seq->flag & SEQ_MUTE))) {
-			audio_fill_seq(seq->seqbase.first,
-				       mixdown, sstream, len);
+			if (seq->startdisp <= CFRA && seq->enddisp > CFRA) {
+				audio_fill_seq(seq->seqbase.first,
+					       mixdown, sstream, len, 
+					       advance_only);
+			} else {
+				audio_fill_seq(seq->seqbase.first,
+					       mixdown, sstream, len, 
+					       1);
+			}
 		}
 		if ( (seq->type == SEQ_RAM_SOUND) &&
 		     (seq->sound) &&
 		     (!(seq->flag & SEQ_MUTE))) {
-			audio_fill_ram_sound(seq, mixdown, sstream, len);
+			if (advance_only) {
+				seq->curpos += len;
+			} else {
+				audio_fill_ram_sound(
+					seq, mixdown, sstream, len);
+			}
 		}
 		if ( (seq->type == SEQ_HD_SOUND) &&
 		     (!(seq->flag & SEQ_MUTE)))	{
-			if (!seq->hdaudio) {
-				char name[FILE_MAXDIR+FILE_MAXFILE];
+			if (advance_only) {
+				seq->curpos += len;
+			} else {
+				if (!seq->hdaudio) {
+					char name[FILE_MAXDIR+FILE_MAXFILE];
 
-				strncpy(name, seq->strip->dir, 
-					FILE_MAXDIR-1);
-				strncat(name, 
-					seq->strip->stripdata->name, 
-					FILE_MAXFILE-1);
-				BLI_convertstringcode(name, G.sce, 
-						      G.scene->r.cfra);
+					strncpy(name, seq->strip->dir, 
+						FILE_MAXDIR-1);
+					strncat(name, 
+						seq->strip->stripdata->name, 
+						FILE_MAXFILE-1);
+					BLI_convertstringcode(name, G.sce, 
+							      G.scene->r.cfra);
 				
-				seq->hdaudio= sound_open_hdaudio(name);
+					seq->hdaudio= sound_open_hdaudio(name);
+				}
+				if (seq->hdaudio) {
+					audio_fill_hd_sound(seq, mixdown, 
+							    sstream, len);
+				}
 			}
-			if (seq->hdaudio) {
-				audio_fill_hd_sound(seq, mixdown, 
-						    sstream, len);
-			}
 		}
 		seq = seq->next;
 	}
@@ -404,7 +420,7 @@
 	ed = G.scene->ed;
 	if((ed) && (!(G.scene->audio.flag & AUDIO_MUTE))) {
 		seq = ed->seqbasep->first;
-		audio_fill_seq(seq, mixdown, sstream, len);
+		audio_fill_seq(seq, mixdown, sstream, len, 0);
 	}
        
 	audio_pos += len;    
@@ -501,7 +517,11 @@
 		desired.format=AUDIO_S16SYS;
    		desired.channels=2;
    		desired.samples=U.mixbufsize;
-   		desired.userdata=0;	
+   		desired.userdata=0;
+
+		fprintf(stderr, "freq: %d, samples: %d\n",
+			G.scene->audio.mixrate, U.mixbufsize);
+
    		if (audio_init(&desired)==0) {
    			U.mixbufsize = 0;	/* no audio */
    		}





More information about the Bf-blender-cvs mailing list