+ swf_SetU8(tag,(playbackrate<<2)|(playbacksize<<1)|playbacktype);
+ swf_SetU8(tag,(compression<<4)|(rate<<2)|(size<<1)|type);
+ swf_SetU16(tag,avgnumsamples);
+
+ /* The first two flush calls to lame always fail, for
+ some reason. Do them here where they cause no damage. */
+ len = lame_encode_flush_nogap(lame_flags, buf, bufsize);
+ //printf("init:flush_nogap():%d\n", len);
+ len = lame_encode_flush(lame_flags, buf, bufsize);
+ //printf("init:flush():%d\n", len);
+}
+
+void swf_SetSoundStreamBlock(TAG*tag, S16*samples, char first)
+{
+ char*buf;
+ int oldlen=0,len = 0;
+ int bufsize = 16384;
+ int numsamples = 1152*2;
+
+ buf = malloc(bufsize);
+ if(!buf)
+ return;
+
+ if(first) {
+ int fs = lame_get_framesize(lame_flags);
+ //printf("framesize:%d\n", fs);
+ swf_SetU16(tag, fs); // samples per mp3 frame
+ swf_SetU16(tag, 0); // seek
+ }
+
+ len += lame_encode_buffer(lame_flags, samples, samples, numsamples, &buf[len], bufsize-len);
+ //printf("block: %d (+%d)\n", len, len-oldlen);
+ oldlen = len;
+
+ len += lame_encode_flush_nogap(lame_flags, &buf[len], bufsize-len);
+ //printf("flush: %d (+%d)\n", len, len-oldlen);
+ oldlen = len;
+