VTK
vtkVideoSource.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkVideoSource.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
32 #ifndef vtkVideoSource_h
33 #define vtkVideoSource_h
34 
35 #include "vtkIOVideoModule.h" // For export macro
36 #include "vtkImageAlgorithm.h"
37 
38 class vtkTimerLog;
39 class vtkCriticalSection;
40 class vtkMultiThreader;
41 class vtkScalarsToColors;
42 
43 class VTKIOVIDEO_EXPORT vtkVideoSource : public vtkImageAlgorithm
44 {
45 public:
46  static vtkVideoSource *New();
48  void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
49 
54  virtual void Record();
55 
60  virtual void Play();
61 
65  virtual void Stop();
66 
72  virtual void Rewind();
73 
78  virtual void FastForward();
79 
84  virtual void Seek(int n);
85 
89  virtual void Grab();
90 
92 
96  vtkGetMacro(Recording,int);
98 
100 
104  vtkGetMacro(Playing,int);
106 
108 
116  virtual void SetFrameSize(int x, int y, int z);
117  virtual void SetFrameSize(int dim[3]) {
118  this->SetFrameSize(dim[0], dim[1], dim[2]); };
119  vtkGetVector3Macro(FrameSize,int);
121 
123 
126  virtual void SetFrameRate(float rate);
127  vtkGetMacro(FrameRate,float);
129 
131 
135  virtual void SetOutputFormat(int format);
136  void SetOutputFormatToLuminance() { this->SetOutputFormat(VTK_LUMINANCE); };
137  void SetOutputFormatToRGB() { this->SetOutputFormat(VTK_RGB); };
138  void SetOutputFormatToRGBA() { this->SetOutputFormat(VTK_RGBA); };
139  vtkGetMacro(OutputFormat,int);
141 
143 
147  virtual void SetFrameBufferSize(int FrameBufferSize);
148  vtkGetMacro(FrameBufferSize,int);
150 
152 
158  vtkSetMacro(NumberOfOutputFrames,int);
159  vtkGetMacro(NumberOfOutputFrames,int);
161 
163 
167  vtkBooleanMacro(AutoAdvance,int);
168  vtkSetMacro(AutoAdvance,int)
169  vtkGetMacro(AutoAdvance,int);
171 
173 
179  virtual void SetClipRegion(int r[6]) {
180  this->SetClipRegion(r[0],r[1],r[2],r[3],r[4],r[5]); };
181  virtual void SetClipRegion(int x0, int x1, int y0, int y1, int z0, int z1);
182  vtkGetVector6Macro(ClipRegion,int);
184 
186 
195  vtkSetVector6Macro(OutputWholeExtent,int);
196  vtkGetVector6Macro(OutputWholeExtent,int);
198 
200 
204  vtkSetVector3Macro(DataSpacing,double);
205  vtkGetVector3Macro(DataSpacing,double);
207 
209 
213  vtkSetVector3Macro(DataOrigin,double);
214  vtkGetVector3Macro(DataOrigin,double);
216 
218 
223  vtkSetMacro(Opacity,float);
224  vtkGetMacro(Opacity,float);
226 
228 
232  vtkGetMacro(FrameCount, int);
233  vtkSetMacro(FrameCount, int);
235 
237 
241  vtkGetMacro(FrameIndex, int);
243 
250  virtual double GetFrameTimeStamp(int frame);
251 
257  double GetFrameTimeStamp() { return this->FrameTimeStamp; };
258 
260 
264  virtual void Initialize();
265  virtual int GetInitialized() { return this->Initialized; };
267 
273  virtual void ReleaseSystemResources();
274 
280  virtual void InternalGrab();
281 
283 
287  void SetStartTimeStamp(double t) { this->StartTimeStamp = t; };
288  double GetStartTimeStamp() { return this->StartTimeStamp; };
290 
291 protected:
292  vtkVideoSource();
293  ~vtkVideoSource() VTK_OVERRIDE;
294  int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) VTK_OVERRIDE;
295 
296  int Initialized;
297 
298  int FrameSize[3];
299  int ClipRegion[6];
300  int OutputWholeExtent[6];
301  double DataSpacing[3];
302  double DataOrigin[3];
303  int OutputFormat;
304  // set according to the OutputFormat
305  int NumberOfScalarComponents;
306  // The FrameOutputExtent is the WholeExtent for a single output frame.
307  // It is initialized in ExecuteInformation.
308  int FrameOutputExtent[6];
309 
310  // save this information from the output so that we can see if the
311  // output scalars have changed
312  int LastNumberOfScalarComponents;
313  int LastOutputExtent[6];
314 
315  int Recording;
316  int Playing;
317  float FrameRate;
318  int FrameCount;
319  int FrameIndex;
320  double StartTimeStamp;
321  double FrameTimeStamp;
322 
323  int AutoAdvance;
324  int NumberOfOutputFrames;
325 
326  float Opacity;
327 
328  // true if Execute() must apply a vertical flip to each frame
329  int FlipFrames;
330 
331  // set if output needs to be cleared to be cleared before being written
332  int OutputNeedsInitialization;
333 
334  // An example of asynchrony
335  vtkMultiThreader *PlayerThreader;
336  int PlayerThreadId;
337 
338  // A mutex for the frame buffer: must be applied when any of the
339  // below data is modified.
340  vtkCriticalSection *FrameBufferMutex;
341 
342  // set according to the needs of the hardware:
343  // number of bits per framebuffer pixel
344  int FrameBufferBitsPerPixel;
345  // byte alignment of each row in the framebuffer
346  int FrameBufferRowAlignment;
347  // FrameBufferExtent is the extent of frame after it has been clipped
348  // with ClipRegion. It is initialized in CheckBuffer().
349  int FrameBufferExtent[6];
350 
351  int FrameBufferSize;
352  int FrameBufferIndex;
353  void **FrameBuffer;
354  double *FrameBufferTimeStamps;
355 
357 
360  virtual void UpdateFrameBuffer();
361  virtual void AdvanceFrameBuffer(int n);
362  int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) VTK_OVERRIDE;
363  // if some component conversion is required, it is done here:
364  virtual void UnpackRasterLine(char *outPtr, char *rowPtr,
365  int start, int count);
367 
368 private:
369  vtkVideoSource(const vtkVideoSource&) VTK_DELETE_FUNCTION;
370  void operator=(const vtkVideoSource&) VTK_DELETE_FUNCTION;
371 };
372 
373 #endif
374 
375 
376 
377 
378 
virtual int GetInitialized()
Initialize the hardware.
Store vtkAlgorithm input/output information.
void SetOutputFormatToRGB()
Set the output format.
A class for performing multithreaded execution.
Superclass of video input devices for VTK.
virtual void SetFrameSize(int dim[3])
Set the full-frame size.
void SetOutputFormatToRGBA()
Set the output format.
#define VTK_LUMINANCE
Timer support and logging.
Definition: vtkTimerLog.h:85
Superclass for mapping scalar values to colors.
a simple class to control print indentation
Definition: vtkIndent.h:33
double GetStartTimeStamp()
And internal variable which marks the beginning of a Record session.
double GetFrameTimeStamp()
Get a time stamp in seconds (resolution of milliseconds) for the Output.
void SetOutputFormatToLuminance()
Set the output format.
Critical section locking class.
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
#define VTK_RGBA
#define VTK_RGB
Generic algorithm superclass for image algs.
Store zero or more vtkInformation instances.
static vtkAlgorithm * New()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetStartTimeStamp(double t)
And internal variable which marks the beginning of a Record session.
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.