120 lines
3.0 KiB
C
120 lines
3.0 KiB
C
|
/* ----------------------------- MNI Header -----------------------------------
|
||
|
@NAME : mpeg.h
|
||
|
@INPUT :
|
||
|
@OUTPUT :
|
||
|
@RETURNS :
|
||
|
@DESCRIPTION: Types and function prototypes needed for applications to
|
||
|
use the Berkely MPEG decoding engine via the MNI front
|
||
|
end.
|
||
|
@METHOD :
|
||
|
@GLOBALS : Types defined:
|
||
|
ImageDesc - structure giving height, width, etc.
|
||
|
DitherEnum - the different dither types supported by
|
||
|
the decoding engine
|
||
|
@CALLS :
|
||
|
@CREATED : Greg Ward, 94/6/16.
|
||
|
@MODIFIED : Greg Ward, 94/9/12 (based on John Cristy's fixes): made
|
||
|
more amenable to use with other libraries that also
|
||
|
happen to define TRUE, FALSE, [Bb]oolean, and added
|
||
|
PROTO macro
|
||
|
---------------------------------------------------------------------------- */
|
||
|
|
||
|
#ifndef __MPEG_H
|
||
|
#define __MPEG_H
|
||
|
|
||
|
#include <stdio.h>
|
||
|
|
||
|
/* An attempt at a portable and integrable boolean type... */
|
||
|
|
||
|
#if (!defined(TRUE) || !defined(FALSE))
|
||
|
# define TRUE 1
|
||
|
# define FALSE 0
|
||
|
#endif
|
||
|
|
||
|
#if (!defined (BOOLEAN_TYPE_EXISTS))
|
||
|
typedef unsigned int Boolean;
|
||
|
#endif
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
short red, green, blue;
|
||
|
} ColormapEntry;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
int Height; /* in pixels */
|
||
|
int Width;
|
||
|
int Depth; /* image depth (bits) */
|
||
|
int PixelSize; /* bits actually stored per pixel */
|
||
|
int Size; /* bytes for whole image */
|
||
|
int BitmapPad; /* "quantum" of a scanline -- each scanline */
|
||
|
/* starts on an even interval of this */
|
||
|
/* many bits */
|
||
|
int PictureRate; /* required number of frames/sec [?] */
|
||
|
int BitRate; /* ??? */
|
||
|
|
||
|
int ColormapSize;
|
||
|
ColormapEntry *Colormap; /* an array of ColormapSize entries */
|
||
|
} ImageDesc;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
HYBRID_DITHER,
|
||
|
HYBRID2_DITHER,
|
||
|
FS4_DITHER,
|
||
|
FS2_DITHER,
|
||
|
FS2FAST_DITHER,
|
||
|
Twox2_DITHER,
|
||
|
GRAY_DITHER,
|
||
|
FULL_COLOR_DITHER,
|
||
|
NO_DITHER,
|
||
|
ORDERED_DITHER,
|
||
|
MONO_DITHER,
|
||
|
MONO_THRESHOLD,
|
||
|
ORDERED2_DITHER,
|
||
|
MBORDERED_DITHER
|
||
|
} DitherEnum;
|
||
|
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
MPEG_DITHER,
|
||
|
MPEG_QUIET,
|
||
|
MPEG_LUM_RANGE,
|
||
|
MPEG_CR_RANGE,
|
||
|
MPEG_CB_RANGE,
|
||
|
MPEG_CMAP_INDEX
|
||
|
} MPEGOptionEnum;
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* Kludge so we can compile under ANSI or K&R. (This only means
|
||
|
* that programs that *use* mpeg_lib can be compiled with K&R;
|
||
|
* the library itself must be compiled with an ANSI compiler.
|
||
|
* Mixing and matching compilers, BTW, is not a good idea...)
|
||
|
*/
|
||
|
#undef PROTO
|
||
|
#if __STDC__ || __cplusplus
|
||
|
#define PROTO(formal_parameters) formal_parameters
|
||
|
#else
|
||
|
#define const
|
||
|
#define PROTO(formal_parameters) ()
|
||
|
#endif
|
||
|
|
||
|
/* Function prototypes (all are defined in wrapper.c) */
|
||
|
|
||
|
Boolean OpenMPEG PROTO((FILE *MPEGfile, ImageDesc *ImgInfo));
|
||
|
void CloseMPEG PROTO((void));
|
||
|
Boolean RewindMPEG PROTO((FILE *MPEGfile, ImageDesc *Image));
|
||
|
void SetMPEGOption PROTO((MPEGOptionEnum Option, int value));
|
||
|
Boolean GetMPEGFrame PROTO((char *Frame));
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* __MPEG_H */
|