BasicSeekable.cpp

Go to the documentation of this file.
00001 #include "stdafx.h"
00002 #include ".\basicseekable.h"
00003 
00004 BasicSeekable::BasicSeekable(IMediaSeeking* inDelegate)
00005         //: CUnknown(NAME("Basic Seekable Thing"), NULL, &mHR)
00006 {
00007         mSeekDelegate = inDelegate;
00008         //mSeekTimeBase = 0;
00009 
00010                 mSeekingCap = 0;
00011         mSeekingCap =           AM_SEEKING_CanSeekAbsolute |
00012                                                 AM_SEEKING_CanSeekForwards |
00013                                                 AM_SEEKING_CanSeekBackwards |
00014                                                 //AM_SEEKING_CanGetCurrentPos |
00015                                                 AM_SEEKING_CanGetStopPos |
00016                                                 AM_SEEKING_CanGetDuration;
00017 
00018         //string x = "g:\\logs\\seeker.log";
00019         //seekDebug.open(x.c_str(), ios_base::out);
00020 
00021 }
00022 
00023 BasicSeekable::BasicSeekable(void)
00024         //: CUnknown(NAME("Basic Seekable Thing"), NULL, &mHR) 
00025 {
00026         //mSeekTimeBase = 0;
00027         mSeekDelegate = NULL;   
00028         mSeekingCap =           AM_SEEKING_CanSeekAbsolute |
00029                                                 AM_SEEKING_CanSeekForwards |
00030                                                 AM_SEEKING_CanSeekBackwards |
00031                                                 //AM_SEEKING_CanGetCurrentPos |
00032                                                 AM_SEEKING_CanGetStopPos |
00033                                                 AM_SEEKING_CanGetDuration;
00034         
00035         //string x = "g:\\logs\\seeker.log";
00036         //seekDebug.open(x.c_str(), ios_base::out);
00037         
00038 
00039 }
00040 
00041 bool BasicSeekable::ReleaseDelegate() {
00042         if (mSeekDelegate != NULL) {
00043                 mSeekDelegate->Release();
00044                 mSeekDelegate = NULL;
00045         }
00046         return true;
00047 }
00048 
00049 bool BasicSeekable::SetDelegate(IMediaSeeking* inDelegate) {
00050         mSeekDelegate = inDelegate;
00051         return true;
00052 }
00053 BasicSeekable::~BasicSeekable(void)
00054 {
00055         //TODO::: FActor this... use the new releasedelegate function.
00056         if (mSeekDelegate != NULL) {
00057                 mSeekDelegate->Release();
00058                 mSeekDelegate = NULL;
00059         }
00060         //seekDebug.close();
00061 }
00062 //IMediaSeeking Interface
00063 STDMETHODIMP BasicSeekable::GetCapabilities(DWORD* inCapabilities) {
00064 //typedef 
00065 //enum AM_SEEKING_SeekingCapabilities {
00066 //    AM_SEEKING_CanSeekAbsolute        = 0x1,
00067 //    AM_SEEKING_CanSeekForwards        = 0x2,
00068 //    AM_SEEKING_CanSeekBackwards       = 0x4,
00069 //    AM_SEEKING_CanGetCurrentPos       = 0x8,
00070 //    AM_SEEKING_CanGetStopPos          = 0x10,
00071 //    AM_SEEKING_CanGetDuration         = 0x20,
00072 //    AM_SEEKING_CanPlayBackwards       = 0x40,
00073 //    AM_SEEKING_CanDoSegments          = 0x80,
00074 //    AM_SEEKING_Source                 = 0x100
00075 //}   AM_SEEKING_SEEKING_CAPABILITIES;
00076 
00077         
00078         //*inCapabilities       =       mSeekingCap;
00079         //return S_OK;
00080         
00081         if (mSeekDelegate != NULL) {
00082                 //seekDebug<<"GetCaps : Passed on..."<<endl;
00083                 return mSeekDelegate->GetCapabilities(inCapabilities);
00084         } else {
00085                 //seekDebug<<"GetCaps : NULL Delegate"<<endl;
00086                 //This is probably wrong.
00087                 return E_NOTIMPL;
00088         }
00089 
00090 }
00091 STDMETHODIMP BasicSeekable::CheckCapabilities(DWORD* outCapabilities) {
00092         
00093         
00094         //if (inCapabilities == NULL) {
00095         //      return E_POINTER;
00096         //}
00097         //*inCapabilities &= mSeekingCap;
00098 
00099         //if (*inCapabilities == mSeekingCap) {
00100         //      return S_OK;
00101         //} else {
00102         //      return E_NOTIMPL;
00103         //}
00104 
00105 
00106         if (mSeekDelegate != NULL) {
00107                 //seekDebug<<"CheckCaps : Passed on..."<<endl;
00108                 return mSeekDelegate->CheckCapabilities(outCapabilities);
00109         } else {
00110                 //seekDebug<<"CheckCaps : NULL Delegate"<<endl;
00111                 //This is probably wrong.
00112                 return E_NOTIMPL;
00113         }
00114 
00115 }
00116 STDMETHODIMP BasicSeekable::IsFormatSupported(const GUID* inFormat) {
00117 
00118         //if (inFormat == NULL) {
00119         //      return E_POINTER;
00120         //}
00121         //if (*inFormat == TIME_FORMAT_MEDIA_TIME) {
00122         //      return S_OK;
00123         //} else {
00124         //      return S_FALSE;
00125         //}
00126 
00127         if (mSeekDelegate != NULL) {
00128                 //seekDebug<<"IsFromatsupp : Passed on..."<<endl;
00129                 return mSeekDelegate->IsFormatSupported(inFormat);
00130         } else {
00131                 //seekDebug<<"IsFromatsupp : NULL Delegate"<<endl;
00132                 //This is probably wrong.
00133                 return E_NOTIMPL;
00134         }
00135 
00136 }
00137 STDMETHODIMP BasicSeekable::QueryPreferredFormat(GUID* outFormat) {
00138         //if (inFormat == NULL) {
00139         //      return E_POINTER;
00140         //}
00141 
00142         //*outFormat = TIME_FORMAT_MEDIA_TIME;
00143 
00144         //return S_OK;
00145         if (mSeekDelegate != NULL) {
00146                 //seekDebug<<"Query preff : Passed on..."<<endl;
00147                 return mSeekDelegate->QueryPreferredFormat(outFormat);
00148         } else {
00149                 //seekDebug<<"Query preff : NULL Delegate"<<endl;
00150                 //This is probably wrong.
00151                 return E_NOTIMPL;
00152         }
00153 
00154 }
00155 STDMETHODIMP BasicSeekable::SetTimeFormat(const GUID* inFormat) {
00156 
00157         if (mSeekDelegate != NULL) {
00158                 //seekDebug<<"SetTimeformat :Passed on..."<<endl;
00159                 return mSeekDelegate->SetTimeFormat(inFormat);
00160         } else {
00161                 //seekDebug<<"SetTimeformat : NULL Delegate"<<endl;
00162                 //This is probably wrong.
00163                 return E_NOTIMPL;
00164         }
00165 }
00166 
00167 STDMETHODIMP  BasicSeekable::GetTimeFormat( GUID *outFormat) {
00168         if (mSeekDelegate != NULL) {
00169                 //seekDebug<<"Gettimeformat : Passed on..."<<endl;
00170                 return mSeekDelegate->GetTimeFormat(outFormat);
00171         } else {
00172                 //seekDebug<<"Gettimeformat : NULL Delegate"<<endl;
00173                 //This is probably wrong.
00174                 return E_NOTIMPL;
00175         }
00176 }
00177 STDMETHODIMP BasicSeekable::GetDuration(LONGLONG* outDuration) {
00178 
00179         if (mSeekDelegate != NULL) {
00180                 //seekDebug<<"Getdureation : Passed on..."<<endl;
00181                 return mSeekDelegate->GetDuration(outDuration);
00182         } else {
00183                 //seekDebug<<"Getdureation : NULL Delegate"<<endl;
00184                 //This is probably wrong.
00185                 return E_NOTIMPL;
00186         }
00187         //return E_NOTIMPL;
00188 }
00189 STDMETHODIMP BasicSeekable::GetStopPosition(LONGLONG* inStop) {
00190         if (mSeekDelegate != NULL) {
00191                 //seekDebug<<"Getstoppos : Passed on..."<<endl;
00192                 return mSeekDelegate->GetStopPosition(inStop);
00193         } else {
00194                 //seekDebug<<"Getstoppos : NULL Delegate"<<endl;
00195                 //This is probably wrong.
00196                 return E_NOTIMPL;
00197         }
00198         //return E_NOTIMPL;
00199 }
00200 STDMETHODIMP BasicSeekable::GetCurrentPosition(LONGLONG* outCurrent) {
00201         //return E_NOTIMPL;
00202         
00203         if (mSeekDelegate != NULL) {
00204                 //seekDebug<<"Getcurrpos : Passed on..."<<endl;
00205                 return mSeekDelegate->GetCurrentPosition(outCurrent);
00206         } else {
00207                 //seekDebug<<"Getcurrpos : NULL Delegate"<<endl;
00208                 //This is probably wrong.
00209                 return E_NOTIMPL;
00210         }
00211 }
00212 STDMETHODIMP BasicSeekable::ConvertTimeFormat(LONGLONG* outTarget, const GUID* inTargetFormat, LONGLONG inSource, const GUID* inSourceFormat) {
00213         //return E_NOTIMPL;
00214         if (mSeekDelegate != NULL) {
00215                 //seekDebug<<"ConvTimeformat : Passed on..."<<endl;
00216                 return mSeekDelegate->ConvertTimeFormat(outTarget, inTargetFormat, inSource, inSourceFormat);
00217         } else {
00218                 //seekDebug<<"ConvTimeformat : NULL Delegate"<<endl;
00219                 //This is probably wrong.
00220                 return E_NOTIMPL;
00221         }
00222 }       
00223 STDMETHODIMP BasicSeekable::SetPositions(LONGLONG* inoutCurrent, DWORD inCurrentFlags, LONGLONG* inStop, DWORD inStopFlags) {
00224         if (mSeekDelegate != NULL) {
00225                 //seekDebug<<"Set pos : Requested Time : "<<*inoutCurrent<<endl;
00226                 HRESULT locHR = mSeekDelegate->SetPositions(inoutCurrent, inCurrentFlags, inStop, inStopFlags);
00227                 if (locHR == S_OK) {
00228                         //mSeekTimeBase = *inoutCurrent;
00229                         //seekDebug<<"Set Pos : Actual Time   : "<<*inoutCurrent<<endl;
00230                         
00231                 }
00232                 return locHR;
00233         } else {
00234                 //seekDebug<<"Set pos : NULL Delegate"<<endl;
00235                 //This is probably wrong.
00236                 return E_NOTIMPL;
00237         }
00238 
00239 }
00240 STDMETHODIMP BasicSeekable::GetPositions(LONGLONG* outCurrent, LONGLONG* outStop) {
00241         if (mSeekDelegate != NULL) {
00242                 //seekDebug<<"GetPos : Passed on..."<<endl;
00243                 return mSeekDelegate->GetPositions(outCurrent, outStop);
00244         } else {
00245                 //seekDebug<<"GetPos : NULL Delegate"<<endl;
00246                 //This is probably wrong.
00247                 return E_NOTIMPL;
00248         }
00249 
00250 }
00251 STDMETHODIMP BasicSeekable::GetAvailable(LONGLONG* outEarliest, LONGLONG* outLatest) {
00252         if (mSeekDelegate != NULL) {
00253                 //seekDebug<<"Getavail : Passed on..."<<endl;
00254                 return mSeekDelegate->GetAvailable(outEarliest, outLatest);
00255         } else {
00256                 //seekDebug<<"Getavail : NULL Delegate"<<endl;
00257                 //This is probably wrong.
00258                 return E_NOTIMPL;
00259         }
00260 }
00261 STDMETHODIMP BasicSeekable::SetRate(double inRate) {
00262 
00263         if (mSeekDelegate != NULL) {
00264                 //seekDebug<<"Setrate : Passed on..."<<endl;
00265                 return mSeekDelegate->SetRate(inRate);
00266         } else {
00267                 //seekDebug<<"Setrate : NULL Delegate"<<endl;
00268                 //This is probably wrong.
00269                 return E_NOTIMPL;
00270         }
00271 }
00272 STDMETHODIMP BasicSeekable::GetRate(double* outRate) {
00273         if (mSeekDelegate != NULL) {
00274                 //seekDebug<<"Getrate : Passed on..."<<endl;
00275                 return mSeekDelegate->GetRate(outRate);
00276         } else {
00277                 //seekDebug<<"Getrate : NULL Delegate"<<endl;
00278                 //This is probably wrong.
00279                 return E_NOTIMPL;
00280         }
00281 }
00282 STDMETHODIMP BasicSeekable::GetPreroll(LONGLONG* outPreroll) {
00283         if (mSeekDelegate != NULL) {
00284                 //seekDebug<<"Getpreroll : Passed on..."<<endl;
00285                 return mSeekDelegate->GetPreroll(outPreroll);
00286         } else {
00287                 //seekDebug<<"Getpreroll : NULL Delegate"<<endl;
00288                 //This is probably wrong.
00289                 return E_NOTIMPL;
00290         }
00291 }
00292 STDMETHODIMP BasicSeekable::IsUsingTimeFormat(const GUID* inFormat) {
00293 if (mSeekDelegate != NULL) {
00294                 //seekDebug<<"Isusingtimeformat : Passed on..."<<endl;
00295                 return mSeekDelegate->IsUsingTimeFormat(inFormat);
00296         } else {
00297                 //seekDebug<<"Isusingtimeformat : NULL Delegate"<<endl;
00298                 //This is probably wrong.
00299                 return E_NOTIMPL;
00300         }
00301 }
00302 //

Generated on Tue Feb 15 14:54:20 2005 for oggdsf by  doxygen 1.3.9