summaryrefslogtreecommitdiffhomepage
path: root/nGenEx/AviFile.h
blob: 642150421ed4c2427d5bfeb9e4bea6693a993bd4 (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:
	Rect           rect;
	Text           filename;
	int            fps;  

	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           play;
	bool           iserr;         // if true, then no function will do anything
};

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


#endif AviFile_h