git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
moved from mkvideo.c
[swftools.git]
/
lib
/
modules
/
swfsound.c
diff --git
a/lib/modules/swfsound.c
b/lib/modules/swfsound.c
index
fe3461d
..
ac60b55
100644
(file)
--- a/
lib/modules/swfsound.c
+++ b/
lib/modules/swfsound.c
@@
-70,15
+70,20
@@
void swf_SetSoundStreamBlock(TAG*tag, S16*samples, int numsamples, char first)
#ifdef LAME
#include "../lame/lame.h"
#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();
static lame_global_flags*lame_flags;
static void initlame(unsigned char*buf, int bufsize)
{
lame_flags = lame_init();
- lame_set_in_samplerate(lame_flags, 44100);
- lame_set_num_channels(lame_flags, 1);
+ 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
lame_set_scale(lame_flags, 0);
// MPEG1 32, 44.1, 48khz
@@
-89,6
+94,7
@@
static void initlame(unsigned char*buf, int bufsize)
lame_set_quality(lame_flags, 0);
lame_set_mode(lame_flags, MONO/*3*/);
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_set_compression_ratio(lame_flags, 11.025);
lame_set_bWriteVbrTag(lame_flags, 0);
@@
-127,7
+133,7
@@
void swf_SetSoundStreamHead(TAG*tag, int avgnumsamples)
swf_SetU16(tag,avgnumsamples);
}
swf_SetU16(tag,avgnumsamples);
}
-void swf_SetSoundStreamBlock(TAG*tag, S16*samples, char first)
+void swf_SetSoundStreamBlock(TAG*tag, S16*samples, int seek, char first)
{
char*buf;
int oldlen=0,len = 0;
{
char*buf;
int oldlen=0,len = 0;
@@
-141,8
+147,8
@@
void swf_SetSoundStreamBlock(TAG*tag, S16*samples, char first)
if(first) {
int fs = lame_get_framesize(lame_flags);
//printf("framesize:%d\n", fs);
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
+ swf_SetU16(tag, fs * first); // samples per mp3 frame
+ swf_SetU16(tag, seek); // seek
}
len += lame_encode_buffer(lame_flags, samples, samples, numsamples, &buf[len], bufsize-len);
}
len += lame_encode_buffer(lame_flags, samples, samples, numsamples, &buf[len], bufsize-len);
@@
-183,7
+189,8
@@
void swf_SetSoundDefine(TAG*tag, S16*samples, int num)
blocks = num / (blocksize);
swf_SetU8(tag,(compression<<4)|(rate<<2)|(size<<1)|type);
blocks = num / (blocksize);
swf_SetU8(tag,(compression<<4)|(rate<<2)|(size<<1)|type);
- swf_SetU32(tag,blocks*blocksize);
+
+ swf_SetU32(tag,blocks*blocksize / 4); // 44100 -> 11025
buf = malloc(bufsize);
if(!buf)
buf = malloc(bufsize);
if(!buf)
@@
-215,7
+222,7
@@
void swf_SetSoundDefine(TAG*tag, S16*samples, int num)
void swf_SetSoundInfo(TAG*tag, SOUNDINFO*info)
{
U8 flags = (info->stop?SOUNDINFO_STOP:0)
void swf_SetSoundInfo(TAG*tag, SOUNDINFO*info)
{
U8 flags = (info->stop?SOUNDINFO_STOP:0)
- |(info->multiple?SOUNDINFO_NOMULTIPLE:0)
+ |(info->nomultiple?SOUNDINFO_NOMULTIPLE:0)
|(info->envelopes?SOUNDINFO_HASENVELOPE:0)
|(info->loops?SOUNDINFO_HASLOOPS:0)
|(info->outpoint?SOUNDINFO_HASOUTPOINT:0)
|(info->envelopes?SOUNDINFO_HASENVELOPE:0)
|(info->loops?SOUNDINFO_HASLOOPS:0)
|(info->outpoint?SOUNDINFO_HASOUTPOINT:0)