+void swf_SetSoundStreamEnd(TAG*tag)
+{
+ lame_close (lame_flags);
+}
+
+void swf_SetSoundDefineRaw(TAG*tag, S16*samples, int num, int samplerate)
+{
+ //swf_SetU8(tag,(/*compression*/0<<4)|(/*rate*/3<<2)|(/*size*/1<<1)|/*mono*/0);
+ //swf_SetU32(tag, numsamples); // 44100 -> 11025
+ //swf_SetBlock(tag, wav2.data, numsamples*2);
+}
+void swf_SetSoundDefine(TAG*tag, S16*samples, int num)
+{
+ char*buf;
+ int oldlen=0,len = 0;
+ int bufsize = 16384;
+ int blocksize = (int)(((swf_mp3_out_samplerate > 22050) ? 1152 : 576) * ((double)swf_mp3_in_samplerate/swf_mp3_out_samplerate));
+ int t;
+ int blocks;
+
+ U8 compression = 2; // 0 = raw, 1 = ADPCM, 2 = mp3, 3 = raw le, 6 = nellymoser
+ U8 rate = 1; // 0 = 5.5 Khz, 1 = 11 Khz, 2 = 22 Khz, 3 = 44 Khz
+ U8 size = 1; // 0 = 8 bit, 1 = 16 bit
+ U8 type = 0; // 0 = mono, 1 = stereo
+
+ if(swf_mp3_out_samplerate == 5512) rate = 0;
+ else if(swf_mp3_out_samplerate == 11025) rate = 1;
+ else if(swf_mp3_out_samplerate == 22050) rate = 2;
+ else if(swf_mp3_out_samplerate == 44100) rate = 3;
+ else fprintf(stderr, "Invalid samplerate: %d\n", swf_mp3_out_samplerate);
+
+ blocks = num / (blocksize);
+
+ swf_SetU8(tag,(compression<<4)|(rate<<2)|(size<<1)|type);
+
+ swf_SetU32(tag, (int)(tag,blocks*blocksize /
+ ((double)swf_mp3_in_samplerate/swf_mp3_out_samplerate)) // account for resampling
+ );