- tag = swf_InsertTag(tag, ST_SOUNDSTREAMBLOCK);
- logf("<notice> Writing block %d", t);
- block1 = &samples[t*2*blocksize];
- swf_SetSoundStreamBlock(tag, block1, 1);
-
- oldframe = (int)framepos;
+ int seek = blocksize - ((int)samplepos - (int)framesamplepos);
+
+ if(newframepos!=oldframepos) {
+ tag = swf_InsertTag(tag, ST_SOUNDSTREAMBLOCK);
+ logf("<notice> Starting block %d %d+%d", t, (int)samplepos, (int)blocksize);
+ block1 = &samples[t*blocksize*4];
+ swf_SetSoundStreamBlock(tag, block1, seek, 1);
+ v1 = v2 = GET16(tag->data);
+ } else {
+ logf("<notice> Adding data...", t);
+ block1 = &samples[t*blocksize*4];
+ swf_SetSoundStreamBlock(tag, block1, seek, 0);
+ v1+=v2;
+ PUT16(tag->data, v1);
+ }
+ samplepos += blocksize;
+
+ oldframepos = (int)framepos;