f9280e57287f49de601eb571d5361e5140decb58
[reactos.git] / dll / win32 / avifil32 / avifile_ifaces.idl
1 /*
2 * Proxy support for avifil32
3 *
4 * Copyright 2016 Dmitry Timoshkov
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 /*
22 * These interface descriptions are supposed to be used for automatic proxy
23 * generation by an IDL compiler.
24 *
25 * While it's possible to convert include/vfw.h to an .idl, that's proved to
26 * be a major waste of an effort because the resulting interface descriptions
27 * can't be used for automatic proxy generation since they are not compatible
28 * with IDL compiler restrictions for proxies, and fixing them up would make
29 * generated vfw.h source incompatible with PSDK's equivalent.
30 */
31
32 import "wtypes.idl";
33 import "unknwn.idl";
34
35 typedef struct _AVISTREAMINFOW
36 {
37 DWORD fccType;
38 DWORD fccHandler;
39 DWORD dwFlags;
40 DWORD dwCaps;
41 WORD wPriority;
42 WORD wLanguage;
43 DWORD dwScale;
44 DWORD dwRate;
45 DWORD dwStart;
46 DWORD dwLength;
47 DWORD dwInitialFrames;
48 DWORD dwSuggestedBufferSize;
49 DWORD dwQuality;
50 DWORD dwSampleSize;
51 RECT rcFrame;
52 DWORD dwEditCount;
53 DWORD dwFormatChangeCount;
54 WCHAR szName[64];
55 } AVISTREAMINFOW;
56
57 [
58 object,
59 uuid(00020021-0000-0000-c000-000000000046)
60 ]
61 interface IAVIStream : IUnknown
62 {
63 HRESULT Create(LPARAM lParam1, LPARAM lParam2);
64 HRESULT Info(AVISTREAMINFOW *psi, LONG lSize);
65 LONG FindSample(LONG lPos, LONG lFlags);
66 HRESULT ReadFormat(LONG lPos, [out,size_is(*lpcbFormat)] char *lpFormat, [in,out] LONG *lpcbFormat);
67 HRESULT SetFormat(LONG lPos, [in,size_is(cbFormat)] char *lpFormat, LONG cbFormat);
68 HRESULT Read(LONG lStart, LONG lSamples, [out,size_is(cbBuffer)] char *lpBuffer, LONG cbBuffer, LONG *plBytes, LONG *plSamples);
69 HRESULT Write(LONG lStart, LONG lSamples, [in,size_is(cbBuffer)] char *lpBuffer, LONG cbBuffer, DWORD dwFlags, LONG *plSampWritten, LONG *plBytesWritten);
70 HRESULT Delete(LONG lStart, LONG lSamples);
71 HRESULT ReadData(DWORD fcc, [out,size_is(*lpcbBuffer)] char *lpBuffer, [in,out] LONG *lpcbBuffer);
72 HRESULT WriteData(DWORD fcc, [in,size_is(cbBuffer)] char *lpBuffer, LONG cbBuffer);
73 HRESULT SetInfo(AVISTREAMINFOW *plInfo, LONG cbInfo);
74 };
75
76 typedef struct _AVIFILEINFOW
77 {
78 DWORD dwMaxBytesPerSec;
79 DWORD dwFlags;
80 DWORD dwCaps;
81 DWORD dwStreams;
82 DWORD dwSuggestedBufferSize;
83 DWORD dwWidth;
84 DWORD dwHeight;
85 DWORD dwScale;
86 DWORD dwRate;
87 DWORD dwLength;
88 DWORD dwEditCount;
89 WCHAR szFileType[64];
90 } AVIFILEINFOW;
91
92 [
93 object,
94 uuid(00020020-0000-0000-c000-000000000046)
95 ]
96 interface IAVIFile : IUnknown
97 {
98 HRESULT Info(AVIFILEINFOW *pfi, LONG lSize);
99 HRESULT GetStream(IAVIStream **ppStream, DWORD fccType, LONG lParam);
100 HRESULT CreateStream(IAVIStream **ppStream, AVISTREAMINFOW *psi);
101 HRESULT WriteData(DWORD fcc, [in,size_is(cbBuffer)] char *lpBuffer, LONG cbBuffer);
102 HRESULT ReadData(DWORD fcc, [out,size_is(*lpcbBuffer)] char *lpBuffer, [in,out] LONG *lpcbBuffer);
103 HRESULT EndRecord(void);
104 HRESULT DeleteStream(DWORD fccType, LONG lParam);
105 };