openMSX
AviWriter.hh
Go to the documentation of this file.
1 // Code based on DOSBox-0.65
2 
3 #ifndef AVIWRITER_HH
4 #define AVIWRITER_HH
5 
6 #include "endian.hh"
7 #include <vector>
8 #include <memory>
9 
10 namespace openmsx {
11 
12 class File;
13 class Filename;
14 class FrameSource;
15 class ZMBVEncoder;
16 
17 class AviWriter
18 {
19 public:
20  AviWriter(const Filename& filename, unsigned width, unsigned height,
21  unsigned bpp, unsigned channels, unsigned freq);
22  ~AviWriter();
23  void addFrame(FrameSource* frame, unsigned samples, short* sampleData);
24  void setFps(double fps);
25 
26 private:
27  void addAviChunk(const char* tag, unsigned size, void* data, unsigned flags);
28 
29  std::unique_ptr<File> file;
30  const std::unique_ptr<ZMBVEncoder> codec;
31  std::vector<Endian::L32> index;
32 
33  double fps;
34  const unsigned width;
35  const unsigned height;
36  const unsigned channels;
37  const unsigned audiorate;
38 
39  unsigned frames;
40  unsigned audiowritten;
41  unsigned written;
42 };
43 
44 } // namespace openmsx
45 
46 #endif