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