00001 #ifndef Impala_Core_Stream_RgbDataDstAVI_h
00002 #define Impala_Core_Stream_RgbDataDstAVI_h
00003
00004 #include "Core/Stream/RgbDataDst.h"
00005 #include "Link/DXMedia/HxAVIMedia.h"
00006
00007 namespace Impala
00008 {
00009 namespace Core
00010 {
00011 namespace Stream
00012 {
00013
00014
00015 class RgbDataDstAVI : public RgbDataDst
00016 {
00017 public:
00018
00019 RgbDataDstAVI(int dst, std::string dstName, int imageWidth, int imageHeight) :
00020 RgbDataDst(dst, dstName, imageWidth, imageHeight)
00021 {
00022 mAviHandle = 0;
00023 Init();
00024 }
00025
00026 bool
00027 Valid()
00028 {
00029 if (mAviHandle == 0)
00030 return false;
00031 return true;
00032 }
00033
00034 void
00035 NextFrame(unsigned char* dataPtr)
00036 {
00037 if (! dataPtr)
00038 {
00039 std::cout << "RgbDataDstAVI::nextFrame : dataPtr is null" << std::endl;
00040 return;
00041 }
00042 HxAVIPutFrame(mAviHandle, dataPtr);
00043 }
00044
00045 void
00046 Close()
00047 {
00048 HxAVIEndWrite(mAviHandle);
00049 }
00050
00051 private:
00052
00053 void
00054 Init()
00055 {
00056 if (!(mAviHandle = HxAVIBeginWrite(mDstName.c_str(), mImageWidth,
00057 mImageHeight)))
00058 std::cout << "HxAVIBeginWrite failed" << std::endl;
00059 }
00060
00061 void* mAviHandle;
00062 };
00063
00064 }
00065 }
00066 }
00067
00068 #endif