/* * COM Classes for avifil32 * * Copyright 2010 Alexandre Julliard * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #pragma makedep proxy #pragma makedep register import "wtypes.idl"; import "unknwn.idl"; typedef struct _AVISTREAMINFOW { DWORD fccType; DWORD fccHandler; DWORD dwFlags; DWORD dwCaps; WORD wPriority; WORD wLanguage; DWORD dwScale; DWORD dwRate; DWORD dwStart; DWORD dwLength; DWORD dwInitialFrames; DWORD dwSuggestedBufferSize; DWORD dwQuality; DWORD dwSampleSize; RECT rcFrame; DWORD dwEditCount; DWORD dwFormatChangeCount; WCHAR szName[64]; } AVISTREAMINFOW; [ object, uuid(00020021-0000-0000-c000-000000000046) ] interface IAVIStream : IUnknown { HRESULT Create(LPARAM lParam1, LPARAM lParam2); HRESULT Info(AVISTREAMINFOW *psi, LONG lSize); LONG FindSample(LONG lPos, LONG lFlags); HRESULT ReadFormat(LONG lPos, [out,size_is(*lpcbFormat)] char *lpFormat, [in,out] LONG *lpcbFormat); HRESULT SetFormat(LONG lPos, [in,size_is(cbFormat)] char *lpFormat, LONG cbFormat); HRESULT Read(LONG lStart, LONG lSamples, [out,size_is(cbBuffer)] char *lpBuffer, LONG cbBuffer, LONG *plBytes, LONG *plSamples); HRESULT Write(LONG lStart, LONG lSamples, [in,size_is(cbBuffer)] char *lpBuffer, LONG cbBuffer, DWORD dwFlags, LONG *plSampWritten, LONG *plBytesWritten); HRESULT Delete(LONG lStart, LONG lSamples); HRESULT ReadData(DWORD fcc, [out,size_is(*lpcbBuffer)] char *lpBuffer, [in,out] LONG *lpcbBuffer); HRESULT WriteData(DWORD fcc, [in,size_is(cbBuffer)] char *lpBuffer, LONG cbBuffer); HRESULT SetInfo(AVISTREAMINFOW *plInfo, LONG cbInfo); }; typedef struct _AVIFILEINFOW { DWORD dwMaxBytesPerSec; DWORD dwFlags; DWORD dwCaps; DWORD dwStreams; DWORD dwSuggestedBufferSize; DWORD dwWidth; DWORD dwHeight; DWORD dwScale; DWORD dwRate; DWORD dwLength; DWORD dwEditCount; WCHAR szFileType[64]; } AVIFILEINFOW; [ object, uuid(00020020-0000-0000-c000-000000000046) ] interface IAVIFile : IUnknown { HRESULT Info(AVIFILEINFOW *pfi, LONG lSize); HRESULT GetStream(IAVIStream **ppStream, DWORD fccType, LONG lParam); HRESULT CreateStream(IAVIStream **ppStream, AVISTREAMINFOW *psi); HRESULT WriteData(DWORD fcc, [in,size_is(cbBuffer)] char *lpBuffer, LONG cbBuffer); HRESULT ReadData(DWORD fcc, [out,size_is(*lpcbBuffer)] char *lpBuffer, [in,out] LONG *lpcbBuffer); HRESULT EndRecord(void); HRESULT DeleteStream(DWORD fccType, LONG lParam); }; [ helpstring("Microsoft AVI Files"), threading(both), uuid(00020000-0000-0000-C000-000000000046) ] coclass AVIFile { interface IAVIFile; } [ helpstring("AVI Compressed Stream"), threading(both), uuid(00020001-0000-0000-c000-000000000046) ] coclass ICMStream { interface IAVIStream; } [ helpstring("Microsoft Wave File"), threading(both), uuid(00020003-0000-0000-c000-000000000046) ] coclass WAVFile { interface IAVIFile; } [ helpstring("IAVIStream & IAVIFile Proxy"), threading(both), uuid(0002000d-0000-0000-c000-000000000046) ] coclass PSFactoryBuffer { interface IFactoryBuffer; } [ helpstring("ACM Compressed Audio Stream"), threading(both), uuid(0002000f-0000-0000-c000-000000000046) ] coclass ACMStream { interface IAVIStream; }