00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __GZ_VIDEO_H__
00022 #define __GZ_VIDEO_H__
00023
00029 #include "gzImage.h"
00030
00031 const gzULong GZ_INVALID_FRAME=0xffffffffUL;
00032
00033 class gzVideoControlInterface
00034 {
00035 public:
00036
00037 virtual gzVoid updateFrame(gzULong frame)=0;
00038
00039 virtual gzBool skipFrame(gzULong frame)=0;
00040
00041 virtual gzBool forceFrame(gzULong frame)=0;
00042
00043 virtual gzBool discardFrame(gzULong frame)=0;
00044
00045 virtual gzDouble getCurrentTime()=0;
00046
00047 virtual gzULongLong getCurrentTimeStamp()=0;
00048 };
00049
00050 typedef gzVideoControlInterface * gzVideoControlInterfacePtr;
00051
00052 const gzString GZ_VIDEO_CONTROL_INTERFACE="gzVideoControlInterface";
00053
00054
00055 class gzVideo : public gzImage
00056 {
00057 public:
00058
00059 GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_BASE_EXPORT);
00060
00061 GZ_BASE_EXPORT gzVideo(const gzString & name=GZ_EMPTY_STRING);
00062 GZ_BASE_EXPORT virtual ~gzVideo(){};
00063
00064 GZ_BASE_EXPORT gzVoid setTime(const gzDouble &seconds);
00065 GZ_BASE_EXPORT gzBool setFrame(gzULong frameNumber);
00066
00067 GZ_BASE_EXPORT gzVoid start(const gzDouble &startTime=0);
00068 GZ_BASE_EXPORT gzVoid stop();
00069
00071 GZ_BASE_EXPORT gzULong getCurrentFrame();
00072
00073 GZ_BASE_EXPORT gzULong updateFrameCount();
00074
00076 GZ_BASE_EXPORT virtual gzBool onFrame(gzULong frame){ return FALSE; }
00077
00079 GZ_BASE_EXPORT virtual gzVoid restart(){};
00080
00081 GZ_BASE_EXPORT virtual gzUByte getVideoComponents();
00082
00083 GZ_BASE_EXPORT virtual gzVoid reset();
00084
00085 GZ_BASE_EXPORT virtual gzBool enableVideoThread(gzBool videoThread=TRUE){ return FALSE; }
00086 GZ_BASE_EXPORT virtual gzBool enableAudioThread(gzBool audioThread=TRUE){ return FALSE; }
00087 GZ_BASE_EXPORT virtual gzBool hasVideoThread() { return FALSE; }
00088 GZ_BASE_EXPORT virtual gzBool hasAudioThread() { return FALSE; }
00089
00090 GZ_PROPERTY_EXPORT( gzULong, FrameCount ,GZ_BASE_EXPORT);
00091 GZ_PROPERTY_EXPORT( gzULong, MaxLagFrames ,GZ_BASE_EXPORT);
00092 GZ_PROPERTY_EXPORT( gzDouble, FrameDuration ,GZ_BASE_EXPORT);
00093 GZ_PROPERTY_GET_EXPORT( gzDouble, RealTimeStartDiff ,GZ_BASE_EXPORT);
00094 GZ_PROPERTY_EXPORT( gzVideoControlInterfacePtr, ControlInterface ,GZ_BASE_EXPORT);
00095 GZ_PROPERTY_EXPORT( gzDouble, FramesPerSecond ,GZ_BASE_EXPORT);
00096 GZ_PROPERTY_EXPORT( gzString, VideoInfo ,GZ_BASE_EXPORT);
00097 GZ_PROPERTY_EXPORT( gzString, AudioInfo ,GZ_BASE_EXPORT);
00098
00099 private:
00100
00101 gzDouble m_startTime;
00102 gzBool m_running;
00103
00104 gzULong m_currentFrame;
00105 };
00106
00107 #endif //__GZ_VIDEO_H__
00108
00109