static void writeShape(v2swf_internal_t*i, int id, int gfxid, int width, int height)
{
RGBA rgb;
static void writeShape(v2swf_internal_t*i, int id, int gfxid, int width, int height)
{
RGBA rgb;
static int getSamples(videoreader_t*video, S16*data, int len, double speedup)
{
double pos = 0;
static int getSamples(videoreader_t*video, S16*data, int len, double speedup)
{
double pos = 0;
/* notice: for framerates greater than about 35, audio starts getting choppy. */
framespersecond = i->framerate;
/* notice: for framerates greater than about 35, audio starts getting choppy. */
framespersecond = i->framerate;
samplesperframe = (blocksize * blockspersecond) / framespersecond; /* 11khz-samples per frame */
samplesperblock = samplesperframe * framesperblock;
samplesperframe = (blocksize * blockspersecond) / framespersecond; /* 11khz-samples per frame */
samplesperblock = samplesperframe * framesperblock;
+ swf_mp3_out_samplerate = i->samplerate;
+ /* The pre-processing of sound samples in getSamples(..) above
+ re-samples the sound to swf_mp3_in_samplerate. It is best to
+ simply make it the original samplerate: */
+ swf_mp3_in_samplerate = i->video->rate;
+
/* first run - initialize */
swf_mp3_channels = 1;//i->video->channels;
swf_mp3_bitrate = i->bitrate;
swf_ResetTag(i->tag, ST_SOUNDSTREAMHEAD);
/* samplesperframe overrides the movie framerate: */
/* first run - initialize */
swf_mp3_channels = 1;//i->video->channels;
swf_mp3_bitrate = i->bitrate;
swf_ResetTag(i->tag, ST_SOUNDSTREAMHEAD);
/* samplesperframe overrides the movie framerate: */
/* for framerates greater than 19.14, every now and then a frame
hasn't a soundstreamblock. Determine whether this is the case.
*/
/* for framerates greater than 19.14, every now and then a frame
hasn't a soundstreamblock. Determine whether this is the case.
*/
- if(!num) {
- logf("num is zero");
- printf(" num is zero\n");
- fprintf(stderr, " num is zero\n");
- }
- logf("num: %d", num);
+ while(i->samplewritepos < i->samplepos);
+
+ msg("SOUND: number of blocks: %d", num);
/* write num frames, max 1 block */
for(pos=0;pos<num;pos++) {
/* write num frames, max 1 block */
for(pos=0;pos<num;pos++) {
- logf("pos: %d- getsamples", pos);
- if(!getSamples(i->video, block1, 576*4, speedup)) { /* 4 = 44100/11025 */
+ if(!getSamples(i->video, block1, blocksize * (double)swf_mp3_in_samplerate/swf_mp3_out_samplerate, speedup)) {
if(!pos) {
swf_ResetTag(i->tag, ST_SOUNDSTREAMBLOCK);
swf_SetSoundStreamBlock(i->tag, block1, seek, num);
if(!pos) {
swf_ResetTag(i->tag, ST_SOUNDSTREAMBLOCK);
swf_SetSoundStreamBlock(i->tag, block1, seek, num);
swf_ResetTag(i->tag, ST_END);
i->filesize += swf_WriteTag2(&i->out, i->tag);
swf_ResetTag(i->tag, ST_END);
i->filesize += swf_WriteTag2(&i->out, i->tag);
- logf("Creating bitmap buffer for %dx%d (%dx%d), (%dx%d)\n", i->width, i->height, width2, i->height, width8, height8);
+ msg("Creating bitmap buffer for %dx%d (%dx%d), (%dx%d)\n", i->width, i->height, width2, i->height, width8, height8);
i->lastbitmap = (U8*)malloc(width2*i->height);
}
memcpy(i->lastbitmap, i->buffer, width2*i->height);
i->lastbitmap = (U8*)malloc(width2*i->height);
}
memcpy(i->lastbitmap, i->buffer, width2*i->height);
swf_SetVideoStreamIFrame(i->tag, &i->stream, (RGBA*)i->buffer, quant);
i->keyframe = i->keyframe_interval;
} else {
swf_SetVideoStreamIFrame(i->tag, &i->stream, (RGBA*)i->buffer, quant);
i->keyframe = i->keyframe_interval;
} else {
swf_SetVideoStreamPFrame(i->tag, &i->stream, (RGBA*)i->buffer, quant);
}
i->filesize += swf_WriteTag2(&i->out, i->tag);
swf_SetVideoStreamPFrame(i->tag, &i->stream, (RGBA*)i->buffer, quant);
}
i->filesize += swf_WriteTag2(&i->out, i->tag);
memset(v2swf, 0, sizeof(v2swf_t));
i = (v2swf_internal_t*)malloc(sizeof(v2swf_internal_t));
memset(i, 0, sizeof(v2swf_internal_t));
memset(v2swf, 0, sizeof(v2swf_t));
i = (v2swf_internal_t*)malloc(sizeof(v2swf_internal_t));
memset(i, 0, sizeof(v2swf_internal_t));
- logf("video: %dx%d, fps %f\n", video->width, video->height, video->fps);
+ msg("video: %dx%d, fps %f\n", video->width, video->height, video->fps);
i->blockdiff = atoi(value);
} else if(!strcmp(name, "fixheader")) {
i->fixheader = atoi(value);
i->blockdiff = atoi(value);
} else if(!strcmp(name, "fixheader")) {
i->fixheader = atoi(value);
} else if(!strcmp(name, "framerate")) {
i->framerate = atof(value);
i->fpsratio = i->framerate / i->video->fps;
} else if(!strcmp(name, "framerate")) {
i->framerate = atof(value);
i->fpsratio = i->framerate / i->video->fps;
- logf("bitrate %d requested, setting to %d", o, i->bitrate);
+ msg("bitrate %d requested, setting to %d", o, i->bitrate);
}
else if(!strcmp(name, "blockdiff_mode")) {
if(!strcmp(value, "max")) i->diffmode = DIFFMODE_MAX;
}
else if(!strcmp(name, "blockdiff_mode")) {
if(!strcmp(value, "max")) i->diffmode = DIFFMODE_MAX;
memset(&tmp, 0, sizeof(tmp));
fi = open(filename, O_RDONLY|O_BINARY);
if(fi>=0) {
memset(&tmp, 0, sizeof(tmp));
fi = open(filename, O_RDONLY|O_BINARY);
if(fi>=0) {