X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=avi2swf%2Fvideoreader_vfw.cc;h=ec05d13d5f0474ac1b7079ed7a7927ad79fc4b5c;hb=f6ce637601b5df9caa3322dff694b7642557d80f;hp=2c2f80960bfeac66e59008d478d903dac81dbd98;hpb=91848889de64a4efacc5930c2109f96fb6ed1146;p=swftools.git diff --git a/avi2swf/videoreader_vfw.cc b/avi2swf/videoreader_vfw.cc index 2c2f809..ec05d13 100644 --- a/avi2swf/videoreader_vfw.cc +++ b/avi2swf/videoreader_vfw.cc @@ -51,6 +51,10 @@ typedef struct _videoreader_vfw_internal { } 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; @@ -223,7 +227,8 @@ void videoreader_vfw_close(videoreader_t* vr) AVIStreamRelease(i->as); i->vs = 0; } AVIFileRelease(i->avifile); i->avifile = 0; - AVIFileExit(); + + AVIFileExit(); avifile_initialized=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; - 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; @@ -259,7 +266,7 @@ int videoreader_vfw_open(videoreader_t* vr, char* filename) /* calculate framerate */ i->fps = (double)info.dwRate/(double)info.dwScale; - unsigned int t; + unsigned int t=0; while(tavifile, &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); - AVIStreamReadFormat(i->vs, 0, &bitmap, &size); + AVIStreamReadFormat(stream, 0, &bitmap, &size); 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); - AVIStreamReadFormat(i->as, 0, &waveformat, &size); + AVIStreamReadFormat(stream, 0, &waveformat, &size); 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; } } + t++; } if(i->vs) {