00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #pragma once
00035
00036
00037 #include <fstream>
00038 using namespace std;
00039
00040 class BasicSeekPassThrough
00041
00042 : public IMediaSeeking
00043 {
00044 public:
00045
00046 BasicSeekPassThrough(void);
00047 BasicSeekPassThrough(IMediaSeeking* inDelegate);
00048 virtual ~BasicSeekPassThrough(void);
00049
00050
00051 bool SetDelegate(IMediaSeeking* inDelegate);
00052 bool ReleaseDelegate();
00053
00054
00055 virtual STDMETHODIMP GetCapabilities(DWORD *pCapabilities);
00056 virtual STDMETHODIMP CheckCapabilities(DWORD *pCapabilities);
00057 virtual STDMETHODIMP IsFormatSupported(const GUID *pFormat);
00058 virtual STDMETHODIMP QueryPreferredFormat(GUID *pFormat);
00059 virtual STDMETHODIMP SetTimeFormat(const GUID *pFormat);
00060 virtual STDMETHODIMP GetTimeFormat( GUID *pFormat);
00061 virtual STDMETHODIMP GetDuration(LONGLONG *pDuration);
00062 virtual STDMETHODIMP GetStopPosition(LONGLONG *pStop);
00063 virtual STDMETHODIMP GetCurrentPosition(LONGLONG *pCurrent);
00064 virtual STDMETHODIMP ConvertTimeFormat(LONGLONG *pTarget, const GUID *pTargetFormat, LONGLONG Source, const GUID *pSourceFormat);
00065 virtual STDMETHODIMP SetPositions(LONGLONG *pCurrent,DWORD dwCurrentFlags,LONGLONG *pStop,DWORD dwStopFlags);
00066 virtual STDMETHODIMP GetPositions(LONGLONG *pCurrent, LONGLONG *pStop);
00067 virtual STDMETHODIMP GetAvailable(LONGLONG *pEarliest, LONGLONG *pLatest);
00068 virtual STDMETHODIMP SetRate(double dRate);
00069 virtual STDMETHODIMP GetRate(double *dRate);
00070 virtual STDMETHODIMP GetPreroll(LONGLONG *pllPreroll);
00071 virtual STDMETHODIMP IsUsingTimeFormat(const GUID *pFormat);
00072
00073 protected:
00074
00075 IMediaSeeking* mSeekDelegate;
00076 HRESULT mHR;
00077 DWORD mSeekingCap;
00078
00079
00080
00081 };