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 "vtkImageSource.h"
00035
00036
class vtkTimerLog;
00037
class vtkCriticalSection;
00038
class vtkMultiThreader;
00039
class vtkScalarsToColors;
00040
00041 class VTK_HYBRID_EXPORT vtkVideoSource :
public vtkImageSource
00042 {
00043
public:
00044
static vtkVideoSource *
New();
00045 vtkTypeRevisionMacro(vtkVideoSource,
vtkImageSource);
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
void ExecuteInformation();
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 void ExecuteData(
vtkDataObject *data);
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