xref: /reactos/dll/win32/avifil32/avifil32.idl (revision cc439606)
1/*
2 * COM Classes for avifil32
3 *
4 * Copyright 2010 Alexandre Julliard
5 *
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.
10 *
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.
15 *
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
19 */
20
21#pragma makedep proxy
22#pragma makedep register
23
24import "wtypes.idl";
25import "unknwn.idl";
26
27typedef struct _AVISTREAMINFOW
28{
29    DWORD fccType;
30    DWORD fccHandler;
31    DWORD dwFlags;
32    DWORD dwCaps;
33    WORD  wPriority;
34    WORD  wLanguage;
35    DWORD dwScale;
36    DWORD dwRate;
37    DWORD dwStart;
38    DWORD dwLength;
39    DWORD dwInitialFrames;
40    DWORD dwSuggestedBufferSize;
41    DWORD dwQuality;
42    DWORD dwSampleSize;
43    RECT  rcFrame;
44    DWORD dwEditCount;
45    DWORD dwFormatChangeCount;
46    WCHAR szName[64];
47} AVISTREAMINFOW;
48
49[
50    object,
51    uuid(00020021-0000-0000-c000-000000000046)
52]
53interface IAVIStream : IUnknown
54{
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);
66};
67
68typedef struct _AVIFILEINFOW
69{
70    DWORD dwMaxBytesPerSec;
71    DWORD dwFlags;
72    DWORD dwCaps;
73    DWORD dwStreams;
74    DWORD dwSuggestedBufferSize;
75    DWORD dwWidth;
76    DWORD dwHeight;
77    DWORD dwScale;
78    DWORD dwRate;
79    DWORD dwLength;
80    DWORD dwEditCount;
81    WCHAR szFileType[64];
82} AVIFILEINFOW;
83
84[
85    object,
86    uuid(00020020-0000-0000-c000-000000000046)
87]
88interface IAVIFile : IUnknown
89{
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);
97};
98
99[
100    helpstring("Microsoft AVI Files"),
101    threading(both),
102    uuid(00020000-0000-0000-C000-000000000046)
103]
104coclass AVIFile { interface IAVIFile; }
105
106[
107    helpstring("AVI Compressed Stream"),
108    threading(both),
109    uuid(00020001-0000-0000-c000-000000000046)
110]
111coclass ICMStream { interface IAVIStream; }
112
113[
114    helpstring("Microsoft Wave File"),
115    threading(both),
116    uuid(00020003-0000-0000-c000-000000000046)
117]
118coclass WAVFile { interface IAVIFile; }
119
120[
121    helpstring("IAVIStream & IAVIFile Proxy"),
122    threading(both),
123    uuid(0002000d-0000-0000-c000-000000000046)
124]
125coclass PSFactoryBuffer { interface IFactoryBuffer; }
126
127[
128    helpstring("ACM Compressed Audio Stream"),
129    threading(both),
130    uuid(0002000f-0000-0000-c000-000000000046)
131]
132coclass ACMStream { interface IAVIStream; }
133