X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=avi2swf%2Fvideoreader_vfw.cc;h=b809eb0e2d68f334ccf0ee0b502bc633153446fe;hb=f8e8408f984b72dd90467f9c46ede4767139b189;hp=2da5acdb239e3b64b8828c75e3ef1e460da7d19d;hpb=359c111aa91dbbe9245a1bba2413692c63afdf73;p=swftools.git diff --git a/avi2swf/videoreader_vfw.cc b/avi2swf/videoreader_vfw.cc index 2da5acd..b809eb0 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; @@ -163,7 +167,6 @@ int videoreader_vfw_getimage(videoreader_t* vr, void*buffer) fprintf(stderr, "AVIStreamGetFrame failed\n"); return 0; } - printf("%dx%d:%d\n", bi->biWidth, bi->biHeight, bi->biBitCount); if(!bitmap_to_rgba(bi, buffer, i->width, i->height)) { fprintf(stderr, "couldn't convert bitmap to RGBA.\n"); @@ -231,8 +234,6 @@ void videoreader_vfw_close(videoreader_t* vr) void videoreader_vfw_setparameter(videoreader_t* vr, char*name, char*value) {} -static int avifile_initialized = 0; - int videoreader_vfw_open(videoreader_t* vr, char* filename) { memset(vr, 0, sizeof(videoreader_t)); @@ -264,7 +265,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) @@ -277,30 +278,40 @@ int videoreader_vfw_open(videoreader_t* vr, char* filename) /* video stream */ BITMAPINFOHEADER bitmap; - LONG size = sizeof(i->bitmap); - AVIStreamReadFormat(i->vs, 0, &bitmap, &size); + LONG size = sizeof(bitmap); + AVIStreamReadFormat(stream, 0, &bitmap, &size); - if(i->bitmap.biCompression == 0/*RGB*/) { + if(1) { i->bitmap = bitmap; i->vs = stream; i->width = bitmap.biWidth; i->height = bitmap.biHeight; + } else { + fprintf(stderr, "Ignoring video stream: %dx%d compression=%d planes=%d\n", + bitmap.biWidth, bitmap.biHeight, + bitmap.biCompression,bitmap.biPlanes); } } else if (streaminfo.fccType == streamtypeAUDIO) { /* audio stream */ WAVEFORMATEX waveformat; - LONG size = sizeof(i->waveformat); - AVIStreamReadFormat(i->as, 0, &waveformat, &size); + LONG size = sizeof(waveformat); + AVIStreamReadFormat(stream, 0, &waveformat, &size); - if(i->waveformat.wBitsPerSample == 16 || i->waveformat.wBitsPerSample == 8) { + if(waveformat.wBitsPerSample == 16 || + waveformat.wBitsPerSample == 8 || + waveformat.wBitsPerSample == 1 + ) { i->waveformat = waveformat; i->as = stream; - i->channels = i->waveformat.nChannels; - i->samplerate = i->waveformat.nSamplesPerSec; + i->channels = waveformat.nChannels; + i->samplerate = waveformat.nSamplesPerSec; + } else { + fprintf(stderr, "Ignoring audio stream: bitspersample=%d\n", waveformat.wBitsPerSample); } } + t++; } if(i->vs) {