git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added some parentheses
[swftools.git]
/
src
/
swfc.c
diff --git
a/src/swfc.c
b/src/swfc.c
index
009a215
..
bc6d711
100644
(file)
--- a/
src/swfc.c
+++ b/
src/swfc.c
@@
-32,8
+32,9
@@
#include "../lib/log.h"
#include "../lib/args.h"
#include "../lib/q.h"
#include "../lib/log.h"
#include "../lib/args.h"
#include "../lib/q.h"
+#include "../lib/mp3.h"
+#include "../lib/wav.h"
#include "parser.h"
#include "parser.h"
-#include "wav.h"
#include "../lib/png.h"
//#define DEBUG
#include "../lib/png.h"
//#define DEBUG
@@
-1113,6
+1114,8
@@
void s_texture(char*name, char*object, int x, int y, float scalex, float scaley,
parameters_t p;
FILLSTYLE*fs = &texture->fs;
parameters_t p;
FILLSTYLE*fs = &texture->fs;
+ memset(&p, 0, sizeof(parameters_t));
+
if(bitmap) {
fs->type = FILL_TILED;
fs->id_bitmap = bitmap->id;
if(bitmap) {
fs->type = FILL_TILED;
fs->id_bitmap = bitmap->id;
@@
-1201,18
+1204,16
@@
typedef struct _sound_t
void s_sound(char*name, char*filename)
{
struct WAV wav, wav2;
void s_sound(char*name, char*filename)
{
struct WAV wav, wav2;
+ struct MP3 mp3;
sound_t* sound;
sound_t* sound;
- U16*samples;
- int numsamples;
- int t;
- int blocksize = 1152;
-
- if(!readWAV(filename, &wav)) {
- warning("Couldn't read wav file \"%s\"", filename);
- samples = 0;
- numsamples = 0;
- } else {
- convertWAV2mono(&wav, &wav2, 44100);
+ U16*samples = NULL;
+ unsigned numsamples;
+ unsigned blocksize = 1152;
+ int is_mp3 = 0;
+
+ if(wav_read(&wav, filename)) {
+ int t;
+ wav_convert2mono(&wav, &wav2, 44100);
samples = (U16*)wav2.data;
numsamples = wav2.size/2;
free(wav.data);
samples = (U16*)wav2.data;
numsamples = wav2.size/2;
free(wav.data);
@@
-1222,6
+1223,16
@@
void s_sound(char*name, char*filename)
samples[t] = (samples[t]>>8)&0xff | (samples[t]<<8)&0xff00;
}
#endif
samples[t] = (samples[t]>>8)&0xff | (samples[t]<<8)&0xff00;
}
#endif
+ } else if(mp3_read(&mp3, filename)) {
+ fprintf(stderr, "\"%s\" seems to work as a MP3 file...\n", filename);
+ blocksize = 1;
+ is_mp3 = 1;
+ }
+ else
+ {
+ warning("Couldn't read WAV/MP3 file \"%s\"", filename);
+ samples = 0;
+ numsamples = 0;
}
if(numsamples%blocksize != 0)
}
if(numsamples%blocksize != 0)
@@
-1240,7
+1251,19
@@
void s_sound(char*name, char*filename)
tag = swf_InsertTag(tag, ST_DEFINESOUND);
swf_SetU16(tag, id); //id
tag = swf_InsertTag(tag, ST_DEFINESOUND);
swf_SetU16(tag, id); //id
- swf_SetSoundDefine(tag, samples, numsamples);
+ if(is_mp3)
+ {
+ swf_SetSoundDefineMP3(
+ tag, mp3.data, mp3.size,
+ mp3.SampRate,
+ mp3.Channels,
+ mp3.NumFrames);
+ mp3_clear(&mp3);
+ }
+ else
+ {
+ swf_SetSoundDefine(tag, samples, numsamples);
+ }
sound = (sound_t*)malloc(sizeof(sound_t)); /* mem leak */
sound->tag = tag;
sound = (sound_t*)malloc(sizeof(sound_t)); /* mem leak */
sound->tag = tag;
@@
-1361,7
+1384,7
@@
int s_swf3action(char*name, char*action)
ActionTAG* a = 0;
instance_t* object = 0;
if(name)
ActionTAG* a = 0;
instance_t* object = 0;
if(name)
- dictionary_lookup(&instances, name);
+ object = (instance_t*)dictionary_lookup(&instances, name);
if(!object && name && *name) {
/* we have a name, but couldn't find it. Abort. */
return 0;
if(!object && name && *name) {
/* we have a name, but couldn't find it. Abort. */
return 0;