00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00031 #ifndef __vtkVideoSource_h
00032 #define __vtkVideoSource_h
00033
00034 #include "vtkImageAlgorithm.h"
00035
00036 class vtkTimerLog;
00037 class vtkCriticalSection;
00038 class vtkMultiThreader;
00039 class vtkScalarsToColors;
00040
00041 class VTK_HYBRID_EXPORT vtkVideoSource : public vtkImageAlgorithm
00042 {
00043 public:
00044 static vtkVideoSource *New();
00045 vtkTypeMacro(vtkVideoSource,vtkImageAlgorithm);
00046 void PrintSelf(ostream& os, vtkIndent indent);
00047
00050 virtual void Record();
00051
00054 virtual void Play();
00055
00057 virtual void Stop();
00058
00063 virtual void Rewind();
00064
00067 virtual void FastForward();
00068
00071 virtual void Seek(int n);
00072
00074 virtual void Grab();
00075
00077
00079 vtkGetMacro(Recording,int);
00081
00083
00085 vtkGetMacro(Playing,int);
00087
00089
00094 virtual void SetFrameSize(int x, int y, int z);
00095 virtual void SetFrameSize(int dim[3]) {
00096 this->SetFrameSize(dim[0], dim[1], dim[2]); };
00097 vtkGetVector3Macro(FrameSize,int);
00099
00101
00102 virtual void SetFrameRate(float rate);
00103 vtkGetMacro(FrameRate,float);
00105
00107
00109 virtual void SetOutputFormat(int format);
00110 void SetOutputFormatToLuminance() { this->SetOutputFormat(VTK_LUMINANCE); };
00111 void SetOutputFormatToRGB() { this->SetOutputFormat(VTK_RGB); };
00112 void SetOutputFormatToRGBA() { this->SetOutputFormat(VTK_RGBA); };
00113 vtkGetMacro(OutputFormat,int);
00115
00117
00119 virtual void SetFrameBufferSize(int FrameBufferSize);
00120 vtkGetMacro(FrameBufferSize,int);
00122
00124
00127 vtkSetMacro(NumberOfOutputFrames,int);
00128 vtkGetMacro(NumberOfOutputFrames,int);
00130
00132
00134 vtkBooleanMacro(AutoAdvance,int);
00135 vtkSetMacro(AutoAdvance,int)
00136 vtkGetMacro(AutoAdvance,int);
00138
00140
00144 virtual void SetClipRegion(int r[6]) {
00145 this->SetClipRegion(r[0],r[1],r[2],r[3],r[4],r[5]); };
00146 virtual void SetClipRegion(int x0, int x1, int y0, int y1, int z0, int z1);
00147 vtkGetVector6Macro(ClipRegion,int);
00149
00151
00158 vtkSetVector6Macro(OutputWholeExtent,int);
00159 vtkGetVector6Macro(OutputWholeExtent,int);
00161
00163
00164 vtkSetVector3Macro(DataSpacing,double);
00165 vtkGetVector3Macro(DataSpacing,double);
00167
00169
00171 vtkSetVector3Macro(DataOrigin,double);
00172 vtkGetVector3Macro(DataOrigin,double);
00174
00176
00179 vtkSetMacro(Opacity,float);
00180 vtkGetMacro(Opacity,float);
00182
00184
00186 vtkGetMacro(FrameCount, int);
00187 vtkSetMacro(FrameCount, int);
00189
00191
00193 vtkGetMacro(FrameIndex, int);
00195
00200 virtual double GetFrameTimeStamp(int frame);
00201
00205 double GetFrameTimeStamp() { return this->FrameTimeStamp; };
00206
00208
00210 virtual void Initialize();
00211 virtual int GetInitialized() { return this->Initialized; };
00213
00216 virtual void ReleaseSystemResources();
00217
00221 virtual void InternalGrab();
00222
00224
00226 void SetStartTimeStamp(double t) { this->StartTimeStamp = t; };
00227 double GetStartTimeStamp() { return this->StartTimeStamp; };
00229
00230 protected:
00231 vtkVideoSource();
00232 ~vtkVideoSource();
00233 virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00234
00235 int Initialized;
00236
00237 int FrameSize[3];
00238 int ClipRegion[6];
00239 int OutputWholeExtent[6];
00240 double DataSpacing[3];
00241 double DataOrigin[3];
00242 int OutputFormat;
00243
00244 int NumberOfScalarComponents;
00245
00246
00247 int FrameOutputExtent[6];
00248
00249
00250
00251 int LastNumberOfScalarComponents;
00252 int LastOutputExtent[6];
00253
00254 int Recording;
00255 int Playing;
00256 float FrameRate;
00257 int FrameCount;
00258 int FrameIndex;
00259 double StartTimeStamp;
00260 double FrameTimeStamp;
00261
00262 int AutoAdvance;
00263 int NumberOfOutputFrames;
00264
00265 float Opacity;
00266
00267
00268 int FlipFrames;
00269
00270
00271 int OutputNeedsInitialization;
00272
00273
00274 vtkMultiThreader *PlayerThreader;
00275 int PlayerThreadId;
00276
00277
00278
00279 vtkCriticalSection *FrameBufferMutex;
00280
00281
00282
00283 int FrameBufferBitsPerPixel;
00284
00285 int FrameBufferRowAlignment;
00286
00287
00288 int FrameBufferExtent[6];
00289
00290 int FrameBufferSize;
00291 int FrameBufferIndex;
00292 void **FrameBuffer;
00293 double *FrameBufferTimeStamps;
00294
00296
00297 virtual void UpdateFrameBuffer();
00298 virtual void AdvanceFrameBuffer(int n);
00299 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00300
00301 virtual void UnpackRasterLine(char *outPtr, char *rowPtr,
00302 int start, int count);
00304
00305 private:
00306 vtkVideoSource(const vtkVideoSource&);
00307 void operator=(const vtkVideoSource&);
00308 };
00309
00310 #endif
00311
00312
00313
00314
00315