Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Schlaile <peter@schlaile.de>2006-05-02 17:22:00 +0400
committerPeter Schlaile <peter@schlaile.de>2006-05-02 17:22:00 +0400
commit7deaac1d258d1e2f8bab395f35b0931fd5faadda (patch)
treeaff96633d548c1e3a0986ef2a91a88a58c908b86 /source/blender/src/seqaudio.c
parent444e4e36feab32f86cda95c22e37b2d84ebee674 (diff)
==Sequencer==
- Added early-out optimisation to add-effect (the case, where fac == 0) - Bugfixes: * hddaudio: ffmpeg does not seek always to the correct frame, if the SEEK_BACKWARD flag is used. Now we account for this and seek a little bit further... (hack, urghs) * hddaudio: on long timelines, the new seek code didn't work (forgot a long long cast) * the audio mixdown code now also calculates meta-strip IPOs
Diffstat (limited to 'source/blender/src/seqaudio.c')
-rw-r--r--source/blender/src/seqaudio.c43
1 files changed, 19 insertions, 24 deletions
diff --git a/source/blender/src/seqaudio.c b/source/blender/src/seqaudio.c
index 49527ed95d2..abeb6244e39 100644
--- a/source/blender/src/seqaudio.c
+++ b/source/blender/src/seqaudio.c
@@ -113,12 +113,28 @@ void makewavstring (char *string)
}
}
+static void do_sound_ipos(Sequence * seq)
+{
+ while(seq) {
+ if (seq->type == SEQ_META) {
+ do_sound_ipos(seq->seqbase.first);
+ }
+ if ((seq->type == SEQ_RAM_SOUND
+ || seq->type == SEQ_HD_SOUND)
+ && (seq->ipo)
+ && (seq->startdisp<=G.scene->r.cfra+2)
+ && (seq->enddisp>G.scene->r.cfra)) {
+ do_seq_ipo(seq);
+ }
+ seq = seq->next;
+ }
+}
+
void audio_mixdown()
{
int file, c, totlen, totframe, i, oldcfra, cfra2=0;
char *buf;
Editing *ed;
- Sequence *seq;
buf = MEM_mallocN(65536, "audio_mixdown");
makewavstring(buf);
@@ -176,17 +192,7 @@ void audio_mixdown()
memset(buf+i, 0, 64);
ed= G.scene->ed;
if (ed) {
- seq= ed->seqbasep->first;
- while(seq) {
- if ((seq->type == SEQ_RAM_SOUND
- || seq->type == SEQ_HD_SOUND)
- && (seq->ipo)
- && (seq->startdisp<=G.scene->r.cfra+2)
- && (seq->enddisp>G.scene->r.cfra)) {
- do_seq_ipo(seq);
- }
- seq = seq->next;
- }
+ do_sound_ipos(ed->seqbasep->first);
}
audio_fill(buf+i, NULL, 64);
if (G.order == B_ENDIAN) {
@@ -210,7 +216,6 @@ void audiostream_fill(Uint8 *mixdown, int len)
{
int oldcfra = CFRA;
Editing *ed;
- Sequence *seq;
int i;
memset(mixdown, 0, len);
@@ -222,17 +227,7 @@ void audiostream_fill(Uint8 *mixdown, int len)
ed = G.scene->ed;
if (ed) {
- seq = ed->seqbasep->first;
- while(seq) {
- if ((seq->type == SEQ_RAM_SOUND
- || seq->type == SEQ_HD_SOUND)
- && (seq->ipo)
- && (seq->startdisp <= G.scene->r.cfra + 2)
- && (seq->enddisp > G.scene->r.cfra)) {
- do_seq_ipo(seq);
- }
- seq = seq->next;
- }
+ do_sound_ipos(ed->seqbasep->first);
}
audio_fill(mixdown + i, NULL,