[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