#include "../lib/rfxswf.h"
#include "../lib/args.h"
}
+#undef HAVE_CONFIG_H
#include <avifile/version.h>
-#if (AVIFILE_MAJOR_VERSION == 0) && (AVIFILE_MINOR_VERSION==6)
+#if (AVIFILE_MAJOR_VERSION == 0) && (AVIFILE_MINOR_VERSION>=6)
#include <avifile.h>
#include <aviplay.h>
#include <fourcc.h>
static char zlib = 0;
static double scale = 1.0;
+static int flip = 0;
#ifndef ST_DEFINEBITSJPEG
#define ST_DEFINEBITSJPEG 6
{"v","verbose"},
{"o","output"},
{"n","num"},
+ {"p","flip"},
{"s","start"},
+ {"d","scale"},
{"z","zlib"},
{"V","version"},
{0,0}
firstframe = atoi(val);
return 1;
}
+ else if(!strcmp(name, "p")) {
+ flip = 1;
+ return 0;
+ }
else if(!strcmp(name, "d")) {
scale = atoi(val)/100.0;
if(scale>1.0 || scale<=0) {
printf("\t-n , --num frames\t Number of frames to encode\n");
printf("\t-s , --start frame\t First frame to encode\n");
printf("\t-d , --scale factor\t Scale to factor percent\n");
+ printf("\t-p , --flip\t\t Turn movie upside down\n");
printf("\t-V , --version\t\t Print program version and exit\n");
exit(0);
}
}
best = bestsum/block->len;
- if(best > 96.0) {
+ if(best > 64.0) {
misses++;
return -1;
}
int c=0;
if(first) { //first run
tag = swf_InsertTag(NULL, ST_SOUNDSTREAMBLOCK);
- swf_SetSoundStreamBlock(tag, samples, 1);
+ swf_SetSoundStreamBlock(tag, samples, 0, 1);
} else {
- swf_SetSoundStreamBlock(tag, samples, 0);
+ swf_SetSoundStreamBlock(tag, samples, 0, 0);
}
mp3_sound_pos += mp3_block_size;
{
int x,y;
for(y=0;y<yblocksize;y++) {
-#ifdef VERSION6
- U8*mydata = img->At(oldheight-(int)((yy*yblocksize+y)*reziscale));
-#else
- U8*mydata = img->At((int)((yy*yblocksize+y)*reziscale));
-#endif
+ /* some avifile versions flip the image some don't. Maybe this is
+ even movie dependent. We just let the user decide which side's up. */
+ U8*mydata;
+ if(flip)
+ mydata = img->At(oldheight-(int)((yy*yblocksize+y)*reziscale));
+ else
+ mydata = img->At((int)((yy*yblocksize+y)*reziscale));
+
for(x=0;x<xblocksize;x++) {
blockbuffer[(y*xblocksize+x)*3+2] = mydata[((int)(((xx*xblocksize+x)*reziscale)))*3+0];
blockbuffer[(y*xblocksize+x)*3+1] = mydata[((int)(((xx*xblocksize+x)*reziscale)))*3+1];