2 * COM Classes for avifil32
4 * Copyright 2010 Alexandre Julliard
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 #pragma makedep register
27 typedef struct _AVISTREAMINFOW
39 DWORD dwInitialFrames
;
40 DWORD dwSuggestedBufferSize
;
45 DWORD dwFormatChangeCount
;
51 uuid(00020021-0000-0000-c000
-000000000046)
53 interface IAVIStream
: IUnknown
55 HRESULT Create
(LPARAM lParam1
, LPARAM lParam2
);
56 HRESULT Info
(AVISTREAMINFOW
*psi
, LONG lSize
);
57 LONG FindSample
(LONG lPos
, LONG lFlags
);
58 HRESULT ReadFormat
(LONG lPos
, [out,size_is(*lpcbFormat
)] char *lpFormat
, [in,out] LONG *lpcbFormat
);
59 HRESULT SetFormat
(LONG lPos
, [in,size_is(cbFormat
)] char *lpFormat
, LONG cbFormat
);
60 HRESULT Read
(LONG lStart
, LONG lSamples
, [out,size_is(cbBuffer
)] char *lpBuffer
, LONG cbBuffer
, LONG *plBytes
, LONG *plSamples
);
61 HRESULT Write
(LONG lStart
, LONG lSamples
, [in,size_is(cbBuffer
)] char *lpBuffer
, LONG cbBuffer
, DWORD dwFlags
, LONG *plSampWritten
, LONG *plBytesWritten
);
62 HRESULT Delete
(LONG lStart
, LONG lSamples
);
63 HRESULT ReadData
(DWORD fcc
, [out,size_is(*lpcbBuffer
)] char *lpBuffer
, [in,out] LONG *lpcbBuffer
);
64 HRESULT WriteData
(DWORD fcc
, [in,size_is(cbBuffer
)] char *lpBuffer
, LONG cbBuffer
);
65 HRESULT SetInfo
(AVISTREAMINFOW
*plInfo
, LONG cbInfo
);
68 typedef struct _AVIFILEINFOW
70 DWORD dwMaxBytesPerSec
;
74 DWORD dwSuggestedBufferSize
;
86 uuid(00020020-0000-0000-c000
-000000000046)
88 interface IAVIFile
: IUnknown
90 HRESULT Info
(AVIFILEINFOW
*pfi
, LONG lSize
);
91 HRESULT GetStream
(IAVIStream
**ppStream
, DWORD fccType
, LONG lParam
);
92 HRESULT CreateStream
(IAVIStream
**ppStream
, AVISTREAMINFOW
*psi
);
93 HRESULT WriteData
(DWORD fcc
, [in,size_is(cbBuffer
)] char *lpBuffer
, LONG cbBuffer
);
94 HRESULT ReadData
(DWORD fcc
, [out,size_is(*lpcbBuffer
)] char *lpBuffer
, [in,out] LONG *lpcbBuffer
);
95 HRESULT EndRecord
(void);
96 HRESULT DeleteStream
(DWORD fccType
, LONG lParam
);
100 helpstring("Microsoft AVI Files"),
102 uuid(00020000-0000-0000-C000
-000000000046)
104 coclass AVIFile
{ interface IAVIFile
; }
107 helpstring("AVI Compressed Stream"),
109 uuid(00020001-0000-0000-c000
-000000000046)
111 coclass ICMStream
{ interface IAVIStream
; }
114 helpstring("Microsoft Wave File"),
116 uuid(00020003-0000-0000-c000
-000000000046)
118 coclass WAVFile
{ interface IAVIFile
; }
121 helpstring("IAVIStream & IAVIFile Proxy"),
123 uuid(0002000d
-0000-0000-c000
-000000000046)
125 coclass PSFactoryBuffer
{ interface IPSFactoryBuffer
; }
128 helpstring("ACM Compressed Audio Stream"),
130 uuid(0002000f
-0000-0000-c000
-000000000046)
132 coclass ACMStream
{ interface IAVIStream
; }