From: d7o3g4q <d7...@us...> - 2004-09-23 15:36:40
|
Update of /cvsroot/tyshow/TyShow/VsrvSrc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2241/VsrvSrc Modified Files: VsrvSrc.cpp VsrvSrc.h VsrvSrc.vcproj stdafx.h Log Message: Lots of changes. Biggest difference is the support for streaming. many bugfixes Index: stdafx.h =================================================================== RCS file: /cvsroot/tyshow/TyShow/VsrvSrc/stdafx.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** stdafx.h 31 Oct 2003 16:37:59 -0000 1.2 --- stdafx.h 23 Sep 2004 15:35:48 -0000 1.3 *************** *** 1,10 **** ! // stdafx.h : include file for standard system include files, ! // or project specific include files that are used frequently, but ! // are changed infrequently ! // ! ! #pragma once ! ! #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit --- 1,10 ---- ! // stdafx.h : include file for standard system include files, ! // or project specific include files that are used frequently, but ! // are changed infrequently ! // ! ! #pragma once ! ! #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit Index: VsrvSrc.cpp =================================================================== RCS file: /cvsroot/tyshow/TyShow/VsrvSrc/VsrvSrc.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** VsrvSrc.cpp 31 Oct 2003 16:37:59 -0000 1.2 --- VsrvSrc.cpp 23 Sep 2004 15:35:48 -0000 1.3 *************** *** 1,6 **** ! // VsrvSrc.cpp : Defines the entry point for the DLL application. ! // ! ! #include "stdafx.h" #include <mmreg.h> #include <atlutil.h> --- 1,6 ---- ! // VsrvSrc.cpp : Defines the entry point for the DLL application. ! // ! ! #include "stdafx.h" #include <mmreg.h> #include <atlutil.h> *************** *** 11,14 **** --- 11,15 ---- #include <initguid.h> #include "..\include\ty.h" + #include <windows.h> #include <winsock2.h> #include "mfs\mfs.h" *************** *** 16,24 **** extern "C" { int vstream_start( char *ipaddress ); ! int vstream_fsidtoparts( char *fsid ); u64 vstream_streamsize( ); ! int vstream_load_chunk( char *fsid, unsigned char *buff, int size, u64 foffset ); } #ifdef REGISTER_FILTER --- 17,56 ---- extern "C" { int vstream_start( char *ipaddress ); ! int vstream_fsidtoparts( char *fsid, int isStreaming ); ! int vstream_reload_fsidtoparts( char* fsid ); u64 vstream_streamsize( ); ! void vstream_getpart( int part, int* fileNo, u64* fileSize, int* chunks ); ! int vstream_load_chunk( char *fsid, unsigned char *buff, int size, u64 foffset, int isStreaming ); ! void vstream_terminate(); ! int vstream_is_live_fsid( u32 fsid ); ! } ! ! ! class CSafeExitException ! { ! int m_code; ! public: ! CSafeExitException(int code) ! { ! m_code = code; ! } ! int Code() ! { ! return m_code; ! } ! }; ! ! void _safe_exit(int value) ! { ! throw CSafeExitException(value); ! } ! ! extern "C" void safe_exit(int value) ! { ! _safe_exit(value); } + const ULONG TIVO_CHUNK_SIZE = (128*1024); + #ifdef REGISTER_FILTER *************** *** 79,108 **** extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE, ULONG, LPVOID); ! const int WIN_SOCK_MAJOR_VER = 2; ! const int WIN_SOCK_MINOR_VER = 2; ! const int WIN_SOCK_MAJOR_VER_MIN = 2; ! const int WIN_SOCK_MINOR_VER_MIN = 0; ! BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { if(ul_reason_for_call == DLL_PROCESS_ATTACH) { ! WSADATA WinSockInfo; ! WORD wVersionRequested = MAKEWORD( WIN_SOCK_MAJOR_VER, WIN_SOCK_MINOR_VER ); ! int iRet = WSAStartup( wVersionRequested, &WinSockInfo ); ! if (iRet) ! { ! // If WinSock version expected is not less than our minimum, accept it ! if (iRet == WSAVERNOTSUPPORTED && ! (LOBYTE(WinSockInfo.wVersion ) >= WIN_SOCK_MAJOR_VER_MIN && HIBYTE(WinSockInfo.wVersion) >= WIN_SOCK_MINOR_VER_MIN)) ! { ! wVersionRequested = WinSockInfo.wVersion; ! iRet = WSAStartup( wVersionRequested, &WinSockInfo ); ! if (iRet) ! return FALSE; ! } ! else ! return FALSE; ! } } else if(ul_reason_for_call == DLL_PROCESS_DETACH) --- 111,140 ---- extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE, ULONG, LPVOID); ! const int WIN_SOCK_MAJOR_VER = 2; ! const int WIN_SOCK_MINOR_VER = 2; ! const int WIN_SOCK_MAJOR_VER_MIN = 2; ! const int WIN_SOCK_MINOR_VER_MIN = 0; ! BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { if(ul_reason_for_call == DLL_PROCESS_ATTACH) { ! WSADATA WinSockInfo; ! WORD wVersionRequested = MAKEWORD( WIN_SOCK_MAJOR_VER, WIN_SOCK_MINOR_VER ); ! int iRet = WSAStartup( wVersionRequested, &WinSockInfo ); ! if (iRet) ! { ! // If WinSock version expected is not less than our minimum, accept it ! if (iRet == WSAVERNOTSUPPORTED && ! (LOBYTE(WinSockInfo.wVersion ) >= WIN_SOCK_MAJOR_VER_MIN && HIBYTE(WinSockInfo.wVersion) >= WIN_SOCK_MINOR_VER_MIN)) ! { ! wVersionRequested = WinSockInfo.wVersion; ! iRet = WSAStartup( wVersionRequested, &WinSockInfo ); ! if (iRet) ! return FALSE; ! } ! else ! return FALSE; ! } } else if(ul_reason_for_call == DLL_PROCESS_DETACH) *************** *** 113,118 **** } // ! // CShoutcastSource // --- 145,195 ---- } + class CListingWindow : public CBaseWindow + { + public: + BOOL bAllDone; + + CListingWindow() : + CBaseWindow() + { + bAllDone = FALSE; + } + virtual ~CListingWindow() {} + + virtual LPTSTR GetClassWindowStyles( + DWORD *pClassStyles, // Class styles + DWORD *pWindowStyles, // Window styles + DWORD *pWindowStylesEx) // Extended styles + { + if( pClassStyles ) + *pClassStyles = CS_HREDRAW | CS_VREDRAW; + if( pWindowStyles ) + *pWindowStyles = WS_OVERLAPPEDWINDOW; + if( pWindowStylesEx ) + *pWindowStylesEx = 0; + return L"VsrvSrc Listing"; + } + BOOL OnClose() + { + CBaseWindow::OnClose(); + bAllDone = TRUE; + return TRUE; + } + + LRESULT OnReceiveMessage(HWND hwnd, // Window handle + UINT uMsg, // Message ID + WPARAM wParam, // First parameter + LPARAM lParam) // Other parameter + { + switch (uMsg) { + case WM_CREATE: + default: + return CBaseWindow::OnReceiveMessage(hwnd, uMsg, wParam, lParam); + }; + } + }; + // ! // CTySourceFilter // *************** *** 151,154 **** --- 228,281 ---- } + CString CTySourceFilter::RetrieveNowShowingSelection() + { + #if 0 + HINSTANCE hInstance = (HINSTANCE)GetModuleHandle(NULL); + + WNDCLASSEX wndclass; + wndclass.cbSize = sizeof( wndclass ); + wndclass.style = CS_HREDRAW | CS_VREDRAW; + wndclass.lpfnWndProc = WndProc; + wndclass.cbClsExtra = 0; + wndclass.cbWndExtra = 0; + wndclass.hInstance = hInstance; + wndclass.hCursor = LoadCursor( NULL, IDC_ARROW ); + wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION ); + wndclass.hbrBackground = (HBRUSH) GetStockObject( WHITE_BRUSH ); + wndclass.lpszMenuName = NULL; + wndclass.lpszClassName = L"VsrvSrc Selection"; + wndclass.hIconSm = LoadIcon( NULL, IDI_APPLICATION ); + RegisterClassEx(&wndclass); + + HWND hwnd = CreateWindow( L"VsrvSrc Selection", L"Choose a movie to watch", + WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, CW_USEDEFAULT, + CW_USEDEFAULT, CW_USEDEFAULT, + NULL, NULL, hInstance, NULL); + + ShowWindow(hwnd, SW_SHOW); + UpdateWindow(hwnd); + + return L"Hi"; + #else + CListingWindow wnd; + if( FAILED(wnd.PrepareWindow()) ) + return L""; + wnd.ActivateWindow(); + wnd.DoShowWindow(SW_SHOW); + + // Run a pump while our window is active + MSG msg; + while( GetMessage(&msg, NULL, 0, 0) && !wnd.bAllDone ) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + wnd.DoneWithWindow(); + + return L"Hi"; + #endif + } + // IFileSourceFilter *************** *** 210,213 **** --- 337,343 ---- , m_strHostName(NULL) , m_strPath(NULL) + , m_bIsPushFilter(true) + , m_bNeedStartPosition(false) + , m_llPushPosition(0) { ASSERT(phr); *************** *** 242,250 **** *p = '\0'; ! if( !vstream_start(m_strHostName) ) ! return; ! if( !vstream_fsidtoparts(m_strPath) ) return; *phr = S_OK; --- 372,399 ---- *p = '\0'; ! int fsid = atoi(m_strPath); ! try ! { ! if( !vstream_start(m_strHostName) ) ! return; ! ! if( vstream_is_live_fsid( fsid ) == 0 ) ! m_bIsPushFilter = false; ! else ! m_bIsPushFilter = true; ! ! if( !vstream_fsidtoparts(m_strPath, m_bIsPushFilter?1:0 ) ) ! return; ! } ! catch(...) ! { return; + } + + m_ReadThread.SetPath(m_strPath); + m_ReadThread.Create(); + m_ReadThread.CallWorker(CReadThread::CMD_INIT); + m_ReadThread.CallWorker(CReadThread::CMD_RUN); *phr = S_OK; *************** *** 253,260 **** --- 402,423 ---- CVserverStream::~CVserverStream() { + CReadThread::Element e; + e.pSample = static_cast<IMediaSample*>((void*)-1); + e.hr = VFW_E_TIMEOUT; + m_ReadThread.m_PendingQueue.PutQueueObject(e); + + m_ReadThread.CallWorker(CReadThread::CMD_EXIT); if( m_strHostName ) delete[] m_strHostName; if( m_strPath ) delete[] m_strPath; + try + { + vstream_terminate(); + } + catch(...) + { + return; + } } *************** *** 267,273 **** static const int BUFFERS = 2; ! static const int MAXFRAMESIZE = 128*1024; ! pProperties->cBuffers = BUFFERS; pProperties->cbBuffer = MAXFRAMESIZE; --- 430,436 ---- static const int BUFFERS = 2; ! static const int MAXFRAMESIZE = TIVO_CHUNK_SIZE; ! pProperties->cBuffers = max( pProperties->cBuffers, BUFFERS); pProperties->cbBuffer = MAXFRAMESIZE; *************** *** 281,295 **** } - HRESULT CVserverStream::FillBuffer(IMediaSample* pSample) - { - HRESULT hr; - - BYTE* pData = NULL; - if(FAILED(hr = pSample->GetPointer(&pData)) || !pData) - return S_FALSE; - - return S_OK; - } - HRESULT CVserverStream::GetMediaType(int iPosition, CMediaType* pmt) { --- 444,447 ---- *************** *** 328,346 **** { CheckPointer(ppv, E_POINTER); ! return ! QI(IAsyncReader) ! __super::NonDelegatingQueryInterface(riid, ppv); } // IAsyncReader STDMETHODIMP CVserverStream::SyncRead(LONGLONG llPosition, LONG lLength, BYTE* pBuffer) { ! if(llPosition+lLength > vstream_streamsize()) return E_FAIL; // strangly the Seek below can return llPosition even if the file is not that big (?) ! // assert( (llPosition % 512) == 0 ); ! if( !vstream_load_chunk( m_strPath, pBuffer, lLength, llPosition ) ) return E_FAIL; return S_OK; --- 480,727 ---- { CheckPointer(ppv, E_POINTER); + if( riid == __uuidof(IPreRead) && m_bIsPushFilter ) + return GetInterface((IPreRead*)this, ppv); + if( riid == __uuidof(IAsyncReader) && !m_bIsPushFilter ) + return GetInterface((IAsyncReader*)this, ppv); ! return __super::NonDelegatingQueryInterface(riid, ppv); ! } ! ! HRESULT CVserverStream::Active(void) ! { ! ! CAutoLock lock(m_pFilter->pStateLock()); ! ! HRESULT hr; ! ! if (m_pFilter->IsActive()) { ! return S_FALSE; // succeeded, but did not allocate resources (they already exist...) ! } ! ! // do nothing if not connected - its ok not to connect to ! // all pins of a source filter ! if (!IsConnected()) { ! return NOERROR; ! } ! ! hr = CBaseOutputPin::Active(); ! if (FAILED(hr)) { ! return hr; ! } ! ! if( m_bIsPushFilter ) ! { ! ASSERT(!ThreadExists()); ! ! m_bNeedStartPosition = true; ! // start the thread ! if (!Create()) { ! return E_FAIL; ! } ! ! // Tell thread to initialize. If OnThreadCreate Fails, so does this. ! hr = Init(); ! if (FAILED(hr)) ! return hr; ! ! return Pause(); ! } ! return hr; ! } ! ! HRESULT CVserverStream::Inactive(void) { ! ! CAutoLock lock(m_pFilter->pStateLock()); ! ! HRESULT hr; ! ! // do nothing if not connected - its ok not to connect to ! // all pins of a source filter ! if (!IsConnected()) { ! return NOERROR; ! } ! ! // !!! need to do this before trying to stop the thread, because ! // we may be stuck waiting for our own allocator!!! ! ! hr = CBaseOutputPin::Inactive(); // call this first to Decommit the allocator ! if (FAILED(hr)) { ! return hr; ! } ! ! if (ThreadExists()) { ! hr = Stop(); ! ! if (FAILED(hr)) { ! return hr; ! } ! ! hr = Exit(); ! if (FAILED(hr)) { ! return hr; ! } ! ! Close(); // Wait for the thread to exit, then tidy up. ! } ! ! // hr = CBaseOutputPin::Inactive(); // call this first to Decommit the allocator ! //if (FAILED(hr)) { ! // return hr; ! //} ! ! return NOERROR; ! } ! ! // FillBuffer is called once for every sample in the stream. ! HRESULT CVserverStream::FillBuffer(IMediaSample *pSample) ! { ! PBYTE pBuffer = 0; ! ! if( FAILED(pSample->GetPointer(&pBuffer) ) || !pBuffer ) ! return E_FAIL; ! ! return PreRead(pBuffer); ! } ! ! STDMETHODIMP CVserverStream::PreRead(PBYTE pBuffer) ! { ! REFERENCE_TIME curPos = m_llPushPosition; ! REFERENCE_TIME endPos = curPos + (TIVO_CHUNK_SIZE * 10000000LL); ! LONGLONG llPosition = curPos / 10000000; ! LONG lLength = (LONG)((endPos - curPos) / 10000000); ! ! if(llPosition+lLength > vstream_streamsize()) ! { ! // Get the fileno we are currently at ! int fileNo = 0; ! int index; ! ! while(1) ! { ! try ! { ! vstream_getpart(-1, &fileNo, 0, 0); ! vstream_reload_fsidtoparts( m_strPath ); ! llPosition = 0; ! for( index = 0; index < 255; index++ ) ! { ! u64 fileSize; ! int fileNum; ! vstream_getpart(index, &fileNum, &fileSize, 0); ! if( fileNum == 0 && fileSize == 0 ) ! return E_FAIL; ! ! llPosition += fileSize; ! if( fileNo == fileNum ) ! { ! curPos = llPosition * 1000000LL; ! endPos = curPos + (TIVO_CHUNK_SIZE * 10000000LL); ! lLength = TIVO_CHUNK_SIZE; ! break; ! } ! } ! break; ! } ! catch(...) ! { ! continue; ! } ! } ! } ! ! try ! { ! if( !vstream_load_chunk( m_strPath, pBuffer, lLength, llPosition, 1 ) ) ! return E_FAIL; ! } ! catch(...) ! { ! return E_FAIL; ! } ! ! m_llPushPosition = endPos; ! ! return S_OK; } // IAsyncReader + STDMETHODIMP CVserverStream::Request(IMediaSample* pSample, DWORD_PTR dwUser) + { + REFERENCE_TIME llPosition; + REFERENCE_TIME llEndPos; + + HRESULT hr = pSample->GetTime(&llPosition, &llEndPos); + if( FAILED(hr) ) + return VFW_E_SAMPLE_TIME_NOT_SET; + + llPosition /= 10000000; + llEndPos /= 10000000; + + try + { + if( llPosition >= vstream_streamsize() || + llEndPos > vstream_streamsize() ) + return HRESULT_FROM_WIN32(ERROR_HANDLE_EOF); + } + catch(...) + { + return HRESULT_FROM_WIN32(ERROR_HANDLE_EOF); + } + + CReadThread::Element e; + e.pSample = pSample; + e.pUser = dwUser; + e.hr = S_OK; + m_ReadThread.m_PendingQueue.PutQueueObject(e); + + return S_OK; + } + + STDMETHODIMP CVserverStream::WaitForNext(DWORD dwTimeout, IMediaSample** ppSample, DWORD_PTR* pdwUser) + { + CReadThread::Element e = m_ReadThread.m_FinishedQueue.GetQueueObject(); + + if( e.pSample == static_cast<IMediaSample*>((void*)-1) ) + { + *ppSample = NULL; + return VFW_E_TIMEOUT; + } + + *ppSample = e.pSample; + *pdwUser = e.pUser; + return e.hr; + } + + STDMETHODIMP CVserverStream::BeginFlush() + { + CReadThread::Element e; + e.pSample = static_cast<IMediaSample*>((void*)-1); + e.hr = VFW_E_TIMEOUT; + m_ReadThread.m_PendingQueue.PutQueueObject(e); + m_ReadThread.CallWorker(CReadThread::CMD_FLUSH); + return S_OK; + } + + STDMETHODIMP CVserverStream::EndFlush() + { + m_ReadThread.CallWorker(CMD_RUN); + return S_OK; + } + STDMETHODIMP CVserverStream::SyncRead(LONGLONG llPosition, LONG lLength, BYTE* pBuffer) { ! try ! { ! if(llPosition+lLength > vstream_streamsize()) return E_FAIL; // strangly the Seek below can return llPosition even if the file is not that big (?) ! // assert( (llPosition % 512) == 0 ); ! if( !vstream_load_chunk( m_strPath, pBuffer, lLength, llPosition, 0 ) ) ! return E_FAIL; ! } ! catch(...) ! { return E_FAIL; + } return S_OK; *************** *** 354,355 **** --- 735,857 ---- } + CVserverStream::CReadThread::CReadThread() + : m_PendingQueue(20) + , m_FinishedQueue(20) + { + } + + CVserverStream::CReadThread::~CReadThread() + { + } + + void CVserverStream::CReadThread::SetPath(CStringA strPath) + { + m_strPath = strPath; + } + + DWORD CVserverStream::CReadThread::ThreadProc() + { + Command com; + + do { + com = (Command)GetRequest(); + if (com != CMD_INIT) + { + DbgLog((LOG_ERROR, 1, TEXT("Thread expected init command"))); + Reply((DWORD) E_UNEXPECTED); + } + } while (com != CMD_INIT); + + DbgLog((LOG_TRACE, 1, TEXT("CSourceStream worker thread initializing"))); + + // Initialisation suceeded + Reply(NOERROR); + + Command cmd; + do { + cmd = (Command)GetRequest(); + + switch (cmd) { + + case CMD_EXIT: + Reply(NOERROR); + break; + + case CMD_RUN: + Reply(NOERROR); + DoBufferProcessingLoop(); + break; + + case CMD_FLUSH: + Reply(NOERROR); + DoBufferFlush(); + break; + + case CMD_STOP: + Reply(NOERROR); + break; + + default: + DbgLog((LOG_ERROR, 1, TEXT("Unknown command %d received!"), cmd)); + Reply((DWORD) E_NOTIMPL); + break; + } + } while (cmd != CMD_EXIT); + + return 0; + } + + void CVserverStream::CReadThread::DoBufferProcessingLoop() + { + while( !CheckRequest(NULL) ) + { + Element e = m_PendingQueue.GetQueueObject(); + if( e.pSample == static_cast<IMediaSample*>((void*)-1) ) + { + // Leave our flush marker in the queue so that we + // can retrieve it later... + m_PendingQueue.PutQueueObject(e); + break; + } + + REFERENCE_TIME llPosition; + REFERENCE_TIME llEndPos; + BYTE* pBuffer; + + e.pSample->GetTime(&llPosition, &llEndPos); + e.pSample->GetPointer(&pBuffer); + + llPosition /= 10000000; + llEndPos /= 10000000; + + DWORD lLength = (DWORD)(llEndPos - llPosition); + + try + { + if( !vstream_load_chunk( m_strPath.GetBuffer(), pBuffer, lLength, llPosition, 0 ) ) + e.hr = E_FAIL; + else + e.hr = S_OK; + } + catch(...) + { + e.hr = E_FAIL; + } + + m_FinishedQueue.PutQueueObject(e); + } + } + + void CVserverStream::CReadThread::DoBufferFlush() + { + while(1) + { + Element e = m_PendingQueue.GetQueueObject(); + + e.hr = VFW_E_TIMEOUT; + m_FinishedQueue.PutQueueObject(e); + + if( e.pSample == static_cast<IMediaSample*>((void*)-1) ) + break; + } + } Index: VsrvSrc.h =================================================================== RCS file: /cvsroot/tyshow/TyShow/VsrvSrc/VsrvSrc.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** VsrvSrc.h 31 Oct 2003 22:14:15 -0000 1.1 --- VsrvSrc.h 23 Sep 2004 15:35:48 -0000 1.2 *************** *** 22,25 **** --- 22,27 ---- #pragma once + #include "IPreRead.h" + typedef unsigned __int64 QWORD; typedef unsigned long DWORD; *************** *** 40,43 **** --- 42,47 ---- CVserverStream* m_pStream; + CString RetrieveNowShowingSelection(); + public: CTySourceFilter(LPUNKNOWN lpunk, HRESULT* phr); *************** *** 63,67 **** }; ! class CVserverStream : public CSourceStream, public IAsyncReader { private: --- 67,73 ---- }; ! class CVserverStream : public CSourceStream ! , public IAsyncReader ! , public IPreRead { private: *************** *** 69,75 **** --- 75,113 ---- char* m_strPath; DWORD m_dwPort; + bool m_bIsPushFilter; + bool m_bNeedStartPosition; + REFERENCE_TIME m_llPushPosition; char* ConvertLocal(CString&) const; + class CReadThread : public CAMThread + { + public: + typedef struct { + IMediaSample* pSample; + DWORD_PTR pUser; + HRESULT hr; + } Element; + CQueue<Element> m_PendingQueue; + CQueue<Element> m_FinishedQueue; + + protected: + virtual DWORD ThreadProc(); + void DoBufferProcessingLoop(void); + void DoBufferFlush(void); + CStringA m_strPath; + + public: + CReadThread(); + virtual ~CReadThread(); + + void SetPath(CStringA strPath); + + enum Command {CMD_INIT, CMD_FLUSH, CMD_RUN, CMD_STOP, CMD_EXIT}; + }; + CReadThread m_ReadThread; + HRESULT Active(void); + HRESULT Inactive(void); + public: CVserverStream(CString wfn, CTySourceFilter* pParent, HRESULT* phr); *************** *** 79,82 **** --- 117,122 ---- STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void** ppv); + STDMETHODIMP PreRead(PBYTE pBuffer); + HRESULT DecideBufferSize(IMemAllocator* pIMemAlloc, ALLOCATOR_PROPERTIES* pProperties); HRESULT FillBuffer(IMediaSample* pSample); *************** *** 89,98 **** STDMETHODIMP RequestAllocator(IMemAllocator* pPreferred, ALLOCATOR_PROPERTIES* pProps, IMemAllocator** ppActual) {return E_NOTIMPL;} ! STDMETHODIMP Request(IMediaSample* pSample, DWORD_PTR dwUser) {return E_NOTIMPL;} ! STDMETHODIMP WaitForNext(DWORD dwTimeout, IMediaSample** ppSample, DWORD_PTR* pdwUser) {return E_NOTIMPL;} STDMETHODIMP SyncReadAligned(IMediaSample* pSample) {return E_NOTIMPL;} STDMETHODIMP SyncRead(LONGLONG llPosition, LONG lLength, BYTE* pBuffer); STDMETHODIMP Length(LONGLONG* pTotal, LONGLONG* pAvailable); ! STDMETHODIMP BeginFlush() {return E_NOTIMPL;} ! STDMETHODIMP EndFlush() {return E_NOTIMPL;} }; --- 129,138 ---- STDMETHODIMP RequestAllocator(IMemAllocator* pPreferred, ALLOCATOR_PROPERTIES* pProps, IMemAllocator** ppActual) {return E_NOTIMPL;} ! STDMETHODIMP Request(IMediaSample* pSample, DWORD_PTR dwUser); ! STDMETHODIMP WaitForNext(DWORD dwTimeout, IMediaSample** ppSample, DWORD_PTR* pdwUser); STDMETHODIMP SyncReadAligned(IMediaSample* pSample) {return E_NOTIMPL;} STDMETHODIMP SyncRead(LONGLONG llPosition, LONG lLength, BYTE* pBuffer); STDMETHODIMP Length(LONGLONG* pTotal, LONGLONG* pAvailable); ! STDMETHODIMP BeginFlush(); ! STDMETHODIMP EndFlush(); }; Index: VsrvSrc.vcproj =================================================================== RCS file: /cvsroot/tyshow/TyShow/VsrvSrc/VsrvSrc.vcproj,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** VsrvSrc.vcproj 31 Oct 2003 16:37:59 -0000 1.2 --- VsrvSrc.vcproj 23 Sep 2004 15:35:48 -0000 1.3 *************** *** 1,458 **** ! <?xml version="1.0" encoding="Windows-1252"?> ! <VisualStudioProject ! ProjectType="Visual C++" ! Version="7.10" ! Name="VsrvSrc" ! ProjectGUID="{C28E1DEA-D6F4-4B0A-8FCA-071AA7A5A8BC}" ! RootNamespace="VsrvSrc" ! Keyword="Win32Proj"> ! <Platforms> ! <Platform ! Name="Win32"/> ! </Platforms> ! <Configurations> ! <Configuration ! Name="Debug|Win32" ! OutputDirectory="Debug" ! IntermediateDirectory="Debug" ! ConfigurationType="2" ! CharacterSet="2"> ! <Tool ! Name="VCCLCompilerTool" ! Optimization="0" ! AdditionalIncludeDirectories="c:\dxsdk\samples\c++\directshow\baseclasses" ! PreprocessorDefinitions="REGISTER_FILTER;WIN32;_DEBUG" ! MinimalRebuild="TRUE" ! BasicRuntimeChecks="3" ! RuntimeLibrary="3" ! RuntimeTypeInfo="TRUE" ! UsePrecompiledHeader="3" ! WarningLevel="3" ! Detect64BitPortabilityProblems="FALSE" ! DebugInformationFormat="4"/> ! <Tool ! Name="VCCustomBuildTool"/> ! <Tool ! Name="VCLinkerTool" ! RegisterOutput="TRUE" ! AdditionalDependencies="basesplitterDU.lib strmbaseDU.lib dsutilDU.lib winmm.lib" ! OutputFile="$(OutDir)/VsrvSrc.ax" ! LinkIncremental="0" ! AdditionalLibraryDirectories="c:\dxsdk\lib;"c:\dxsdk\samples\c++\directshow\baseclasses\debug_unicode";..\..\..\..\lib" ! IgnoreDefaultLibraryNames="" ! ModuleDefinitionFile="$(ProjectName).def" ! GenerateDebugInformation="TRUE" ! ProgramDatabaseFile="$(OutDir)/VsrvSrc.pdb" ! SubSystem="2" ! ImportLibrary="$(OutDir)/VsrvSrc.lib" ! TargetMachine="1"/> ! <Tool ! Name="VCMIDLTool"/> ! <Tool ! Name="VCPostBuildEventTool"/> ! <Tool ! Name="VCPreBuildEventTool"/> ! <Tool ! Name="VCPreLinkEventTool"/> ! <Tool ! Name="VCResourceCompilerTool"/> ! <Tool ! Name="VCWebServiceProxyGeneratorTool"/> ! <Tool ! Name="VCXMLDataGeneratorTool"/> ! <Tool ! Name="VCWebDeploymentTool"/> ! <Tool ! Name="VCManagedWrapperGeneratorTool"/> ! <Tool ! Name="VCAuxiliaryManagedWrapperGeneratorTool"/> ! </Configuration> ! <Configuration ! Name="Release|Win32" ! OutputDirectory="Release" ! IntermediateDirectory="Release" ! ConfigurationType="2" ! CharacterSet="2"> ! <Tool ! Name="VCCLCompilerTool" ! PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;VSRVSRC_EXPORTS" ! RuntimeLibrary="0" ! UsePrecompiledHeader="3" ! WarningLevel="3" ! Detect64BitPortabilityProblems="TRUE" ! DebugInformationFormat="3"/> ! <Tool ! Name="VCCustomBuildTool"/> ! <Tool ! Name="VCLinkerTool" ! OutputFile="$(OutDir)/VsrvSrc.dll" ! LinkIncremental="1" ! GenerateDebugInformation="TRUE" ! SubSystem="2" ! OptimizeReferences="2" ! EnableCOMDATFolding="2" ! ImportLibrary="$(OutDir)/VsrvSrc.lib" ! TargetMachine="1"/> ! <Tool ! Name="VCMIDLTool"/> ! <Tool ! Name="VCPostBuildEventTool"/> ! <Tool ! Name="VCPreBuildEventTool"/> ! <Tool ! Name="VCPreLinkEventTool"/> ! <Tool ! Name="VCResourceCompilerTool"/> ! <Tool ! Name="VCWebServiceProxyGeneratorTool"/> ! <Tool ! Name="VCXMLDataGeneratorTool"/> ! <Tool ! Name="VCWebDeploymentTool"/> ! <Tool ! Name="VCManagedWrapperGeneratorTool"/> ! <Tool ! Name="VCAuxiliaryManagedWrapperGeneratorTool"/> ! </Configuration> ! <Configuration ! Name="Debug Unicode|Win32" ! OutputDirectory="Debug Unicode" ! IntermediateDirectory="Debug Unicode" ! ConfigurationType="2" ! UseOfMFC="2" ! CharacterSet="1"> ! <Tool ! Name="VCCLCompilerTool" ! Optimization="0" ! AdditionalIncludeDirectories="c:\dxsdk\samples\c++\directshow\baseclasses" ! PreprocessorDefinitions="REGISTER_FILTER;WIN32;_DEBUG" ! MinimalRebuild="TRUE" ! BasicRuntimeChecks="3" ! RuntimeLibrary="3" ! RuntimeTypeInfo="TRUE" ! UsePrecompiledHeader="1" ! BrowseInformation="1" ! WarningLevel="3" ! DebugInformationFormat="4" ! CompileAs="0"/> ! <Tool ! Name="VCCustomBuildTool"/> ! <Tool ! Name="VCLinkerTool" ! RegisterOutput="TRUE" ! AdditionalDependencies="wsock32.lib winmm.lib" ! OutputFile="$(OutDir)/$(ProjectName).ax" ! AdditionalLibraryDirectories="c:\dxsdk\lib;"c:\dxsdk\samples\c++\directshow\baseclasses\debug_unicode";..\..\..\..\lib" ! IgnoreDefaultLibraryNames="libcmtd" ! ModuleDefinitionFile="$(ProjectName).def" ! GenerateDebugInformation="TRUE" ! SubSystem="2" ! TargetMachine="1"/> ! <Tool ! Name="VCMIDLTool"/> ! <Tool ! Name="VCPostBuildEventTool"/> ! <Tool ! Name="VCPreBuildEventTool"/> ! <Tool ! Name="VCPreLinkEventTool"/> ! <Tool ! Name="VCResourceCompilerTool"/> ! <Tool ! Name="VCWebServiceProxyGeneratorTool"/> ! <Tool ! Name="VCXMLDataGeneratorTool"/> ! <Tool ! Name="VCWebDeploymentTool"/> ! <Tool ! Name="VCManagedWrapperGeneratorTool"/> ! <Tool ! Name="VCAuxiliaryManagedWrapperGeneratorTool"/> ! </Configuration> ! <Configuration ! Name="Release Unicode|Win32" ! OutputDirectory="$(ConfigurationName)" ! IntermediateDirectory="$(ConfigurationName)" ! ConfigurationType="2" ! UseOfMFC="1" ! CharacterSet="1"> ! <Tool ! Name="VCCLCompilerTool" ! Optimization="2" ! InlineFunctionExpansion="1" ! OmitFramePointers="TRUE" ! AdditionalIncludeDirectories="c:\dxsdk\samples\c++\directshow\baseclasses" ! PreprocessorDefinitions="REGISTER_FILTER;WIN32;NDEBUG" ! StringPooling="TRUE" ! MinimalRebuild="FALSE" ! BasicRuntimeChecks="0" ! RuntimeLibrary="0" ! EnableFunctionLevelLinking="TRUE" ! RuntimeTypeInfo="TRUE" ! UsePrecompiledHeader="1" ! WarningLevel="3" ! DebugInformationFormat="3" ! CompileAs="0"/> ! <Tool ! Name="VCCustomBuildTool"/> ! <Tool ! Name="VCLinkerTool" ! RegisterOutput="TRUE" ! AdditionalDependencies="wsock32.lib winmm.lib" ! OutputFile="$(OutDir)/$(ProjectName).ax" ! AdditionalLibraryDirectories="c:\dxsdk\lib;"c:\dxsdk\samples\c++\directshow\baseclasses\debug_unicode";..\..\..\..\lib" ! IgnoreDefaultLibraryNames="" ! ModuleDefinitionFile="$(ProjectName).def" ! GenerateDebugInformation="FALSE" ! GenerateMapFile="TRUE" ! MapFileName="$(OutDir)\$(TargetName).map" ! SubSystem="2" ! OptimizeReferences="2" ! EnableCOMDATFolding="2" ! TargetMachine="1"/> ! <Tool ! Name="VCMIDLTool"/> ! <Tool ! Name="VCPostBuildEventTool"/> ! <Tool ! Name="VCPreBuildEventTool"/> ! <Tool ! Name="VCPreLinkEventTool"/> ! <Tool ! Name="VCResourceCompilerTool"/> ! <Tool ! Name="VCWebServiceProxyGeneratorTool"/> ! <Tool ! Name="VCXMLDataGeneratorTool"/> ! <Tool ! Name="VCWebDeploymentTool"/> ! <Tool ! Name="VCManagedWrapperGeneratorTool"/> ! <Tool ! Name="VCAuxiliaryManagedWrapperGeneratorTool"/> ! </Configuration> ! </Configurations> ! <References> ! </References> ! <Files> ! <Filter ! Name="Source Files" ! Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" ! UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"> ! <File ! RelativePath=".\stdafx.cpp"> ! <FileConfiguration ! Name="Debug|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="1"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="1"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\VsrvSrc.cpp"> ! </File> ! <File ! RelativePath=".\VsrvSrc.def"> ! </File> ! </Filter> ! <Filter ! Name="Header Files" ! Filter="h;hpp;hxx;hm;inl;inc;xsd" ! UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"> ! <File ! RelativePath=".\stdafx.h"> ! </File> ! <File ! RelativePath=".\VsrvSrc.h"> ! </File> ! </Filter> ! <Filter ! Name="Resource Files" ! Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx" ! UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"> ! </Filter> ! <Filter ! Name="mfs" ! Filter=""> ! <File ! RelativePath=".\mfs\bitmap.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\crc.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\darwin_dlfcn.h"> ! </File> ! <File ! RelativePath=".\mfs\darwin_getopt.h"> ! </File> ! <File ! RelativePath=".\mfs\darwin_unistd.h"> ! </File> ! <File ! RelativePath=".\mfs\io.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\mfs.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\mfs.h"> ! </File> ! <File ! RelativePath=".\mfs\objects.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\partition.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\preload_schema.h"> ! </File> ! <File ! RelativePath=".\mfs\proto.h"> ! </File> ! <File ! RelativePath=".\mfs\query.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\schema.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\util.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\vstream.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! </Filter> ! <File ! RelativePath=".\ReadMe.txt"> ! </File> ! </Files> ! <Globals> ! </Globals> ! </VisualStudioProject> --- 1,458 ---- ! <?xml version="1.0" encoding="Windows-1252"?> ! <VisualStudioProject ! ProjectType="Visual C++" ! Version="7.10" ! Name="VsrvSrc" ! ProjectGUID="{C28E1DEA-D6F4-4B0A-8FCA-071AA7A5A8BC}" ! RootNamespace="VsrvSrc" ! Keyword="Win32Proj"> ! <Platforms> ! <Platform ! Name="Win32"/> ! </Platforms> ! <Configurations> ! <Configuration ! Name="Debug|Win32" ! OutputDirectory="Debug" ! IntermediateDirectory="Debug" ! ConfigurationType="2" ! CharacterSet="2"> ! <Tool ! Name="VCCLCompilerTool" ! Optimization="0" ! AdditionalIncludeDirectories="c:\dxsdk\samples\c++\directshow\baseclasses" ! PreprocessorDefinitions="REGISTER_FILTER;WIN32;_DEBUG" ! MinimalRebuild="TRUE" ! BasicRuntimeChecks="3" ! RuntimeLibrary="3" ! RuntimeTypeInfo="TRUE" ! UsePrecompiledHeader="3" ! WarningLevel="3" ! Detect64BitPortabilityProblems="FALSE" ! DebugInformationFormat="4"/> ! <Tool ! Name="VCCustomBuildTool"/> ! <Tool ! Name="VCLinkerTool" ! RegisterOutput="TRUE" ! AdditionalDependencies="basesplitterDU.lib strmbaseDU.lib dsutilDU.lib winmm.lib" ! OutputFile="$(OutDir)/VsrvSrc.ax" ! LinkIncremental="0" ! AdditionalLibraryDirectories="c:\dxsdk\lib;"c:\dxsdk\samples\c++\directshow\baseclasses\debug_unicode";..\..\..\..\lib" ! IgnoreDefaultLibraryNames="" ! ModuleDefinitionFile="$(ProjectName).def" ! GenerateDebugInformation="TRUE" ! ProgramDatabaseFile="$(OutDir)/VsrvSrc.pdb" ! SubSystem="2" ! ImportLibrary="$(OutDir)/VsrvSrc.lib" ! TargetMachine="1"/> ! <Tool ! Name="VCMIDLTool"/> ! <Tool ! Name="VCPostBuildEventTool"/> ! <Tool ! Name="VCPreBuildEventTool"/> ! <Tool ! Name="VCPreLinkEventTool"/> ! <Tool ! Name="VCResourceCompilerTool"/> ! <Tool ! Name="VCWebServiceProxyGeneratorTool"/> ! <Tool ! Name="VCXMLDataGeneratorTool"/> ! <Tool ! Name="VCWebDeploymentTool"/> ! <Tool ! Name="VCManagedWrapperGeneratorTool"/> ! <Tool ! Name="VCAuxiliaryManagedWrapperGeneratorTool"/> ! </Configuration> ! <Configuration ! Name="Release|Win32" ! OutputDirectory="Release" ! IntermediateDirectory="Release" ! ConfigurationType="2" ! CharacterSet="2"> ! <Tool ! Name="VCCLCompilerTool" ! PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;VSRVSRC_EXPORTS" ! RuntimeLibrary="0" ! UsePrecompiledHeader="3" ! WarningLevel="3" ! Detect64BitPortabilityProblems="TRUE" ! DebugInformationFormat="3"/> ! <Tool ! Name="VCCustomBuildTool"/> ! <Tool ! Name="VCLinkerTool" ! OutputFile="$(OutDir)/VsrvSrc.dll" ! LinkIncremental="1" ! GenerateDebugInformation="TRUE" ! SubSystem="2" ! OptimizeReferences="2" ! EnableCOMDATFolding="2" ! ImportLibrary="$(OutDir)/VsrvSrc.lib" ! TargetMachine="1"/> ! <Tool ! Name="VCMIDLTool"/> ! <Tool ! Name="VCPostBuildEventTool"/> ! <Tool ! Name="VCPreBuildEventTool"/> ! <Tool ! Name="VCPreLinkEventTool"/> ! <Tool ! Name="VCResourceCompilerTool"/> ! <Tool ! Name="VCWebServiceProxyGeneratorTool"/> ! <Tool ! Name="VCXMLDataGeneratorTool"/> ! <Tool ! Name="VCWebDeploymentTool"/> ! <Tool ! Name="VCManagedWrapperGeneratorTool"/> ! <Tool ! Name="VCAuxiliaryManagedWrapperGeneratorTool"/> ! </Configuration> ! <Configuration ! Name="Debug Unicode|Win32" ! OutputDirectory="Debug Unicode" ! IntermediateDirectory="Debug Unicode" ! ConfigurationType="2" ! UseOfMFC="2" ! CharacterSet="1"> ! <Tool ! Name="VCCLCompilerTool" ! Optimization="0" ! AdditionalIncludeDirectories="..\include;"c:\dxsdk\samples\c++\directshow\baseclasses"" ! PreprocessorDefinitions="REGISTER_FILTER;WIN32;_DEBUG" ! MinimalRebuild="TRUE" ! BasicRuntimeChecks="3" ! RuntimeLibrary="3" ! RuntimeTypeInfo="TRUE" ! UsePrecompiledHeader="1" ! BrowseInformation="1" ! WarningLevel="3" ! DebugInformationFormat="4" ! CompileAs="0"/> ! <Tool ! Name="VCCustomBuildTool"/> ! <Tool ! Name="VCLinkerTool" ! RegisterOutput="TRUE" ! AdditionalDependencies="wsock32.lib winmm.lib" ! OutputFile="$(OutDir)/$(ProjectName).ax" ! AdditionalLibraryDirectories="c:\dxsdk\lib;"c:\dxsdk\samples\c++\directshow\baseclasses\debug_unicode";..\..\..\..\lib" ! IgnoreDefaultLibraryNames="libcmtd" ! ModuleDefinitionFile="$(ProjectName).def" ! GenerateDebugInformation="TRUE" ! SubSystem="2" ! TargetMachine="1"/> ! <Tool ! Name="VCMIDLTool"/> ! <Tool ! Name="VCPostBuildEventTool"/> ! <Tool ! Name="VCPreBuildEventTool"/> ! <Tool ! Name="VCPreLinkEventTool"/> ! <Tool ! Name="VCResourceCompilerTool"/> ! <Tool ! Name="VCWebServiceProxyGeneratorTool"/> ! <Tool ! Name="VCXMLDataGeneratorTool"/> ! <Tool ! Name="VCWebDeploymentTool"/> ! <Tool ! Name="VCManagedWrapperGeneratorTool"/> ! <Tool ! Name="VCAuxiliaryManagedWrapperGeneratorTool"/> ! </Configuration> ! <Configuration ! Name="Release Unicode|Win32" ! OutputDirectory="$(ConfigurationName)" ! IntermediateDirectory="$(ConfigurationName)" ! ConfigurationType="2" ! UseOfMFC="1" ! CharacterSet="1"> ! <Tool ! Name="VCCLCompilerTool" ! Optimization="2" ! InlineFunctionExpansion="1" ! OmitFramePointers="TRUE" ! AdditionalIncludeDirectories="..\include;"c:\dxsdk\samples\c++\directshow\baseclasses"" ! PreprocessorDefinitions="REGISTER_FILTER;WIN32;NDEBUG" ! StringPooling="TRUE" ! MinimalRebuild="FALSE" ! BasicRuntimeChecks="0" ! RuntimeLibrary="0" ! EnableFunctionLevelLinking="TRUE" ! RuntimeTypeInfo="TRUE" ! UsePrecompiledHeader="1" ! WarningLevel="3" ! DebugInformationFormat="3" ! CompileAs="0"/> ! <Tool ! Name="VCCustomBuildTool"/> ! <Tool ! Name="VCLinkerTool" ! RegisterOutput="TRUE" ! AdditionalDependencies="wsock32.lib winmm.lib" ! OutputFile="$(OutDir)/$(ProjectName).ax" ! AdditionalLibraryDirectories="c:\dxsdk\lib;"c:\dxsdk\samples\c++\directshow\baseclasses\debug_unicode";..\..\..\..\lib" ! IgnoreDefaultLibraryNames="" ! ModuleDefinitionFile="$(ProjectName).def" ! GenerateDebugInformation="FALSE" ! GenerateMapFile="TRUE" ! MapFileName="$(OutDir)\$(TargetName).map" ! SubSystem="2" ! OptimizeReferences="2" ! EnableCOMDATFolding="2" ! TargetMachine="1"/> ! <Tool ! Name="VCMIDLTool"/> ! <Tool ! Name="VCPostBuildEventTool"/> ! <Tool ! Name="VCPreBuildEventTool"/> ! <Tool ! Name="VCPreLinkEventTool"/> ! <Tool ! Name="VCResourceCompilerTool"/> ! <Tool ! Name="VCWebServiceProxyGeneratorTool"/> ! <Tool ! Name="VCXMLDataGeneratorTool"/> ! <Tool ! Name="VCWebDeploymentTool"/> ! <Tool ! Name="VCManagedWrapperGeneratorTool"/> ! <Tool ! Name="VCAuxiliaryManagedWrapperGeneratorTool"/> ! </Configuration> ! </Configurations> ! <References> ! </References> ! <Files> ! <Filter ! Name="Source Files" ! Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" ! UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"> ! <File ! RelativePath=".\stdafx.cpp"> ! <FileConfiguration ! Name="Debug|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="1"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="1"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\VsrvSrc.cpp"> ! </File> ! <File ! RelativePath=".\VsrvSrc.def"> ! </File> ! </Filter> ! <Filter ! Name="Header Files" ! Filter="h;hpp;hxx;hm;inl;inc;xsd" ! UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"> ! <File ! RelativePath=".\stdafx.h"> ! </File> ! <File ! RelativePath=".\VsrvSrc.h"> ! </File> ! </Filter> ! <Filter ! Name="Resource Files" ! Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx" ! UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"> ! </Filter> ! <Filter ! Name="mfs" ! Filter=""> ! <File ! RelativePath=".\mfs\bitmap.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\crc.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\darwin_dlfcn.h"> ! </File> ! <File ! RelativePath=".\mfs\darwin_getopt.h"> ! </File> ! <File ! RelativePath=".\mfs\darwin_unistd.h"> ! </File> ! <File ! RelativePath=".\mfs\io.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\mfs.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\mfs.h"> ! </File> ! <File ! RelativePath=".\mfs\objects.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\partition.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\preload_schema.h"> ! </File> ! <File ! RelativePath=".\mfs\proto.h"> ! </File> ! <File ! RelativePath=".\mfs\query.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\schema.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\util.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! <File ! RelativePath=".\mfs\vstream.c"> ! <FileConfiguration ! Name="Debug Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! <FileConfiguration ! Name="Release Unicode|Win32"> ! <Tool ! Name="VCCLCompilerTool" ! UsePrecompiledHeader="0"/> ! </FileConfiguration> ! </File> ! </Filter> ! <File ! RelativePath=".\ReadMe.txt"> ! </File> ! </Files> ! <Globals> ! </Globals> ! </VisualStudioProject> |