summaryrefslogtreecommitdiffhomepage
path: root/nGenEx/AviFile.h
blob: 495693a6d6f095facdd4c7a3b4153f6712f2fecd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*  Project nGenEx
    Destroyer Studios LLC
    Copyright © 1997-2004. All Rights Reserved.

    SUBSYSTEM:    nGenEx.lib
    FILE:         AviFile.h
    AUTHOR:       John DiCamillo


    OVERVIEW
    ========
    PCX image file loader
*/

#ifndef AviFile_h
#define AviFile_h

#include "Text.h"
#include "Color.h"
#include "Bitmap.h"
#include "Geometry.h"

// +--------------------------------------------------------------------+

struct IAVIFile;
struct IAVIStream;

// +--------------------------------------------------------------------+

class AviFile
{
public:
   static const char* TYPENAME() { return "AviFile"; }

   // open for reading:
   AviFile(const char* fname);

   // create for writing
   AviFile(const char* fname, const Rect& rect, int frame_rate=30);
   ~AviFile();

   HRESULT  AddFrame(const Bitmap& bmp);
   HRESULT  GetFrame(double seconds, Bitmap& bmp);

private:
   Text           filename;
   Rect           rect;
   int            fps;
   bool           play;

   IAVIFile*      pfile;         // created by CreateAvi
   IAVIStream*    ps; 
   IAVIStream*    ps_comp;       // video stream, when first created
   DWORD          frame_size;    // total bytes per frame of video
   DWORD          nframe;        // which frame will be added next
   DWORD          nsamp;         // which sample will be added next
   bool           iserr;         // if true, then no function will do anything
};

// +--------------------------------------------------------------------+


#endif AviFile_h