00001 #ifndef Impala_Core_Stream_RgbDataSrcDX_h 00002 #define Impala_Core_Stream_RgbDataSrcDX_h 00003 00004 #include "Core/Stream/RgbDataSrc.h" 00005 #include "Link/DXMedia/HxDXMedia.h" 00006 00007 namespace Impala 00008 { 00009 namespace Core 00010 { 00011 namespace Stream 00012 { 00013 00014 00015 class RgbDataSrcDX : public RgbDataSrc 00016 { 00017 public: 00018 00019 RgbDataSrcDX(int src, String srcName) : RgbDataSrc(src, srcName) 00020 { 00021 mSrcHandle = 0; 00022 Init(); 00023 } 00024 00025 virtual 00026 ~RgbDataSrcDX() 00027 { 00028 if (mSrcHandle) 00029 HxDXCloseVideo(mSrcHandle); 00030 } 00031 00032 virtual bool 00033 Valid() const 00034 { 00035 return (mSrcHandle != 0); 00036 } 00037 00038 void 00039 SetInterval(int interval) 00040 { 00041 HxDXSetInterval(mSrcHandle, interval); 00042 } 00043 00044 protected: 00045 00046 bool 00047 ReadFrameData() 00048 { 00049 mData = HxDXGetFrame(mSrcHandle, FrameNr()); 00050 return true; 00051 } 00052 00053 private: 00054 00055 void 00056 Init() 00057 { 00058 if (!(mSrcHandle = HxDXLoadVideo(mSrcName.c_str()))) 00059 { 00060 ILOG_ERROR("Unable to HxDXLoadVideo " << mSrcName); 00061 return; 00062 } 00063 mFrameWidth = HxDXGetFrameWidth(mSrcHandle); 00064 mFrameHeight = HxDXGetFrameHeight(mSrcHandle); 00065 mLastFrame = HxDXGetLength(mSrcHandle) - 1; 00066 } 00067 00068 void* mSrcHandle; 00069 00070 ILOG_VAR_DEC; 00071 }; 00072 00073 ILOG_VAR_INIT(RgbDataSrcDX, Impala.Core.Stream); 00074 00075 } // namespace Stream 00076 } // namespace Core 00077 } // namespace Impala 00078 00079 #endif