vtkAVIWriter.h 3.22 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/*=========================================================================

  Program:   Visualization Toolkit
  Module:    vtkAVIWriter.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.

=========================================================================*/
15 16 17 18 19 20 21 22
/**
 * @class   vtkAVIWriter
 * @brief   Writes Windows AVI files.
 *
 * vtkAVIWriter writes AVI files. Note that this class in only available
 * on the Microsoft Windows platform. The data type of the file is
 * unsigned char regardless of the input type.
 * @sa
23
 * vtkGenericMovieWriter
24
*/
25

26 27
#ifndef vtkAVIWriter_h
#define vtkAVIWriter_h
28

29
#include "vtkIOMovieModule.h" // For export macro
30 31 32 33
#include "vtkGenericMovieWriter.h"

class vtkAVIWriterInternal;

34
class VTKIOMOVIE_EXPORT vtkAVIWriter : public vtkGenericMovieWriter
35 36 37
{
public:
  static vtkAVIWriter *New();
38
  vtkTypeMacro(vtkAVIWriter,vtkGenericMovieWriter);
39
  void PrintSelf(ostream& os, vtkIndent indent) override;
40

41 42 43 44 45
  //@{
  /**
   * These methods start writing an AVI file, write a frame to the file
   * and then end the writing process.
   */
46 47 48
  void Start() override;
  void Write() override;
  void End() override;
49
  //@}
50

51 52 53 54
  //@{
  /**
   * Set/Get the frame rate, in frame/s.
   */
55 56
  vtkSetClampMacro(Rate, int, 1, 5000);
  vtkGetMacro(Rate, int);
57 58 59 60 61 62 63 64
  //@}

  //@{
  /**
   * Set/Get the compression quality.
   * 0 means worst quality and smallest file size
   * 2 means best quality and largest file size
   */
65 66
  vtkSetClampMacro(Quality, int, 0, 2);
  vtkGetMacro(Quality, int);
67 68 69 70 71 72 73 74
  //@}

  //@{
  /**
   * Set/Get if the user should be prompted for compression options, i.e.
   * pick a compressor, set the compression rate (override Rate), etc.).
   * Default is OFF (legacy).
   */
75 76 77
  vtkSetMacro(PromptCompressionOptions, int);
  vtkGetMacro(PromptCompressionOptions, int);
  vtkBooleanMacro(PromptCompressionOptions, int);
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
  //@}

  //@{
  /**
   * Set/Get the compressor FourCC.
   * A FourCC (literally, four-character code) is a sequence of four bytes
   * used to uniquely identify data formats. [...] One of the most well-known
   * uses of FourCCs is to identify the video codec used in AVI files.
   * Common identifiers include DIVX, XVID, and H264.
   * http://en.wikipedia.org/wiki/FourCC.
   * Default value is:
   * - MSVC
   * Other examples include:
   * - DIB: Full Frames (Uncompressed)
   * - LAGS: Lagarith Lossless Codec
   * - MJPG: M-JPG, aka Motion JPEG (say, Pegasus Imaging PicVideo M-JPEG)
   * Links:
   * - http://www.fourcc.org/
   * - http://www.microsoft.com/whdc/archive/fourcc.mspx
   * - http://abcavi.kibi.ru/fourcc.php
   */
99 100
  vtkSetStringMacro(CompressorFourCC);
  vtkGetStringMacro(CompressorFourCC);
101
  //@}
102

103 104 105
protected:
  vtkAVIWriter();
  ~vtkAVIWriter();
106

107 108 109 110
  vtkAVIWriterInternal *Internals;

  int Rate;
  int Time;
111
  int Quality;
112
  int PromptCompressionOptions;
113
  char *CompressorFourCC;
114

115
private:
116 117
  vtkAVIWriter(const vtkAVIWriter&) = delete;
  void operator=(const vtkAVIWriter&) = delete;
118 119 120 121 122 123
};

#endif