/* * Implements CLSID_FileWriter. * * Copyright (C) Hidenori TAKESHIMA * * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef WINE_DSHOW_FILESINK_H #define WINE_DSHOW_FILESINK_H #include "iunk.h" #include "basefilt.h" #include "seekpass.h" typedef struct CFileWriterImpl CFileWriterImpl; typedef struct CFileWriterPinImpl CFileWriterPinImpl; typedef struct FileWriterPin_IStreamImpl { ICOM_VFIELD(IStream); } FileWriterPin_IStreamImpl; typedef struct FileWriter_IFileSinkFilter2Impl { ICOM_VFIELD(IFileSinkFilter2); } FileWriter_IFileSinkFilter2Impl; struct CFileWriterImpl { QUARTZ_IUnkImpl unk; CBaseFilterImpl basefilter; FileWriter_IFileSinkFilter2Impl filesink; QUARTZ_IFDelegation qiext; CSeekingPassThru* pSeekPass; CFileWriterPinImpl* pPin; CRITICAL_SECTION m_csReceive; BOOL m_fInFlush; /* for writing */ HANDLE m_hFile; WCHAR* m_pszFileName; DWORD m_cbFileName; DWORD m_dwMode; AM_MEDIA_TYPE m_mt; }; struct CFileWriterPinImpl { QUARTZ_IUnkImpl unk; CPinBaseImpl pin; CMemInputPinBaseImpl meminput; FileWriterPin_IStreamImpl stream; CFileWriterImpl* pRender; }; #define CFileWriterImpl_THIS(iface,member) CFileWriterImpl* This = ((CFileWriterImpl*)(((char*)iface)-offsetof(CFileWriterImpl,member))) #define CFileWriterPinImpl_THIS(iface,member) CFileWriterPinImpl* This = ((CFileWriterPinImpl*)(((char*)iface)-offsetof(CFileWriterPinImpl,member))) #define CFileWriterPinImpl_IStream(th) ((IStream*)&((th)->stream)) HRESULT CFileWriterPinImpl_InitIStream( CFileWriterPinImpl* This ); HRESULT CFileWriterPinImpl_UninitIStream( CFileWriterPinImpl* This ); HRESULT CFileWriterImpl_InitIFileSinkFilter2( CFileWriterImpl* This ); HRESULT CFileWriterImpl_UninitIFileSinkFilter2( CFileWriterImpl* This ); HRESULT QUARTZ_CreateFileWriter(IUnknown* punkOuter,void** ppobj); HRESULT QUARTZ_CreateFileWriterPin( CFileWriterImpl* pFilter, CRITICAL_SECTION* pcsPin, CRITICAL_SECTION* pcsPinReceive, CFileWriterPinImpl** ppPin); #endif /* WINE_DSHOW_FILESINK_H */