00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #pragma once
00023
00024 #include <atlbase.h>
00025 #include "..\asyncreader\asyncio.h"
00026 #include "..\asyncreader\asyncrdr.h"
00027
00028 class CVobFile;
00029
00030 class CVTSStream : public CAsyncStream
00031 {
00032 private:
00033 CCritSec m_csLock;
00034
00035 CAutoPtr<CVobFile> m_vob;
00036 int m_off;
00037
00038 public:
00039 CVTSStream();
00040 virtual ~CVTSStream();
00041
00042 bool Load(const WCHAR* fnw);
00043
00044 HRESULT SetPointer(LONGLONG llPos);
00045 HRESULT Read(PBYTE pbBuffer, DWORD dwBytesToRead, BOOL bAlign, LPDWORD pdwBytesRead);
00046 LONGLONG Size(LONGLONG* pSizeAvailable);
00047 DWORD Alignment();
00048 void Lock();
00049 void Unlock();
00050 };
00051
00052 [uuid("773EAEDE-D5EE-4fce-9C8F-C4F53D0A2F73")]
00053 class CVTSReader
00054 : public CAsyncReader
00055 , public IFileSourceFilter
00056 {
00057 CVTSStream m_stream;
00058 CStringW m_fn;
00059
00060 public:
00061 CVTSReader(IUnknown* pUnk, HRESULT* phr);
00062 ~CVTSReader();
00063
00064 DECLARE_IUNKNOWN
00065 STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void** ppv);
00066
00067
00068 STDMETHODIMP Load(LPCOLESTR pszFileName, const AM_MEDIA_TYPE* pmt);
00069 STDMETHODIMP GetCurFile(LPOLESTR* ppszFileName, AM_MEDIA_TYPE* pmt);
00070 };