- Fixed memory leak in AVISaveOptions. - Implemented AVISaveVW method. - Semi-stub implementation for CreateEditableStream method. - Added support for creation of interleaved AVI files. - Fixed creation of index table in AVI files. - Added declaration for IAVIStreaming interface. - Added some more macros. - Fixed some minor bugs.
diff --git a/include/vfw.h b/include/vfw.h index b7e1eb8..90ee7e4 100644 --- a/include/vfw.h +++ b/include/vfw.h
@@ -43,6 +43,7 @@ typedef struct IAVIFile IAVIFile,*PAVIFILE; typedef struct IGetFrame IGetFrame,*PGETFRAME; typedef struct IAVIEditStream IAVIEditStream, *PAVIEDITSTREAM; +typedef struct IAVIStreaming IAVIStreaming; /* Installable Compressor Manager */ @@ -1094,6 +1095,41 @@ #define AVIStreamStartTime(pavi) \ AVIStreamSampleToTime(pavi, AVIStreamStart(pavi)) +#define AVIStreamNextSample(pavi, pos) \ + AVIStreamFindSample(pavi, pos + 1, FIND_NEXT | FIND_ANY) +#define AVIStreamPrevSample(pavi, pos) \ + AVIStreamFindSample(pavi, pos - 1, FIND_PREV | FIND_ANY) +#define AVIStreamNearestSample(pavi, pos) \ + AVIStreamFindSample(pavi, pos, FIND_PREV | FIND_ANY) +#define AVStreamNextKeyFrame(pavi,pos) \ + AVIStreamFindSample(pavi, pos + 1, FIND_NEXT | FIND_KEY) +#define AVStreamPrevKeyFrame(pavi,pos) \ + AVIStreamFindSample(pavi, pos - 1, FIND_NEXT | FIND_KEY) +#define AVIStreamNearestKeyFrame(pavi,pos) \ + AVIStreamFindSample(pavi, pos, FIND_PREV | FIND_KEY) +#define AVIStreamIsKeyFrame(pavi, pos) \ + (AVIStreamNearestKeyFrame(pavi, pos) == pos) + +/***************************************************************************** + * IAVIStreaming interface + */ +#define INTERFACE IAVIStreaming +#define IAVIStreaming_METHODS \ + IUnknown_METHODS \ + STDMETHOD(Begin)(IAVIStreaming*iface,LONG lStart,LONG lEnd,LONG lRate) PURE; \ + STDMETHOD(End)(IAVIStreaming*iface) PURE; +#undef INTERFACE + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IAVIStreaming_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IAVIStreaming_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IAVIStreaming_Release(p) (p)->lpVtbl->Release(p) +/*** IAVIStreaming methods ***/ +#define IAVIStreaming_Begin(p,a,b,c) (p)->lpVtbl->Begin(p,a,b,c) +#define IAVIStreaming_End(p) (p)->lpVtbl->End(p) +#endif + /***************************************************************************** * IAVIEditStream interface */