Mercurial > mplayer.hg
changeset 5253:e331fefb520e
some more...
author | arpi |
---|---|
date | Thu, 21 Mar 2002 21:00:21 +0000 |
parents | 5c2a8e6e860c |
children | 142ea546abb5 |
files | loader/qtx/qtxsdk/components.h |
diffstat | 1 files changed, 385 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/loader/qtx/qtxsdk/components.h Thu Mar 21 20:43:43 2002 +0000 +++ b/loader/qtx/qtxsdk/components.h Thu Mar 21 21:00:21 2002 +0000 @@ -1,11 +1,30 @@ +// Basic types: + +typedef char * Ptr; +typedef Ptr * Handle; +typedef long Size; +typedef unsigned char Boolean; +typedef unsigned char Str31[32]; +typedef long Fixed; + +typedef long OSErr; +typedef int OSType; + typedef long ComponentResult; -typedef unsigned char UInt8; -typedef int OSType; +typedef unsigned char UInt8; +typedef signed char SInt8; +typedef unsigned short UInt16; +typedef signed short SInt16; +typedef unsigned long UInt32; +typedef signed long SInt32; + +#define FOUR_CHAR_CODE(x) ((unsigned long)(x)) /* otherwise compiler will complain about values with high bit set */ // codec private shit: typedef void *GlobalsPtr; typedef void **Globals; +//==================== COMPONENTS =========================== struct ComponentParameters { UInt8 flags; /* call modifiers: sync/async, deferred, immed, etc */ @@ -59,3 +78,367 @@ typedef ComponentInstanceRecord * ComponentInstance; +// ========================= QUICKDRAW ========================= + +struct Rect { + short top; + short left; + short bottom; + short right; +}; +typedef struct Rect Rect; +typedef Rect * RectPtr; + +struct RGBColor { + unsigned short red; /*magnitude of red component*/ + unsigned short green; /*magnitude of green component*/ + unsigned short blue; /*magnitude of blue component*/ +}; +typedef struct RGBColor RGBColor; +typedef RGBColor * RGBColorPtr; +typedef RGBColorPtr * RGBColorHdl; + +struct ColorSpec { + short value; /*index or other value*/ + RGBColor rgb; /*true color*/ +}; +typedef struct ColorSpec ColorSpec; +typedef ColorSpec * ColorSpecPtr; +typedef ColorSpec CSpecArray[1]; + +struct ColorTable { + long ctSeed; /*unique identifier for table*/ + short ctFlags; /*high bit: 0 = PixMap; 1 = device*/ + short ctSize; /*number of entries in CTTable*/ + CSpecArray ctTable; /*array [0..0] of ColorSpec*/ +}; +typedef struct ColorTable ColorTable; +typedef ColorTable * CTabPtr; +typedef CTabPtr * CTabHandle; + +struct MatrixRecord { + Fixed matrix[3][3]; +}; +typedef struct MatrixRecord MatrixRecord; +typedef MatrixRecord * MatrixRecordPtr; + +typedef long ImageSequence; +typedef OSType CodecType; +typedef unsigned short CodecFlags; +typedef unsigned long CodecQ; + +struct ImageDescription { + long idSize; /* total size of ImageDescription including extra data ( CLUTs and other per sequence data ) */ + CodecType cType; /* what kind of codec compressed this data */ + long resvd1; /* reserved for Apple use */ + short resvd2; /* reserved for Apple use */ + short dataRefIndex; /* set to zero */ + short version; /* which version is this data */ + short revisionLevel; /* what version of that codec did this */ + long vendor; /* whose codec compressed this data */ + CodecQ temporalQuality; /* what was the temporal quality factor */ + CodecQ spatialQuality; /* what was the spatial quality factor */ + short width; /* how many pixels wide is this data */ + short height; /* how many pixels high is this data */ + Fixed hRes; /* horizontal resolution */ + Fixed vRes; /* vertical resolution */ + long dataSize; /* if known, the size of data for this image descriptor */ + short frameCount; /* number of frames this description applies to */ + Str31 name; /* name of codec ( in case not installed ) */ + short depth; /* what depth is this data (1-32) or ( 33-40 grayscale ) */ + short clutID; /* clut id or if 0 clut follows or -1 if no clut */ +}; +typedef struct ImageDescription ImageDescription; +typedef ImageDescription * ImageDescriptionPtr; +typedef ImageDescriptionPtr * ImageDescriptionHandle; + +/* values for PixMap.pixelFormat*/ +enum { + k16LE555PixelFormat = FOUR_CHAR_CODE('L555'), /* 16 bit LE rgb 555 (PC)*/ + k16LE5551PixelFormat = FOUR_CHAR_CODE('5551'), /* 16 bit LE rgb 5551*/ + k16BE565PixelFormat = FOUR_CHAR_CODE('B565'), /* 16 bit BE rgb 565*/ + k16LE565PixelFormat = FOUR_CHAR_CODE('L565'), /* 16 bit LE rgb 565*/ + k24BGRPixelFormat = FOUR_CHAR_CODE('24BG'), /* 24 bit bgr */ + k32BGRAPixelFormat = FOUR_CHAR_CODE('BGRA'), /* 32 bit bgra (Matrox)*/ + k32ABGRPixelFormat = FOUR_CHAR_CODE('ABGR'), /* 32 bit abgr */ + k32RGBAPixelFormat = FOUR_CHAR_CODE('RGBA'), /* 32 bit rgba */ + kYUVSPixelFormat = FOUR_CHAR_CODE('yuvs'), /* YUV 4:2:2 byte ordering 16-unsigned = 'YUY2'*/ + kYUVUPixelFormat = FOUR_CHAR_CODE('yuvu'), /* YUV 4:2:2 byte ordering 16-signed*/ + kYVU9PixelFormat = FOUR_CHAR_CODE('YVU9'), /* YVU9 Planar 9*/ + kYUV411PixelFormat = FOUR_CHAR_CODE('Y411'), /* YUV 4:1:1 Interleaved 16*/ + kYVYU422PixelFormat = FOUR_CHAR_CODE('YVYU'), /* YVYU 4:2:2 byte ordering 16*/ + kUYVY422PixelFormat = FOUR_CHAR_CODE('UYVY'), /* UYVY 4:2:2 byte ordering 16*/ + kYUV211PixelFormat = FOUR_CHAR_CODE('Y211'), /* YUV 2:1:1 Packed 8*/ + k2vuyPixelFormat = FOUR_CHAR_CODE('2vuy') /* UYVY 4:2:2 byte ordering 16*/ +}; + +struct PixMapExtension { + long extSize; /*size of struct, duh!*/ + unsigned long pmBits; /*pixmap attributes bitfield*/ + void * pmGD; /*this is a GDHandle*/ + long pmSeed; + Fixed gammaLevel; /*pixmap gammalevel*/ + Fixed requestedGammaLevel; + unsigned long reserved2; + long longRowBytes; /*used when rowBytes > 16382*/ + unsigned long signature; + Handle baseAddrHandle; +}; +typedef struct PixMapExtension PixMapExtension; + +typedef PixMapExtension * PixMapExtPtr; +typedef PixMapExtPtr * PixMapExtHandle; + + +struct PixMap { + Ptr baseAddr; /*pointer to pixels*/ + short rowBytes; /*offset to next line*/ + Rect bounds; /*encloses bitmap*/ + short pmVersion; /*pixMap version number*/ + short packType; /*defines packing format*/ + long packSize; /*length of pixel data*/ + Fixed hRes; /*horiz. resolution (ppi)*/ + Fixed vRes; /*vert. resolution (ppi)*/ + short pixelType; /*defines pixel type*/ + short pixelSize; /*# bits in pixel*/ + short cmpCount; /*# components in pixel*/ + short cmpSize; /*# bits per component*/ + OSType pixelFormat; /*fourCharCode representation*/ + CTabHandle pmTable; /*color map for this pixMap*/ + PixMapExtHandle pmExt; /*Handle to pixMap extension*/ +}; +typedef struct PixMap PixMap; +typedef PixMap * PixMapPtr; +typedef PixMapPtr * PixMapHandle; + + +struct BitMap { + Ptr baseAddr; + short rowBytes; + Rect bounds; +}; +typedef struct BitMap BitMap; +typedef BitMap * BitMapPtr; +typedef BitMapPtr * BitMapHandle; + +// ============================== CODECS =========================== + +typedef Component CompressorComponent; +typedef Component DecompressorComponent; +typedef Component CodecComponent; + +// callbacks: +typedef void* ImageCodecDrawBandCompleteUPP; +typedef void* ICMProgressProcRecord; +typedef void* ICMCompletionProcRecord; +typedef void* ICMDataProcRecord; +typedef void* ICMFrameTimePtr; +typedef void* CDSequenceDataSourcePtr; +typedef void* ICMFrameTimeInfoPtr; + +// graphics port +typedef struct OpaqueGrafPtr* GrafPtr; +typedef GrafPtr CGrafPtr; + +typedef struct OpaqueRgnHandle* RgnHandle; + +struct CodecCapabilities { + long flags; + short wantedPixelSize; + short extendWidth; + short extendHeight; + short bandMin; + short bandInc; + short pad; + unsigned long time; + long flags2; /* field new in QuickTime 4.0 */ +}; +typedef struct CodecCapabilities CodecCapabilities; + +struct __attribute__((__packed__)) CodecDecompressParams { + ImageSequence sequenceID; /* predecompress,banddecompress */ + ImageDescriptionHandle imageDescription; /* predecompress,banddecompress */ + Ptr data; + long bufferSize; + + long frameNumber; + long startLine; + long stopLine; + long conditionFlags; + + CodecFlags callerFlags; + // short + CodecCapabilities * capabilities; /* predecompress,banddecompress */ + ICMProgressProcRecord progressProcRecord; + ICMCompletionProcRecord completionProcRecord; + + ICMDataProcRecord dataProcRecord; + CGrafPtr port; /* predecompress,banddecompress */ + PixMap dstPixMap; /* predecompress,banddecompress */ + BitMapPtr maskBits; + PixMapPtr mattePixMap; + Rect srcRect; /* predecompress,banddecompress */ + MatrixRecord * matrix; /* predecompress,banddecompress */ + CodecQ accuracy; /* predecompress,banddecompress */ + short transferMode; /* predecompress,banddecompress */ + ICMFrameTimePtr frameTime; /* banddecompress */ + long reserved[1]; + + /* The following fields only exist for QuickTime 2.0 and greater */ + SInt8 matrixFlags; /* high bit set if 2x resize */ + SInt8 matrixType; + Rect dstRect; /* only valid for simple transforms */ + + /* The following fields only exist for QuickTime 2.1 and greater */ + UInt16 majorSourceChangeSeed; + UInt16 minorSourceChangeSeed; + CDSequenceDataSourcePtr sourceData; + + RgnHandle maskRegion; + + /* The following fields only exist for QuickTime 2.5 and greater */ + OSType ** wantedDestinationPixelTypes; /* Handle to 0-terminated list of OSTypes */ + + long screenFloodMethod; + long screenFloodValue; + short preferredOffscreenPixelSize; + + /* The following fields only exist for QuickTime 3.0 and greater */ + ICMFrameTimeInfoPtr syncFrameTime; /* banddecompress */ + Boolean needUpdateOnTimeChange; /* banddecompress */ + Boolean enableBlackLining; + Boolean needUpdateOnSourceChange; /* band decompress */ + Boolean pad; + + long unused; + + CGrafPtr finalDestinationPort; + + long requestedBufferWidth; /* must set codecWantsSpecialScaling to indicate this field is valid*/ + long requestedBufferHeight; /* must set codecWantsSpecialScaling to indicate this field is valid*/ + + /* The following fields only exist for QuickTime 4.0 and greater */ + Rect displayableAreaOfRequestedBuffer; /* set in predecompress*/ + Boolean requestedSingleField; + Boolean needUpdateOnNextIdle; + Boolean pad2[2]; + Fixed bufferGammaLevel; + + /* The following fields only exist for QuickTime 5.0 and greater */ + UInt32 taskWeight; /* preferred weight for MP tasks implementing this operation*/ + OSType taskName; /* preferred name (type) for MP tasks implementing this operation*/ +}; +typedef struct CodecDecompressParams CodecDecompressParams; + + + +struct ImageSubCodecDecompressCapabilities { + long recordSize; /* sizeof(ImageSubCodecDecompressCapabilities)*/ + long decompressRecordSize; /* size of your codec's decompress record*/ + Boolean canAsync; /* default true*/ + UInt8 pad0; + + /* The following fields only exist for QuickTime 4.0 and greater */ + UInt16 suggestedQueueSize; + Boolean canProvideTrigger; + + /* The following fields only exist for QuickTime 5.0 and greater */ + Boolean subCodecFlushesScreen; /* only used on Mac OS X*/ + Boolean subCodecCallsDrawBandComplete; + UInt8 pad2[1]; + + /* The following fields only exist for QuickTime 5.1 and greater */ + Boolean isChildCodec; /* set by base codec before calling Initialize*/ + UInt8 pad3[3]; +}; +typedef struct ImageSubCodecDecompressCapabilities ImageSubCodecDecompressCapabilities; + + +struct ImageSubCodecDecompressRecord { + Ptr baseAddr; + long rowBytes; + Ptr codecData; + ICMProgressProcRecord progressProcRecord; + ICMDataProcRecord dataProcRecord; + void * userDecompressRecord; /* pointer to codec-specific per-band data*/ + UInt8 frameType; + Boolean inhibitMP; /* set this in BeginBand to tell the base decompressor not to call DrawBand from an MP task for this frame. (Only has any effect for MP-capable subcodecs. New in QuickTime 5.0.)*/ + UInt8 pad[2]; + long priv[2]; + + /* The following fields only exist for QuickTime 5.0 and greater */ + ImageCodecDrawBandCompleteUPP drawBandCompleteUPP; /* only used if subcodec set subCodecCallsDrawBandComplete; if drawBandCompleteUPP is non-nil, codec must call it when a frame is finished, but may return from DrawBand before the frame is finished. */ + void * drawBandCompleteRefCon; /* Note: do not call drawBandCompleteUPP directly from a hardware interrupt; instead, use DTInstall to run a function at deferred task time, and call drawBandCompleteUPP from that. */ +}; +typedef struct ImageSubCodecDecompressRecord ImageSubCodecDecompressRecord; + + +/* These are the bits that are set in the Component flags, and also in the codecInfo struct. */ +enum { + codecInfoDoes1 = (1L << 0), /* codec can work with 1-bit pixels */ + codecInfoDoes2 = (1L << 1), /* codec can work with 2-bit pixels */ + codecInfoDoes4 = (1L << 2), /* codec can work with 4-bit pixels */ + codecInfoDoes8 = (1L << 3), /* codec can work with 8-bit pixels */ + codecInfoDoes16 = (1L << 4), /* codec can work with 16-bit pixels */ + codecInfoDoes32 = (1L << 5), /* codec can work with 32-bit pixels */ + codecInfoDoesDither = (1L << 6), /* codec can do ditherMode */ + codecInfoDoesStretch = (1L << 7), /* codec can stretch to arbitrary sizes */ + codecInfoDoesShrink = (1L << 8), /* codec can shrink to arbitrary sizes */ + codecInfoDoesMask = (1L << 9), /* codec can mask to clipping regions */ + codecInfoDoesTemporal = (1L << 10), /* codec can handle temporal redundancy */ + codecInfoDoesDouble = (1L << 11), /* codec can stretch to double size exactly */ + codecInfoDoesQuad = (1L << 12), /* codec can stretch to quadruple size exactly */ + codecInfoDoesHalf = (1L << 13), /* codec can shrink to half size */ + codecInfoDoesQuarter = (1L << 14), /* codec can shrink to quarter size */ + codecInfoDoesRotate = (1L << 15), /* codec can rotate on decompress */ + codecInfoDoesHorizFlip = (1L << 16), /* codec can flip horizontally on decompress */ + codecInfoDoesVertFlip = (1L << 17), /* codec can flip vertically on decompress */ + codecInfoHasEffectParameterList = (1L << 18), /* codec implements get effects parameter list call, once was codecInfoDoesSkew */ + codecInfoDoesBlend = (1L << 19), /* codec can blend on decompress */ + codecInfoDoesWarp = (1L << 20), /* codec can warp arbitrarily on decompress */ + codecInfoDoesRecompress = (1L << 21), /* codec can recompress image without accumulating errors */ + codecInfoDoesSpool = (1L << 22), /* codec can spool image data */ + codecInfoDoesRateConstrain = (1L << 23) /* codec can data rate constrain */ +}; + + +enum { + codecInfoDepth1 = (1L << 0), /* compressed data at 1 bpp depth available */ + codecInfoDepth2 = (1L << 1), /* compressed data at 2 bpp depth available */ + codecInfoDepth4 = (1L << 2), /* compressed data at 4 bpp depth available */ + codecInfoDepth8 = (1L << 3), /* compressed data at 8 bpp depth available */ + codecInfoDepth16 = (1L << 4), /* compressed data at 16 bpp depth available */ + codecInfoDepth32 = (1L << 5), /* compressed data at 32 bpp depth available */ + codecInfoDepth24 = (1L << 6), /* compressed data at 24 bpp depth available */ + codecInfoDepth33 = (1L << 7), /* compressed data at 1 bpp monochrome depth available */ + codecInfoDepth34 = (1L << 8), /* compressed data at 2 bpp grayscale depth available */ + codecInfoDepth36 = (1L << 9), /* compressed data at 4 bpp grayscale depth available */ + codecInfoDepth40 = (1L << 10), /* compressed data at 8 bpp grayscale depth available */ + codecInfoStoresClut = (1L << 11), /* compressed data can have custom cluts */ + codecInfoDoesLossless = (1L << 12), /* compressed data can be stored in lossless format */ + codecInfoSequenceSensitive = (1L << 13) /* compressed data is sensitive to out of sequence decoding */ +}; + +struct CodecInfo { + Str31 typeName; /* name of the codec type i.e.: 'Apple Image Compression' */ + short version; /* version of the codec data that this codec knows about */ + short revisionLevel; /* revision level of this codec i.e: 0x00010001 (1.0.1) */ + long vendor; /* Maker of this codec i.e: 'appl' */ + long decompressFlags; /* codecInfo flags for decompression capabilities */ + long compressFlags; /* codecInfo flags for compression capabilities */ + long formatFlags; /* codecInfo flags for compression format details */ + UInt8 compressionAccuracy; /* measure (1-255) of accuracy of this codec for compress (0 if unknown) */ + UInt8 decompressionAccuracy; /* measure (1-255) of accuracy of this codec for decompress (0 if unknown) */ + unsigned short compressionSpeed; /* ( millisecs for compressing 320x240 on base mac II) (0 if unknown) */ + unsigned short decompressionSpeed; /* ( millisecs for decompressing 320x240 on mac II)(0 if unknown) */ + UInt8 compressionLevel; /* measure (1-255) of compression level of this codec (0 if unknown) */ + UInt8 resvd; /* pad */ + short minimumHeight; /* minimum height of image (block size) */ + short minimumWidth; /* minimum width of image (block size) */ + short decompressPipelineLatency; /* in milliseconds ( for asynchronous codecs ) */ + short compressPipelineLatency; /* in milliseconds ( for asynchronous codecs ) */ + long privateData; +}; +typedef struct CodecInfo CodecInfo; + +