+
+#ifdef LAME
+
+#include "../lame/lame.h"
+
+/* TODO: find a way to set these from the outside */
+int swf_mp3_samplerate = 44100;
+int swf_mp3_channels = 1;
+int swf_mp3_bitrate = 32;
+
+static lame_global_flags*lame_flags;
+
+static void initlame(unsigned char*buf, int bufsize)
+{
+ lame_flags = lame_init();
+
+ lame_set_in_samplerate(lame_flags, swf_mp3_samplerate);
+ lame_set_num_channels(lame_flags, swf_mp3_channels);
+ lame_set_scale(lame_flags, 0);
+
+ // MPEG1 32, 44.1, 48khz
+ // MPEG2 16, 22.05, 24
+ // MPEG2.5 8, 11.025, 12
+ // (not used by decoding routines)
+ lame_set_out_samplerate(lame_flags, 11025);
+
+ lame_set_quality(lame_flags, 0);
+ lame_set_mode(lame_flags, MONO/*3*/);
+ lame_set_brate(lame_flags, swf_mp3_bitrate);
+ //lame_set_compression_ratio(lame_flags, 11.025);
+ lame_set_bWriteVbrTag(lame_flags, 0);
+
+ lame_init_params(lame_flags);
+ lame_init_bitstream(lame_flags);
+
+ /* The first two flush calls to lame always fail, for
+ some reason. Do them here where they cause no damage. */
+ lame_encode_flush_nogap(lame_flags, buf, bufsize);
+ //printf("init:flush_nogap():%d\n", len);
+ lame_encode_flush(lame_flags, buf, bufsize);
+ //printf("init:flush():%d\n", len);
+}
+
+void swf_SetSoundStreamHead(TAG*tag, int avgnumsamples)
+{
+ unsigned char buf[4096];
+ int bufsize = 1152*2;
+ int len;
+ short int samples[1152*2];
+
+ U8 playbackrate = 1; // 0 = 5.5 Khz, 1 = 11 Khz, 2 = 22 Khz, 3 = 44 Khz
+ U8 playbacksize = 1; // 0 = 8 bit, 1 = 16 bit
+ U8 playbacktype = 0; // 0 = mono, 1 = stereo
+ 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