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