}
#endif
+void swf_SetSoundDefineRaw(TAG*tag, S16*samples, int numsamples)
+{
+ swf_SetU8(tag,(/*compression*/0<<4)|(/*rate*/3<<2)|(/*size*/1<<1)|/*mono*/0);
+ swf_SetU32(tag, numsamples); // 44100 -> 11025
+ swf_SetBlock(tag, (U8*)samples, numsamples*2);
+}
+
/* TODO: find a better way to set these from the outside */
int swf_mp3_in_samplerate = 44100;
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;
void swf_SetSoundStreamHead(TAG*tag, int avgnumsamples)
{
- fprintf(stderr, "Error: no sound support compiled in.\n");exit(1);
+ fprintf(stderr, "Error: no mp3 soundstream support compiled in.\n");exit(1);
}
void swf_SetSoundStreamBlock(TAG*tag, S16*samples, int seek, char first)
{
- fprintf(stderr, "Error: no sound support compiled in.\n");exit(1);
+ fprintf(stderr, "Error: no mp3 soundstream support compiled in.\n");exit(1);
}
void swf_SetSoundStreamEnd(TAG*tag)
{
- fprintf(stderr, "Error: no sound support compiled in.\n");exit(1);
-}
-void swf_SetSoundDefineRaw(TAG*tag, S16*samples, int num, int samplerate)
-{
- fprintf(stderr, "Error: no sound support compiled in.\n");exit(1);
+ fprintf(stderr, "Error: no mp3 soundstream support compiled in.\n");exit(1);
}
void swf_SetSoundDefine(TAG*tag, S16*samples, int num)
{
- fprintf(stderr, "Error: no sound support compiled in.\n");exit(1);
+ swf_SetSoundDefineRaw(tag, samples,num);
}
#endif
}
+void swf_SetSoundDefineMP3(TAG*tag, U8* data, unsigned length,
+ unsigned SampRate,
+ unsigned Channels,
+ unsigned NumFrames)
+{
+ U8 compression = 2; // 0 = raw, 1 = ADPCM, 2 = mp3, 3 = raw le, 6 = nellymoser
+ U8 rate; // 0 = 5.5 Khz, 1 = 11 Khz, 2 = 22 Khz, 3 = 44 Khz
+ U8 size = 1; // 0 = 8 bit, 1 = 16 bit
+ U8 type = Channels==2; // 0=mono, 1=stereo
+
+ rate = (SampRate >= 40000) ? 3
+ : (SampRate >= 19000) ? 2
+ : (SampRate >= 8000) ? 1
+ : 0;
+
+ swf_SetU8(tag,(compression<<4)|(rate<<2)|(size<<1)|type);
+
+ swf_SetU32(tag, NumFrames * 576);
+
+ swf_SetU16(tag, 0); //delayseek
+ swf_SetBlock(tag, data, length);
+}