git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
several simple bugfixes.
[swftools.git]
/
avi2swf
/
videoreader_vfw.cc
diff --git
a/avi2swf/videoreader_vfw.cc
b/avi2swf/videoreader_vfw.cc
index
2c2f809
..
ec05d13
100644
(file)
--- a/
avi2swf/videoreader_vfw.cc
+++ b/
avi2swf/videoreader_vfw.cc
@@
-51,6
+51,10
@@
typedef struct _videoreader_vfw_internal {
} videoreader_vfw_internal_t;
} videoreader_vfw_internal_t;
+static int avifile_initialized = 0;
+
+#define _TRACE_ {printf("%s: %d (%s)\n",__FILE__,__LINE__,__func__);fflush(stdout);}
+
bool videoreader_vfw_eof(videoreader_t* vr)
{
videoreader_vfw_internal_t* i = (videoreader_vfw_internal_t*)vr->internal;
bool videoreader_vfw_eof(videoreader_t* vr)
{
videoreader_vfw_internal_t* i = (videoreader_vfw_internal_t*)vr->internal;
@@
-223,7
+227,8
@@
void videoreader_vfw_close(videoreader_t* vr)
AVIStreamRelease(i->as); i->vs = 0;
}
AVIFileRelease(i->avifile); i->avifile = 0;
AVIStreamRelease(i->as); i->vs = 0;
}
AVIFileRelease(i->avifile); i->avifile = 0;
- AVIFileExit();
+
+ AVIFileExit(); avifile_initialized=0;
free(vr->internal); vr->internal = 0;
}
free(vr->internal); vr->internal = 0;
}
@@
-248,7
+253,9
@@
int videoreader_vfw_open(videoreader_t* vr, char* filename)
vr->close = videoreader_vfw_close;
vr->setparameter = videoreader_vfw_setparameter;
vr->close = videoreader_vfw_close;
vr->setparameter = videoreader_vfw_setparameter;
- AVIFileInit();
+ if(!avifile_initialized) {
+ AVIFileInit();
+ }
if(AVIFileOpen(&i->avifile, filename, OF_SHARE_DENY_WRITE, 0)) {
fprintf(stderr, "Couldn't open %s\n", filename);
return -1;
if(AVIFileOpen(&i->avifile, filename, OF_SHARE_DENY_WRITE, 0)) {
fprintf(stderr, "Couldn't open %s\n", filename);
return -1;
@@
-259,7
+266,7
@@
int videoreader_vfw_open(videoreader_t* vr, char* filename)
/* calculate framerate */
i->fps = (double)info.dwRate/(double)info.dwScale;
/* calculate framerate */
i->fps = (double)info.dwRate/(double)info.dwScale;
- unsigned int t;
+ unsigned int t=0;
while(t<info.dwStreams) {
PAVISTREAM stream;
if(AVIFileGetStream(i->avifile, &stream, streamtypeANY, t) != AVIERR_OK || !stream)
while(t<info.dwStreams) {
PAVISTREAM stream;
if(AVIFileGetStream(i->avifile, &stream, streamtypeANY, t) != AVIERR_OK || !stream)
@@
-273,7
+280,7
@@
int videoreader_vfw_open(videoreader_t* vr, char* filename)
BITMAPINFOHEADER bitmap;
LONG size = sizeof(i->bitmap);
BITMAPINFOHEADER bitmap;
LONG size = sizeof(i->bitmap);
- AVIStreamReadFormat(i->vs, 0, &bitmap, &size);
+ AVIStreamReadFormat(stream, 0, &bitmap, &size);
if(i->bitmap.biCompression == 0/*RGB*/) {
i->bitmap = bitmap;
if(i->bitmap.biCompression == 0/*RGB*/) {
i->bitmap = bitmap;
@@
-287,7
+294,7
@@
int videoreader_vfw_open(videoreader_t* vr, char* filename)
WAVEFORMATEX waveformat;
LONG size = sizeof(i->waveformat);
WAVEFORMATEX waveformat;
LONG size = sizeof(i->waveformat);
- AVIStreamReadFormat(i->as, 0, &waveformat, &size);
+ AVIStreamReadFormat(stream, 0, &waveformat, &size);
if(i->waveformat.wBitsPerSample == 16 || i->waveformat.wBitsPerSample == 8) {
i->waveformat = waveformat;
if(i->waveformat.wBitsPerSample == 16 || i->waveformat.wBitsPerSample == 8) {
i->waveformat = waveformat;
@@
-296,6
+303,7
@@
int videoreader_vfw_open(videoreader_t* vr, char* filename)
i->samplerate = i->waveformat.nSamplesPerSec;
}
}
i->samplerate = i->waveformat.nSamplesPerSec;
}
}
+ t++;
}
if(i->vs) {
}
if(i->vs) {