00001 #pragma once
00002
00003
00004 #include "dsfseeking.h"
00005
00006
00007 #include <fstream>
00008 using namespace std;
00009
00010 class DSFSEEKING_API BasicSeekable
00011
00012 : public IMediaSeeking
00013 {
00014 public:
00015
00016 BasicSeekable(void);
00017 BasicSeekable(IMediaSeeking* inDelegate);
00018 virtual ~BasicSeekable(void);
00019
00020
00021 bool SetDelegate(IMediaSeeking* inDelegate);
00022 bool ReleaseDelegate();
00023
00024
00025 virtual STDMETHODIMP GetCapabilities(DWORD *pCapabilities);
00026 virtual STDMETHODIMP CheckCapabilities(DWORD *pCapabilities);
00027 virtual STDMETHODIMP IsFormatSupported(const GUID *pFormat);
00028 virtual STDMETHODIMP QueryPreferredFormat(GUID *pFormat);
00029 virtual STDMETHODIMP SetTimeFormat(const GUID *pFormat);
00030 virtual STDMETHODIMP GetTimeFormat( GUID *pFormat);
00031 virtual STDMETHODIMP GetDuration(LONGLONG *pDuration);
00032 virtual STDMETHODIMP GetStopPosition(LONGLONG *pStop);
00033 virtual STDMETHODIMP GetCurrentPosition(LONGLONG *pCurrent);
00034 virtual STDMETHODIMP ConvertTimeFormat(LONGLONG *pTarget, const GUID *pTargetFormat, LONGLONG Source, const GUID *pSourceFormat);
00035 virtual STDMETHODIMP SetPositions(LONGLONG *pCurrent,DWORD dwCurrentFlags,LONGLONG *pStop,DWORD dwStopFlags);
00036 virtual STDMETHODIMP GetPositions(LONGLONG *pCurrent, LONGLONG *pStop);
00037 virtual STDMETHODIMP GetAvailable(LONGLONG *pEarliest, LONGLONG *pLatest);
00038 virtual STDMETHODIMP SetRate(double dRate);
00039 virtual STDMETHODIMP GetRate(double *dRate);
00040 virtual STDMETHODIMP GetPreroll(LONGLONG *pllPreroll);
00041 virtual STDMETHODIMP IsUsingTimeFormat(const GUID *pFormat);
00042
00043 protected:
00044
00045 IMediaSeeking* mSeekDelegate;
00046 HRESULT mHR;
00047 DWORD mSeekingCap;
00048
00049
00050
00051 };