home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
tolkit45.zip
/
os2tk45
/
samples
/
mm
/
mmioproc
/
mmotproc.h
< prev
next >
Wrap
C/C++ Source or Header
|
1999-05-11
|
6KB
|
156 lines
/********************** START OF SPECIFICATIONS *************************/
/* */
/* SOURCE FILE NAME: MMOTPROC.H */
/* */
/* DESCRIPTIVE NAME: Multi-Media I/O Procedure for M-Motion Video */
/* */
/* COPYRIGHT: */
/* Copyright (c) IBM Corporation 1990, 1993 */
/* All Rights Reserved */
/* */
/* ABSTRACT: This file is the include/header file for use with the */
/* M-Motion IOProc (file MMOT.C) */
/* */
/*********************** END OF SPECIFICATIONS **************************/
#pragma pack(2)
static char pszMotionExt [] = "VID";
typedef RGB FAR *PRGB;
/****************************************
* Custom M-Motion Still Image File header
****************************************/
typedef struct _MMOTIONHEADER
{
CHAR mmID[6]; /* always set to "YUV12C" */
CHAR mmFuture[2]; /* 0, 0 : Reserved for future use */
USHORT mmXorg; /* X origin of YUV data */
USHORT mmYorg; /* Y origin of YUV data */
USHORT mmXlen; /* width of image */
USHORT mmYlen; /* height of image */
} MMOTIONHEADER;
typedef MMOTIONHEADER FAR *PMMOTIONHEADER;
/****************************************
* IOProc information structure, used for every file opened
* by this IOProc
****************************************/
typedef struct _MMFILESTATUS
{
PBYTE lpRGBBuf; /* 24-bit RGB Buf for trans data */
/* Buffer containing pel data from WRITES in bitmap format */
PBYTE lpImgBuf;
ULONG ulRGBTotalBytes; /* Length of 24-bit RGBBuf */
/* 4-byte RGB Palette for any trans data */
RGB rgbPalette[MAX_PALETTE];
LONG lImgBytePos; /* Current pos in RGB buf */
/* Bytes/row, incl overflow - not ULONG pads */
ULONG ulImgPelBytesPerLine;
/* Bytes/row, incl overflow & ULONG pads ' */
ULONG ulImgPaddedBytesPerLine;
/* Length of trans data in 1, 4, 8, or 24 bbp */
ULONG ulImgTotalBytes;
ULONG ulFlags; /* Misc flags */
BOOL bSetHeader; /* TRUE if header set in WRITE mode*/
/* MMIO handle to Storage System IOProc that provides data. */
HMMIO hmmioSS;
MMIMAGEHEADER mmImgHdr; /* Standard image header */
MMOTIONHEADER mmotHeader; /* Custom image header */
} MMFILESTATUS;
typedef MMFILESTATUS FAR *PMMFILESTATUS;
/************************************************************
* 4-pel Packed YUV block from/to an M-Motion Still Image file
************************************************************/
typedef struct _YUV
{
USHORT YUVWord1;
USHORT YUVWord2;
USHORT YUVWord3;
} YUV;
typedef YUV FAR *PYUV;
/***********************************************************
* A four-pel B, G, R ordered structure used for converting
* between RGB and YUV
***********************************************************/
typedef struct _RGB4
{
BYTE bB1; /* Pel 1 */
BYTE bG1;
BYTE bR1;
BYTE bB2; /* Pel 2 */
BYTE bG2;
BYTE bR2;
BYTE bB3; /* Pel 3 */
BYTE bG3;
BYTE bR3;
BYTE bB4; /* Pel 4 */
BYTE bG4;
BYTE bR4;
} RGB4;
typedef RGB4 FAR *PRGB4;
#define MMOTION_HEADER_SIZE sizeof (MMOTIONHEADER)
#define ONE_BLOCK 6L
#define FOURCC_MMOT mmioFOURCC('M', 'M', 'O', 'T')
/* RC file defines */
#define HEX_FOURCC_MMOT 0x544F4D4DL
#define MMOTION_IOPROC_NAME_TABLE 7000
#define MMOTION_NLS_CHARSET_INFO 7500
#ifndef BITT_NONE
#define BITT_NONE 0
#define BI_NONE 0
#endif
/**********************
* Function Declarations
**********************/
LONG EXPENTRY IOProc_Entry (PVOID pmmioStr, USHORT usMsg,
LONG lParam1, LONG lParam2);
void GetYUV (PYUV pYuv, SHORT Y[], SHORT *U1, SHORT *V1);
void YUVtoRGB (SHORT Y[], SHORT U1, SHORT V1, PBYTE lpYUVtoRGBBuf);
void RGBtoYUV (SHORT YO[], SHORT *U1, SHORT *V1, PBYTE lpRGBBuf);
void PutYUV (PBYTE lpTempBuf, SHORT YO[], SHORT U1, SHORT V1);
void InitFileStruct (PMMFILESTATUS);
ULONG RGBBytesToPels (ULONG, USHORT);
ULONG PelsToRGBBytes (ULONG, USHORT);
void Convert1BitTo24Bit (PBYTE, PRGB, PRGB, ULONG);
void Convert4BitTo24Bit (PBYTE, PRGB, PRGB, ULONG);
void Convert8BitTo24Bit (PBYTE, PRGB, PRGB, ULONG);
void RGB2_To_RGB (PRGB2, PRGB, USHORT);
USHORT NumColors (USHORT);
void ConvertOneLineYUVtoRGB (PBYTE, PBYTE, ULONG);
void ConvertOneLineRGBtoYUV (PBYTE, PBYTE, ULONG);
BOOL ImgBufferFlip (PBYTE, ULONG, ULONG);
LONG ImgBytesToRGBBytes (LONG, USHORT);
LONG GetFormatString (LONG lSearchId,
PSZ pszFormatString,
LONG lBytes);
LONG GetFormatStringLength (LONG lSearchId,
PLONG plNameLength);
ULONG APIENTRY GetNLSData (PULONG, PULONG);
#pragma pack()