- 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
  */