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
38class vtkTimerLog;
42
43class VTKIOVIDEO_EXPORT vtkVideoSource : public vtkImageAlgorithm
44{
45public:
48 void PrintSelf(ostream& os, vtkIndent indent);
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
274
280 virtual void InternalGrab();
281
283
287 void SetStartTimeStamp(double t) { this->StartTimeStamp = t; };
288 double GetStartTimeStamp() { return this->StartTimeStamp; };
290
291protected:
295
297
298 int FrameSize[3];
299 int ClipRegion[6];
300 int OutputWholeExtent[6];
301 double DataSpacing[3];
302 double DataOrigin[3];
304 // set according to the OutputFormat
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
313 int LastOutputExtent[6];
314
322
325
326 float Opacity;
327
328 // true if Execute() must apply a vertical flip to each frame
330
331 // set if output needs to be cleared to be cleared before being written
333
334 // An example of asynchrony
337
338 // A mutex for the frame buffer: must be applied when any of the
339 // below data is modified.
341
342 // set according to the needs of the hardware:
343 // number of bits per framebuffer pixel
345 // byte alignment of each row in the framebuffer
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
355
357
360 virtual void UpdateFrameBuffer();
361 virtual void AdvanceFrameBuffer(int n);
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
368private:
369 vtkVideoSource(const vtkVideoSource&) VTK_DELETE_FUNCTION;
370 void operator=(const vtkVideoSource&) VTK_DELETE_FUNCTION;
371};
372
373#endif
374
375
376
377
378
Critical section locking class.
Generic algorithm superclass for image algs.
a simple class to control print indentation
Definition: vtkIndent.h:40
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
A class for performing multithreaded execution.
Superclass for mapping scalar values to colors.
Timer support and logging.
Definition: vtkTimerLog.h:81
Superclass of video input devices for VTK.
virtual void SetFrameRate(float rate)
Request a particular frame rate (default 30 frames per second).
void SetStartTimeStamp(double t)
And internal variable which marks the beginning of a Record session.
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called in response to a REQUEST_DATA request from the executive.
vtkCriticalSection * FrameBufferMutex
virtual void Seek(int n)
Seek forwards or backwards by the specified number of frames (positive is forward,...
double * FrameBufferTimeStamps
vtkMultiThreader * PlayerThreader
int LastNumberOfScalarComponents
int NumberOfScalarComponents
virtual int GetInitialized()
virtual void Stop()
Stop recording or playing.
virtual void Rewind()
Rewind to the frame with the earliest timestamp.
virtual void UnpackRasterLine(char *outPtr, char *rowPtr, int start, int count)
virtual void InternalGrab()
The internal function which actually does the grab.
virtual void SetClipRegion(int x0, int x1, int y0, int y1, int z0, int z1)
static vtkVideoSource * New()
virtual void FastForward()
FastForward to the last frame that was recorded (i.e.
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
Subclasses can reimplement this method to collect information from their inputs and set information f...
virtual void SetFrameSize(int dim[3])
virtual void Play()
Play through the 'tape' sequentially at the specified frame rate.
virtual void Record()
Record incoming video at the specified FrameRate.
void SetOutputFormatToRGBA()
double GetFrameTimeStamp()
Get a time stamp in seconds (resolution of milliseconds) for the Output.
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
virtual void SetOutputFormat(int format)
Set the output format.
double GetStartTimeStamp()
int OutputNeedsInitialization
virtual void ReleaseSystemResources()
Release the video driver.
virtual double GetFrameTimeStamp(int frame)
Get a time stamp in seconds (resolution of milliseconds) for a video frame.
virtual void UpdateFrameBuffer()
These methods can be overridden in subclasses.
virtual void SetFrameSize(int x, int y, int z)
Set the full-frame size.
void SetOutputFormatToRGB()
virtual void SetFrameBufferSize(int FrameBufferSize)
Set size of the frame buffer, i.e.
virtual void Initialize()
Initialize the hardware.
virtual void Grab()
Grab a single video frame.
void SetOutputFormatToLuminance()
virtual void AdvanceFrameBuffer(int n)
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
#define VTK_RGBA
#define VTK_RGB
#define VTK_LUMINANCE