+
+ // audio
+ movie_sound_pos += samplesperframe;
+
+ int first=1;
+ while(mp3_sound_pos<movie_sound_pos) {
+ if(astream->ReadFrames(buffer, bufsize,
+ mp3_block_size/samplefix,
+ samples_read, bytes_read)<0) {
+ printf("couldn't read %d samples\n", mp3_block_size);
+ break;
+ };
+ int t=0;
+ int s;
+ int c=0;
+ for(s=0;s<mp3_block_size;s++) {
+ block[s] = ((int)buffer[t]-128)*256;
+ c++;
+ if(c==samplefix) {
+ t++;
+ c=0;
+ }
+ }
+ if(first) { //first run
+ tag = swf_InsertTag(NULL, ST_SOUNDSTREAMBLOCK);
+ swf_SetSoundStreamBlock(tag, block, mp3_block_size,1);
+ } else {
+ swf_SetSoundStreamBlock(tag, block, mp3_block_size,0);
+ }
+
+ mp3_sound_pos += mp3_block_size/samplefix;
+
+ if(mp3_sound_pos>=movie_sound_pos) { // last run
+ swf_WriteTag(file, tag);
+ swf_DeleteTag(tag);
+ }
+ first = 0;
+ }
+
+ // video
+