Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4973 right-hear 1
/* ----------------------------- MNI Header -----------------------------------
2
@NAME       : mpeg.h
3
@INPUT      :
4
@OUTPUT     :
5
@RETURNS    :
6
@DESCRIPTION: Types and function prototypes needed for applications to
7
              use the Berkely MPEG decoding engine via the MNI front
8
              end.
9
@METHOD     :
10
@GLOBALS    : Types defined:
11
                 ImageDesc  - structure giving height, width, etc.
12
                 DitherEnum - the different dither types supported by
13
                              the decoding engine
14
@CALLS      :
15
@CREATED    : Greg Ward, 94/6/16.
16
@MODIFIED   : Greg Ward, 94/9/12 (based on John Cristy's fixes): made
17
              more amenable to use with other libraries that also
18
	      happen to define TRUE, FALSE, [Bb]oolean, and added
19
	      PROTO macro
20
---------------------------------------------------------------------------- */
21
 
22
#ifndef __MPEG_H
23
#define __MPEG_H
24
 
25
#include 
26
 
27
/* An attempt at a portable and integrable boolean type... */
28
 
29
#if (!defined(TRUE) || !defined(FALSE))
30
# define TRUE 1
31
# define FALSE 0
32
#endif
33
 
34
#if (!defined (BOOLEAN_TYPE_EXISTS))
35
typedef unsigned int Boolean;
36
#endif
37
 
38
typedef struct
39
{
40
   short red, green, blue;
41
} ColormapEntry;
42
 
43
typedef struct
44
{
45
   int	Height;			/* in pixels */
46
   int  Width;
47
   int  Depth;			/* image depth (bits) */
48
   int  PixelSize;              /* bits actually stored per pixel */
49
   int  Size;			/* bytes for whole image */
50
   int  BitmapPad;              /* "quantum" of a scanline -- each scanline */
51
				/* starts on an even interval of this */
52
                                /* many bits */
53
   int  PictureRate;		/* required number of frames/sec [?] */
54
   int  BitRate;		/* ??? */
55
 
56
   int  ColormapSize;
57
   ColormapEntry *Colormap;	/* an array of ColormapSize entries */
58
} ImageDesc;
59
 
60
typedef enum
61
{
62
   HYBRID_DITHER,
63
   HYBRID2_DITHER,
64
   FS4_DITHER,
65
   FS2_DITHER,
66
   FS2FAST_DITHER,
67
   Twox2_DITHER,
68
   GRAY_DITHER,
69
   FULL_COLOR_DITHER,
70
   NO_DITHER,
71
   ORDERED_DITHER,
72
   MONO_DITHER,
73
   MONO_THRESHOLD,
74
   ORDERED2_DITHER,
75
   MBORDERED_DITHER
76
} DitherEnum;
77
 
78
 
79
typedef enum
80
{
81
   MPEG_DITHER,
82
   MPEG_QUIET,
83
   MPEG_LUM_RANGE,
84
   MPEG_CR_RANGE,
85
   MPEG_CB_RANGE,
86
   MPEG_CMAP_INDEX
87
} MPEGOptionEnum;
88
 
89
#ifdef __cplusplus
90
extern "C" {
91
#endif
92
 
93
/*
94
 * Kludge so we can compile under ANSI or K&R.  (This only means
95
 * that programs that *use* mpeg_lib can be compiled with K&R;
96
 * the library itself must be compiled with an ANSI compiler.
97
 * Mixing and matching compilers, BTW, is not a good idea...)
98
 */
99
#undef PROTO
100
#if __STDC__ || __cplusplus
101
#define PROTO(formal_parameters) formal_parameters
102
#else
103
#define const
104
#define PROTO(formal_parameters) ()
105
#endif
106
 
107
/* Function prototypes (all are defined in wrapper.c) */
108
 
109
Boolean OpenMPEG PROTO((FILE *MPEGfile, ImageDesc *ImgInfo));
110
void    CloseMPEG PROTO((void));
111
Boolean RewindMPEG PROTO((FILE *MPEGfile, ImageDesc *Image));
112
void    SetMPEGOption PROTO((MPEGOptionEnum Option, int value));
113
Boolean GetMPEGFrame PROTO((char *Frame));
114
 
115
#ifdef __cplusplus
116
}
117
#endif
118
 
119
#endif   /* __MPEG_H */