Hybrid/vtkVideoSource.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00035 #ifndef __vtkVideoSource_h
00036 #define __vtkVideoSource_h
00037
00038 #include "vtkImageSource.h"
00039
00040 class vtkTimerLog;
00041 class vtkCriticalSection;
00042 class vtkMultiThreader;
00043 class vtkScalarsToColors;
00044
00045 class VTK_HYBRID_EXPORT vtkVideoSource : public vtkImageSource
00046 {
00047 public:
00048 static vtkVideoSource *New();
00049 vtkTypeRevisionMacro(vtkVideoSource,vtkImageSource);
00050 void PrintSelf(ostream& os, vtkIndent indent);
00051
00054 virtual void Record();
00055
00058 virtual void Play();
00059
00061 virtual void Stop();
00062
00067 virtual void Rewind();
00068
00071 virtual void FastForward();
00072
00075 virtual void Seek(int n);
00076
00078 virtual void Grab();
00079
00081
00083 vtkGetMacro(Recording,int);
00085
00087
00089 vtkGetMacro(Playing,int);
00091
00093
00098 virtual void SetFrameSize(int x, int y, int z);
00099 virtual void SetFrameSize(int dim[3]) {
00100 this->SetFrameSize(dim[0], dim[1], dim[2]); };
00101 vtkGetVector3Macro(FrameSize,int);
00103
00105
00106 virtual void SetFrameRate(float rate);
00107 vtkGetMacro(FrameRate,float);
00109
00111
00113 virtual void SetOutputFormat(int format);
00114 void SetOutputFormatToLuminance() { this->SetOutputFormat(VTK_LUMINANCE); };
00115 void SetOutputFormatToRGB() { this->SetOutputFormat(VTK_RGB); };
00116 void SetOutputFormatToRGBA() { this->SetOutputFormat(VTK_RGBA); };
00117 vtkGetMacro(OutputFormat,int);
00119
00121
00123 virtual void SetFrameBufferSize(int FrameBufferSize);
00124 vtkGetMacro(FrameBufferSize,int);
00126
00128
00131 vtkSetMacro(NumberOfOutputFrames,int);
00132 vtkGetMacro(NumberOfOutputFrames,int);
00134
00136
00138 vtkBooleanMacro(AutoAdvance,int);
00139 vtkSetMacro(AutoAdvance,int)
00140 vtkGetMacro(AutoAdvance,int);
00142
00144
00148 virtual void SetClipRegion(int r[6]) {
00149 this->SetClipRegion(r[0],r[1],r[2],r[3],r[4],r[5]); };
00150 virtual void SetClipRegion(int x0, int x1, int y0, int y1, int z0, int z1);
00151 vtkGetVector6Macro(ClipRegion,int);
00153
00155
00162 vtkSetVector6Macro(OutputWholeExtent,int);
00163 vtkGetVector6Macro(OutputWholeExtent,int);
00165
00167
00168 vtkSetVector3Macro(DataSpacing,float);
00169 vtkGetVector3Macro(DataSpacing,float);
00171
00173
00175 vtkSetVector3Macro(DataOrigin,float);
00176 vtkGetVector3Macro(DataOrigin,float);
00178
00180
00183 vtkSetMacro(Opacity,float);
00184 vtkGetMacro(Opacity,float);
00186
00188
00190 vtkGetMacro(FrameCount, int);
00191 vtkSetMacro(FrameCount, int);
00193
00195
00197 vtkGetMacro(FrameIndex, int);
00199
00204 virtual double GetFrameTimeStamp(int frame);
00205
00209 double GetFrameTimeStamp() { return this->FrameTimeStamp; };
00210
00212
00214 virtual void Initialize();
00215 virtual int GetInitialized() { return this->Initialized; };
00217
00220 virtual void ReleaseSystemResources();
00221
00225 virtual void InternalGrab();
00226
00228
00230 void SetStartTimeStamp(double t) { this->StartTimeStamp = t; };
00231 double GetStartTimeStamp() { return this->StartTimeStamp; };
00233
00234 protected:
00235 vtkVideoSource();
00236 ~vtkVideoSource();
00237 void ExecuteInformation();
00238
00239 int Initialized;
00240
00241 int FrameSize[3];
00242 int ClipRegion[6];
00243 int OutputWholeExtent[6];
00244 float DataSpacing[3];
00245 float DataOrigin[3];
00246 int OutputFormat;
00247
00248 int NumberOfScalarComponents;
00249
00250
00251 int FrameOutputExtent[6];
00252
00253
00254
00255 int LastNumberOfScalarComponents;
00256 int LastOutputExtent[6];
00257
00258 int Recording;
00259 int Playing;
00260 float FrameRate;
00261 int FrameCount;
00262 int FrameIndex;
00263 double StartTimeStamp;
00264 double FrameTimeStamp;
00265
00266 int AutoAdvance;
00267 int NumberOfOutputFrames;
00268
00269 float Opacity;
00270
00271
00272 int FlipFrames;
00273
00274
00275 int OutputNeedsInitialization;
00276
00277
00278 vtkMultiThreader *PlayerThreader;
00279 int PlayerThreadId;
00280
00281
00282
00283 vtkCriticalSection *FrameBufferMutex;
00284
00285
00286
00287 int FrameBufferBitsPerPixel;
00288
00289 int FrameBufferRowAlignment;
00290
00291
00292 int FrameBufferExtent[6];
00293
00294 int FrameBufferSize;
00295 int FrameBufferIndex;
00296 void **FrameBuffer;
00297 double *FrameBufferTimeStamps;
00298
00300
00301 virtual void UpdateFrameBuffer();
00302 virtual void AdvanceFrameBuffer(int n);
00303 virtual void ExecuteData(vtkDataObject *data);
00304
00305 virtual void UnpackRasterLine(char *outPtr, char *rowPtr,
00306 int start, int count);
00308
00309 private:
00310 vtkVideoSource(const vtkVideoSource&);
00311 void operator=(const vtkVideoSource&);
00312 };
00313
00314 #endif
00315
00316
00317
00318
00319