summaryrefslogtreecommitdiffhomepage
path: root/nGenEx/AviFile.h
blob: 13cf16700b8c3cef1c07d941f3e37b8a61b187a7 (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