home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Developer CD v1.2
/
amidev_cd_12.iso
/
cd32
/
cd32-tools
/
mpegsup-1
/
include
/
devices
/
mpeg.h
next >
Wrap
C/C++ Source or Header
|
1994-01-21
|
6KB
|
207 lines
#ifndef DEVICES_MPEG_H
#define DEVICES_MPEG_H
/*
** $Id: mpeg.h,v 40.3 93/10/23 01:04:32 kcd Exp Locker: kcd $
**
** CD32 MPEG Device Driver C Header File
**
** (C) Copyright 1993 Commodore-Amiga, Inc.
** All Rights Reserved
*/
#ifndef EXEC_IO_H
#include <exec/io.h>
#endif /* EXEC_IO_H */
struct IOMPEGReq
{
/* Standard Stuff */
struct IOStdReq iomr_Req;
/* Global MPEG fields */
UWORD iomr_MPEGError; /* Extended Error Information */
UBYTE iomr_Version; /* Must be set to 0 for this spec */
UBYTE iomr_StreamType;
ULONG iomr_MPEGFlags;
LONG iomr_Arg1;
ULONG iomr_Arg2;
UWORD iomr_PTSHigh; /* Bits 32-30 of this data's PTS */
UWORD iomr_PTSMid; /* Bits 29-15 of this data's PTS */
UWORD iomr_PTSLow; /* Bits 14-9 of this data's PTS */
/* Private Device Information */
UWORD iomr_Private0;
ULONG iomr_Private1;
ULONG iomr_Private2;
UWORD iomr_Private3;
UWORD iomr_Private4;
UWORD iomr_Private5;
};
/*
** Handy defines
**
*/
#define iomr_SlowSpeed iomr_Arg1
#define iomr_PauseMode iomr_Arg1
#define iomr_DisplayType iomr_Arg1
#define iomr_SearchSpeed iomr_Arg1
#define iomr_SectorSize iomr_Arg1
#define iomr_StreamStart iomr_Arg2
/*
** Defined Stream Types
*/
#define MPEGSTREAM_VIDEO 1 /* Raw Video bitstream */
#define MPEGSTREAM_AUDIO 2 /* Raw Audio bitstream */
#define MPEGSTREAM_SYSTEM 3 /* ISO 1172 System Stream */
/*
** MPEG Error Values
*/
#define MPEGERR_BAD_STATE 1 /* Command is illegal for the current device state */
#define MPEGERR_BAD_PARAMETER 2 /* Some parameter was illegal */
#define MPEGERR_CMD_FAILED 3 /* Command Failed */
#define MPEGERR_CDERROR 4 /* Problem with cd.device I/O */
/*
** Extended error values.
*/
#define MPEGEXTERR_STREAM_MISMATCH 1 /* Stream type not appropriate */
#define MPEGEXTERR_MICROCODE_FAILURE 2 /* MicroCode failed to respond */
#define MPEGEXTERR_BAD_STREAM_TYPE 3 /* Stream/Command incompatible */
/*
** Flags for iomr_MPEGFlags
*/
#define MPEGB_VALID_PTS 31 /* This bit of data has a valid PTS */
#define MPEGB_ONESHOT 2 /* One-Shot scan */
#define MPEGF_VALID_PTS (1L << MPEGB_VALID_PTS)
#define MPEGF_ONESHOT (1L << MPEGB_ONESHOT)
/*
** MPEG Device Commands
*/
#define MPEGCMD_PLAY (CMD_NONSTD + 0)
#define MPEGCMD_PAUSE (CMD_NONSTD + 1)
#define MPEGCMD_SLOWMOTION (CMD_NONSTD + 2)
#define MPEGCMD_SINGLESTEP (CMD_NONSTD + 3)
#define MPEGCMD_SEARCH (CMD_NONSTD + 4)
#define MPEGCMD_RECORD (CMD_NONSTD + 5)
#define MPEGCMD_GETDEVINFO (CMD_NONSTD + 6)
#define MPEGCMD_SETWINDOW (CMD_NONSTD + 7)
#define MPEGCMD_SETBORDER (CMD_NONSTD + 8)
#define MPEGCMD_GETVIDEOPARAMS (CMD_NONSTD + 9)
#define MPEGCMD_SETVIDEOPARAMS (CMD_NONSTD + 10)
#define MPEGCMD_SETAUDIOPARAMS (CMD_NONSTD + 11)
#define MPEGCMD_PLAYLSN (CMD_NONSTD + 12)
#define MPEGCMD_SEEKLSN (CMD_NONSTD + 13)
#define MPEGCMD_READFRAMEYUV (CMD_NONSTD + 14)
#define MPEGCMD_END (CMD_NONSTD + 15)
/*
** This structure is returned form a MPEGCMD_GETDEVINFO command. Use this
** to determine what the device driver is capable of doing. Not all devices
** will support all commands/features.
*/
struct MPEGDevInfo
{
UWORD mdi_Version;
UWORD mdi_Flags;
ULONG mdi_BoardCapabilities;
UBYTE mdi_BoardDesc[256];
};
struct MPEGWindowParams
{
UWORD mwp_XOffset; /* Hi-Res Pixels */
UWORD mwp_YOffset; /* Non-interlaced scanlines */
UWORD mwp_Width; /* Hi-Res Pixels */
UWORD mwp_Height; /* Non-interlaced scanlines */
};
struct MPEGBorderParams
{
UWORD mbp_BorderLeft; /* Hi-Res Pixels */
UWORD mbp_BorderTop; /* Non-interlaced scanlines */
UBYTE mbp_BorderRed; /* Border 8-bit red value */
UBYTE mbp_BorderGreen; /* Border 8-bit green value */
UBYTE mbp_BorderBlue; /* Border 8-bit blue value */
};
/* The structure is used by the MPEGCMD_READFRAMEYUV command. */
/* Color components with NULL pointers will not be written to. */
struct MPEGFrameStore
{
UWORD mfs_Width; /* Picture Width */
UWORD mfs_Height; /* Picture Height */
UBYTE *mfs_Luma; /* Must be Width*Height bytes */
UBYTE *mfs_Cr; /* Must be Width*Height/4 bytes */
UBYTE *mfs_Cb; /* Must be Width*Height/4 bytes */
};
/*
** NB: Not all devices support the full functionality that these
** structures provide for. Please take this into account.
*/
struct MPEGVideoParamsSet
{
UWORD mvp_Fade; /* Fade level. 0 = no MPEG video at all, 65535 = full saturation */
UWORD mvp_DisplayType; /* 0 = No Change, 3 = PAL (50Hz), 4 = NTSC (60Hz) */
};
struct MPEGVideoParamsGet
{
UWORD mvp_PictureWidth; /* Width in lo-res pixels */
UWORD mvp_PictureHeight; /* Height in non-interlaced scanlines */
UWORD mvp_PictureRate; /* Pictures per second code */
};
struct MPEGAudioParams
{
UWORD map_VolumeLeft; /* Left Channel Volume (0=Mute, 65535 = loudest) */
UWORD map_VolumeRight; /* Right Channel Volume */
UWORD map_StreamID; /* MPEG Audio stream ID. ~0 for all streams */
};
/* Board Capabilities for playback */
#define MPEGCB_PLAYRAWVIDEO 16 /* Can play a raw video stream */
#define MPEGCB_PLAYRAWAUDIO 17 /* Can play a raw audio stream */
#define MPEGCB_PLAYSYSTEM 18 /* Can play an ISO-1172 system stream */
#define MPEGCB_WINDOWVIDEO 19 /* Can do window subpositioning */
#define MPEGCB_SCALEVIDEO 20 /* Can scale video */
#define MPEGCB_STEPPLAY 21 /* Can single-step */
#define MPEGCB_SCANPLAY 22 /* Can scan */
#define MPEGCB_SLOWPLAY 23 /* Can do slow-motion */
#define MPEGCB_READFRAME 24 /* Can read digital frame data */
/* Flag Versions */
#define MPEGCF_PLAYRAWVIDEO (1L << MPEGCB_PLAYRAWVIDEO)
#define MPEGCF_PLAYRAWAUDIO (1L << MPEGCB_PLAYRAWAUDIO)
#define MPEGCF_PLAYSYSTEM (1L << MPEGCB_PLAYSYSTEM)
#define MPEGCF_WINDOWVIDEO (1L << MPEGCB_WINDOWVIDEO)
#define MPEGCF_SCALEVIDEO (1L << MPEGCB_SCALEVIDEO)
#define MPEGCF_STEPPLAY (1L << MPEGCB_STEPPLAY)
#define MPEGCF_SCANPLAY (1L << MPEGCB_SCANPLAY)
#define MPEGCF_SLOWPLAY (1L << MPEGCB_SLOWPLAY)
#define MPEGCF_READFRAME (1L << MPEGCB_READFRAME)
#endif /* DEVICES_MPEG_H */