You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
3.0 KiB
C++
120 lines
3.0 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkFFMPEGWriter.h
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
/**
|
|
* @class vtkFFMPEGWriter
|
|
* @brief Uses the FFMPEG library to write video files.
|
|
*
|
|
* vtkFFMPEGWriter is an adapter that allows VTK to use the LGPL'd FFMPEG
|
|
* library to write movie files. FFMPEG can create a variety of multimedia
|
|
* file formats and can use a variety of encoding algorithms (codecs).
|
|
* This class creates .avi files containing MP43 encoded video without
|
|
* audio.
|
|
*
|
|
* The FFMPEG multimedia library source code can be obtained from
|
|
* the sourceforge web site at http://ffmpeg.sourceforge.net/download.php
|
|
* or is a tarball along with installation instructions at
|
|
* http://www.vtk.org/files/support/ffmpeg_source.tar.gz
|
|
*
|
|
*/
|
|
|
|
#ifndef vtkFFMPEGWriter_h
|
|
#define vtkFFMPEGWriter_h
|
|
|
|
#include "vtkIOFFMPEGModule.h" // For export macro
|
|
#include "vtkGenericMovieWriter.h"
|
|
|
|
class vtkFFMPEGWriterInternal;
|
|
|
|
class VTKIOFFMPEG_EXPORT vtkFFMPEGWriter : public vtkGenericMovieWriter
|
|
{
|
|
public:
|
|
static vtkFFMPEGWriter *New();
|
|
vtkTypeMacro(vtkFFMPEGWriter,vtkGenericMovieWriter);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
//@{
|
|
/**
|
|
* These methods start writing an Movie file, write a frame to the file
|
|
* and then end the writing process.
|
|
*/
|
|
void Start();
|
|
void Write();
|
|
void End();
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set/Get the compression quality.
|
|
* 0 means worst quality and smallest file size
|
|
* 2 means best quality and largest file size
|
|
*/
|
|
vtkSetClampMacro(Quality, int, 0, 2);
|
|
vtkGetMacro(Quality, int);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Turns on(the default) or off compression.
|
|
* Turning off compression overrides quality setting.
|
|
*/
|
|
vtkSetMacro(Compression, bool);
|
|
vtkGetMacro(Compression, bool);
|
|
vtkBooleanMacro(Compression, bool);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set/Get the frame rate, in frame/s.
|
|
*/
|
|
vtkSetClampMacro(Rate, int , 1, 5000);
|
|
vtkGetMacro(Rate, int);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set/Get the bit-rate
|
|
*/
|
|
vtkSetMacro(BitRate, int);
|
|
vtkGetMacro(BitRate, int);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set/Get the bit-rate tolerance
|
|
*/
|
|
vtkSetMacro(BitRateTolerance, int);
|
|
vtkGetMacro(BitRateTolerance, int);
|
|
//@}
|
|
|
|
protected:
|
|
vtkFFMPEGWriter();
|
|
~vtkFFMPEGWriter();
|
|
|
|
vtkFFMPEGWriterInternal *Internals;
|
|
|
|
int Initialized;
|
|
int Quality;
|
|
int Rate;
|
|
int BitRate;
|
|
int BitRateTolerance;
|
|
bool Compression;
|
|
|
|
private:
|
|
vtkFFMPEGWriter(const vtkFFMPEGWriter&) VTK_DELETE_FUNCTION;
|
|
void operator=(const vtkFFMPEGWriter&) VTK_DELETE_FUNCTION;
|
|
};
|
|
|
|
#endif
|