#ifndef __ORDEVICEVIDEO_DEVICE_H__
#define __ORDEVICEVIDEO_DEVICE_H__
#include "ordevicevideo_extra.h"
#define ORDEVICEVIDEO__CLASSNAME ORDeviceVideo
#define ORDEVICEVIDEO__CLASSSTR "ORDeviceVideo"
enum ORPlaybackMode
{
kORPlaybackFreeRunning,
kORPlaybackGlobalFrame,
kORPlaybackLocalFrame
};
class ORDeviceVideo : public FBDevice
{
public:
virtual bool FBCreate();
virtual void FBDestroy();
bool Init();
bool Done();
bool Reset();
bool Stop();
bool Start();
virtual bool AnimationNodeNotify ( FBAnimationNode* pAnimationNode, FBEvaluateInfo* pEvaluateInfo );
virtual void DeviceIONotify ( kDeviceIOs pAction, FBDeviceNotifyInfo &pDeviceNotifyInfo );
virtual bool DeviceEvaluationNotify ( kTransportMode pMode, FBEvaluateInfo* pEvaluateInfo );
virtual bool DeviceOperation ( kDeviceOperations pOperation );
virtual bool FbxStore ( FBFbxObject* pFbxObject,
kFbxObjectStore pStoreWhat );
virtual bool FbxRetrieve( FBFbxObject* pFbxObject,
kFbxObjectStore pStoreWhat );
public:
ORPlaybackMode GetPlaybackMode ();
void SetPlaybackMode ( ORPlaybackMode pMode );
bool GetUsingSystemTime ();
void SetUsingSystemTime ( bool pState );
bool GetLoopMode () { return mLoopMode; }
void SetLoopMode ( bool pState ) { mLoopMode = pState; }
unsigned long GetTotalFrames ();
FBVideoClip* GetCurrentVideo ();
int AddNewVideoClip ();
private:
FBAnimationNode* mNodeFrame_IN;
FBAnimationNode* mNodeFrame_OUT;
FBAnimationNode* mNodeFrameLocal_IN;
FBAnimationNode* mNodeFrameLocal_OUT;
FBAnimationNode* mNodeIndex_IN;
FBAnimationNode* mNodeIndex_OUT;
ORPlaybackMode mModePlayback;
bool mLoopMode;
int mCurrentIndex;
FBSystem mSystem;
public:
FBVideoSwitcher* mVideoSwitcher;
FBArrayTemplate< ORVideoEntry* > mClips;
};
#endif