1 |
|
#ifndef _CODEC_H_ |
2 |
|
#define _CODEC_H_ |
3 |
|
|
4 |
|
#include <vfw.h> |
5 |
|
#include "config.h" |
6 |
|
|
7 |
|
#define XVID_NAME_L L"XVID" |
8 |
|
#define XVID_DESC_L L"XviD MPEG-4 Codec" |
9 |
|
|
10 |
|
#define FOURCC_XVID mmioFOURCC('X','V','I','D') |
11 |
|
#define FOURCC_DIVX mmioFOURCC('D','I','V','X') |
12 |
|
#define FOURCC_DX50 mmioFOURCC('D','X','5','0') |
13 |
|
/* yuyu 4:2:2 16bit, y-u-y-v, packed*/ |
14 |
|
#define FOURCC_YUYV mmioFOURCC('Y','U','Y','V') |
15 |
|
#define FOURCC_YUY2 mmioFOURCC('Y','U','Y','2') |
16 |
|
/* yvyu 4:2:2 16bit, y-v-y-u, packed*/ |
17 |
|
#define FOURCC_YVYU mmioFOURCC('Y','V','Y','U') |
18 |
|
/* uyvy 4:2:2 16bit, u-y-v-y, packed */ |
19 |
|
#define FOURCC_UYVY mmioFOURCC('U','Y','V','Y') |
20 |
|
/* i420 y-u-v, planar */ |
21 |
|
#define FOURCC_I420 mmioFOURCC('I','4','2','0') |
22 |
|
#define FOURCC_IYUV mmioFOURCC('I','Y','U','V') |
23 |
|
/* yv12 y-v-u, planar */ |
24 |
|
#define FOURCC_YV12 mmioFOURCC('Y','V','1','2') |
25 |
|
|
26 |
|
|
27 |
|
typedef struct |
28 |
|
{ |
29 |
|
CONFIG config; |
30 |
|
|
31 |
|
// decoder |
32 |
|
void * dhandle; |
33 |
|
|
34 |
|
// encoder |
35 |
|
void * ehandle; |
36 |
|
int fincr; |
37 |
|
int fbase; |
38 |
|
|
39 |
|
// encoder min keyframe internal |
40 |
|
int framenum; |
41 |
|
int keyspacing; |
42 |
|
|
43 |
|
} CODEC; |
44 |
|
|
45 |
|
|
46 |
|
int get_colorspace(BITMAPINFOHEADER *); |
47 |
|
|
48 |
|
LRESULT compress_query(CODEC *, BITMAPINFO *, BITMAPINFO *); |
49 |
|
LRESULT compress_get_format(CODEC *, BITMAPINFO *, BITMAPINFO *); |
50 |
|
LRESULT compress_get_size(CODEC *, BITMAPINFO *, BITMAPINFO *); |
51 |
|
LRESULT compress_frames_info(CODEC *, ICCOMPRESSFRAMES *); |
52 |
|
LRESULT compress_begin(CODEC *, BITMAPINFO *, BITMAPINFO *); |
53 |
|
LRESULT compress_end(CODEC *); |
54 |
|
LRESULT compress(CODEC *, ICCOMPRESS *); |
55 |
|
|
56 |
|
LRESULT decompress_query(CODEC *, BITMAPINFO *, BITMAPINFO *); |
57 |
|
LRESULT decompress_get_format(CODEC *, BITMAPINFO *, BITMAPINFO *); |
58 |
|
LRESULT decompress_begin(CODEC *, BITMAPINFO *, BITMAPINFO *); |
59 |
|
LRESULT decompress_end(CODEC *); |
60 |
|
LRESULT decompress(CODEC *, ICDECOMPRESS *); |
61 |
|
|
62 |
|
#endif /* _CODEC_H_ */ |