diff options
Diffstat (limited to 'common/quicktime_win32/ImageCompression.h')
| -rw-r--r-- | common/quicktime_win32/ImageCompression.h | 13010 |
1 files changed, 13010 insertions, 0 deletions
diff --git a/common/quicktime_win32/ImageCompression.h b/common/quicktime_win32/ImageCompression.h new file mode 100644 index 0000000..1217a90 --- /dev/null +++ b/common/quicktime_win32/ImageCompression.h @@ -0,0 +1,13010 @@ +/* + File: ImageCompression.h + + Contains: QuickTime Image Compression Interfaces. + + Version: QuickTime 7.3 + + Copyright: (c) 2007 (c) 1990-2007 by Apple Inc., all rights reserved + + Bugs?: For bug reports, consult the following page on + the World Wide Web: + + http://developer.apple.com/bugreporter/ + +*/ +#ifndef __IMAGECOMPRESSION__ +#define __IMAGECOMPRESSION__ + +#ifndef __MACTYPES__ +#include <MacTypes.h> +#endif + +#ifndef __QUICKDRAW__ +#include <Quickdraw.h> +#endif + +#ifndef __QDOFFSCREEN__ +#include <QDOffscreen.h> +#endif + +#ifndef __COMPONENTS__ +#include <Components.h> +#endif + +#ifndef __DIALOGS__ +#include <Dialogs.h> +#endif + +#ifndef __STANDARDFILE__ +#include <StandardFile.h> +#endif + +#if TARGET_OS_MAC + +#include <OpenGL/OpenGL.h> +#include <QuartzCore/CoreVideo.h> + +#else + +#include <CoreVideo.h> + +#endif /* TARGET_OS_MAC */ + + + +#if PRAGMA_ONCE +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if PRAGMA_IMPORT +#pragma import on +#endif + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=mac68k +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(push, 2) +#elif PRAGMA_STRUCT_PACK + #pragma pack(2) +#endif + + +#ifndef AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER +#define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER WEAK_IMPORT_ATTRIBUTE +#endif +#ifndef AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 +#define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER +#endif +#ifndef AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 +#define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER +#endif +#ifndef AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 +#define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER +#endif +#ifndef AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 +#define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER +#endif +#ifndef AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 +#define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER +#endif + +/* QuickTime is not available to 64-bit clients */ + +#if !__LP64__ + +struct MatrixRecord { + Fixed matrix[3][3]; +}; +typedef struct MatrixRecord MatrixRecord; +typedef MatrixRecord * MatrixRecordPtr; +enum { + kRawCodecType = FOUR_CHAR_CODE('raw '), + kCinepakCodecType = FOUR_CHAR_CODE('cvid'), + kGraphicsCodecType = FOUR_CHAR_CODE('smc '), + kAnimationCodecType = FOUR_CHAR_CODE('rle '), + kVideoCodecType = FOUR_CHAR_CODE('rpza'), + kComponentVideoCodecType = FOUR_CHAR_CODE('yuv2'), + kJPEGCodecType = FOUR_CHAR_CODE('jpeg'), + kMotionJPEGACodecType = FOUR_CHAR_CODE('mjpa'), + kMotionJPEGBCodecType = FOUR_CHAR_CODE('mjpb'), + kSGICodecType = FOUR_CHAR_CODE('.SGI'), + kPlanarRGBCodecType = FOUR_CHAR_CODE('8BPS'), + kMacPaintCodecType = FOUR_CHAR_CODE('PNTG'), + kGIFCodecType = FOUR_CHAR_CODE('gif '), + kPhotoCDCodecType = FOUR_CHAR_CODE('kpcd'), + kQuickDrawGXCodecType = FOUR_CHAR_CODE('qdgx'), + kAVRJPEGCodecType = FOUR_CHAR_CODE('avr '), + kOpenDMLJPEGCodecType = FOUR_CHAR_CODE('dmb1'), + kBMPCodecType = FOUR_CHAR_CODE('WRLE'), + kWindowsRawCodecType = FOUR_CHAR_CODE('WRAW'), + kVectorCodecType = FOUR_CHAR_CODE('path'), + kQuickDrawCodecType = FOUR_CHAR_CODE('qdrw'), + kWaterRippleCodecType = FOUR_CHAR_CODE('ripl'), + kFireCodecType = FOUR_CHAR_CODE('fire'), + kCloudCodecType = FOUR_CHAR_CODE('clou'), + kH261CodecType = FOUR_CHAR_CODE('h261'), + kH263CodecType = FOUR_CHAR_CODE('h263'), + kDVCNTSCCodecType = FOUR_CHAR_CODE('dvc '), /* DV - NTSC and DVCPRO NTSC (available in QuickTime 6.0 or later)*/ + /* NOTE: kDVCProNTSCCodecType is deprecated. */ + /* Use kDVCNTSCCodecType instead -- as far as the codecs are concerned, */ + /* the two data formats are identical.*/ + kDVCPALCodecType = FOUR_CHAR_CODE('dvcp'), + kDVCProPALCodecType = FOUR_CHAR_CODE('dvpp'), /* available in QuickTime 6.0 or later*/ + kDVCPro50NTSCCodecType = FOUR_CHAR_CODE('dv5n'), + kDVCPro50PALCodecType = FOUR_CHAR_CODE('dv5p'), + kDVCPro100NTSCCodecType = FOUR_CHAR_CODE('dv1n'), + kDVCPro100PALCodecType = FOUR_CHAR_CODE('dv1p'), + kDVCPROHD720pCodecType = FOUR_CHAR_CODE('dvhp'), + kDVCPROHD1080i60CodecType = FOUR_CHAR_CODE('dvh6'), + kDVCPROHD1080i50CodecType = FOUR_CHAR_CODE('dvh5'), + kBaseCodecType = FOUR_CHAR_CODE('base'), + kFLCCodecType = FOUR_CHAR_CODE('flic'), + kTargaCodecType = FOUR_CHAR_CODE('tga '), + kPNGCodecType = FOUR_CHAR_CODE('png '), + kTIFFCodecType = FOUR_CHAR_CODE('tiff'), /* NOTE: despite what might seem obvious from the two constants*/ + /* below and their names, they really are correct. 'yuvu' really */ + /* does mean signed, and 'yuvs' really does mean unsigned. Really. */ + kComponentVideoSigned = FOUR_CHAR_CODE('yuvu'), + kComponentVideoUnsigned = FOUR_CHAR_CODE('yuvs'), + kCMYKCodecType = FOUR_CHAR_CODE('cmyk'), + kMicrosoftVideo1CodecType = FOUR_CHAR_CODE('msvc'), + kSorensonCodecType = FOUR_CHAR_CODE('SVQ1'), + kSorenson3CodecType = FOUR_CHAR_CODE('SVQ3'), /* available in QuickTime 5 and later*/ + kIndeo4CodecType = FOUR_CHAR_CODE('IV41'), + kMPEG4VisualCodecType = FOUR_CHAR_CODE('mp4v'), + k64ARGBCodecType = FOUR_CHAR_CODE('b64a'), + k48RGBCodecType = FOUR_CHAR_CODE('b48r'), + k32AlphaGrayCodecType = FOUR_CHAR_CODE('b32a'), + k16GrayCodecType = FOUR_CHAR_CODE('b16g'), + kMpegYUV420CodecType = FOUR_CHAR_CODE('myuv'), + kYUV420CodecType = FOUR_CHAR_CODE('y420'), + kSorensonYUV9CodecType = FOUR_CHAR_CODE('syv9'), + k422YpCbCr8CodecType = FOUR_CHAR_CODE('2vuy'), /* Component Y'CbCr 8-bit 4:2:2 */ + k444YpCbCr8CodecType = FOUR_CHAR_CODE('v308'), /* Component Y'CbCr 8-bit 4:4:4 */ + k4444YpCbCrA8CodecType = FOUR_CHAR_CODE('v408'), /* Component Y'CbCrA 8-bit 4:4:4:4 */ + k422YpCbCr16CodecType = FOUR_CHAR_CODE('v216'), /* Component Y'CbCr 10,12,14,16-bit 4:2:2*/ + k422YpCbCr10CodecType = FOUR_CHAR_CODE('v210'), /* Component Y'CbCr 10-bit 4:2:2 */ + k444YpCbCr10CodecType = FOUR_CHAR_CODE('v410'), /* Component Y'CbCr 10-bit 4:4:4 */ + k4444YpCbCrA8RCodecType = FOUR_CHAR_CODE('r408'), /* Component Y'CbCrA 8-bit 4:4:4:4, rendering format. full range alpha, zero biased yuv*/ + kJPEG2000CodecType = FOUR_CHAR_CODE('mjp2'), + kPixletCodecType = FOUR_CHAR_CODE('pxlt'), + kH264CodecType = FOUR_CHAR_CODE('avc1') +}; + + +/* one source effects */ +enum { + kBlurImageFilterType = FOUR_CHAR_CODE('blur'), + kSharpenImageFilterType = FOUR_CHAR_CODE('shrp'), + kEdgeDetectImageFilterType = FOUR_CHAR_CODE('edge'), + kEmbossImageFilterType = FOUR_CHAR_CODE('embs'), + kConvolveImageFilterType = FOUR_CHAR_CODE('genk'), + kAlphaGainImageFilterType = FOUR_CHAR_CODE('gain'), + kRGBColorBalanceImageFilterType = FOUR_CHAR_CODE('rgbb'), + kHSLColorBalanceImageFilterType = FOUR_CHAR_CODE('hslb'), + kColorSyncImageFilterType = FOUR_CHAR_CODE('sync'), + kFilmNoiseImageFilterType = FOUR_CHAR_CODE('fmns'), + kSolarizeImageFilterType = FOUR_CHAR_CODE('solr'), + kColorTintImageFilterType = FOUR_CHAR_CODE('tint'), + kLensFlareImageFilterType = FOUR_CHAR_CODE('lens'), + kBrightnessContrastImageFilterType = FOUR_CHAR_CODE('brco') +}; + +/* two source effects */ +enum { + kAlphaCompositorTransitionType = FOUR_CHAR_CODE('blnd'), + kCrossFadeTransitionType = FOUR_CHAR_CODE('dslv'), + kChannelCompositeEffectType = FOUR_CHAR_CODE('chan'), + kChromaKeyTransitionType = FOUR_CHAR_CODE('ckey'), + kImplodeTransitionType = FOUR_CHAR_CODE('mplo'), + kExplodeTransitionType = FOUR_CHAR_CODE('xplo'), + kGradientTransitionType = FOUR_CHAR_CODE('matt'), + kPushTransitionType = FOUR_CHAR_CODE('push'), + kSlideTransitionType = FOUR_CHAR_CODE('slid'), + kWipeTransitionType = FOUR_CHAR_CODE('smpt'), + kIrisTransitionType = FOUR_CHAR_CODE('smp2'), + kRadialTransitionType = FOUR_CHAR_CODE('smp3'), + kMatrixTransitionType = FOUR_CHAR_CODE('smp4'), + kZoomTransitionType = FOUR_CHAR_CODE('zoom') +}; + +/* three source effects */ +enum { + kTravellingMatteEffectType = FOUR_CHAR_CODE('trav') +}; + + +/* Supported by QTNewGWorld in QuickTime 4.0 and later */ +enum { + kCMYKPixelFormat = FOUR_CHAR_CODE('cmyk'), /* CMYK, 8-bit */ + k64ARGBPixelFormat = FOUR_CHAR_CODE('b64a'), /* ARGB, 16-bit big-endian samples */ + k48RGBPixelFormat = FOUR_CHAR_CODE('b48r'), /* RGB, 16-bit big-endian samples */ + k32AlphaGrayPixelFormat = FOUR_CHAR_CODE('b32a'), /* AlphaGray, 16-bit big-endian samples */ + k16GrayPixelFormat = FOUR_CHAR_CODE('b16g'), /* Grayscale, 16-bit big-endian samples */ + k422YpCbCr8PixelFormat = FOUR_CHAR_CODE('2vuy') /* Component Y'CbCr 8-bit 4:2:2, ordered Cb Y'0 Cr Y'1 */ +}; + +/* Supported by QTNewGWorld in QuickTime 4.1.2 and later */ +enum { + k4444YpCbCrA8PixelFormat = FOUR_CHAR_CODE('v408'), /* Component Y'CbCrA 8-bit 4:4:4:4, ordered Cb Y' Cr A */ + k4444YpCbCrA8RPixelFormat = FOUR_CHAR_CODE('r408') /* Component Y'CbCrA 8-bit 4:4:4:4, rendering format. full range alpha, zero biased yuv, ordered A Y' Cb Cr */ +}; + +/* Supported by QTNewGWorld in QuickTime 6.0 and later */ +enum { + kYUV420PixelFormat = FOUR_CHAR_CODE('y420') /* Planar Component Y'CbCr 8-bit 4:2:0. PixMap baseAddr points to a big-endian PlanarPixmapInfoYUV420 struct; see ImageCodec.i. */ +}; + + +/* 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 */ + codecInfoDoesReorder = (1L << 19), /* codec can rearrange frames during compression */ + codecInfoDoesWarp = (1L << 20), /* codec can warp arbitrarily on decompress */ + codecInfoDoesMultiPass = (1L << 20), /* codec can perform multi-pass compression */ + 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 */ +}; + + +/* input sequence flags*/ +enum { + codecFlagUseImageBuffer = (1L << 0), /* decompress*/ + codecFlagUseScreenBuffer = (1L << 1), /* decompress*/ + codecFlagUpdatePrevious = (1L << 2), /* compress*/ + codecFlagNoScreenUpdate = (1L << 3), /* decompress*/ + codecFlagWasCompressed = (1L << 4), /* compress*/ + codecFlagDontOffscreen = (1L << 5), /* decompress*/ + codecFlagUpdatePreviousComp = (1L << 6), /* compress*/ + codecFlagForceKeyFrame = (1L << 7), /* compress*/ + codecFlagOnlyScreenUpdate = (1L << 8), /* decompress*/ + codecFlagLiveGrab = (1L << 9), /* compress*/ + codecFlagDiffFrame = (1L << 9), /* decompress*/ + codecFlagDontUseNewImageBuffer = (1L << 10), /* decompress*/ + codecFlagInterlaceUpdate = (1L << 11), /* decompress*/ + codecFlagCatchUpDiff = (1L << 12), /* decompress*/ + codecFlagSupportDisable = (1L << 13), /* decompress*/ + codecFlagReenable = (1L << 14) /* decompress*/ +}; + + +/* output sequence flags*/ +enum { + codecFlagOutUpdateOnNextIdle = (1L << 9), + codecFlagOutUpdateOnDataSourceChange = (1L << 10), + codecFlagSequenceSensitive = (1L << 11), + codecFlagOutUpdateOnTimeChange = (1L << 12), + codecFlagImageBufferNotSourceImage = (1L << 13), + codecFlagUsedNewImageBuffer = (1L << 14), + codecFlagUsedImageBuffer = (1L << 15) +}; + + + +enum { + /* The minimum data size for spooling in or out data */ + codecMinimumDataSize = 32768L +}; + + + +enum { + compressorComponentType = FOUR_CHAR_CODE('imco'), /* the type for "Components" which compress images */ + decompressorComponentType = FOUR_CHAR_CODE('imdc') /* the type for "Components" which decompress images */ +}; + +typedef Component CompressorComponent; +typedef Component DecompressorComponent; +typedef Component CodecComponent; +#define anyCodec ((CodecComponent)0) +#define bestSpeedCodec ((CodecComponent)-1) +#define bestFidelityCodec ((CodecComponent)-2) +#define bestCompressionCodec ((CodecComponent)-3) +typedef OSType CodecType; +typedef unsigned short CodecFlags; +typedef unsigned long CodecQ; +enum { + codecLosslessQuality = 0x00000400, + codecMaxQuality = 0x000003FF, + codecMinQuality = 0x00000000, + codecLowQuality = 0x00000100, + codecNormalQuality = 0x00000200, + codecHighQuality = 0x00000300 +}; + +enum { + codecLockBitsShieldCursor = (1 << 0) /* shield cursor */ +}; + +enum { + codecCompletionSource = (1 << 0), /* asynchronous codec is done with source data */ + codecCompletionDest = (1 << 1), /* asynchronous codec is done with destination data */ + codecCompletionDontUnshield = (1 << 2), /* on dest complete don't unshield cursor */ + codecCompletionWentOffscreen = (1 << 3), /* codec used offscreen buffer */ + codecCompletionUnlockBits = (1 << 4), /* on dest complete, call ICMSequenceUnlockBits */ + codecCompletionForceChainFlush = (1 << 5), /* ICM needs to flush the whole chain */ + codecCompletionDropped = (1 << 6), /* codec decided to drop this frame */ + codecCompletionDecoded = (1 << 10), /* codec has decoded this frame; if it is cancelled and rescheduled, set icmFrameAlreadyDecoded in ICMFrameTimeRecord.flags */ + codecCompletionNotDisplayable = (1 << 11), /* the frame may still be scheduled for decode, but will not be able to be displayed because the buffer containing it will need to be recycled to display earlier frames. */ + codecCompletionNotDrawn = (1 << 12) /* set in conjunction with codecCompletionDest to indicate that the frame was not drawn */ +}; + +enum { + codecProgressOpen = 0, + codecProgressUpdatePercent = 1, + codecProgressClose = 2 +}; + +typedef CALLBACK_API( OSErr , ICMDataProcPtr )(Ptr *dataP, long bytesNeeded, long refcon); +typedef CALLBACK_API( OSErr , ICMFlushProcPtr )(Ptr data, long bytesAdded, long refcon); +typedef CALLBACK_API( void , ICMCompletionProcPtr )(OSErr result, short flags, long refcon); +typedef CALLBACK_API( OSErr , ICMProgressProcPtr )(short message, Fixed completeness, long refcon); +typedef CALLBACK_API( void , StdPixProcPtr )(PixMap *src, Rect *srcRect, MatrixRecord *matrix, short mode, RgnHandle mask, PixMap *matte, Rect *matteRect, short flags); +typedef CALLBACK_API( void , QDPixProcPtr )(PixMap *src, Rect *srcRect, MatrixRecord *matrix, short mode, RgnHandle mask, PixMap *matte, Rect *matteRect, short flags); +typedef CALLBACK_API( void , ICMAlignmentProcPtr )(Rect *rp, long refcon); +typedef CALLBACK_API( void , ICMCursorShieldedProcPtr )(const Rect *r, void *refcon, long flags); +typedef CALLBACK_API( void , ICMMemoryDisposedProcPtr )(Ptr memoryBlock, void *refcon); +typedef void * ICMCursorNotify; +typedef CALLBACK_API( OSErr , ICMConvertDataFormatProcPtr )(void *refCon, long flags, Handle desiredFormat, Handle sourceDataFormat, void *srcData, long srcDataSize, void **dstData, long *dstDataSize); +typedef STACK_UPP_TYPE(ICMDataProcPtr) ICMDataUPP; +typedef STACK_UPP_TYPE(ICMFlushProcPtr) ICMFlushUPP; +typedef STACK_UPP_TYPE(ICMCompletionProcPtr) ICMCompletionUPP; +typedef STACK_UPP_TYPE(ICMProgressProcPtr) ICMProgressUPP; +typedef STACK_UPP_TYPE(StdPixProcPtr) StdPixUPP; +typedef STACK_UPP_TYPE(QDPixProcPtr) QDPixUPP; +typedef STACK_UPP_TYPE(ICMAlignmentProcPtr) ICMAlignmentUPP; +typedef STACK_UPP_TYPE(ICMCursorShieldedProcPtr) ICMCursorShieldedUPP; +typedef STACK_UPP_TYPE(ICMMemoryDisposedProcPtr) ICMMemoryDisposedUPP; +typedef STACK_UPP_TYPE(ICMConvertDataFormatProcPtr) ICMConvertDataFormatUPP; +typedef long ImageSequence; +typedef long ImageSequenceDataSource; +typedef long ImageTranscodeSequence; +typedef long ImageFieldSequence; +struct ICMProgressProcRecord { + ICMProgressUPP progressProc; + long progressRefCon; +}; +typedef struct ICMProgressProcRecord ICMProgressProcRecord; +typedef ICMProgressProcRecord * ICMProgressProcRecordPtr; +struct ICMCompletionProcRecord { + ICMCompletionUPP completionProc; + long completionRefCon; +}; +typedef struct ICMCompletionProcRecord ICMCompletionProcRecord; +typedef ICMCompletionProcRecord * ICMCompletionProcRecordPtr; +struct ICMDataProcRecord { + ICMDataUPP dataProc; + long dataRefCon; +}; +typedef struct ICMDataProcRecord ICMDataProcRecord; +typedef ICMDataProcRecord * ICMDataProcRecordPtr; +struct ICMFlushProcRecord { + ICMFlushUPP flushProc; + long flushRefCon; +}; +typedef struct ICMFlushProcRecord ICMFlushProcRecord; +typedef ICMFlushProcRecord * ICMFlushProcRecordPtr; +struct ICMAlignmentProcRecord { + ICMAlignmentUPP alignmentProc; + long alignmentRefCon; +}; +typedef struct ICMAlignmentProcRecord ICMAlignmentProcRecord; +typedef ICMAlignmentProcRecord * ICMAlignmentProcRecordPtr; +struct DataRateParams { + long dataRate; + long dataOverrun; + long frameDuration; + long keyFrameRate; + CodecQ minSpatialQuality; + CodecQ minTemporalQuality; +}; +typedef struct DataRateParams DataRateParams; +typedef DataRateParams * DataRateParamsPtr; +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; +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; +struct CodecNameSpec { + CodecComponent codec; + CodecType cType; + Str31 typeName; + Handle name; +}; +typedef struct CodecNameSpec CodecNameSpec; +struct CodecNameSpecList { + short count; + CodecNameSpec list[1]; +}; +typedef struct CodecNameSpecList CodecNameSpecList; +typedef CodecNameSpecList * CodecNameSpecListPtr; +enum { + defaultDither = 0, + forceDither = 1, + suppressDither = 2, + useColorMatching = 4 +}; + +enum { + callStdBits = 1, + callOldBits = 2, + noDefaultOpcodes = 4 +}; + +enum { + graphicsModeStraightAlpha = 256, + graphicsModePreWhiteAlpha = 257, + graphicsModePreBlackAlpha = 258, + graphicsModeComposition = 259, + graphicsModeStraightAlphaBlend = 260, + graphicsModePreMulColorAlpha = 261, + graphicsModePerComponentAlpha = 272 +}; + +enum { + evenField1ToEvenFieldOut = 1 << 0, + evenField1ToOddFieldOut = 1 << 1, + oddField1ToEvenFieldOut = 1 << 2, + oddField1ToOddFieldOut = 1 << 3, + evenField2ToEvenFieldOut = 1 << 4, + evenField2ToOddFieldOut = 1 << 5, + oddField2ToEvenFieldOut = 1 << 6, + oddField2ToOddFieldOut = 1 << 7 +}; + +/* Flags for ICMFrameTimeRecord.flags */ +enum { + icmFrameTimeHasVirtualStartTimeAndDuration = 1 << 0, + icmFrameAlreadyDecoded = 1 << 1, + icmFrameTimeIsNonScheduledDisplayTime = 1 << 2, + icmFrameTimeHasDecodeTime = 1 << 3, + icmFrameTimeDecodeImmediately = 1 << 4, + icmFrameTimeDoNotDisplay = 1 << 5 +}; + +struct ICMFrameTimeRecord { + wide value; /* frame display time*/ + long scale; /* timescale of value/duration fields*/ + void * base; /* timebase*/ + + long duration; /* duration frame is to be displayed (0 if unknown)*/ + Fixed rate; /* rate of timebase relative to wall-time*/ + + long recordSize; /* total number of bytes in ICMFrameTimeRecord*/ + + long frameNumber; /* number of frame, zero if not known*/ + + long flags; + + wide virtualStartTime; /* conceptual start time*/ + long virtualDuration; /* conceptual duration*/ + + /* The following fields only exist for QuickTime 7.0 and greater. */ + TimeValue64 decodeTime; /* suggested decode time, if icmFrameTimeHasDecodeTime is set in flags*/ +}; +typedef struct ICMFrameTimeRecord ICMFrameTimeRecord; +typedef ICMFrameTimeRecord * ICMFrameTimePtr; +#ifndef __QTUUID__ +#define __QTUUID__ 1 +/* QuickTime flavor of universally unique identifier (uuid)*/ +struct QTUUID { + UInt32 data1; + UInt16 data2; + UInt16 data3; + UInt8 data4[8]; +}; +typedef struct QTUUID QTUUID; +typedef QTUUID QTMediaContextID; +#endif /* !defined(__QTUUID__) */ + +/* See Movies.h for the flags themselves. */ +typedef UInt32 MediaSampleFlags; +/* + * NewICMDataUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ICMDataUPP ) +NewICMDataUPP(ICMDataProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppICMDataProcInfo = 0x00000FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(ICMDataUPP) NewICMDataUPP(ICMDataProcPtr userRoutine) { return (ICMDataUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMDataProcInfo, GetCurrentArchitecture()); } + #else + #define NewICMDataUPP(userRoutine) (ICMDataUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMDataProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewICMFlushUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ICMFlushUPP ) +NewICMFlushUPP(ICMFlushProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppICMFlushProcInfo = 0x00000FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(ICMFlushUPP) NewICMFlushUPP(ICMFlushProcPtr userRoutine) { return (ICMFlushUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMFlushProcInfo, GetCurrentArchitecture()); } + #else + #define NewICMFlushUPP(userRoutine) (ICMFlushUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMFlushProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewICMCompletionUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ICMCompletionUPP ) +NewICMCompletionUPP(ICMCompletionProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppICMCompletionProcInfo = 0x00000E80 }; /* pascal no_return_value Func(2_bytes, 2_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(ICMCompletionUPP) NewICMCompletionUPP(ICMCompletionProcPtr userRoutine) { return (ICMCompletionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMCompletionProcInfo, GetCurrentArchitecture()); } + #else + #define NewICMCompletionUPP(userRoutine) (ICMCompletionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMCompletionProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewICMProgressUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ICMProgressUPP ) +NewICMProgressUPP(ICMProgressProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppICMProgressProcInfo = 0x00000FA0 }; /* pascal 2_bytes Func(2_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(ICMProgressUPP) NewICMProgressUPP(ICMProgressProcPtr userRoutine) { return (ICMProgressUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMProgressProcInfo, GetCurrentArchitecture()); } + #else + #define NewICMProgressUPP(userRoutine) (ICMProgressUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMProgressProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewStdPixUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( StdPixUPP ) +NewStdPixUPP(StdPixProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppStdPixProcInfo = 0x002FEFC0 }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes, 2_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(StdPixUPP) NewStdPixUPP(StdPixProcPtr userRoutine) { return (StdPixUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppStdPixProcInfo, GetCurrentArchitecture()); } + #else + #define NewStdPixUPP(userRoutine) (StdPixUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppStdPixProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewQDPixUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( QDPixUPP ) +NewQDPixUPP(QDPixProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppQDPixProcInfo = 0x002FEFC0 }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes, 2_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(QDPixUPP) NewQDPixUPP(QDPixProcPtr userRoutine) { return (QDPixUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPixProcInfo, GetCurrentArchitecture()); } + #else + #define NewQDPixUPP(userRoutine) (QDPixUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPixProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewICMAlignmentUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ICMAlignmentUPP ) +NewICMAlignmentUPP(ICMAlignmentProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppICMAlignmentProcInfo = 0x000003C0 }; /* pascal no_return_value Func(4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(ICMAlignmentUPP) NewICMAlignmentUPP(ICMAlignmentProcPtr userRoutine) { return (ICMAlignmentUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMAlignmentProcInfo, GetCurrentArchitecture()); } + #else + #define NewICMAlignmentUPP(userRoutine) (ICMAlignmentUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMAlignmentProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewICMCursorShieldedUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ICMCursorShieldedUPP ) +NewICMCursorShieldedUPP(ICMCursorShieldedProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppICMCursorShieldedProcInfo = 0x00000FC0 }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(ICMCursorShieldedUPP) NewICMCursorShieldedUPP(ICMCursorShieldedProcPtr userRoutine) { return (ICMCursorShieldedUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMCursorShieldedProcInfo, GetCurrentArchitecture()); } + #else + #define NewICMCursorShieldedUPP(userRoutine) (ICMCursorShieldedUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMCursorShieldedProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewICMMemoryDisposedUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ICMMemoryDisposedUPP ) +NewICMMemoryDisposedUPP(ICMMemoryDisposedProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppICMMemoryDisposedProcInfo = 0x000003C0 }; /* pascal no_return_value Func(4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(ICMMemoryDisposedUPP) NewICMMemoryDisposedUPP(ICMMemoryDisposedProcPtr userRoutine) { return (ICMMemoryDisposedUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMMemoryDisposedProcInfo, GetCurrentArchitecture()); } + #else + #define NewICMMemoryDisposedUPP(userRoutine) (ICMMemoryDisposedUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMMemoryDisposedProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewICMConvertDataFormatUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ICMConvertDataFormatUPP ) +NewICMConvertDataFormatUPP(ICMConvertDataFormatProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppICMConvertDataFormatProcInfo = 0x003FFFE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(ICMConvertDataFormatUPP) NewICMConvertDataFormatUPP(ICMConvertDataFormatProcPtr userRoutine) { return (ICMConvertDataFormatUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMConvertDataFormatProcInfo, GetCurrentArchitecture()); } + #else + #define NewICMConvertDataFormatUPP(userRoutine) (ICMConvertDataFormatUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMConvertDataFormatProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * DisposeICMDataUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeICMDataUPP(ICMDataUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeICMDataUPP(ICMDataUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeICMDataUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeICMFlushUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeICMFlushUPP(ICMFlushUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeICMFlushUPP(ICMFlushUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeICMFlushUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeICMCompletionUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeICMCompletionUPP(ICMCompletionUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeICMCompletionUPP(ICMCompletionUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeICMCompletionUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeICMProgressUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeICMProgressUPP(ICMProgressUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeICMProgressUPP(ICMProgressUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeICMProgressUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeStdPixUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeStdPixUPP(StdPixUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeStdPixUPP(StdPixUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeStdPixUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeQDPixUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeQDPixUPP(QDPixUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeQDPixUPP(QDPixUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeQDPixUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeICMAlignmentUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeICMAlignmentUPP(ICMAlignmentUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeICMAlignmentUPP(ICMAlignmentUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeICMAlignmentUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeICMCursorShieldedUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeICMCursorShieldedUPP(ICMCursorShieldedUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeICMCursorShieldedUPP(ICMCursorShieldedUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeICMCursorShieldedUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeICMMemoryDisposedUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeICMMemoryDisposedUPP(ICMMemoryDisposedUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeICMMemoryDisposedUPP(ICMMemoryDisposedUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeICMMemoryDisposedUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeICMConvertDataFormatUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeICMConvertDataFormatUPP(ICMConvertDataFormatUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeICMConvertDataFormatUPP(ICMConvertDataFormatUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeICMConvertDataFormatUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * InvokeICMDataUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSErr ) +InvokeICMDataUPP( + Ptr * dataP, + long bytesNeeded, + long refcon, + ICMDataUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(OSErr) InvokeICMDataUPP(Ptr * dataP, long bytesNeeded, long refcon, ICMDataUPP userUPP) { return (OSErr)CALL_THREE_PARAMETER_UPP(userUPP, uppICMDataProcInfo, dataP, bytesNeeded, refcon); } + #else + #define InvokeICMDataUPP(dataP, bytesNeeded, refcon, userUPP) (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppICMDataProcInfo, (dataP), (bytesNeeded), (refcon)) + #endif +#endif + +/* + * InvokeICMFlushUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSErr ) +InvokeICMFlushUPP( + Ptr data, + long bytesAdded, + long refcon, + ICMFlushUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(OSErr) InvokeICMFlushUPP(Ptr data, long bytesAdded, long refcon, ICMFlushUPP userUPP) { return (OSErr)CALL_THREE_PARAMETER_UPP(userUPP, uppICMFlushProcInfo, data, bytesAdded, refcon); } + #else + #define InvokeICMFlushUPP(data, bytesAdded, refcon, userUPP) (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppICMFlushProcInfo, (data), (bytesAdded), (refcon)) + #endif +#endif + +/* + * InvokeICMCompletionUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeICMCompletionUPP( + OSErr result, + short flags, + long refcon, + ICMCompletionUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) InvokeICMCompletionUPP(OSErr result, short flags, long refcon, ICMCompletionUPP userUPP) { CALL_THREE_PARAMETER_UPP(userUPP, uppICMCompletionProcInfo, result, flags, refcon); } + #else + #define InvokeICMCompletionUPP(result, flags, refcon, userUPP) CALL_THREE_PARAMETER_UPP((userUPP), uppICMCompletionProcInfo, (result), (flags), (refcon)) + #endif +#endif + +/* + * InvokeICMProgressUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSErr ) +InvokeICMProgressUPP( + short message, + Fixed completeness, + long refcon, + ICMProgressUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(OSErr) InvokeICMProgressUPP(short message, Fixed completeness, long refcon, ICMProgressUPP userUPP) { return (OSErr)CALL_THREE_PARAMETER_UPP(userUPP, uppICMProgressProcInfo, message, completeness, refcon); } + #else + #define InvokeICMProgressUPP(message, completeness, refcon, userUPP) (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppICMProgressProcInfo, (message), (completeness), (refcon)) + #endif +#endif + +/* + * InvokeStdPixUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeStdPixUPP( + PixMap * src, + Rect * srcRect, + MatrixRecord * matrix, + short mode, + RgnHandle mask, + PixMap * matte, + Rect * matteRect, + short flags, + StdPixUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) InvokeStdPixUPP(PixMap * src, Rect * srcRect, MatrixRecord * matrix, short mode, RgnHandle mask, PixMap * matte, Rect * matteRect, short flags, StdPixUPP userUPP) { CALL_EIGHT_PARAMETER_UPP(userUPP, uppStdPixProcInfo, src, srcRect, matrix, mode, mask, matte, matteRect, flags); } + #else + #define InvokeStdPixUPP(src, srcRect, matrix, mode, mask, matte, matteRect, flags, userUPP) CALL_EIGHT_PARAMETER_UPP((userUPP), uppStdPixProcInfo, (src), (srcRect), (matrix), (mode), (mask), (matte), (matteRect), (flags)) + #endif +#endif + +/* + * InvokeQDPixUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeQDPixUPP( + PixMap * src, + Rect * srcRect, + MatrixRecord * matrix, + short mode, + RgnHandle mask, + PixMap * matte, + Rect * matteRect, + short flags, + QDPixUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) InvokeQDPixUPP(PixMap * src, Rect * srcRect, MatrixRecord * matrix, short mode, RgnHandle mask, PixMap * matte, Rect * matteRect, short flags, QDPixUPP userUPP) { CALL_EIGHT_PARAMETER_UPP(userUPP, uppQDPixProcInfo, src, srcRect, matrix, mode, mask, matte, matteRect, flags); } + #else + #define InvokeQDPixUPP(src, srcRect, matrix, mode, mask, matte, matteRect, flags, userUPP) CALL_EIGHT_PARAMETER_UPP((userUPP), uppQDPixProcInfo, (src), (srcRect), (matrix), (mode), (mask), (matte), (matteRect), (flags)) + #endif +#endif + +/* + * InvokeICMAlignmentUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeICMAlignmentUPP( + Rect * rp, + long refcon, + ICMAlignmentUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) InvokeICMAlignmentUPP(Rect * rp, long refcon, ICMAlignmentUPP userUPP) { CALL_TWO_PARAMETER_UPP(userUPP, uppICMAlignmentProcInfo, rp, refcon); } + #else + #define InvokeICMAlignmentUPP(rp, refcon, userUPP) CALL_TWO_PARAMETER_UPP((userUPP), uppICMAlignmentProcInfo, (rp), (refcon)) + #endif +#endif + +/* + * InvokeICMCursorShieldedUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeICMCursorShieldedUPP( + const Rect * r, + void * refcon, + long flags, + ICMCursorShieldedUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) InvokeICMCursorShieldedUPP(const Rect * r, void * refcon, long flags, ICMCursorShieldedUPP userUPP) { CALL_THREE_PARAMETER_UPP(userUPP, uppICMCursorShieldedProcInfo, r, refcon, flags); } + #else + #define InvokeICMCursorShieldedUPP(r, refcon, flags, userUPP) CALL_THREE_PARAMETER_UPP((userUPP), uppICMCursorShieldedProcInfo, (r), (refcon), (flags)) + #endif +#endif + +/* + * InvokeICMMemoryDisposedUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeICMMemoryDisposedUPP( + Ptr memoryBlock, + void * refcon, + ICMMemoryDisposedUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) InvokeICMMemoryDisposedUPP(Ptr memoryBlock, void * refcon, ICMMemoryDisposedUPP userUPP) { CALL_TWO_PARAMETER_UPP(userUPP, uppICMMemoryDisposedProcInfo, memoryBlock, refcon); } + #else + #define InvokeICMMemoryDisposedUPP(memoryBlock, refcon, userUPP) CALL_TWO_PARAMETER_UPP((userUPP), uppICMMemoryDisposedProcInfo, (memoryBlock), (refcon)) + #endif +#endif + +/* + * InvokeICMConvertDataFormatUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSErr ) +InvokeICMConvertDataFormatUPP( + void * refCon, + long flags, + Handle desiredFormat, + Handle sourceDataFormat, + void * srcData, + long srcDataSize, + void ** dstData, + long * dstDataSize, + ICMConvertDataFormatUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(OSErr) InvokeICMConvertDataFormatUPP(void * refCon, long flags, Handle desiredFormat, Handle sourceDataFormat, void * srcData, long srcDataSize, void ** dstData, long * dstDataSize, ICMConvertDataFormatUPP userUPP) { return (OSErr)CALL_EIGHT_PARAMETER_UPP(userUPP, uppICMConvertDataFormatProcInfo, refCon, flags, desiredFormat, sourceDataFormat, srcData, srcDataSize, dstData, dstDataSize); } + #else + #define InvokeICMConvertDataFormatUPP(refCon, flags, desiredFormat, sourceDataFormat, srcData, srcDataSize, dstData, dstDataSize, userUPP) (OSErr)CALL_EIGHT_PARAMETER_UPP((userUPP), uppICMConvertDataFormatProcInfo, (refCon), (flags), (desiredFormat), (sourceDataFormat), (srcData), (srcDataSize), (dstData), (dstDataSize)) + #endif +#endif + +#if CALL_NOT_IN_CARBON || OLDROUTINENAMES + /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ + #define NewICMDataProc(userRoutine) NewICMDataUPP(userRoutine) + #define NewICMFlushProc(userRoutine) NewICMFlushUPP(userRoutine) + #define NewICMCompletionProc(userRoutine) NewICMCompletionUPP(userRoutine) + #define NewICMProgressProc(userRoutine) NewICMProgressUPP(userRoutine) + #define NewStdPixProc(userRoutine) NewStdPixUPP(userRoutine) + #define NewQDPixProc(userRoutine) NewQDPixUPP(userRoutine) + #define NewICMAlignmentProc(userRoutine) NewICMAlignmentUPP(userRoutine) + #define NewICMCursorShieldedProc(userRoutine) NewICMCursorShieldedUPP(userRoutine) + #define NewICMMemoryDisposedProc(userRoutine) NewICMMemoryDisposedUPP(userRoutine) + #define NewICMConvertDataFormatProc(userRoutine) NewICMConvertDataFormatUPP(userRoutine) + #define CallICMDataProc(userRoutine, dataP, bytesNeeded, refcon) InvokeICMDataUPP(dataP, bytesNeeded, refcon, userRoutine) + #define CallICMFlushProc(userRoutine, data, bytesAdded, refcon) InvokeICMFlushUPP(data, bytesAdded, refcon, userRoutine) + #define CallICMCompletionProc(userRoutine, result, flags, refcon) InvokeICMCompletionUPP(result, flags, refcon, userRoutine) + #define CallICMProgressProc(userRoutine, message, completeness, refcon) InvokeICMProgressUPP(message, completeness, refcon, userRoutine) + #define CallStdPixProc(userRoutine, src, srcRect, matrix, mode, mask, matte, matteRect, flags) InvokeStdPixUPP(src, srcRect, matrix, mode, mask, matte, matteRect, flags, userRoutine) + #define CallQDPixProc(userRoutine, src, srcRect, matrix, mode, mask, matte, matteRect, flags) InvokeQDPixUPP(src, srcRect, matrix, mode, mask, matte, matteRect, flags, userRoutine) + #define CallICMAlignmentProc(userRoutine, rp, refcon) InvokeICMAlignmentUPP(rp, refcon, userRoutine) + #define CallICMCursorShieldedProc(userRoutine, r, refcon, flags) InvokeICMCursorShieldedUPP(r, refcon, flags, userRoutine) + #define CallICMMemoryDisposedProc(userRoutine, memoryBlock, refcon) InvokeICMMemoryDisposedUPP(memoryBlock, refcon, userRoutine) + #define CallICMConvertDataFormatProc(userRoutine, refCon, flags, desiredFormat, sourceDataFormat, srcData, srcDataSize, dstData, dstDataSize) InvokeICMConvertDataFormatUPP(refCon, flags, desiredFormat, sourceDataFormat, srcData, srcDataSize, dstData, dstDataSize, userRoutine) +#endif /* CALL_NOT_IN_CARBON */ + +/* + * CodecManagerVersion() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CodecManagerVersion(long * version); + + +/* + * GetCodecNameList() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetCodecNameList( + CodecNameSpecListPtr * list, + short showAll); + + +/* + * DisposeCodecNameList() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +DisposeCodecNameList(CodecNameSpecListPtr list); + + +/* + * GetCodecInfo() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetCodecInfo( + CodecInfo * info, + CodecType cType, + CodecComponent codec); + + +/* + * GetMaxCompressionSize() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetMaxCompressionSize( + PixMapHandle src, + const Rect * srcRect, + short colorDepth, + CodecQ quality, + CodecType cType, + CompressorComponent codec, + long * size); + + +/* + * GetCSequenceMaxCompressionSize() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetCSequenceMaxCompressionSize( + ImageSequence seqID, + PixMapHandle src, + long * size); + + +/* + * GetCompressionTime() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetCompressionTime( + PixMapHandle src, + const Rect * srcRect, + short colorDepth, + CodecType cType, + CompressorComponent codec, + CodecQ * spatialQuality, + CodecQ * temporalQuality, + unsigned long * compressTime); + + +/* + * CompressImage() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CompressImage( + PixMapHandle src, + const Rect * srcRect, + CodecQ quality, + CodecType cType, + ImageDescriptionHandle desc, + Ptr data); + + +/* + * FCompressImage() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +FCompressImage( + PixMapHandle src, + const Rect * srcRect, + short colorDepth, + CodecQ quality, + CodecType cType, + CompressorComponent codec, + CTabHandle ctable, + CodecFlags flags, + long bufferSize, + ICMFlushProcRecordPtr flushProc, + ICMProgressProcRecordPtr progressProc, + ImageDescriptionHandle desc, + Ptr data); + + +/* + * DecompressImage() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +DecompressImage( + Ptr data, + ImageDescriptionHandle desc, + PixMapHandle dst, + const Rect * srcRect, + const Rect * dstRect, + short mode, + RgnHandle mask); + + +/* + * FDecompressImage() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +FDecompressImage( + Ptr data, + ImageDescriptionHandle desc, + PixMapHandle dst, + const Rect * srcRect, + MatrixRecordPtr matrix, + short mode, + RgnHandle mask, + PixMapHandle matte, + const Rect * matteRect, + CodecQ accuracy, + DecompressorComponent codec, + long bufferSize, + ICMDataProcRecordPtr dataProc, + ICMProgressProcRecordPtr progressProc); + + +/* For video compression, consider using ICMCompressionSessionCreate etc. instead of CompressSequenceBegin etc. */ +/* + * CompressSequenceBegin() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CompressSequenceBegin( + ImageSequence * seqID, + PixMapHandle src, + PixMapHandle prev, + const Rect * srcRect, + const Rect * prevRect, + short colorDepth, + CodecType cType, + CompressorComponent codec, + CodecQ spatialQuality, + CodecQ temporalQuality, + long keyFrameRate, + CTabHandle ctable, + CodecFlags flags, + ImageDescriptionHandle desc); + + +/* + * CompressSequenceFrame() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CompressSequenceFrame( + ImageSequence seqID, + PixMapHandle src, + const Rect * srcRect, + CodecFlags flags, + Ptr data, + long * dataSize, + UInt8 * similarity, + ICMCompletionProcRecordPtr asyncCompletionProc); + + +/* For video decompression, consider using ICMDecompressionSessionCreate etc. instead of DecompressSequenceBegin etc. */ +/* + * DecompressSequenceBegin() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +DecompressSequenceBegin( + ImageSequence * seqID, + ImageDescriptionHandle desc, + CGrafPtr port, + GDHandle gdh, + const Rect * srcRect, + MatrixRecordPtr matrix, + short mode, + RgnHandle mask, + CodecFlags flags, + CodecQ accuracy, + DecompressorComponent codec); + + +/* For video decompression, consider using ICMDecompressionSessionCreate etc. instead of DecompressSequenceBeginS etc. */ +/* + * DecompressSequenceBeginS() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +DecompressSequenceBeginS( + ImageSequence * seqID, + ImageDescriptionHandle desc, + Ptr data, + long dataSize, + CGrafPtr port, + GDHandle gdh, + const Rect * srcRect, + MatrixRecordPtr matrix, + short mode, + RgnHandle mask, + CodecFlags flags, + CodecQ accuracy, + DecompressorComponent codec); + + +/* + * DecompressSequenceFrame() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +DecompressSequenceFrame( + ImageSequence seqID, + Ptr data, + CodecFlags inFlags, + CodecFlags * outFlags, + ICMCompletionProcRecordPtr asyncCompletionProc); + + +/* + * DecompressSequenceFrameS() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +DecompressSequenceFrameS( + ImageSequence seqID, + Ptr data, + long dataSize, + CodecFlags inFlags, + CodecFlags * outFlags, + ICMCompletionProcRecordPtr asyncCompletionProc); + + +/* + * DecompressSequenceFrameWhen() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +DecompressSequenceFrameWhen( + ImageSequence seqID, + Ptr data, + long dataSize, + CodecFlags inFlags, + CodecFlags * outFlags, + ICMCompletionProcRecordPtr asyncCompletionProc, + const ICMFrameTimeRecord * frameTime); + + +/* + * CDSequenceFlush() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CDSequenceFlush(ImageSequence seqID); + + +/* + * SetDSequenceMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetDSequenceMatrix( + ImageSequence seqID, + MatrixRecordPtr matrix); + + +/* + * GetDSequenceMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( OSErr ) +GetDSequenceMatrix( + ImageSequence seqID, + MatrixRecordPtr matrix); + + +/* + * SetDSequenceMatte() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetDSequenceMatte( + ImageSequence seqID, + PixMapHandle matte, + const Rect * matteRect); + + +/* + * SetDSequenceMask() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetDSequenceMask( + ImageSequence seqID, + RgnHandle mask); + + +/* + * SetDSequenceTransferMode() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetDSequenceTransferMode( + ImageSequence seqID, + short mode, + const RGBColor * opColor); + + +/* + * SetDSequenceDataProc() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetDSequenceDataProc( + ImageSequence seqID, + ICMDataProcRecordPtr dataProc, + long bufferSize); + + +/* + * SetDSequenceAccuracy() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetDSequenceAccuracy( + ImageSequence seqID, + CodecQ accuracy); + + +/* + * SetDSequenceSrcRect() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetDSequenceSrcRect( + ImageSequence seqID, + const Rect * srcRect); + + +/* + * SetDSequenceFlags() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( OSErr ) +SetDSequenceFlags( + ImageSequence seqID, + long flags, + long flagsMask); + + +enum { + codecDSequenceDisableOverlaySurface = (1L << 5), + codecDSequenceSingleField = (1L << 6), + codecDSequenceBidirectionalPrediction = (1L << 7), + codecDSequenceFlushInsteadOfDirtying = (1L << 8), + codecDSequenceEnableSubPixelPositioning = (1L << 9), + codecDSequenceDeinterlaceFields = (1L << 10) +}; + +typedef CodecComponent * CodecComponentPtr; +typedef CodecComponentPtr * CodecComponentHandle; +/* selectors for ICMSequenceGet/SetInfo*/ +enum { + kICMSequenceTaskWeight = FOUR_CHAR_CODE('twei'), /* data is pointer to UInt32*/ + kICMSequenceTaskName = FOUR_CHAR_CODE('tnam'), /* data is pointer to OSType*/ + kICMSequenceUserPreferredCodecs = FOUR_CHAR_CODE('punt') /* data is pointer to CodecComponentHandle*/ +}; + +/* + * ICMSequenceGetInfo() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 5.0 and later + */ +EXTERN_API( OSErr ) +ICMSequenceGetInfo( + ImageSequence seqID, + OSType which, + void * data); + + +/* + * ICMSequenceSetInfo() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 5.0 and later + */ +EXTERN_API( OSErr ) +ICMSequenceSetInfo( + ImageSequence seqID, + OSType which, + void * data, + Size dataSize); + + +/* + * GetDSequenceImageBuffer() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetDSequenceImageBuffer( + ImageSequence seqID, + GWorldPtr * gworld); + + +/* + * GetDSequenceScreenBuffer() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetDSequenceScreenBuffer( + ImageSequence seqID, + GWorldPtr * gworld); + + +/* + * SetCSequenceQuality() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetCSequenceQuality( + ImageSequence seqID, + CodecQ spatialQuality, + CodecQ temporalQuality); + + +/* + * SetCSequencePrev() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetCSequencePrev( + ImageSequence seqID, + PixMapHandle prev, + const Rect * prevRect); + + +/* + * SetCSequenceFlushProc() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetCSequenceFlushProc( + ImageSequence seqID, + ICMFlushProcRecordPtr flushProc, + long bufferSize); + + +/* + * SetCSequenceKeyFrameRate() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetCSequenceKeyFrameRate( + ImageSequence seqID, + long keyFrameRate); + + +/* + * GetCSequenceKeyFrameRate() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetCSequenceKeyFrameRate( + ImageSequence seqID, + long * keyFrameRate); + + +/* + * GetCSequencePrevBuffer() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetCSequencePrevBuffer( + ImageSequence seqID, + GWorldPtr * gworld); + + +/* + * CDSequenceBusy() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CDSequenceBusy(ImageSequence seqID); + + +/* + * CDSequenceEnd() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CDSequenceEnd(ImageSequence seqID); + + +/* + * CDSequenceEquivalentImageDescription() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CDSequenceEquivalentImageDescription( + ImageSequence seqID, + ImageDescriptionHandle newDesc, + Boolean * equivalent); + + +/* + * CDSequenceEquivalentImageDescriptionS() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 5.0 and later + */ +EXTERN_API( OSErr ) +CDSequenceEquivalentImageDescriptionS( + ImageSequence seqID, + ImageDescriptionHandle newDesc, + Boolean * equivalent, + Boolean * canSwitch); + + +/* + * ReplaceDSequenceImageDescription() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 5.0 and later + */ +EXTERN_API( OSErr ) +ReplaceDSequenceImageDescription( + ImageSequence seqID, + ImageDescriptionHandle newDesc); + + +/* + * GetCompressedImageSize() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetCompressedImageSize( + ImageDescriptionHandle desc, + Ptr data, + long bufferSize, + ICMDataProcRecordPtr dataProc, + long * dataSize); + + +/* + * GetSimilarity() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetSimilarity( + PixMapHandle src, + const Rect * srcRect, + ImageDescriptionHandle desc, + Ptr data, + Fixed * similarity); + + +enum { + kImageDescriptionSampleFormat = FOUR_CHAR_CODE('idfm'), /* image description extension describing sample format*/ + kImageDescriptionClassicAtomFormat = FOUR_CHAR_CODE('atom'), /* sample contains classic atom structure (ie, GX codec and Curve codec)*/ + kImageDescriptionQTAtomFormat = FOUR_CHAR_CODE('qtat'), /* sample contains QT atom structure*/ + kImageDescriptionEffectDataFormat = FOUR_CHAR_CODE('fxat'), /* sample describes an effect (as QTAtoms)*/ + kImageDescriptionPrivateDataFormat = FOUR_CHAR_CODE('priv'), /* sample is in a private codec specific format*/ + kImageDescriptionAlternateCodec = FOUR_CHAR_CODE('subs'), /* image description extension containing the OSType of a substitute codec should the main codec not be available*/ + kImageDescriptionColorSpace = FOUR_CHAR_CODE('cspc') /* image description extension containing an OSType naming the native pixel format of an image (only used for pixel formats not supported by classic Color QuickDraw)*/ +}; + +/* + * GetImageDescriptionCTable() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetImageDescriptionCTable( + ImageDescriptionHandle desc, + CTabHandle * ctable); + + +/* + * SetImageDescriptionCTable() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetImageDescriptionCTable( + ImageDescriptionHandle desc, + CTabHandle ctable); + + +/* + * GetImageDescriptionExtension() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetImageDescriptionExtension( + ImageDescriptionHandle desc, + Handle * extension, + long idType, + long index); + + +/* + * AddImageDescriptionExtension() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +AddImageDescriptionExtension( + ImageDescriptionHandle desc, + Handle extension, + long idType); + + +/* + * RemoveImageDescriptionExtension() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +RemoveImageDescriptionExtension( + ImageDescriptionHandle desc, + long idType, + long index); + + +/* + * CountImageDescriptionExtensionType() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CountImageDescriptionExtensionType( + ImageDescriptionHandle desc, + long idType, + long * count); + + +/* + * GetNextImageDescriptionExtensionType() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetNextImageDescriptionExtensionType( + ImageDescriptionHandle desc, + long * idType); + + +/* + * FindCodec() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +FindCodec( + CodecType cType, + CodecComponent specCodec, + CompressorComponent * compressor, + DecompressorComponent * decompressor); + + +/* + * CompressPicture() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CompressPicture( + PicHandle srcPicture, + PicHandle dstPicture, + CodecQ quality, + CodecType cType); + + +/* + * FCompressPicture() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +FCompressPicture( + PicHandle srcPicture, + PicHandle dstPicture, + short colorDepth, + CTabHandle ctable, + CodecQ quality, + short doDither, + short compressAgain, + ICMProgressProcRecordPtr progressProc, + CodecType cType, + CompressorComponent codec); + + +/* + * CompressPictureFile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CompressPictureFile( + short srcRefNum, + short dstRefNum, + CodecQ quality, + CodecType cType); + + +/* + * FCompressPictureFile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +FCompressPictureFile( + short srcRefNum, + short dstRefNum, + short colorDepth, + CTabHandle ctable, + CodecQ quality, + short doDither, + short compressAgain, + ICMProgressProcRecordPtr progressProc, + CodecType cType, + CompressorComponent codec); + + +/* + * GetPictureFileHeader() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetPictureFileHeader( + short refNum, + Rect * frame, + OpenCPicParams * header); + + +/* + * DrawPictureFile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +DrawPictureFile( + short refNum, + const Rect * frame, + ICMProgressProcRecordPtr progressProc); + + +/* + * DrawTrimmedPicture() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +DrawTrimmedPicture( + PicHandle srcPicture, + const Rect * frame, + RgnHandle trimMask, + short doDither, + ICMProgressProcRecordPtr progressProc); + + +/* + * DrawTrimmedPictureFile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +DrawTrimmedPictureFile( + short srcRefnum, + const Rect * frame, + RgnHandle trimMask, + short doDither, + ICMProgressProcRecordPtr progressProc); + + +/* + * MakeThumbnailFromPicture() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +MakeThumbnailFromPicture( + PicHandle picture, + short colorDepth, + PicHandle thumbnail, + ICMProgressProcRecordPtr progressProc); + + +/* + * MakeThumbnailFromPictureFile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +MakeThumbnailFromPictureFile( + short refNum, + short colorDepth, + PicHandle thumbnail, + ICMProgressProcRecordPtr progressProc); + + +/* + * MakeThumbnailFromPixMap() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +MakeThumbnailFromPixMap( + PixMapHandle src, + const Rect * srcRect, + short colorDepth, + PicHandle thumbnail, + ICMProgressProcRecordPtr progressProc); + + +/* + * TrimImage() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +TrimImage( + ImageDescriptionHandle desc, + Ptr inData, + long inBufferSize, + ICMDataProcRecordPtr dataProc, + Ptr outData, + long outBufferSize, + ICMFlushProcRecordPtr flushProc, + Rect * trimRect, + ICMProgressProcRecordPtr progressProc); + + +/* + * ConvertImage() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +ConvertImage( + ImageDescriptionHandle srcDD, + Ptr srcData, + short colorDepth, + CTabHandle ctable, + CodecQ accuracy, + CodecQ quality, + CodecType cType, + CodecComponent codec, + ImageDescriptionHandle dstDD, + Ptr dstData); + + +/* + * GetCompressedPixMapInfo() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetCompressedPixMapInfo( + PixMapPtr pix, + ImageDescriptionHandle * desc, + Ptr * data, + long * bufferSize, + ICMDataProcRecord * dataProc, + ICMProgressProcRecord * progressProc); + + +/* + * SetCompressedPixMapInfo() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetCompressedPixMapInfo( + PixMapPtr pix, + ImageDescriptionHandle desc, + Ptr data, + long bufferSize, + ICMDataProcRecordPtr dataProc, + ICMProgressProcRecordPtr progressProc); + + +/* + * StdPix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +StdPix( + PixMapPtr src, + const Rect * srcRect, + MatrixRecordPtr matrix, + short mode, + RgnHandle mask, + PixMapPtr matte, + const Rect * matteRect, + short flags); + + +/* + * TransformRgn() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +TransformRgn( + MatrixRecordPtr matrix, + RgnHandle rgn); + + +/*********** + preview stuff +***********/ +#if CALL_NOT_IN_CARBON +/* + * SFGetFilePreview() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: not available + * Mac OS X: not available + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +SFGetFilePreview( + Point where, + ConstStr255Param prompt, + FileFilterUPP fileFilter, + short numTypes, + ConstSFTypeListPtr typeList, + DlgHookUPP dlgHook, + SFReply * reply); + + +/* + * SFPGetFilePreview() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: not available + * Mac OS X: not available + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +SFPGetFilePreview( + Point where, + ConstStr255Param prompt, + FileFilterUPP fileFilter, + short numTypes, + ConstSFTypeListPtr typeList, + DlgHookUPP dlgHook, + SFReply * reply, + short dlgID, + ModalFilterUPP filterProc); + + +/* + * StandardGetFilePreview() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: not available + * Mac OS X: not available + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +StandardGetFilePreview( + FileFilterUPP fileFilter, + short numTypes, + ConstSFTypeListPtr typeList, + StandardFileReply * reply); + + +/* + * CustomGetFilePreview() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: not available + * Mac OS X: not available + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +CustomGetFilePreview( + FileFilterYDUPP fileFilter, + short numTypes, + ConstSFTypeListPtr typeList, + StandardFileReply * reply, + short dlgID, + Point where, + DlgHookYDUPP dlgHook, + ModalFilterYDUPP filterProc, + ActivationOrderListPtr activeList, + ActivateYDUPP activateProc, + void * yourDataPtr); + + +#endif /* CALL_NOT_IN_CARBON */ + +/* + * MakeFilePreview() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +MakeFilePreview( + short resRefNum, + ICMProgressProcRecordPtr progress); + + +/* + * AddFilePreview() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +AddFilePreview( + short resRefNum, + OSType previewType, + Handle previewData); + + +enum { + sfpItemPreviewAreaUser = 11, + sfpItemPreviewStaticText = 12, + sfpItemPreviewDividerUser = 13, + sfpItemCreatePreviewButton = 14, + sfpItemShowPreviewButton = 15 +}; + +struct PreviewResourceRecord { + unsigned long modDate; + short version; + OSType resType; + short resID; +}; +typedef struct PreviewResourceRecord PreviewResourceRecord; +typedef PreviewResourceRecord * PreviewResourcePtr; +typedef PreviewResourcePtr * PreviewResource; +/* + * AlignScreenRect() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +AlignScreenRect( + Rect * rp, + ICMAlignmentProcRecordPtr alignmentProc); + + +/* + * AlignWindow() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +AlignWindow( + WindowRef wp, + Boolean front, + const Rect * alignmentRect, + ICMAlignmentProcRecordPtr alignmentProc); + + +/* + * DragAlignedWindow() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +DragAlignedWindow( + WindowRef wp, + Point startPt, + Rect * boundsRect, + Rect * alignmentRect, + ICMAlignmentProcRecordPtr alignmentProc); + + +/* + * DragAlignedGrayRgn() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( long ) +DragAlignedGrayRgn( + RgnHandle theRgn, + Point startPt, + Rect * boundsRect, + Rect * slopRect, + short axis, + UniversalProcPtr actionProc, + Rect * alignmentRect, + ICMAlignmentProcRecordPtr alignmentProc); + + +/* + * SetCSequenceDataRateParams() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetCSequenceDataRateParams( + ImageSequence seqID, + DataRateParamsPtr params); + + +/* + * SetCSequenceFrameNumber() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetCSequenceFrameNumber( + ImageSequence seqID, + long frameNumber); + + +/* + * SetCSequencePreferredPacketSize() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetCSequencePreferredPacketSize( + ImageSequence seqID, + long preferredPacketSizeInBytes); + + +/* + * NewImageGWorld() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +NewImageGWorld( + GWorldPtr * gworld, + ImageDescriptionHandle idh, + GWorldFlags flags); + + +/* + * GetCSequenceDataRateParams() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetCSequenceDataRateParams( + ImageSequence seqID, + DataRateParamsPtr params); + + +/* + * GetCSequenceFrameNumber() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetCSequenceFrameNumber( + ImageSequence seqID, + long * frameNumber); + + +/* + * GetBestDeviceRect() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetBestDeviceRect( + GDHandle * gdh, + Rect * rp); + + +/* + * SetSequenceProgressProc() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetSequenceProgressProc( + ImageSequence seqID, + ICMProgressProcRecord * progressProc); + + +/* + * GDHasScale() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GDHasScale( + GDHandle gdh, + short depth, + Fixed * scale); + + +/* + * GDGetScale() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GDGetScale( + GDHandle gdh, + Fixed * scale, + short * flags); + + +/* + * GDSetScale() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GDSetScale( + GDHandle gdh, + Fixed scale, + short flags); + + +/* + * ICMShieldSequenceCursor() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +ICMShieldSequenceCursor(ImageSequence seqID); + + +/* + * ICMDecompressComplete() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +ICMDecompressComplete( + ImageSequence seqID, + OSErr err, + short flag, + ICMCompletionProcRecordPtr completionRtn); + + +/* + * ICMDecompressCompleteS() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +ICMDecompressCompleteS( + ImageSequence seqID, + OSErr err, + short flag, + ICMCompletionProcRecordPtr completionRtn); + + +/* + * ICMSequenceLockBits() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +ICMSequenceLockBits( + ImageSequence seqID, + PixMapPtr dst, + long flags); + + +/* + * ICMSequenceUnlockBits() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +ICMSequenceUnlockBits( + ImageSequence seqID, + long flags); + + +enum { + kICMPixelFormatIsPlanarMask = 0x0F, /* these bits in formatFlags indicate how many planes there are; they're 0 if chunky*/ + kICMPixelFormatIsIndexed = (1L << 4), + kICMPixelFormatIsSupportedByQD = (1L << 5), + kICMPixelFormatIsMonochrome = (1L << 6), + kICMPixelFormatHasAlphaChannel = (1L << 7) +}; + +struct ICMPixelFormatInfo { + long size; /* caller MUST fill this in with sizeof(ICMPixelFormatInfo) before calling ICMGet/SetPixelFormatInfo*/ + unsigned long formatFlags; + short bitsPerPixel[14]; /* list each plane's bits per pixel separately if planar*/ + /* new field for QuickTime 4.1*/ + Fixed defaultGammaLevel; + /* new fields for QuickTime 6.0*/ + short horizontalSubsampling[14]; /* per plane; use 1 if plane is not subsampled*/ + short verticalSubsampling[14]; /* per plane; use 1 if plane is not subsampled*/ + /* new fields for QuickTime 6.5*/ + short cmpCount; /* for use in PixMap.cmpCount*/ + short cmpSize; /* for use in PixMap.cmpSize*/ +}; +typedef struct ICMPixelFormatInfo ICMPixelFormatInfo; +typedef ICMPixelFormatInfo * ICMPixelFormatInfoPtr; +/* IMPORTANT: Fill in theInfo->size with sizeof(ICMPixelFormatInfo) before calling ICMGetPixelFormatInfo */ +/* + * ICMGetPixelFormatInfo() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +ICMGetPixelFormatInfo( + OSType PixelFormat, + ICMPixelFormatInfoPtr theInfo); + + +/* IMPORTANT: Fill in theInfo->size with sizeof(ICMPixelFormatInfo) before calling ICMSetPixelFormatInfo */ +/* + * ICMSetPixelFormatInfo() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +ICMSetPixelFormatInfo( + OSType PixelFormat, + ICMPixelFormatInfoPtr theInfo); + + +enum { + kICMGetChainUltimateParent = 0, + kICMGetChainParent = 1, + kICMGetChainChild = 2, + kICMGetChainUltimateChild = 3 +}; + +/* + * ICMSequenceGetChainMember() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +ICMSequenceGetChainMember( + ImageSequence seqID, + ImageSequence * retSeqID, + long flags); + + +/* + * SetDSequenceTimeCode() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +SetDSequenceTimeCode( + ImageSequence seqID, + void * timeCodeFormat, + void * timeCodeTime); + + +/* + * CDSequenceNewMemory() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CDSequenceNewMemory( + ImageSequence seqID, + Ptr * data, + Size dataSize, + long dataUse, + ICMMemoryDisposedUPP memoryGoneProc, + void * refCon); + + +/* + * CDSequenceDisposeMemory() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CDSequenceDisposeMemory( + ImageSequence seqID, + Ptr data); + + +/* + * CDSequenceNewDataSource() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CDSequenceNewDataSource( + ImageSequence seqID, + ImageSequenceDataSource * sourceID, + OSType sourceType, + long sourceInputNumber, + Handle dataDescription, + ICMConvertDataFormatUPP transferProc, + void * refCon); + + +/* + * CDSequenceDisposeDataSource() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CDSequenceDisposeDataSource(ImageSequenceDataSource sourceID); + + +/* + * CDSequenceSetSourceData() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CDSequenceSetSourceData( + ImageSequenceDataSource sourceID, + void * data, + long dataSize); + + +/* + * CDSequenceChangedSourceData() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CDSequenceChangedSourceData(ImageSequenceDataSource sourceID); + + +/* + * CDSequenceSetSourceDataQueue() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CDSequenceSetSourceDataQueue( + ImageSequenceDataSource sourceID, + QHdrPtr dataQueue); + + +/* + * CDSequenceGetDataSource() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CDSequenceGetDataSource( + ImageSequence seqID, + ImageSequenceDataSource * sourceID, + OSType sourceType, + long sourceInputNumber); + + +/* + * PtInDSequenceData() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +PtInDSequenceData( + ImageSequence seqID, + void * data, + Size dataSize, + Point where, + Boolean * hit); + + +/* + * HitTestDSequenceData() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +HitTestDSequenceData( + ImageSequence seqID, + void * data, + Size dataSize, + Point where, + long * hit, + long hitFlags); + + +/* + * SetDSequenceNonScheduledDisplayTime() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + * Windows: in qtmlClient.lib version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API( OSErr ) +SetDSequenceNonScheduledDisplayTime( + ImageSequence sequence, + TimeValue64 displayTime, + TimeScale displayTimeScale, + UInt32 flags); + + +/* + * GetDSequenceNonScheduledDisplayTime() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + * Windows: in qtmlClient.lib version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API( OSErr ) +GetDSequenceNonScheduledDisplayTime( + ImageSequence sequence, + TimeValue64 * displayTime, + TimeScale * displayTimeScale); + + +/* + * SetDSequenceNonScheduledDisplayDirection() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + * Windows: in qtmlClient.lib version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API( OSErr ) +SetDSequenceNonScheduledDisplayDirection( + ImageSequence sequence, + Fixed rate); + + +/* + * GetDSequenceNonScheduledDisplayDirection() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + * Windows: in qtmlClient.lib version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API( OSErr ) +GetDSequenceNonScheduledDisplayDirection( + ImageSequence sequence, + Fixed * rate); + + +/* + * GetGraphicsImporterForFile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetGraphicsImporterForFile( + const FSSpec * theFile, + ComponentInstance * gi); + + +/* + * GetGraphicsImporterForDataRef() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetGraphicsImporterForDataRef( + Handle dataRef, + OSType dataRefType, + ComponentInstance * gi); + + +enum { + kDontUseValidateToFindGraphicsImporter = 1L << 0 +}; + +/* + * GetGraphicsImporterForFileWithFlags() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetGraphicsImporterForFileWithFlags( + const FSSpec * theFile, + ComponentInstance * gi, + long flags); + + +/* + * GetGraphicsImporterForDataRefWithFlags() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +GetGraphicsImporterForDataRefWithFlags( + Handle dataRef, + OSType dataRefType, + ComponentInstance * gi, + long flags); + + +/* + * QTGetFileNameExtension() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +QTGetFileNameExtension( + ConstStrFileNameParam fileName, + OSType fileType, + OSType * extension); + + + +/* + * ImageTranscodeSequenceBegin() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +ImageTranscodeSequenceBegin( + ImageTranscodeSequence * its, + ImageDescriptionHandle srcDesc, + OSType destType, + ImageDescriptionHandle * dstDesc, + void * data, + long dataSize); + + +/* + * ImageTranscodeSequenceEnd() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +ImageTranscodeSequenceEnd(ImageTranscodeSequence its); + + +/* + * ImageTranscodeFrame() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +ImageTranscodeFrame( + ImageTranscodeSequence its, + void * srcData, + long srcDataSize, + void ** dstData, + long * dstDataSize); + + +/* + * ImageTranscodeDisposeFrameData() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +ImageTranscodeDisposeFrameData( + ImageTranscodeSequence its, + void * dstData); + + +/* + * CDSequenceInvalidate() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CDSequenceInvalidate( + ImageSequence seqID, + RgnHandle invalRgn); + + +/* + * CDSequenceSetTimeBase() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +CDSequenceSetTimeBase( + ImageSequence seqID, + void * base); + + +/* + * ImageFieldSequenceBegin() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +ImageFieldSequenceBegin( + ImageFieldSequence * ifs, + ImageDescriptionHandle desc1, + ImageDescriptionHandle desc2, + ImageDescriptionHandle descOut); + + +/* + * ImageFieldSequenceExtractCombine() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +ImageFieldSequenceExtractCombine( + ImageFieldSequence ifs, + long fieldFlags, + void * data1, + long dataSize1, + void * data2, + long dataSize2, + void * outputData, + long * outDataSize); + + +/* + * ImageFieldSequenceEnd() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +ImageFieldSequenceEnd(ImageFieldSequence ifs); + + +enum { + kICMTempThenAppMemory = 1L << 12, + kICMAppThenTempMemory = 1L << 13 +}; + +/* + * QTNewGWorld() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +QTNewGWorld( + GWorldPtr * offscreenGWorld, + OSType PixelFormat, + const Rect * boundsRect, + CTabHandle cTable, + GDHandle aGDevice, + GWorldFlags flags); + + +/* + * QTNewGWorldFromPtr() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( OSErr ) +QTNewGWorldFromPtr( + GWorldPtr * gw, + OSType pixelFormat, + const Rect * boundsRect, + CTabHandle cTable, + GDHandle aGDevice, + GWorldFlags flags, + void * baseAddr, + long rowBytes); + + +/* + * QTUpdateGWorld() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( GWorldFlags ) +QTUpdateGWorld( + GWorldPtr * offscreenGWorld, + OSType PixelFormat, + const Rect * boundsRect, + CTabHandle cTable, + GDHandle aGDevice, + GWorldFlags flags); + + +/* + * MakeImageDescriptionForPixMap() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +MakeImageDescriptionForPixMap( + PixMapHandle pixmap, + ImageDescriptionHandle * idh); + + +/* + * MakeImageDescriptionForEffect() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( OSErr ) +MakeImageDescriptionForEffect( + OSType effectType, + ImageDescriptionHandle * idh); + + +/* + * QTGetPixelSize() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( short ) +QTGetPixelSize(OSType PixelFormat); + + +/* + * QTGetPixelFormatDepthForImageDescription() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 6.0 and later + * CarbonLib: in CarbonLib 1.6 and later + * Mac OS X: in version 10.2 and later + * Windows: in qtmlClient.lib 6.0 and later + */ +EXTERN_API( short ) +QTGetPixelFormatDepthForImageDescription(OSType PixelFormat); + + +/* + * QTGetPixMapPtrRowBytes() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( long ) +QTGetPixMapPtrRowBytes(PixMapPtr pm); + + +/* + * QTGetPixMapHandleRowBytes() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( long ) +QTGetPixMapHandleRowBytes(PixMapHandle pm); + + +/* + * QTSetPixMapPtrRowBytes() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( OSErr ) +QTSetPixMapPtrRowBytes( + PixMapPtr pm, + long rowBytes); + + +/* + * QTSetPixMapHandleRowBytes() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( OSErr ) +QTSetPixMapHandleRowBytes( + PixMapHandle pm, + long rowBytes); + + +enum { + kQTUsePlatformDefaultGammaLevel = 0, /* When decompressing into this PixMap, gamma-correct to the platform's standard gamma. */ + kQTUseSourceGammaLevel = -1L, /* When decompressing into this PixMap, don't perform gamma-correction. */ + kQTCCIR601VideoGammaLevel = 0x00023333 /* 2.2, standard television video gamma.*/ +}; + +/* + * QTGetPixMapPtrGammaLevel() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 5.0 and later + */ +EXTERN_API( Fixed ) +QTGetPixMapPtrGammaLevel(PixMapPtr pm); + + +/* + * QTSetPixMapPtrGammaLevel() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 5.0 and later + */ +EXTERN_API( OSErr ) +QTSetPixMapPtrGammaLevel( + PixMapPtr pm, + Fixed gammaLevel); + + +/* + * QTGetPixMapHandleGammaLevel() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 5.0 and later + */ +EXTERN_API( Fixed ) +QTGetPixMapHandleGammaLevel(PixMapHandle pm); + + +/* + * QTSetPixMapHandleGammaLevel() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 5.0 and later + */ +EXTERN_API( OSErr ) +QTSetPixMapHandleGammaLevel( + PixMapHandle pm, + Fixed gammaLevel); + + +/* + * QTGetPixMapPtrRequestedGammaLevel() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 5.0 and later + */ +EXTERN_API( Fixed ) +QTGetPixMapPtrRequestedGammaLevel(PixMapPtr pm); + + +/* + * QTSetPixMapPtrRequestedGammaLevel() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 5.0 and later + */ +EXTERN_API( OSErr ) +QTSetPixMapPtrRequestedGammaLevel( + PixMapPtr pm, + Fixed requestedGammaLevel); + + +/* + * QTGetPixMapHandleRequestedGammaLevel() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 5.0 and later + */ +EXTERN_API( Fixed ) +QTGetPixMapHandleRequestedGammaLevel(PixMapHandle pm); + + +/* + * QTSetPixMapHandleRequestedGammaLevel() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 5.0 and later + */ +EXTERN_API( OSErr ) +QTSetPixMapHandleRequestedGammaLevel( + PixMapHandle pm, + Fixed requestedGammaLevel); + + +/* + * QuadToQuadMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( OSErr ) +QuadToQuadMatrix( + const Fixed * source, + const Fixed * dest, + MatrixRecord * map); + + + + +enum { + identityMatrixType = 0x00, /* result if matrix is identity */ + translateMatrixType = 0x01, /* result if matrix translates */ + scaleMatrixType = 0x02, /* result if matrix scales */ + scaleTranslateMatrixType = 0x03, /* result if matrix scales and translates */ + linearMatrixType = 0x04, /* result if matrix is general 2 x 2 */ + linearTranslateMatrixType = 0x05, /* result if matrix is general 2 x 2 and translates */ + perspectiveMatrixType = 0x06 /* result if matrix is general 3 x 3 */ +}; + +typedef unsigned short MatrixFlags; +/* + * GetMatrixType() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( short ) +GetMatrixType(const MatrixRecord * m); + + +/* + * CopyMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +CopyMatrix( + const MatrixRecord * m1, + MatrixRecord * m2); + + +/* + * EqualMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( Boolean ) +EqualMatrix( + const MatrixRecord * m1, + const MatrixRecord * m2); + + +/* + * SetIdentityMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +SetIdentityMatrix(MatrixRecord * matrix); + + +/* + * TranslateMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +TranslateMatrix( + MatrixRecord * m, + Fixed deltaH, + Fixed deltaV); + + +/* + * RotateMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +RotateMatrix( + MatrixRecord * m, + Fixed degrees, + Fixed aboutX, + Fixed aboutY); + + +/* + * ScaleMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +ScaleMatrix( + MatrixRecord * m, + Fixed scaleX, + Fixed scaleY, + Fixed aboutX, + Fixed aboutY); + + +/* + * SkewMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +SkewMatrix( + MatrixRecord * m, + Fixed skewX, + Fixed skewY, + Fixed aboutX, + Fixed aboutY); + + +/* + * TransformFixedPoints() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +TransformFixedPoints( + const MatrixRecord * m, + FixedPoint * fpt, + long count); + + +/* + * TransformPoints() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( OSErr ) +TransformPoints( + const MatrixRecord * mp, + Point * pt1, + long count); + + +/* + * TransformFixedRect() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( Boolean ) +TransformFixedRect( + const MatrixRecord * m, + FixedRect * fr, + FixedPoint * fpp); + + +/* + * TransformRect() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( Boolean ) +TransformRect( + const MatrixRecord * m, + Rect * r, + FixedPoint * fpp); + + +/* + * InverseMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( Boolean ) +InverseMatrix( + const MatrixRecord * m, + MatrixRecord * im); + + +/* + * ConcatMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +ConcatMatrix( + const MatrixRecord * a, + MatrixRecord * b); + + +/* + * RectMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +RectMatrix( + MatrixRecord * matrix, + const Rect * srcRect, + const Rect * dstRect); + + +/* + * MapMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +MapMatrix( + MatrixRecord * matrix, + const Rect * fromRect, + const Rect * toRect); + + + + + + + + +/* + * CompAdd() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +CompAdd( + wide * src, + wide * dst); + + +/* + * CompSub() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +CompSub( + wide * src, + wide * dst); + + +/* + * CompNeg() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +CompNeg(wide * dst); + + +/* + * CompShift() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +CompShift( + wide * src, + short shift); + + +/* + * CompMul() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +CompMul( + long src1, + long src2, + wide * dst); + + +/* + * CompDiv() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( long ) +CompDiv( + wide * numerator, + long denominator, + long * remainder); + + +/* + * CompFixMul() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +CompFixMul( + wide * compSrc, + Fixed fixSrc, + wide * compDst); + + +/* + * CompMulDiv() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +CompMulDiv( + wide * co, + long mul, + long divisor); + + +/* + * CompMulDivTrunc() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( void ) +CompMulDivTrunc( + wide * co, + long mul, + long divisor, + long * remainder); + + +/* + * CompCompare() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( long ) +CompCompare( + const wide * a, + const wide * minusb); + + +/* + * CompSquareRoot() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( unsigned long ) +CompSquareRoot(const wide * src); + + +/* + * FixMulDiv() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( Fixed ) +FixMulDiv( + Fixed src, + Fixed mul, + Fixed divisor); + + +/* + * UnsignedFixMulDiv() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( Fixed ) +UnsignedFixMulDiv( + Fixed src, + Fixed mul, + Fixed divisor); + + +/* + * FracSinCos() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( Fract ) +FracSinCos( + Fixed degree, + Fract * cosOut); + + +/* + * FixExp2() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( Fixed ) +FixExp2(Fixed src); + + +/* + * FixLog2() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( Fixed ) +FixLog2(Fixed src); + + +/* + * FixPow() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( Fixed ) +FixPow( + Fixed base, + Fixed exp); + + + + + +typedef ComponentInstance GraphicsImportComponent; +enum { + GraphicsImporterComponentType = FOUR_CHAR_CODE('grip') +}; + +/* Component flags for Graphics Importer components */ +enum { + graphicsImporterIsBaseImporter = 1L << 0, + graphicsImporterCanValidateFile = 1L << 9, + graphicsImporterSubTypeIsFileExtension = 1L << 12, + graphicsImporterHasMIMEList = 1L << 14, + graphicsImporterUsesImageDecompressor = 1L << 23 +}; + +/* Atom types for QuickTime Image files */ +enum { + quickTimeImageFileImageDescriptionAtom = FOUR_CHAR_CODE('idsc'), + quickTimeImageFileImageDataAtom = FOUR_CHAR_CODE('idat'), + quickTimeImageFileMetaDataAtom = FOUR_CHAR_CODE('meta'), + quickTimeImageFileColorSyncProfileAtom = FOUR_CHAR_CODE('iicc') +}; + +/* Flags for GraphicsImportDoesDrawAllPixels */ +enum { + graphicsImporterDrawsAllPixels = 0, + graphicsImporterDoesntDrawAllPixels = 1, + graphicsImporterDontKnowIfDrawAllPixels = 2 +}; + +/* Flags for GraphicsImportSetFlags */ +enum { + kGraphicsImporterDontDoGammaCorrection = 1L << 0, + kGraphicsImporterTrustResolutionFromFile = 1L << 1, + kGraphicsImporterEnableSubPixelPositioning = 1L << 2, + kGraphicsImporterDontUseColorMatching = 1L << 3 /* set this flag (*before* calling GraphicsImportGetColorSyncProfile) if you do matching yourself */ +}; + +/* Flags for GraphicsImportCreateCGImage */ +enum { + kGraphicsImportCreateCGImageUsingCurrentSettings = 1L << 0 +}; + +enum { + kGraphicsExportGroup = FOUR_CHAR_CODE('expo'), + kGraphicsExportFileType = FOUR_CHAR_CODE('ftyp'), + kGraphicsExportMIMEType = FOUR_CHAR_CODE('mime'), + kGraphicsExportExtension = FOUR_CHAR_CODE('ext '), + kGraphicsExportDescription = FOUR_CHAR_CODE('desc') +}; + +/* User data types for layers of Photoshop files */ +enum { + kQTPhotoshopLayerMode = FOUR_CHAR_CODE('lmod'), /* OSType */ + kQTPhotoshopLayerOpacity = FOUR_CHAR_CODE('lopa'), /* UInt8, 0 = transparent .. 255 = opaque */ + kQTPhotoshopLayerClipping = FOUR_CHAR_CODE('lclp'), /* UInt8, 0 = base, 1 = non-base */ + kQTPhotoshopLayerFlags = FOUR_CHAR_CODE('lflg'), /* UInt8 */ + kQTPhotoshopLayerName = 0xA96C6E6D, /* Text */ + kQTPhotoshopLayerUnicodeName = FOUR_CHAR_CODE('luni') /* Unicode characters, not terminated */ +}; + +/* User data returned by graphics importers to suggest intended use for indexed images */ +enum { + kQTIndexedImageType = FOUR_CHAR_CODE('nth?'), /* 1 or more OSTypes, such as the following values: */ + kQTIndexedImageIsThumbnail = FOUR_CHAR_CODE('n=th'), /* The image at this index is a thumbnail. */ + kQTIndexedImageIsLayer = FOUR_CHAR_CODE('n=ly'), /* The image at this index is a layer. */ + kQTIndexedImageIsPage = FOUR_CHAR_CODE('n=pg'), /* The image at this index is a page. */ + kQTIndexedImageIsMultiResolution = FOUR_CHAR_CODE('n=rs') /* The image at this index is one of several identical images at different resolutions. */ +}; + +/* Other user data types returned by graphics importers */ +enum { + kQTTIFFUserDataPrefix = 0x74690000, /* Added to some tag values in TIFF IFDs to generate user data codes. (0x7469 is 'ti'.) */ + /* For example, YCbCrPositioning is tag 0x0213, so its user data code is 0x74690213. */ + kQTTIFFExifUserDataPrefix = 0x65780000, /* Added to tag values in Exif IFDs to generate user data codes. (0x6578 is 'ex'.) */ + /* For example, DateTimeOriginal is tag 0x9003, so its user data code is 0x65789003. */ + kQTTIFFExifGPSUserDataPrefix = 0x67700000, /* Added to tag values in Exif GPS IFDs to generate user data codes. (0x6770 is 'gp'.) */ + /* For example, GPSAltitude is tag 0x0006, so its user data code is 0x6770006. */ + kQTAlphaMode = FOUR_CHAR_CODE('almo'), /* UInt32; eg, graphicsModeStraightAlpha or graphicsModePreBlackAlpha */ + kQTAlphaModePreMulColor = FOUR_CHAR_CODE('almp'), /* RGBColor; used if kQTAlphaMode is graphicsModePreMulColorAlpha */ + kUserDataIPTC = FOUR_CHAR_CODE('iptc') +}; + +/* Found in TIFF and Exif JPEG files */ +enum { + kQTTIFFUserDataOrientation = 0x74690112, /* 1 SHORT */ + kQTTIFFUserDataTransferFunction = 0x7469012D, /* n SHORTs */ + kQTTIFFUserDataWhitePoint = 0x7469013E, /* 2 RATIONALs */ + kQTTIFFUserDataPrimaryChromaticities = 0x7469013F, /* 6 RATIONALs */ + kQTTIFFUserDataTransferRange = 0x74690156, /* 6 SHORTs */ + kQTTIFFUserDataYCbCrPositioning = 0x74690213, /* 1 SHORT */ + kQTTIFFUserDataReferenceBlackWhite = 0x74690214 /* n LONGs */ +}; + +/* Found in GeoTIFF files; defined in the GeoTIFF 1.0 spec */ +enum { + kQTTIFFUserDataModelPixelScale = 0x7469830E, /* 3 DOUBLEs */ + kQTTIFFUserDataModelTransformation = 0x746985D8, /* 16 DOUBLEs */ + kQTTIFFUserDataModelTiepoint = 0x74698482, /* n DOUBLEs */ + kQTTIFFUserDataGeoKeyDirectory = 0x746987AF, /* n SHORTs */ + kQTTIFFUserDataGeoDoubleParams = 0x746987B0, /* n DOUBLEs */ + kQTTIFFUserDataGeoAsciiParams = 0x746987B1, /* n ASCIIs */ + kQTTIFFUserDataIntergraphMatrix = 0x74698480 /* 16 or 17 DOUBLEs */ +}; + +/* Found in Exif TIFF and Exif JPEG files; defined in the Exif 2.1 spec */ +enum { + kQTExifUserDataExifVersion = 0x65789000, /* 4 bytes (import only) */ + kQTExifUserDataFlashPixVersion = 0x6578A000, /* 4 bytes */ + kQTExifUserDataColorSpace = 0x6578A001, /* 1 SHORT */ + kQTExifUserDataComponentsConfiguration = 0x65789101, /* 4 bytes */ + kQTExifUserDataCompressedBitsPerPixel = 0x65789102, /* 1 RATIONAL */ + kQTExifUserDataPixelXDimension = 0x6578A002, /* 1 SHORT or LONG */ + kQTExifUserDataPixelYDimension = 0x6578A003, /* 1 SHORT or LONG */ + kQTExifUserDataMakerNote = 0x6578927C, /* n bytes */ + kQTExifUserDataUserComment = 0x65789286, /* n bytes (Note: this constant was erroneously 0x6578928C)*/ + kQTExifUserDataRelatedSoundFile = 0x6578A004, /* 13 ASCIIs*/ + kQTExifUserDataDateTimeOriginal = 0x65789003, /* 20 ASCIIs */ + kQTExifUserDataDateTimeDigitized = 0x65789004, /* 20 ASCIIs */ + kQTExifUserDataSubSecTime = 0x65789290, /* n ASCIIs */ + kQTExifUserDataSubSecTimeOriginal = 0x65789291, /* n ASCIIs */ + kQTExifUserDataSubSecTimeDigitized = 0x65789292, /* n ASCIIs */ + kQTExifUserDataExposureTime = 0x6578829A, /* 1 RATIONAL */ + kQTExifUserDataFNumber = 0x6578829D, /* 1 RATIONAL */ + kQTExifUserDataExposureProgram = 0x65788822, /* 1 SHORT */ + kQTExifUserDataSpectralSensitivity = 0x65788824, /* n ASCIIs */ + kQTExifUserDataISOSpeedRatings = 0x65788827, /* n SHORTs */ + kQTExifUserDataShutterSpeedValue = 0x65789201, /* 1 SIGNED RATIONAL */ + kQTExifUserDataApertureValue = 0x65789202, /* 1 RATIONAL */ + kQTExifUserDataBrightnessValue = 0x65789203, /* 1 SIGNED RATIONAL */ + kQTExifUserDataExposureBiasValue = 0x65789204, /* 1 SIGNED RATIONAL */ + kQTExifUserDataMaxApertureValue = 0x65789205, /* 1 RATIONAL */ + kQTExifUserDataSubjectDistance = 0x65789206, /* 1 RATIONAL */ + kQTExifUserDataMeteringMode = 0x65789207, /* 1 SHORT */ + kQTExifUserDataLightSource = 0x65789208, /* 1 SHORT */ + kQTExifUserDataFlash = 0x65789209, /* 1 SHORT */ + kQTExifUserDataFocalLength = 0x6578920A, /* 1 RATIONAL */ + kQTExifUserDataFlashEnergy = 0x6578A20B, /* 1 RATIONAL */ + kQTExifUserDataFocalPlaneXResolution = 0x6578A20E, /* 1 RATIONAL */ + kQTExifUserDataFocalPlaneYResolution = 0x6578A20F, /* 1 RATIONAL */ + kQTExifUserDataFocalPlaneResolutionUnit = 0x6578A210, /* 1 SHORT */ + kQTExifUserDataSubjectLocation = 0x6578A214, /* 1 SHORT */ + kQTExifUserDataExposureIndex = 0x6578A215, /* 1 RATIONAL */ + kQTExifUserDataSensingMethod = 0x6578A217, /* 1 SHORT */ + kQTExifUserDataFileSource = 0x6578A300, /* 1 UNDEFINED */ + kQTExifUserDataSceneType = 0x6578A301 /* 1 UNDEFINED */ +}; + +/* Found in some Exif TIFF and Exif JPEG files; defined in the Exif 2.1 spec */ +/* Note: these were wrong in the QuickTime 6.0 headers -- the high two bytes were 0x677 instead of 0x6770. */ +enum { + kQTExifUserDataGPSVersionID = 0x67700000, /* 4 BYTEs */ + kQTExifUserDataGPSLatitudeRef = 0x67700001, /* 2 ASCIIs*/ + kQTExifUserDataGPSLatitude = 0x67700002, /* 3 RATIONALs */ + kQTExifUserDataGPSLongitudeRef = 0x67700003, /* 2 ASCIIs */ + kQTExifUserDataGPSLongitude = 0x67700004, /* 3 RATIONALs */ + kQTExifUserDataGPSAltitudeRef = 0x67700005, /* 1 BYTE */ + kQTExifUserDataGPSAltitude = 0x67700006, /* 1 RATIONAL */ + kQTExifUserDataGPSTimeStamp = 0x67700007, /* 3 RATIONALs */ + kQTExifUserDataGPSSatellites = 0x67700008, /* n ASCIIs */ + kQTExifUserDataGPSStatus = 0x67700009, /* 2 ASCIIs */ + kQTExifUserDataGPSMeasureMode = 0x6770000A, /* 2 ASCIIs */ + kQTExifUserDataGPSDOP = 0x6770000B, /* 1 RATIONAL */ + kQTExifUserDataGPSSpeedRef = 0x6770000C, /* 2 ASCIIs */ + kQTExifUserDataGPSSpeed = 0x6770000D, /* 1 RATIONAL */ + kQTExifUserDataGPSTrackRef = 0x6770000E, /* 2 ASCIIs */ + kQTExifUserDataGPSTrack = 0x6770000F, /* 1 RATIONAL */ + kQTExifUserDataGPSImgDirectionRef = 0x67700010, /* 2 ASCIIs */ + kQTExifUserDataGPSImgDirection = 0x67700011, /* 1 RATIONAL */ + kQTExifUserDataGPSMapDatum = 0x67700012, /* n ASCII */ + kQTExifUserDataGPSDestLatitudeRef = 0x67700013, /* 2 ASCIIs */ + kQTExifUserDataGPSDestLatitude = 0x67700014, /* 3 RATIONALs */ + kQTExifUserDataGPSDestLongitudeRef = 0x67700015, /* 2 ASCIIs */ + kQTExifUserDataGPSDestLongitude = 0x67700016, /* 3 RATIONALs */ + kQTExifUserDataGPSDestBearingRef = 0x67700017, /* 2 ASCIIs */ + kQTExifUserDataGPSDestBearing = 0x67700018, /* 1 RATIONAL */ + kQTExifUserDataGPSDestDistanceRef = 0x67700019, /* 2 ASCIIs */ + kQTExifUserDataGPSDestDistance = 0x6770001A /* 1 RATIONAL */ +}; + + +/** These are GraphicsImport procedures **/ +/* + * GraphicsImportSetDataReference() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetDataReference( + GraphicsImportComponent ci, + Handle dataRef, + OSType dataReType) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0001, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetDataReference() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetDataReference( + GraphicsImportComponent ci, + Handle * dataRef, + OSType * dataReType) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0002, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetDataFile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetDataFile( + GraphicsImportComponent ci, + const FSSpec * theFile) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0003, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetDataFile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetDataFile( + GraphicsImportComponent ci, + FSSpec * theFile) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0004, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetDataHandle() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetDataHandle( + GraphicsImportComponent ci, + Handle h) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0005, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetDataHandle() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetDataHandle( + GraphicsImportComponent ci, + Handle * h) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0006, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetImageDescription() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetImageDescription( + GraphicsImportComponent ci, + ImageDescriptionHandle * desc) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0007, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetDataOffsetAndSize() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetDataOffsetAndSize( + GraphicsImportComponent ci, + unsigned long * offset, + unsigned long * size) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0008, 0x7000, 0xA82A); + + +/* + * GraphicsImportReadData() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportReadData( + GraphicsImportComponent ci, + void * dataPtr, + unsigned long dataOffset, + unsigned long dataSize) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0009, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetClip() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetClip( + GraphicsImportComponent ci, + RgnHandle clipRgn) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000A, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetClip() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetClip( + GraphicsImportComponent ci, + RgnHandle * clipRgn) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000B, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetSourceRect() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetSourceRect( + GraphicsImportComponent ci, + const Rect * sourceRect) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000C, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetSourceRect() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetSourceRect( + GraphicsImportComponent ci, + Rect * sourceRect) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000D, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetNaturalBounds() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetNaturalBounds( + GraphicsImportComponent ci, + Rect * naturalBounds) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000E, 0x7000, 0xA82A); + + +/* + * GraphicsImportDraw() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportDraw(GraphicsImportComponent ci) FIVEWORDINLINE(0x2F3C, 0x0000, 0x000F, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetGWorld() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetGWorld( + GraphicsImportComponent ci, + CGrafPtr port, + GDHandle gd) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0010, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetGWorld() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetGWorld( + GraphicsImportComponent ci, + CGrafPtr * port, + GDHandle * gd) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0011, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetMatrix( + GraphicsImportComponent ci, + const MatrixRecord * matrix) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0012, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetMatrix( + GraphicsImportComponent ci, + MatrixRecord * matrix) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0013, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetBoundsRect() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetBoundsRect( + GraphicsImportComponent ci, + const Rect * bounds) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0014, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetBoundsRect() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetBoundsRect( + GraphicsImportComponent ci, + Rect * bounds) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0015, 0x7000, 0xA82A); + + +/* + * GraphicsImportSaveAsPicture() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSaveAsPicture( + GraphicsImportComponent ci, + const FSSpec * fss, + ScriptCode scriptTag) FIVEWORDINLINE(0x2F3C, 0x0006, 0x0016, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetGraphicsMode() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetGraphicsMode( + GraphicsImportComponent ci, + long graphicsMode, + const RGBColor * opColor) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0017, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetGraphicsMode() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetGraphicsMode( + GraphicsImportComponent ci, + long * graphicsMode, + RGBColor * opColor) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0018, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetQuality() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetQuality( + GraphicsImportComponent ci, + CodecQ quality) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0019, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetQuality() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetQuality( + GraphicsImportComponent ci, + CodecQ * quality) FIVEWORDINLINE(0x2F3C, 0x0004, 0x001A, 0x7000, 0xA82A); + + +/* + * GraphicsImportSaveAsQuickTimeImageFile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSaveAsQuickTimeImageFile( + GraphicsImportComponent ci, + const FSSpec * fss, + ScriptCode scriptTag) FIVEWORDINLINE(0x2F3C, 0x0006, 0x001B, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetDataReferenceOffsetAndLimit() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetDataReferenceOffsetAndLimit( + GraphicsImportComponent ci, + unsigned long offset, + unsigned long limit) FIVEWORDINLINE(0x2F3C, 0x0008, 0x001C, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetDataReferenceOffsetAndLimit() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetDataReferenceOffsetAndLimit( + GraphicsImportComponent ci, + unsigned long * offset, + unsigned long * limit) FIVEWORDINLINE(0x2F3C, 0x0008, 0x001D, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetAliasedDataReference() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetAliasedDataReference( + GraphicsImportComponent ci, + Handle * dataRef, + OSType * dataRefType) FIVEWORDINLINE(0x2F3C, 0x0008, 0x001E, 0x7000, 0xA82A); + + +/* + * GraphicsImportValidate() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportValidate( + GraphicsImportComponent ci, + Boolean * valid) FIVEWORDINLINE(0x2F3C, 0x0004, 0x001F, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetMetaData() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetMetaData( + GraphicsImportComponent ci, + void * userData) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0020, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetMIMETypeList() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetMIMETypeList( + GraphicsImportComponent ci, + void * qtAtomContainerPtr) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0021, 0x7000, 0xA82A); + + +/* + * GraphicsImportDoesDrawAllPixels() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportDoesDrawAllPixels( + GraphicsImportComponent ci, + short * drawsAllPixels) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0022, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetAsPicture() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetAsPicture( + GraphicsImportComponent ci, + PicHandle * picture) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0023, 0x7000, 0xA82A); + + +/* + * GraphicsImportExportImageFile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportExportImageFile( + GraphicsImportComponent ci, + OSType fileType, + OSType fileCreator, + const FSSpec * fss, + ScriptCode scriptTag) FIVEWORDINLINE(0x2F3C, 0x000E, 0x0024, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetExportImageTypeList() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetExportImageTypeList( + GraphicsImportComponent ci, + void * qtAtomContainerPtr) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0025, 0x7000, 0xA82A); + + +/* + * GraphicsImportDoExportImageFileDialog() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportDoExportImageFileDialog( + GraphicsImportComponent ci, + const FSSpec * inDefaultSpec, + StringPtr prompt, + ModalFilterYDUPP filterProc, + OSType * outExportedType, + FSSpec * outExportedSpec, + ScriptCode * outScriptTag) FIVEWORDINLINE(0x2F3C, 0x0018, 0x0026, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetExportSettingsAsAtomContainer() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetExportSettingsAsAtomContainer( + GraphicsImportComponent ci, + void * qtAtomContainerPtr) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0027, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetExportSettingsFromAtomContainer() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetExportSettingsFromAtomContainer( + GraphicsImportComponent ci, + void * qtAtomContainer) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0028, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetProgressProc() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetProgressProc( + GraphicsImportComponent ci, + ICMProgressProcRecordPtr progressProc) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0029, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetProgressProc() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 3.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetProgressProc( + GraphicsImportComponent ci, + ICMProgressProcRecordPtr progressProc) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002A, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetImageCount() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetImageCount( + GraphicsImportComponent ci, + unsigned long * imageCount) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002B, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetImageIndex() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetImageIndex( + GraphicsImportComponent ci, + unsigned long imageIndex) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002C, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetImageIndex() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetImageIndex( + GraphicsImportComponent ci, + unsigned long * imageIndex) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002D, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetDataOffsetAndSize64() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetDataOffsetAndSize64( + GraphicsImportComponent ci, + wide * offset, + wide * size) FIVEWORDINLINE(0x2F3C, 0x0008, 0x002E, 0x7000, 0xA82A); + + +/* + * GraphicsImportReadData64() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportReadData64( + GraphicsImportComponent ci, + void * dataPtr, + const wide * dataOffset, + unsigned long dataSize) FIVEWORDINLINE(0x2F3C, 0x000C, 0x002F, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetDataReferenceOffsetAndLimit64() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetDataReferenceOffsetAndLimit64( + GraphicsImportComponent ci, + const wide * offset, + const wide * limit) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0030, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetDataReferenceOffsetAndLimit64() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetDataReferenceOffsetAndLimit64( + GraphicsImportComponent ci, + wide * offset, + wide * limit) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0031, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetDefaultMatrix() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetDefaultMatrix( + GraphicsImportComponent ci, + MatrixRecord * defaultMatrix) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0032, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetDefaultClip() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetDefaultClip( + GraphicsImportComponent ci, + RgnHandle * defaultRgn) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0033, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetDefaultGraphicsMode() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetDefaultGraphicsMode( + GraphicsImportComponent ci, + long * defaultGraphicsMode, + RGBColor * defaultOpColor) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0034, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetDefaultSourceRect() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetDefaultSourceRect( + GraphicsImportComponent ci, + Rect * defaultSourceRect) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0035, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetColorSyncProfile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetColorSyncProfile( + GraphicsImportComponent ci, + Handle * profile) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0036, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetDestRect() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetDestRect( + GraphicsImportComponent ci, + const Rect * destRect) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0037, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetDestRect() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetDestRect( + GraphicsImportComponent ci, + Rect * destRect) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0038, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetFlags() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetFlags( + GraphicsImportComponent ci, + long flags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0039, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetFlags() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetFlags( + GraphicsImportComponent ci, + long * flags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x003A, 0x7000, 0xA82A); + + +/* 2 private selectors */ +/* + * GraphicsImportGetBaseDataOffsetAndSize64() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0.2 and later + * CarbonLib: in CarbonLib 1.4 and later + * Mac OS X: in version 10.1 and later + * Windows: in qtmlClient.lib 5.0.2 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetBaseDataOffsetAndSize64( + GraphicsImportComponent ci, + wide * offset, + wide * size) FIVEWORDINLINE(0x2F3C, 0x0008, 0x003D, 0x7000, 0xA82A); + + +/* + * GraphicsImportSetImageIndexToThumbnail() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 6.0 and later + * CarbonLib: in CarbonLib 1.6 and later + * Mac OS X: in version 10.2 and later + * Windows: in qtmlClient.lib 6.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetImageIndexToThumbnail(GraphicsImportComponent ci) FIVEWORDINLINE(0x2F3C, 0x0000, 0x003E, 0x7000, 0xA82A); + + +#if TARGET_API_MAC_OSX +/* + * GraphicsImportCreateCGImage() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportCreateCGImage( + GraphicsImportComponent ci, + CGImageRef * imageRefOut, + UInt32 flags) FIVEWORDINLINE(0x2F3C, 0x0008, 0x003F, 0x7000, 0xA82A); + + +#endif /* TARGET_API_MAC_OSX */ + +/* + * GraphicsImportSaveAsPictureToDataRef() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + * Windows: in qtmlClient.lib 6.5 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSaveAsPictureToDataRef( + GraphicsImportComponent ci, + Handle dataRef, + OSType dataRefType) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0040, 0x7000, 0xA82A); + + +/* + * GraphicsImportSaveAsQuickTimeImageFileToDataRef() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + * Windows: in qtmlClient.lib 6.5 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSaveAsQuickTimeImageFileToDataRef( + GraphicsImportComponent ci, + Handle dataRef, + OSType dataRefType) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0041, 0x7000, 0xA82A); + + +/* + * GraphicsImportExportImageFileToDataRef() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + * Windows: in qtmlClient.lib 6.5 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportExportImageFileToDataRef( + GraphicsImportComponent ci, + OSType fileType, + OSType fileCreator, + Handle dataRef, + OSType dataRefType) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0042, 0x7000, 0xA82A); + + +/* + * GraphicsImportDoExportImageFileToDataRefDialog() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + * Windows: in qtmlClient.lib 6.5 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportDoExportImageFileToDataRefDialog( + GraphicsImportComponent ci, + Handle inDataRef, + OSType inDataRefType, + CFStringRef prompt, + ModalFilterYDUPP filterProc, + OSType * outExportedType, + Handle * outDataRef, + OSType * outDataRefType) FIVEWORDINLINE(0x2F3C, 0x001C, 0x0043, 0x7000, 0xA82A); + + +#if TARGET_API_MAC_OSX +/* NOTE: If the source override ColorSync profile is NULL, then the image's ColorSync profile may be used if available, otherwise a generic ColorSync profile may be used. */ +/* + * GraphicsImportSetOverrideSourceColorSyncProfileRef() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetOverrideSourceColorSyncProfileRef( + GraphicsImportComponent ci, + CMProfileRef newOverrideSourceProfileRef) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0044, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetOverrideSourceColorSyncProfileRef() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetOverrideSourceColorSyncProfileRef( + GraphicsImportComponent ci, + CMProfileRef * outOverrideSourceProfileRef) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0045, 0x7000, 0xA82A); + + +/* NOTE: If the destination ColorSync profile is NULL, then a generic ColorSync profile may be used. */ +/* + * GraphicsImportSetDestinationColorSyncProfileRef() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetDestinationColorSyncProfileRef( + GraphicsImportComponent ci, + CMProfileRef newDestinationProfileRef) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0046, 0x7000, 0xA82A); + + +/* + * GraphicsImportGetDestinationColorSyncProfileRef() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetDestinationColorSyncProfileRef( + GraphicsImportComponent ci, + CMProfileRef * destinationProfileRef) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0047, 0x7000, 0xA82A); + + +#endif /* TARGET_API_MAC_OSX */ + +/* + * GraphicsImportWillUseColorMatching() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + * Windows: in qtmlClient.lib 6.5 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportWillUseColorMatching( + GraphicsImportComponent ci, + Boolean * outWillMatch) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0048, 0x7000, 0xA82A); + + +#if TARGET_API_MAC_OSX +/* This convenience API is implemented by the base graphics importer for format-specific importers. */ +/* + * GraphicsImportGetGenericColorSyncProfile() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetGenericColorSyncProfile( + GraphicsImportComponent ci, + OSType pixelFormat, + void * reservedSetToNULL, + UInt32 flags, + Handle * genericColorSyncProfileOut) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0049, 0x7000, 0xA82A); + + +#endif /* TARGET_API_MAC_OSX */ + +/* Format-specific importers that implement GetColorSyncProfile and that want the base graphics + importer to automatically support ColorSync matching should: + (a) implement GraphicsImportSetReturnGenericColorSyncProfile; when it is called, set an internal flag + (b) change GraphicsImportGetColorSyncProfile so that, if this internal flag is set, + when the source image file contains a profile + and the kGraphicsImporterDontUseColorMatching flag is NOT set, + it returns a generic profile of the appropriate colorspace instead. + Other importers should *not* implement GraphicsImportSetReturnGenericColorSyncProfile. */ +/* WARNING: Applications should not call this API; it is internal graphics importer plumbing. + Set kGraphicsImporterDontUseColorMatching instead. */ +/* + * GraphicsImportSetReturnGenericColorSyncProfile() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + * Windows: in qtmlClient.lib 6.5 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportSetReturnGenericColorSyncProfile( + GraphicsImportComponent ci, + Boolean returnGenericProfilesUnlessDontMatchFlagSet) FIVEWORDINLINE(0x2F3C, 0x0002, 0x004A, 0x7000, 0xA82A); + + +/* WARNING: Applications should not call this API; it is internal graphics importer plumbing. */ +/* + * GraphicsImportGetReturnGenericColorSyncProfile() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + * Windows: in qtmlClient.lib 6.5 and later + */ +EXTERN_API( ComponentResult ) +GraphicsImportGetReturnGenericColorSyncProfile( + GraphicsImportComponent ci, + Boolean * returnGenericProfilesUnlessDontMatchFlagSet) FIVEWORDINLINE(0x2F3C, 0x0004, 0x004B, 0x7000, 0xA82A); + + + + +typedef ComponentInstance GraphicsExportComponent; +enum { + GraphicsExporterComponentType = FOUR_CHAR_CODE('grex'), + kBaseGraphicsExporterSubType = FOUR_CHAR_CODE('base') +}; + +/* Component flags for Graphics Exporter components */ +enum { + graphicsExporterIsBaseExporter = 1L << 0, + graphicsExporterCanTranscode = 1L << 1, + graphicsExporterUsesImageCompressor = 1L << 2 +}; + +struct QTResolutionSettings { + Fixed horizontalResolution; + Fixed verticalResolution; +}; +typedef struct QTResolutionSettings QTResolutionSettings; +struct QTTargetDataSize { + unsigned long targetDataSize; +}; +typedef struct QTTargetDataSize QTTargetDataSize; +struct QTThumbnailSettings { + long enableThumbnail; /* a thoroughly padded Boolean*/ + long maxThumbnailWidth; /* set to zero to let someone else decide*/ + long maxThumbnailHeight; /* set to zero to let someone else decide*/ +}; +typedef struct QTThumbnailSettings QTThumbnailSettings; +enum { + kQTResolutionSettings = FOUR_CHAR_CODE('reso'), + kQTTargetDataSize = FOUR_CHAR_CODE('dasz'), + kQTDontRecompress = FOUR_CHAR_CODE('dntr'), + kQTInterlaceStyle = FOUR_CHAR_CODE('ilac'), + kQTColorSyncProfile = FOUR_CHAR_CODE('iccp'), + kQTThumbnailSettings = FOUR_CHAR_CODE('thum'), + kQTEnableExif = FOUR_CHAR_CODE('exif'), /* UInt8 (boolean)*/ + kQTMetaData = FOUR_CHAR_CODE('meta') +}; + +enum { + kQTTIFFCompressionMethod = FOUR_CHAR_CODE('tifc'), /* UInt32*/ + kQTTIFFCompression_None = 1, + kQTTIFFCompression_PackBits = 32773L, + kQTTIFFLittleEndian = FOUR_CHAR_CODE('tife') /* UInt8 (boolean)*/ +}; + +enum { + kQTPNGFilterPreference = FOUR_CHAR_CODE('pngf'), /* UInt32*/ + kQTPNGFilterBestForColorType = FOUR_CHAR_CODE('bflt'), + kQTPNGFilterNone = 0, + kQTPNGFilterSub = 1, + kQTPNGFilterUp = 2, + kQTPNGFilterAverage = 3, + kQTPNGFilterPaeth = 4, + kQTPNGFilterAdaptivePerRow = FOUR_CHAR_CODE('aflt'), + kQTPNGInterlaceStyle = FOUR_CHAR_CODE('ilac'), /* UInt32*/ + kQTPNGInterlaceNone = 0, + kQTPNGInterlaceAdam7 = 1 +}; + +enum { + kQTJPEGQuantizationTables = FOUR_CHAR_CODE('jpqt'), + kQTJPEGHuffmanTables = FOUR_CHAR_CODE('jpht') +}; + + +/** These are GraphicsExport procedures **/ +/* To use: set the input and output (and other settings as desired) and call GEDoExport. */ +/* + * GraphicsExportDoExport() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportDoExport( + GraphicsExportComponent ci, + unsigned long * actualSizeWritten) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0001, 0x7000, 0xA82A); + + +/* Used for internal communication between the base and format-specific graphics exporter: */ +/* + * GraphicsExportCanTranscode() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportCanTranscode( + GraphicsExportComponent ci, + Boolean * canTranscode) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0002, 0x7000, 0xA82A); + + +/* + * GraphicsExportDoTranscode() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportDoTranscode(GraphicsExportComponent ci) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0003, 0x7000, 0xA82A); + + +/* + * GraphicsExportCanUseCompressor() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportCanUseCompressor( + GraphicsExportComponent ci, + Boolean * canUseCompressor, + void * codecSettingsAtomContainerPtr) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0004, 0x7000, 0xA82A); + + +/* + * GraphicsExportDoUseCompressor() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportDoUseCompressor( + GraphicsExportComponent ci, + void * codecSettingsAtomContainer, + ImageDescriptionHandle * outDesc) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0005, 0x7000, 0xA82A); + + +/* + * GraphicsExportDoStandaloneExport() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportDoStandaloneExport(GraphicsExportComponent ci) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0006, 0x7000, 0xA82A); + + +/* Queries applications can make of a format-specific graphics exporter: */ +/* + * GraphicsExportGetDefaultFileTypeAndCreator() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetDefaultFileTypeAndCreator( + GraphicsExportComponent ci, + OSType * fileType, + OSType * fileCreator) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0007, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetDefaultFileNameExtension() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetDefaultFileNameExtension( + GraphicsExportComponent ci, + OSType * fileNameExtension) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0008, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetMIMETypeList() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetMIMETypeList( + GraphicsExportComponent ci, + void * qtAtomContainerPtr) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0009, 0x7000, 0xA82A); + + +/* (1 unused selector) */ +/* Graphics exporter settings: */ +/* + * GraphicsExportRequestSettings() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportRequestSettings( + GraphicsExportComponent ci, + ModalFilterYDUPP filterProc, + void * yourDataProc) FIVEWORDINLINE(0x2F3C, 0x0008, 0x000B, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetSettingsFromAtomContainer() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetSettingsFromAtomContainer( + GraphicsExportComponent ci, + void * qtAtomContainer) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000C, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetSettingsAsAtomContainer() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetSettingsAsAtomContainer( + GraphicsExportComponent ci, + void * qtAtomContainerPtr) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000D, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetSettingsAsText() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetSettingsAsText( + GraphicsExportComponent ci, + Handle * theText) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000E, 0x7000, 0xA82A); + + +/* Graphics exporters may implement some or none of the following: */ +/* + * GraphicsExportSetDontRecompress() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetDontRecompress( + GraphicsExportComponent ci, + Boolean dontRecompress) FIVEWORDINLINE(0x2F3C, 0x0002, 0x000F, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetDontRecompress() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetDontRecompress( + GraphicsExportComponent ci, + Boolean * dontRecompress) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0010, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetInterlaceStyle() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetInterlaceStyle( + GraphicsExportComponent ci, + unsigned long interlaceStyle) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0011, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetInterlaceStyle() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetInterlaceStyle( + GraphicsExportComponent ci, + unsigned long * interlaceStyle) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0012, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetMetaData() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetMetaData( + GraphicsExportComponent ci, + void * userData) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0013, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetMetaData() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetMetaData( + GraphicsExportComponent ci, + void * userData) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0014, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetTargetDataSize() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetTargetDataSize( + GraphicsExportComponent ci, + unsigned long targetDataSize) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0015, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetTargetDataSize() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetTargetDataSize( + GraphicsExportComponent ci, + unsigned long * targetDataSize) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0016, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetCompressionMethod() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetCompressionMethod( + GraphicsExportComponent ci, + long compressionMethod) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0017, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetCompressionMethod() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetCompressionMethod( + GraphicsExportComponent ci, + long * compressionMethod) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0018, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetCompressionQuality() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetCompressionQuality( + GraphicsExportComponent ci, + CodecQ spatialQuality) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0019, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetCompressionQuality() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetCompressionQuality( + GraphicsExportComponent ci, + CodecQ * spatialQuality) FIVEWORDINLINE(0x2F3C, 0x0004, 0x001A, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetResolution() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetResolution( + GraphicsExportComponent ci, + Fixed horizontalResolution, + Fixed verticalResolution) FIVEWORDINLINE(0x2F3C, 0x0008, 0x001B, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetResolution() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetResolution( + GraphicsExportComponent ci, + Fixed * horizontalResolution, + Fixed * verticalResolution) FIVEWORDINLINE(0x2F3C, 0x0008, 0x001C, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetDepth() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetDepth( + GraphicsExportComponent ci, + long depth) FIVEWORDINLINE(0x2F3C, 0x0004, 0x001D, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetDepth() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetDepth( + GraphicsExportComponent ci, + long * depth) FIVEWORDINLINE(0x2F3C, 0x0004, 0x001E, 0x7000, 0xA82A); + + +/* (2 unused selectors) */ +/* + * GraphicsExportSetColorSyncProfile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetColorSyncProfile( + GraphicsExportComponent ci, + Handle colorSyncProfile) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0021, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetColorSyncProfile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetColorSyncProfile( + GraphicsExportComponent ci, + Handle * colorSyncProfile) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0022, 0x7000, 0xA82A); + + +/* Always implemented by the base graphics exporter: */ +/* + * GraphicsExportSetProgressProc() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetProgressProc( + GraphicsExportComponent ci, + ICMProgressProcRecordPtr progressProc) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0023, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetProgressProc() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetProgressProc( + GraphicsExportComponent ci, + ICMProgressProcRecordPtr progressProc) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0024, 0x7000, 0xA82A); + + +/* Sources for the input image: */ +/* + * GraphicsExportSetInputDataReference() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetInputDataReference( + GraphicsExportComponent ci, + Handle dataRef, + OSType dataRefType, + ImageDescriptionHandle desc) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0025, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetInputDataReference() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetInputDataReference( + GraphicsExportComponent ci, + Handle * dataRef, + OSType * dataRefType) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0026, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetInputFile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetInputFile( + GraphicsExportComponent ci, + const FSSpec * theFile, + ImageDescriptionHandle desc) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0027, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetInputFile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetInputFile( + GraphicsExportComponent ci, + FSSpec * theFile) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0028, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetInputHandle() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetInputHandle( + GraphicsExportComponent ci, + Handle h, + ImageDescriptionHandle desc) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0029, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetInputHandle() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetInputHandle( + GraphicsExportComponent ci, + Handle * h) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002A, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetInputPtr() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetInputPtr( + GraphicsExportComponent ci, + Ptr p, + unsigned long size, + ImageDescriptionHandle desc) FIVEWORDINLINE(0x2F3C, 0x000C, 0x002B, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetInputPtr() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetInputPtr( + GraphicsExportComponent ci, + Ptr * p, + unsigned long * size) FIVEWORDINLINE(0x2F3C, 0x0008, 0x002C, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetInputGraphicsImporter() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetInputGraphicsImporter( + GraphicsExportComponent ci, + GraphicsImportComponent grip) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002D, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetInputGraphicsImporter() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetInputGraphicsImporter( + GraphicsExportComponent ci, + GraphicsImportComponent * grip) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002E, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetInputPicture() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetInputPicture( + GraphicsExportComponent ci, + PicHandle picture) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002F, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetInputPicture() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetInputPicture( + GraphicsExportComponent ci, + PicHandle * picture) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0030, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetInputGWorld() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetInputGWorld( + GraphicsExportComponent ci, + GWorldPtr gworld) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0031, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetInputGWorld() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetInputGWorld( + GraphicsExportComponent ci, + GWorldPtr * gworld) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0032, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetInputPixmap() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetInputPixmap( + GraphicsExportComponent ci, + PixMapHandle pixmap) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0033, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetInputPixmap() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetInputPixmap( + GraphicsExportComponent ci, + PixMapHandle * pixmap) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0034, 0x7000, 0xA82A); + + +/* Only applicable when the input is a data reference, file, handle or ptr: */ +/* + * GraphicsExportSetInputOffsetAndLimit() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetInputOffsetAndLimit( + GraphicsExportComponent ci, + unsigned long offset, + unsigned long limit) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0035, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetInputOffsetAndLimit() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetInputOffsetAndLimit( + GraphicsExportComponent ci, + unsigned long * offset, + unsigned long * limit) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0036, 0x7000, 0xA82A); + + +/* Used by format-specific graphics exporters when transcoding: */ +/* + * GraphicsExportMayExporterReadInputData() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportMayExporterReadInputData( + GraphicsExportComponent ci, + Boolean * mayReadInputData) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0037, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetInputDataSize() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetInputDataSize( + GraphicsExportComponent ci, + unsigned long * size) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0038, 0x7000, 0xA82A); + + +/* + * GraphicsExportReadInputData() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportReadInputData( + GraphicsExportComponent ci, + void * dataPtr, + unsigned long dataOffset, + unsigned long dataSize) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0039, 0x7000, 0xA82A); + + +/* Used by format-specific graphics exporters, especially when doing standalone export: */ +/* + * GraphicsExportGetInputImageDescription() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetInputImageDescription( + GraphicsExportComponent ci, + ImageDescriptionHandle * desc) FIVEWORDINLINE(0x2F3C, 0x0004, 0x003A, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetInputImageDimensions() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetInputImageDimensions( + GraphicsExportComponent ci, + Rect * dimensions) FIVEWORDINLINE(0x2F3C, 0x0004, 0x003B, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetInputImageDepth() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetInputImageDepth( + GraphicsExportComponent ci, + long * inputDepth) FIVEWORDINLINE(0x2F3C, 0x0004, 0x003C, 0x7000, 0xA82A); + + +/* + * GraphicsExportDrawInputImage() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportDrawInputImage( + GraphicsExportComponent ci, + CGrafPtr gw, + GDHandle gd, + const Rect * srcRect, + const Rect * dstRect) FIVEWORDINLINE(0x2F3C, 0x0010, 0x003D, 0x7000, 0xA82A); + + +/* Destinations for the output image: */ +/* + * GraphicsExportSetOutputDataReference() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetOutputDataReference( + GraphicsExportComponent ci, + Handle dataRef, + OSType dataRefType) FIVEWORDINLINE(0x2F3C, 0x0008, 0x003E, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetOutputDataReference() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetOutputDataReference( + GraphicsExportComponent ci, + Handle * dataRef, + OSType * dataRefType) FIVEWORDINLINE(0x2F3C, 0x0008, 0x003F, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetOutputFile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetOutputFile( + GraphicsExportComponent ci, + const FSSpec * theFile) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0040, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetOutputFile() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetOutputFile( + GraphicsExportComponent ci, + FSSpec * theFile) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0041, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetOutputHandle() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetOutputHandle( + GraphicsExportComponent ci, + Handle h) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0042, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetOutputHandle() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetOutputHandle( + GraphicsExportComponent ci, + Handle * h) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0043, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetOutputOffsetAndMaxSize() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetOutputOffsetAndMaxSize( + GraphicsExportComponent ci, + unsigned long offset, + unsigned long maxSize, + Boolean truncateFile) FIVEWORDINLINE(0x2F3C, 0x000A, 0x0044, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetOutputOffsetAndMaxSize() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetOutputOffsetAndMaxSize( + GraphicsExportComponent ci, + unsigned long * offset, + unsigned long * maxSize, + Boolean * truncateFile) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0045, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetOutputFileTypeAndCreator() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetOutputFileTypeAndCreator( + GraphicsExportComponent ci, + OSType fileType, + OSType fileCreator) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0046, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetOutputFileTypeAndCreator() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetOutputFileTypeAndCreator( + GraphicsExportComponent ci, + OSType * fileType, + OSType * fileCreator) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0047, 0x7000, 0xA82A); + + +/* Used by format-specific graphics exporters: */ +/* + * GraphicsExportWriteOutputData() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportWriteOutputData( + GraphicsExportComponent ci, + const void * dataPtr, + unsigned long dataSize) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0048, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetOutputMark() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetOutputMark( + GraphicsExportComponent ci, + unsigned long mark) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0049, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetOutputMark() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetOutputMark( + GraphicsExportComponent ci, + unsigned long * mark) FIVEWORDINLINE(0x2F3C, 0x0004, 0x004A, 0x7000, 0xA82A); + + +/* + * GraphicsExportReadOutputData() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 4.0 and later + * CarbonLib: in CarbonLib 1.0.2 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportReadOutputData( + GraphicsExportComponent ci, + void * dataPtr, + unsigned long dataOffset, + unsigned long dataSize) FIVEWORDINLINE(0x2F3C, 0x000C, 0x004B, 0x7000, 0xA82A); + + +/* Allows embedded thumbnail creation, if supported. */ +/* + * GraphicsExportSetThumbnailEnabled() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0.2 and later + * CarbonLib: in CarbonLib 1.4 and later + * Mac OS X: in version 10.1 and later + * Windows: in qtmlClient.lib 5.0.2 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetThumbnailEnabled( + GraphicsExportComponent ci, + Boolean enableThumbnail, + long maxThumbnailWidth, + long maxThumbnailHeight) FIVEWORDINLINE(0x2F3C, 0x000A, 0x004C, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetThumbnailEnabled() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0.2 and later + * CarbonLib: in CarbonLib 1.4 and later + * Mac OS X: in version 10.1 and later + * Windows: in qtmlClient.lib 5.0.2 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetThumbnailEnabled( + GraphicsExportComponent ci, + Boolean * thumbnailEnabled, + long * maxThumbnailWidth, + long * maxThumbnailHeight) FIVEWORDINLINE(0x2F3C, 0x000C, 0x004D, 0x7000, 0xA82A); + + +/* Allows export of Exif files, if supported. This disables Exif-incompatible settings such as grayscale JPEG and compressed TIFF, and enables export of Exif metadata. */ +/* + * GraphicsExportSetExifEnabled() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0.2 and later + * CarbonLib: in CarbonLib 1.4 and later + * Mac OS X: in version 10.1 and later + * Windows: in qtmlClient.lib 5.0.2 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetExifEnabled( + GraphicsExportComponent ci, + Boolean enableExif) FIVEWORDINLINE(0x2F3C, 0x0002, 0x004E, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetExifEnabled() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 5.0.2 and later + * CarbonLib: in CarbonLib 1.4 and later + * Mac OS X: in version 10.1 and later + * Windows: in qtmlClient.lib 5.0.2 and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetExifEnabled( + GraphicsExportComponent ci, + Boolean * exifEnabled) FIVEWORDINLINE(0x2F3C, 0x0004, 0x004F, 0x7000, 0xA82A); + + +#if TARGET_API_MAC_OSX +/* + * GraphicsExportSetInputCGImage() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetInputCGImage( + GraphicsExportComponent ci, + CGImageRef imageRef) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0050, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetInputCGImage() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetInputCGImage( + GraphicsExportComponent ci, + CGImageRef * imageRefOut) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0051, 0x7000, 0xA82A); + + +/* + * GraphicsExportSetInputCGBitmapContext() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetInputCGBitmapContext( + GraphicsExportComponent ci, + CGContextRef bitmapContextRef) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0052, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetInputCGBitmapContext() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetInputCGBitmapContext( + GraphicsExportComponent ci, + CGContextRef * bitmapContextRefOut) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0053, 0x7000, 0xA82A); + + +#endif /* TARGET_API_MAC_OSX */ + +/* + * GraphicsExportSetFlags() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportSetFlags( + GraphicsExportComponent ci, + UInt32 flags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0054, 0x7000, 0xA82A); + + +/* + * GraphicsExportGetFlags() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +GraphicsExportGetFlags( + GraphicsExportComponent ci, + UInt32 * flagsOut) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0055, 0x7000, 0xA82A); + + + + +typedef ComponentInstance ImageTranscoderComponent; +enum { + ImageTranscodererComponentType = FOUR_CHAR_CODE('imtc') +}; + + +/** These are ImageTranscoder procedures **/ +/* + * ImageTranscoderBeginSequence() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +ImageTranscoderBeginSequence( + ImageTranscoderComponent itc, + ImageDescriptionHandle srcDesc, + ImageDescriptionHandle * dstDesc, + void * data, + long dataSize) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0001, 0x7000, 0xA82A); + + +/* + * ImageTranscoderConvert() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +ImageTranscoderConvert( + ImageTranscoderComponent itc, + void * srcData, + long srcDataSize, + void ** dstData, + long * dstDataSize) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0002, 0x7000, 0xA82A); + + +/* + * ImageTranscoderDisposeData() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +ImageTranscoderDisposeData( + ImageTranscoderComponent itc, + void * dstData) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0003, 0x7000, 0xA82A); + + +/* + * ImageTranscoderEndSequence() + * + * Availability: + * Non-Carbon CFM: in QuickTimeLib 2.5 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + * Windows: in qtmlClient.lib 3.0 and later + */ +EXTERN_API( ComponentResult ) +ImageTranscoderEndSequence(ImageTranscoderComponent itc) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0004, 0x7000, 0xA82A); + + + + +#if (MAC_OS_X_VERSION_MAX_ALLOWED == MAC_OS_X_VERSION_10_2) || !defined(kComponentPropertyListenerCollectionContextVersion) + + + +/* MixedMode ProcInfo constants for component property calls */ +enum { + uppCallComponentGetComponentPropertyInfoProcInfo = 0x0003FFF0, + uppCallComponentGetComponentPropertyProcInfo = 0x0003FFF0, + uppCallComponentSetComponentPropertyProcInfo = 0x0000FFF0, + uppCallComponentAddComponentPropertyListenerProcInfo = 0x0000FFF0, + uppCallComponentRemoveComponentPropertyListenerProcInfo = 0x0000FFF0 +}; + + + +/* == CallComponentGetComponentPropertyInfo flags == */ +enum { + kComponentPropertyFlagCanSetLater = (1L << 0), + kComponentPropertyFlagCanSetNow = (1L << 1), + kComponentPropertyFlagCanGetLater = (1L << 2), + kComponentPropertyFlagCanGetNow = (1L << 3), + kComponentPropertyFlagHasExtendedInfo = (1L << 4), + kComponentPropertyFlagValueMustBeReleased = (1L << 5), + kComponentPropertyFlagValueIsCFTypeRef = (1L << 6), + kComponentPropertyFlagGetBufferMustBeInitialized = (1L << 7), + kComponentPropertyFlagWillNotifyListeners = (1L << 8) +}; + + +typedef OSType ComponentPropertyClass; +typedef OSType ComponentPropertyID; +typedef OSType ComponentValueType; +typedef void * ComponentValuePtr; +typedef const void * ConstComponentValuePtr; + +/* == standard property class constants == */ +enum { + kComponentPropertyClassPropertyInfo = FOUR_CHAR_CODE('pnfo'), /* property info class */ + /* property info property IDs */ + kComponentPropertyInfoList = FOUR_CHAR_CODE('list'), /* array of ComponentPropertyInfo (CFData), one for each property */ + kComponentPropertyCacheSeed = FOUR_CHAR_CODE('seed'), /* property cache seed value */ + kComponentPropertyCacheFlags = FOUR_CHAR_CODE('flgs'), /* see kComponentPropertyCache flags */ + kComponentPropertyExtendedInfo = FOUR_CHAR_CODE('meta') /* CFDictionary with extended property information*/ +}; + + +/* values for kComponentPropertyClassPropertyInfo/kComponentPropertyCacheFlags standard component property */ +enum { + kComponentPropertyCacheFlagNotPersistent = (1L << 0), /* property metadata should not be saved in persistent cache*/ + kComponentPropertyCacheFlagIsDynamic = (1L << 1) /* property metadata should not cached at all*/ +}; + + +struct ComponentPropertyInfo { + ComponentPropertyClass propClass; + ComponentPropertyID propID; + ComponentValueType propType; + ByteCount propSize; + UInt32 propFlags; +}; +typedef struct ComponentPropertyInfo ComponentPropertyInfo; + + +#endif /* #MAC_OS_X_VERSION_10_3 <= MAC_OS_X_VERSION_MAX_ALLOWED */ + + + +/* == "QT" prefixed Component Property calls == */ + +typedef CALLBACK_API( void , QTComponentPropertyListenerProcPtr )(ComponentInstance inComponent, ComponentPropertyClass inPropClass, ComponentPropertyID inPropID, void *inUserData); +typedef STACK_UPP_TYPE(QTComponentPropertyListenerProcPtr) QTComponentPropertyListenerUPP; + + + + +/* + * QTGetComponentPropertyInfo() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +QTGetComponentPropertyInfo( + ComponentInstance inComponent, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ComponentValueType * outPropType, /* can be NULL */ + ByteCount * outPropValueSize, /* can be NULL */ + UInt32 * outPropertyFlags) /* can be NULL */ FIVEWORDINLINE(0x2F3C, 0x0014, 0xFFF5, 0x7000, 0xA82A); + + +/* + * QTGetComponentProperty() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +QTGetComponentProperty( + ComponentInstance inComponent, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ByteCount inPropValueSize, + ComponentValuePtr outPropValueAddress, + ByteCount * outPropValueSizeUsed) /* can be NULL */ FIVEWORDINLINE(0x2F3C, 0x0014, 0xFFF4, 0x7000, 0xA82A); + + +/* + * QTSetComponentProperty() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +QTSetComponentProperty( + ComponentInstance inComponent, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ByteCount inPropValueSize, + ConstComponentValuePtr inPropValueAddress) FIVEWORDINLINE(0x2F3C, 0x0010, 0xFFF3, 0x7000, 0xA82A); + + + +/* + * QTAddComponentPropertyListener() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +QTAddComponentPropertyListener( + ComponentInstance inComponent, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + QTComponentPropertyListenerUPP inDispatchProc, + void * inUserData) /* can be NULL */ FIVEWORDINLINE(0x2F3C, 0x0010, 0xFFF2, 0x7000, 0xA82A); + + +/* + * QTRemoveComponentPropertyListener() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API( ComponentResult ) +QTRemoveComponentPropertyListener( + ComponentInstance inComponent, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + QTComponentPropertyListenerUPP inDispatchProc, + void * inUserData) /* can be NULL */ FIVEWORDINLINE(0x2F3C, 0x0010, 0xFFF1, 0x7000, 0xA82A); + + + + +/* == "QT" prefixed Component Property Listener helpers == */ + + +typedef CFTypeRef QTComponentPropertyListenersRef; +typedef struct QTComponentPropertyListenerCollectionContext QTComponentPropertyListenerCollectionContext; +typedef CALLBACK_API( Boolean , QTComponentPropertyListenerFilterProcPtr )(QTComponentPropertyListenersRef inCollection, const QTComponentPropertyListenerCollectionContext *inCollectionContext, ComponentInstance inNotifier, ComponentPropertyClass inPropClass, ComponentPropertyID inPropID, QTComponentPropertyListenerUPP inListenerCallbackProc, const void *inListenerProcRefCon, const void *inFilterProcRefCon); +typedef STACK_UPP_TYPE(QTComponentPropertyListenerFilterProcPtr) QTComponentPropertyListenerFilterUPP; +#define kQTComponentPropertyListenerCollectionContextVersion 1 +struct QTComponentPropertyListenerCollectionContext { + UInt32 version; /* struct version */ + QTComponentPropertyListenerFilterUPP filterProcUPP; + void * filterProcData; +}; + +#if CALL_NOT_IN_CARBON +/* + * NewQTComponentPropertyListenerUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API_C( QTComponentPropertyListenerUPP ) +NewQTComponentPropertyListenerUPP(QTComponentPropertyListenerProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppQTComponentPropertyListenerProcInfo = 0x00003FC0 }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(QTComponentPropertyListenerUPP) NewQTComponentPropertyListenerUPP(QTComponentPropertyListenerProcPtr userRoutine) { return (QTComponentPropertyListenerUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTComponentPropertyListenerProcInfo, GetCurrentArchitecture()); } + #else + #define NewQTComponentPropertyListenerUPP(userRoutine) (QTComponentPropertyListenerUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTComponentPropertyListenerProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewQTComponentPropertyListenerFilterUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API_C( QTComponentPropertyListenerFilterUPP ) +NewQTComponentPropertyListenerFilterUPP(QTComponentPropertyListenerFilterProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppQTComponentPropertyListenerFilterProcInfo = 0x003FFFD0 }; /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(QTComponentPropertyListenerFilterUPP) NewQTComponentPropertyListenerFilterUPP(QTComponentPropertyListenerFilterProcPtr userRoutine) { return (QTComponentPropertyListenerFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTComponentPropertyListenerFilterProcInfo, GetCurrentArchitecture()); } + #else + #define NewQTComponentPropertyListenerFilterUPP(userRoutine) (QTComponentPropertyListenerFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTComponentPropertyListenerFilterProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * DisposeQTComponentPropertyListenerUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API_C( void ) +DisposeQTComponentPropertyListenerUPP(QTComponentPropertyListenerUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeQTComponentPropertyListenerUPP(QTComponentPropertyListenerUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeQTComponentPropertyListenerUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeQTComponentPropertyListenerFilterUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API_C( void ) +DisposeQTComponentPropertyListenerFilterUPP(QTComponentPropertyListenerFilterUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeQTComponentPropertyListenerFilterUPP(QTComponentPropertyListenerFilterUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeQTComponentPropertyListenerFilterUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * InvokeQTComponentPropertyListenerUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API_C( void ) +InvokeQTComponentPropertyListenerUPP( + ComponentInstance inComponent, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + void * inUserData, + QTComponentPropertyListenerUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) InvokeQTComponentPropertyListenerUPP(ComponentInstance inComponent, ComponentPropertyClass inPropClass, ComponentPropertyID inPropID, void * inUserData, QTComponentPropertyListenerUPP userUPP) { CALL_FOUR_PARAMETER_UPP(userUPP, uppQTComponentPropertyListenerProcInfo, inComponent, inPropClass, inPropID, inUserData); } + #else + #define InvokeQTComponentPropertyListenerUPP(inComponent, inPropClass, inPropID, inUserData, userUPP) CALL_FOUR_PARAMETER_UPP((userUPP), uppQTComponentPropertyListenerProcInfo, (inComponent), (inPropClass), (inPropID), (inUserData)) + #endif +#endif + +/* + * InvokeQTComponentPropertyListenerFilterUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API_C( Boolean ) +InvokeQTComponentPropertyListenerFilterUPP( + QTComponentPropertyListenersRef inCollection, + const QTComponentPropertyListenerCollectionContext * inCollectionContext, + ComponentInstance inNotifier, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + QTComponentPropertyListenerUPP inListenerCallbackProc, + const void * inListenerProcRefCon, + const void * inFilterProcRefCon, + QTComponentPropertyListenerFilterUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(Boolean) InvokeQTComponentPropertyListenerFilterUPP(QTComponentPropertyListenersRef inCollection, const QTComponentPropertyListenerCollectionContext * inCollectionContext, ComponentInstance inNotifier, ComponentPropertyClass inPropClass, ComponentPropertyID inPropID, QTComponentPropertyListenerUPP inListenerCallbackProc, const void * inListenerProcRefCon, const void * inFilterProcRefCon, QTComponentPropertyListenerFilterUPP userUPP) { return (Boolean)CALL_EIGHT_PARAMETER_UPP(userUPP, uppQTComponentPropertyListenerFilterProcInfo, inCollection, inCollectionContext, inNotifier, inPropClass, inPropID, inListenerCallbackProc, inListenerProcRefCon, inFilterProcRefCon); } + #else + #define InvokeQTComponentPropertyListenerFilterUPP(inCollection, inCollectionContext, inNotifier, inPropClass, inPropID, inListenerCallbackProc, inListenerProcRefCon, inFilterProcRefCon, userUPP) (Boolean)CALL_EIGHT_PARAMETER_UPP((userUPP), uppQTComponentPropertyListenerFilterProcInfo, (inCollection), (inCollectionContext), (inNotifier), (inPropClass), (inPropID), (inListenerCallbackProc), (inListenerProcRefCon), (inFilterProcRefCon)) + #endif +#endif + +#endif /* CALL_NOT_IN_CARBON */ + +#if CALL_NOT_IN_CARBON || OLDROUTINENAMES + /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ + #define NewQTComponentPropertyListenerProc(userRoutine) NewQTComponentPropertyListenerUPP(userRoutine) + #define NewQTComponentPropertyListenerFilterProc(userRoutine) NewQTComponentPropertyListenerFilterUPP(userRoutine) + #define CallQTComponentPropertyListenerProc(userRoutine, inComponent, inPropClass, inPropID, inUserData) InvokeQTComponentPropertyListenerUPP(inComponent, inPropClass, inPropID, inUserData, userRoutine) + #define CallQTComponentPropertyListenerFilterProc(userRoutine, inCollection, inCollectionContext, inNotifier, inPropClass, inPropID, inListenerCallbackProc, inListenerProcRefCon, inFilterProcRefCon) InvokeQTComponentPropertyListenerFilterUPP(inCollection, inCollectionContext, inNotifier, inPropClass, inPropID, inListenerCallbackProc, inListenerProcRefCon, inFilterProcRefCon, userRoutine) +#endif /* CALL_NOT_IN_CARBON */ + +/* + * QTComponentPropertyListenerCollectionCreate() + * + * Summary: + * Create a collection to use with the functions + * ComponentPropertyListenerCollectionAddListener, + * ComponentPropertyListenerCollectionRemoveListener, + * ComponentPropertyListenerCollectionNotifyListeners, + * ComponentPropertyListenerCollectionIsEmpty, and + * ComponentPropertyListenerCollectionHasListenersForProperty. + * + * Parameters: + * + * outCollection: + * Returns the new, empty, listener collection. + * + * inAllocator: + * Allocator used to create the collection and it's contents. + * + * inContext: + * The listener collection context. May be NULL. A copy of the + * contents of the structure is made, so a pointer to a structure + * on the stack can be passed. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API_C( OSStatus ) +QTComponentPropertyListenerCollectionCreate( + CFAllocatorRef inAllocator, /* can be NULL */ + const QTComponentPropertyListenerCollectionContext * inContext, /* can be NULL */ + QTComponentPropertyListenersRef * outCollection); + + + +/* + * QTComponentPropertyListenerCollectionAddListener() + * + * Summary: + * Add a listener callback for the specified property class and ID + * to a property listener collection. + * + * Parameters: + * + * inCollection: + * The property listener collection. + * + * inPropClass: + * The property class. + * + * inPropID: + * The property ID. + * + * inListenerProc: + * The property listener callback function. + * + * inListenerProcRefCon: + * The data parameter to pass to the listener callback function. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API_C( OSStatus ) +QTComponentPropertyListenerCollectionAddListener( + QTComponentPropertyListenersRef inCollection, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + QTComponentPropertyListenerUPP inListenerProc, + const void * inListenerProcRefCon); + + +/* + * QTComponentPropertyListenerCollectionRemoveListener() + * + * Summary: + * Remove a listener callback for the specified property class and + * ID from a property listener collection. + * + * Parameters: + * + * inCollection: + * The property listener collection. + * + * inPropClass: + * The property class. + * + * inPropID: + * The property ID. + * + * inListenerProc: + * The property listener callback function. + * + * inListenerProcRefCon: + * The data parameter to pass to the listener callback function. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API_C( OSStatus ) +QTComponentPropertyListenerCollectionRemoveListener( + QTComponentPropertyListenersRef inCollection, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + QTComponentPropertyListenerUPP inListenerProc, + const void * inListenerProcRefCon); + + +/* + * QTComponentPropertyListenerCollectionNotifyListeners() + * + * Summary: + * Call all listener callbacks in the collection registered for the + * specified property class and ID. + * + * Discussion: + * If the "filterProcUPP" in the collection's context is non-NULL, + * the filter function will be called before each registered + * listener that matches the specified property class and ID. If the + * filter function return false, the listener proc will not be + * called. This is intended to allow a component to change the + * calling semantics (call another thread, etc), to use a different + * listener callback signature, etc. + * + * Parameters: + * + * inCollection: + * The property listener collection. + * + * inNotifier: + * The calling ComponentInstance. + * + * inPropClass: + * The property class. + * + * inPropID: + * The property ID. + * + * inFilterProcRefCon: + * The data parameter to pass to the filter function. + * + * inFlags: + * Flags. Must be set to 0. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API_C( OSStatus ) +QTComponentPropertyListenerCollectionNotifyListeners( + QTComponentPropertyListenersRef inCollection, + ComponentInstance inNotifier, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + const void * inFilterProcRefCon, /* can be NULL */ + UInt32 inFlags); + + +/* + * QTComponentPropertyListenerCollectionIsEmpty() + * + * Summary: + * Return true if the listener collection is empty. + * + * Parameters: + * + * inCollection: + * The property listener collection. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API_C( Boolean ) +QTComponentPropertyListenerCollectionIsEmpty(QTComponentPropertyListenersRef inCollection); + + +/* + * QTComponentPropertyListenerCollectionHasListenersForProperty() + * + * Summary: + * Returns true if there are any listeners registered for the + * specified property class and ID. + * + * Parameters: + * + * inCollection: + * The property listener collection. + * + * inPropClass: + * The property class. + * + * inPropID: + * The property ID. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.3 (or QuickTime 6.4) and later + */ +EXTERN_API_C( Boolean ) +QTComponentPropertyListenerCollectionHasListenersForProperty( + QTComponentPropertyListenersRef inCollection, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID); + + +/* DRM properties*/ +enum { + kQTPropertyClass_DRM = FOUR_CHAR_CODE('drm ') +}; + +enum { + kQTDRMPropertyID_InteractWithUser = FOUR_CHAR_CODE('shui'), /* Boolean**/ + kQTDRMPropertyID_IsProtected = FOUR_CHAR_CODE('prot'), /* Boolean**/ + kQTDRMPropertyID_IsAuthorized = FOUR_CHAR_CODE('auth') /* Boolean**/ +}; + + + +/* UPP call backs */ + +/* selectors for component calls */ +enum { + kGraphicsImportSetDataReferenceSelect = 0x0001, + kGraphicsImportGetDataReferenceSelect = 0x0002, + kGraphicsImportSetDataFileSelect = 0x0003, + kGraphicsImportGetDataFileSelect = 0x0004, + kGraphicsImportSetDataHandleSelect = 0x0005, + kGraphicsImportGetDataHandleSelect = 0x0006, + kGraphicsImportGetImageDescriptionSelect = 0x0007, + kGraphicsImportGetDataOffsetAndSizeSelect = 0x0008, + kGraphicsImportReadDataSelect = 0x0009, + kGraphicsImportSetClipSelect = 0x000A, + kGraphicsImportGetClipSelect = 0x000B, + kGraphicsImportSetSourceRectSelect = 0x000C, + kGraphicsImportGetSourceRectSelect = 0x000D, + kGraphicsImportGetNaturalBoundsSelect = 0x000E, + kGraphicsImportDrawSelect = 0x000F, + kGraphicsImportSetGWorldSelect = 0x0010, + kGraphicsImportGetGWorldSelect = 0x0011, + kGraphicsImportSetMatrixSelect = 0x0012, + kGraphicsImportGetMatrixSelect = 0x0013, + kGraphicsImportSetBoundsRectSelect = 0x0014, + kGraphicsImportGetBoundsRectSelect = 0x0015, + kGraphicsImportSaveAsPictureSelect = 0x0016, + kGraphicsImportSetGraphicsModeSelect = 0x0017, + kGraphicsImportGetGraphicsModeSelect = 0x0018, + kGraphicsImportSetQualitySelect = 0x0019, + kGraphicsImportGetQualitySelect = 0x001A, + kGraphicsImportSaveAsQuickTimeImageFileSelect = 0x001B, + kGraphicsImportSetDataReferenceOffsetAndLimitSelect = 0x001C, + kGraphicsImportGetDataReferenceOffsetAndLimitSelect = 0x001D, + kGraphicsImportGetAliasedDataReferenceSelect = 0x001E, + kGraphicsImportValidateSelect = 0x001F, + kGraphicsImportGetMetaDataSelect = 0x0020, + kGraphicsImportGetMIMETypeListSelect = 0x0021, + kGraphicsImportDoesDrawAllPixelsSelect = 0x0022, + kGraphicsImportGetAsPictureSelect = 0x0023, + kGraphicsImportExportImageFileSelect = 0x0024, + kGraphicsImportGetExportImageTypeListSelect = 0x0025, + kGraphicsImportDoExportImageFileDialogSelect = 0x0026, + kGraphicsImportGetExportSettingsAsAtomContainerSelect = 0x0027, + kGraphicsImportSetExportSettingsFromAtomContainerSelect = 0x0028, + kGraphicsImportSetProgressProcSelect = 0x0029, + kGraphicsImportGetProgressProcSelect = 0x002A, + kGraphicsImportGetImageCountSelect = 0x002B, + kGraphicsImportSetImageIndexSelect = 0x002C, + kGraphicsImportGetImageIndexSelect = 0x002D, + kGraphicsImportGetDataOffsetAndSize64Select = 0x002E, + kGraphicsImportReadData64Select = 0x002F, + kGraphicsImportSetDataReferenceOffsetAndLimit64Select = 0x0030, + kGraphicsImportGetDataReferenceOffsetAndLimit64Select = 0x0031, + kGraphicsImportGetDefaultMatrixSelect = 0x0032, + kGraphicsImportGetDefaultClipSelect = 0x0033, + kGraphicsImportGetDefaultGraphicsModeSelect = 0x0034, + kGraphicsImportGetDefaultSourceRectSelect = 0x0035, + kGraphicsImportGetColorSyncProfileSelect = 0x0036, + kGraphicsImportSetDestRectSelect = 0x0037, + kGraphicsImportGetDestRectSelect = 0x0038, + kGraphicsImportSetFlagsSelect = 0x0039, + kGraphicsImportGetFlagsSelect = 0x003A, + kGraphicsImportGetBaseDataOffsetAndSize64Select = 0x003D, + kGraphicsImportSetImageIndexToThumbnailSelect = 0x003E, + kGraphicsImportCreateCGImageSelect = 0x003F, + kGraphicsImportSaveAsPictureToDataRefSelect = 0x0040, + kGraphicsImportSaveAsQuickTimeImageFileToDataRefSelect = 0x0041, + kGraphicsImportExportImageFileToDataRefSelect = 0x0042, + kGraphicsImportDoExportImageFileToDataRefDialogSelect = 0x0043, + kGraphicsImportSetOverrideSourceColorSyncProfileRefSelect = 0x0044, + kGraphicsImportGetOverrideSourceColorSyncProfileRefSelect = 0x0045, + kGraphicsImportSetDestinationColorSyncProfileRefSelect = 0x0046, + kGraphicsImportGetDestinationColorSyncProfileRefSelect = 0x0047, + kGraphicsImportWillUseColorMatchingSelect = 0x0048, + kGraphicsImportGetGenericColorSyncProfileSelect = 0x0049, + kGraphicsImportSetReturnGenericColorSyncProfileSelect = 0x004A, + kGraphicsImportGetReturnGenericColorSyncProfileSelect = 0x004B, + kGraphicsExportDoExportSelect = 0x0001, + kGraphicsExportCanTranscodeSelect = 0x0002, + kGraphicsExportDoTranscodeSelect = 0x0003, + kGraphicsExportCanUseCompressorSelect = 0x0004, + kGraphicsExportDoUseCompressorSelect = 0x0005, + kGraphicsExportDoStandaloneExportSelect = 0x0006, + kGraphicsExportGetDefaultFileTypeAndCreatorSelect = 0x0007, + kGraphicsExportGetDefaultFileNameExtensionSelect = 0x0008, + kGraphicsExportGetMIMETypeListSelect = 0x0009, + kGraphicsExportRequestSettingsSelect = 0x000B, + kGraphicsExportSetSettingsFromAtomContainerSelect = 0x000C, + kGraphicsExportGetSettingsAsAtomContainerSelect = 0x000D, + kGraphicsExportGetSettingsAsTextSelect = 0x000E, + kGraphicsExportSetDontRecompressSelect = 0x000F, + kGraphicsExportGetDontRecompressSelect = 0x0010, + kGraphicsExportSetInterlaceStyleSelect = 0x0011, + kGraphicsExportGetInterlaceStyleSelect = 0x0012, + kGraphicsExportSetMetaDataSelect = 0x0013, + kGraphicsExportGetMetaDataSelect = 0x0014, + kGraphicsExportSetTargetDataSizeSelect = 0x0015, + kGraphicsExportGetTargetDataSizeSelect = 0x0016, + kGraphicsExportSetCompressionMethodSelect = 0x0017, + kGraphicsExportGetCompressionMethodSelect = 0x0018, + kGraphicsExportSetCompressionQualitySelect = 0x0019, + kGraphicsExportGetCompressionQualitySelect = 0x001A, + kGraphicsExportSetResolutionSelect = 0x001B, + kGraphicsExportGetResolutionSelect = 0x001C, + kGraphicsExportSetDepthSelect = 0x001D, + kGraphicsExportGetDepthSelect = 0x001E, + kGraphicsExportSetColorSyncProfileSelect = 0x0021, + kGraphicsExportGetColorSyncProfileSelect = 0x0022, + kGraphicsExportSetProgressProcSelect = 0x0023, + kGraphicsExportGetProgressProcSelect = 0x0024, + kGraphicsExportSetInputDataReferenceSelect = 0x0025, + kGraphicsExportGetInputDataReferenceSelect = 0x0026, + kGraphicsExportSetInputFileSelect = 0x0027, + kGraphicsExportGetInputFileSelect = 0x0028, + kGraphicsExportSetInputHandleSelect = 0x0029, + kGraphicsExportGetInputHandleSelect = 0x002A, + kGraphicsExportSetInputPtrSelect = 0x002B, + kGraphicsExportGetInputPtrSelect = 0x002C, + kGraphicsExportSetInputGraphicsImporterSelect = 0x002D, + kGraphicsExportGetInputGraphicsImporterSelect = 0x002E, + kGraphicsExportSetInputPictureSelect = 0x002F, + kGraphicsExportGetInputPictureSelect = 0x0030, + kGraphicsExportSetInputGWorldSelect = 0x0031, + kGraphicsExportGetInputGWorldSelect = 0x0032, + kGraphicsExportSetInputPixmapSelect = 0x0033, + kGraphicsExportGetInputPixmapSelect = 0x0034, + kGraphicsExportSetInputOffsetAndLimitSelect = 0x0035, + kGraphicsExportGetInputOffsetAndLimitSelect = 0x0036, + kGraphicsExportMayExporterReadInputDataSelect = 0x0037, + kGraphicsExportGetInputDataSizeSelect = 0x0038, + kGraphicsExportReadInputDataSelect = 0x0039, + kGraphicsExportGetInputImageDescriptionSelect = 0x003A, + kGraphicsExportGetInputImageDimensionsSelect = 0x003B, + kGraphicsExportGetInputImageDepthSelect = 0x003C, + kGraphicsExportDrawInputImageSelect = 0x003D, + kGraphicsExportSetOutputDataReferenceSelect = 0x003E, + kGraphicsExportGetOutputDataReferenceSelect = 0x003F, + kGraphicsExportSetOutputFileSelect = 0x0040, + kGraphicsExportGetOutputFileSelect = 0x0041, + kGraphicsExportSetOutputHandleSelect = 0x0042, + kGraphicsExportGetOutputHandleSelect = 0x0043, + kGraphicsExportSetOutputOffsetAndMaxSizeSelect = 0x0044, + kGraphicsExportGetOutputOffsetAndMaxSizeSelect = 0x0045, + kGraphicsExportSetOutputFileTypeAndCreatorSelect = 0x0046, + kGraphicsExportGetOutputFileTypeAndCreatorSelect = 0x0047, + kGraphicsExportWriteOutputDataSelect = 0x0048, + kGraphicsExportSetOutputMarkSelect = 0x0049, + kGraphicsExportGetOutputMarkSelect = 0x004A, + kGraphicsExportReadOutputDataSelect = 0x004B, + kGraphicsExportSetThumbnailEnabledSelect = 0x004C, + kGraphicsExportGetThumbnailEnabledSelect = 0x004D, + kGraphicsExportSetExifEnabledSelect = 0x004E, + kGraphicsExportGetExifEnabledSelect = 0x004F, + kGraphicsExportSetInputCGImageSelect = 0x0050, + kGraphicsExportGetInputCGImageSelect = 0x0051, + kGraphicsExportSetInputCGBitmapContextSelect = 0x0052, + kGraphicsExportGetInputCGBitmapContextSelect = 0x0053, + kGraphicsExportSetFlagsSelect = 0x0054, + kGraphicsExportGetFlagsSelect = 0x0055, + kImageTranscoderBeginSequenceSelect = 0x0001, + kImageTranscoderConvertSelect = 0x0002, + kImageTranscoderDisposeDataSelect = 0x0003, + kImageTranscoderEndSequenceSelect = 0x0004, + kQTGetComponentPropertyInfoSelect = -11, + kQTGetComponentPropertySelect = -12, + kQTSetComponentPropertySelect = -13, + kQTAddComponentPropertyListenerSelect = -14, + kQTRemoveComponentPropertyListenerSelect = -15 +}; +/* Aperture modes */ + +/* + * Summary: + * Aperture modes + * + * Discussion: + * You can set the aperture mode property on a movie to indicate + * whether aspect ratio and clean aperture correction should be + * performed (kQTPropertyClass_Visual / + * kQTVisualPropertyID_ApertureMode). When a movie is in clean, + * production or encoded pixels aperture mode, each track's + * dimensions are overriden by special dimensions for that mode. The + * original track dimensions are preserved and can be restored by + * setting the movie into classic aperture mode. Aperture modes are + * not saved in movies. + * You can set the aperture mode property on a decompression session + * options object to indicate whether pixel buffers should be tagged + * to enable aspect ratio and clean aperture correction + * (kQTPropertyClass_ICMDecompressionSessionOptions / + * kICMDecompressionSessionOptionsPropertyID_ApertureMode). + */ +enum { + + /* + * An aperture mode which gives compatibility with behavior in + * QuickTime 7.0.x and earlier. + * A movie in classic aperture mode uses track dimensions as set in + * NewMovieTrack and SetTrackDimensions. + * A decompression session in classic aperture mode does not set the + * clean aperture or pixel aspect ratio attachments on emitted pixel + * buffers. + * Movies default to classic aperture mode. If you call + * SetTrackDimensions on a track, the movie is automatically switched + * into classic aperture mode. + */ + kQTApertureMode_Classic = FOUR_CHAR_CODE('clas'), + + /* + * An aperture mode for general display. + * Where possible, video will be displayed at the correct pixel + * aspect ratio, trimmed to the clean aperture. A movie in clean + * aperture mode sets each track's dimensions to match its + * kQTVisualPropertyID_CleanApertureDimensions. + * A decompression session in clean aperture mode sets the clean + * aperture and pixel aspect ratio attachments on emitted pixel + * buffers based on the image description. + */ + kQTApertureMode_CleanAperture = FOUR_CHAR_CODE('clea'), + + /* + * An aperture mode for modal use in authoring applications. + * Where possible, video will be displayed at the correct pixel + * aspect ratio, but without trimming to the clean aperture so that + * the edge processing region can be viewed. A movie in production + * aperture mode sets each track's dimensions to match its + * kQTVisualPropertyID_ProductionApertureDimensions. + * A decompression session in production aperture mode sets the pixel + * aspect ratio attachments on emitted pixel buffers based on the + * image description. + */ + kQTApertureMode_ProductionAperture = FOUR_CHAR_CODE('prod'), + + /* + * An aperture mode for technical use. + * Displays all encoded pixels with no aspect ratio or clean aperture + * compensation. A movie in encoded pixels aperture mode sets each + * track's dimensions to match its + * kQTVisualPropertyID_EncodedPixelsDimensions. + * A decompression session in encoded pixels aperture mode does not + * set the clean aperture or pixel aspect ratio attachments on + * emitted pixel buffers. + */ + kQTApertureMode_EncodedPixels = FOUR_CHAR_CODE('enco') +}; + +/* Property interface for Image Descriptions */ + +/* + * Summary: + * Properties of image descriptions. + */ +enum { + + /* + * Class identifier for image description properties. + */ + kQTPropertyClass_ImageDescription = FOUR_CHAR_CODE('idsc'), + + /* + * The width of the encoded image. Usually, but not always, this is + * the ImageDescription's width field. + */ + kICMImageDescriptionPropertyID_EncodedWidth = FOUR_CHAR_CODE('encw'), /* SInt32, Read/Write */ + + /* + * The height of the encoded image. Usually, but not always, this is + * the ImageDescription's height field. + */ + kICMImageDescriptionPropertyID_EncodedHeight = FOUR_CHAR_CODE('ench'), /* SInt32, Read/Write */ + + /* + * Describes the clean aperture of the buffer. If not specified + * explicitly in the image description, the default clean aperture + * (full encoded width and height) will be returned. + */ + kICMImageDescriptionPropertyID_CleanAperture = FOUR_CHAR_CODE('clap'), /* Native-endian CleanApertureImageDescriptionExtension, Read/Write */ + + /* + * Describes the pixel aspect ratio. If not specified explicitly in + * the image description, a square (1:1) pixel aspect ratio will be + * returned. + */ + kICMImageDescriptionPropertyID_PixelAspectRatio = FOUR_CHAR_CODE('pasp'), /* Native-endian PixelAspectRatioImageDescriptionExtension, Read/Write */ + + /* + * Dimensions at which the image could be displayed on a square-pixel + * display, generally calculated using the clean aperture and pixel + * aspect ratio. + * Note that this value is returned as a FixedPoint; the width and + * height can also be read separately as rounded SInt32s via + * kICMImageDescriptionPropertyID_CleanApertureDisplayWidth and + * kICMImageDescriptionPropertyID_CleanApertureDisplayHeight. + */ + kICMImageDescriptionPropertyID_CleanApertureDisplayDimensions = FOUR_CHAR_CODE('cadi'), /* FixedPoint, Read */ + + /* + * Dimensions at which the image could be displayed on a square-pixel + * display, disregarding any clean aperture but honoring the pixel + * aspect ratio. This may be useful for authoring applications that + * want to expose the edge processing region. For general viewing, + * use kICMImageDescriptionPropertyID_CleanApertureDimensions + * instead. + * Note that this value is returned as a FixedPoint; the width and + * height can also be read separately as rounded SInt32s via + * kICMImageDescriptionPropertyID_ProductionApertureDisplayWidth and + * kICMImageDescriptionPropertyID_ProductionApertureDisplayHeight. + */ + kICMImageDescriptionPropertyID_ProductionApertureDisplayDimensions = FOUR_CHAR_CODE('prdi'), /* FixedPoint, Read */ + + /* + * Dimensions of the encoded image. + * Note that this value is returned as a FixedPoint for convenience; + * the width and height can also be read separately as SInt32s via + * kICMImageDescriptionPropertyID_EncodedWidth and + * kICMImageDescriptionPropertyID_EncodedHeight. + */ + kICMImageDescriptionPropertyID_EncodedPixelsDimensions = FOUR_CHAR_CODE('endi'), /* FixedPoint, Read */ + + /* + * A width at which the image could be displayed on a square-pixel + * display, possibly calculated using the clean aperture and pixel + * aspect ratio. + */ + kICMImageDescriptionPropertyID_CleanApertureDisplayWidth = FOUR_CHAR_CODE('disw'), /* SInt32, Read */ + + /* + * A height at which the image could be displayed on a square-pixel + * display, possibly calculated using the clean aperture and pixel + * aspect ratio. + */ + kICMImageDescriptionPropertyID_CleanApertureDisplayHeight = FOUR_CHAR_CODE('dish'), /* SInt32, Read */ + + /* + * A width at which the image could be displayed on a square-pixel + * display, disregarding any clean aperture but honoring the pixel + * aspect ratio. This may be useful for authoring applications that + * want to expose the edge processing region. For general viewing, + * use kICMImageDescriptionPropertyID_CleanApertureDisplayWidth + * instead. + */ + kICMImageDescriptionPropertyID_ProductionApertureDisplayWidth = FOUR_CHAR_CODE('pdsw'), /* SInt32, Read */ + + /* + * A height at which the image could be displayed on a square-pixel + * display, disregarding any clean aperture but honoring the pixel + * aspect ratio. This may be useful for authoring applications that + * want to expose the edge processing region. For general viewing, + * use kICMImageDescriptionPropertyID_CleanApertureDisplayHeight + * instead. + */ + kICMImageDescriptionPropertyID_ProductionApertureDisplayHeight = FOUR_CHAR_CODE('pdsh'), /* SInt32, Read */ + + /* + * Synonym for + * kICMImageDescriptionPropertyID_CleanApertureDisplayWidth. + */ + kICMImageDescriptionPropertyID_DisplayWidth = FOUR_CHAR_CODE('disw'), /* SInt32, Read */ + + /* + * Synonym for + * kICMImageDescriptionPropertyID_CleanApertureDisplayHeight. + */ + kICMImageDescriptionPropertyID_DisplayHeight = FOUR_CHAR_CODE('dish'), /* SInt32, Read */ + + /* + * Synonym for + * kICMImageDescriptionPropertyID_ProductionApertureDisplayWidth. + */ + kICMImageDescriptionPropertyID_ProductionDisplayWidth = FOUR_CHAR_CODE('pdsw'), /* SInt32, Read */ + + /* + * Synonym for + * kICMImageDescriptionPropertyID_ProductionApertureDisplayHeight. + */ + kICMImageDescriptionPropertyID_ProductionDisplayHeight = FOUR_CHAR_CODE('pdsh'), /* SInt32, Read */ + + /* + * Color information, if available in the + * NCLCColorInfoImageDescriptionExtension format. + */ + kICMImageDescriptionPropertyID_NCLCColorInfo = FOUR_CHAR_CODE('nclc'), /* Native-endian NCLCColorInfoImageDescriptionExtension, Read/Write */ + + /* + * A CGColorSpaceRef for the colorspace described by the image + * description, constructed from video color info or ICC Profile. + * IMPORTANT NOTE: The YCbCr matrix from the video color info is not + * represented in the CGColorSpaceRef. The caller of GetProperty is + * responsible for releasing this, eg, by calling + * CGColorSpaceRelease. Only supported on Mac OS X. + */ + kICMImageDescriptionPropertyID_CGColorSpace = FOUR_CHAR_CODE('cgcs'), /* CGColorSpaceRef, Read -- caller of GetProperty must call CGColorSpaceRelease */ + + /* + * A CFDataRef containing the serialized ICC profile described by the + * image description. The caller of GetProperty is responsible for + * releasing this, eg, by calling CFRelease. + */ + kICMImageDescriptionPropertyID_ICCProfile = FOUR_CHAR_CODE('iccp'), /* CFDataRef, Read/Write -- caller of GetProperty must call CFRelease */ + + /* + * The gamma level described by the image description. + */ + kICMImageDescriptionPropertyID_GammaLevel = FOUR_CHAR_CODE('gama'), /* Fixed, Read/Write */ + + /* + * Information about the number and order of fields, if available. + */ + kICMImageDescriptionPropertyID_FieldInfo = FOUR_CHAR_CODE('fiel'), /* FieldInfoImageDescriptionExtension2, Read/Write */ + + /* + * The offset in bytes from the start of one row to the next. Only + * valid if the codec type is a chunky pixel format. + */ + kICMImageDescriptionPropertyID_RowBytes = FOUR_CHAR_CODE('rowb'), /* SInt32, Read/Write */ + + /* + * A track width suitable for passing to NewMovieTrack when creating + * a new track to hold this image data. + */ + kICMImageDescriptionPropertyID_ClassicTrackWidth = FOUR_CHAR_CODE('claw'), /* Fixed, Read */ + + /* + * A track height suitable for passing to NewMovieTrack when creating + * a new track to hold this image data. + */ + kICMImageDescriptionPropertyID_ClassicTrackHeight = FOUR_CHAR_CODE('clah'), /* Fixed, Read */ + + /* + * Defines a duration for quantizing time. This is applicable for + * cases where a single media sample generates visual output that + * varies continuously through its duration. By interpreting this + * property, such a sample may be considered to have internal "step + * points" at multiples of the stepping duration. This can be used to + * throttle frame generation during playback, and when stepping using + * InterestingTime APIs. Setting a step duration with value zero + * removes any current step duration. + */ + kICMImageDescriptionPropertyID_StepDuration = FOUR_CHAR_CODE('step'), /* TimeRecord (base ignored), Read/Write */ + + /* + * The clean aperture as a FixedRect in source coordinates, within + * the rectangle defined by the image description width and height, + * suitable for use as a source rectangle in a decompression + * sequence. + * For historical reasons, the DVCPROHD codecs store the production + * aperture display dimensions in the image description width and + * height; the actual encoded dimensions are smaller. For DVCPROHD, + * the clip rect will be relative to the image description width and + * height, not the encoded dimensions. + */ + kICMImageDescriptionPropertyID_CleanApertureClipRect = FOUR_CHAR_CODE('cacr'), /* FixedRect, Read */ + + /* + * A matrix transforming the clean aperture clip rect to the origin, + * scaled to the clean aperture display dimensions. + * For historical reasons, the DVCPROHD codecs store the production + * aperture display dimensions in the image description width and + * height; the actual encoded dimensions are smaller. For DVCPROHD, + * the matrix will be relative to the image description width and + * height, not the encoded dimensions. + */ + kICMImageDescriptionPropertyID_CleanApertureMatrix = FOUR_CHAR_CODE('camx'), /* MatrixRecord, Read */ + + /* + * A matrix transforming the image to the origin, scaled to the + * production aperture display dimensions. + * For historical reasons, the DVCPROHD codecs store the production + * aperture display dimensions in the image description width and + * height; the actual encoded dimensions are smaller. For DVCPROHD, + * the matrix will be relative to the image description width and + * height, not the encoded dimensions. + */ + kICMImageDescriptionPropertyID_ProductionApertureMatrix = FOUR_CHAR_CODE('pamx'), /* MatrixRecord, Read */ + + /* + * A localized, human readable string summarizing the image as a + * CFString, ie: "Apple DV, 720 x 480 (640 x 480), Millions". + * The elements are: the codec name, the encoded pixels dimensions, + * then parenthetically the clean aperture mode dimensions, but only + * if they are different from the encoded pixels dimensions; then the + * depth. + * The codec name shall be from the localized decompressor component + * name string if exactly one decompressor with the correct cType is + * available; otherwise the string in the image description shall be + * used. The caller of GetProperty is responsible for releasing this + * CFString, eg, by calling CFRelease. + */ + kICMImageDescriptionPropertyID_SummaryString = FOUR_CHAR_CODE('isum') /* CFStringRef, Read - caller of GetProperty must call CFRelease*/ +}; + +/* + * ICMImageDescriptionGetPropertyInfo() + * + * Summary: + * Gets info about a particular property of a ImageDescription. + * + * Parameters: + * + * inDesc: + * ImageDescriptionHandle being interrogated + * + * inPropClass: + * The class of property being requested + * + * inPropID: + * The ID of the property being requested + * + * outPropType: + * The type of property is returned here (can be NULL) + * + * outPropValueSize: + * The size of property is returned here (can be NULL) + * + * outPropertyFlags: + * The property flags are returned here (can be NULL) + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMImageDescriptionGetPropertyInfo( + ImageDescriptionHandle inDesc, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ComponentValueType * outPropType, /* can be NULL */ + ByteCount * outPropValueSize, /* can be NULL */ + UInt32 * outPropertyFlags); /* can be NULL */ + + +/* + * ICMImageDescriptionGetProperty() + * + * Summary: + * Gets a particular property of a ImageDescriptionHandle. + * + * Parameters: + * + * inDesc: + * ImageDescriptionHandle being interrogated + * + * inPropClass: + * The class of property being requested + * + * inPropID: + * The ID of the property being requested + * + * inPropValueSize: + * The size of the property value buffer + * + * outPropValueAddress: + * Points to the buffer to receive the property value + * + * outPropValueSizeUsed: + * Points to a variable to receive the actual size of returned + * property value (can be NULL) + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMImageDescriptionGetProperty( + ImageDescriptionHandle inDesc, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ByteCount inPropValueSize, + ComponentValuePtr outPropValueAddress, + ByteCount * outPropValueSizeUsed); /* can be NULL */ + + +/* + * ICMImageDescriptionSetProperty() + * + * Summary: + * Sets a particular property of a ImageDescriptionHandle. + * + * Parameters: + * + * inDesc: + * ImageDescriptionHandle being modified + * + * inPropClass: + * The class of property being set + * + * inPropID: + * The ID of the property being set + * + * inPropValueSize: + * The size of property value + * + * inPropValueAddress: + * Points to the property value buffer + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMImageDescriptionSetProperty( + ImageDescriptionHandle inDesc, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ByteCount inPropValueSize, + ConstComponentValuePtr inPropValueAddress); + + + + +/* + * ICMValidTimeFlags + * + * Summary: + * Flags to describe which time values are valid. + */ +typedef UInt32 ICMValidTimeFlags; +enum { + + /* + * Indicates that a display time stamp is valid. + */ + kICMValidTime_DisplayTimeStampIsValid = 1L << 0, + + /* + * Indicates that a display duration is valid. + */ + kICMValidTime_DisplayDurationIsValid = 1L << 1, + + /* + * Indicates that a decode time stamp is valid. + */ + kICMValidTime_DecodeTimeStampIsValid = 1L << 2, + + /* + * Indicates that a decode duration is valid. + */ + kICMValidTime_DecodeDurationIsValid = 1L << 3, + + /* + * Indicates that a display offset (the offset from a decode time + * stamp to a display time stamp) is valid. + */ + kICMValidTime_DisplayOffsetIsValid = 1L << 4 +}; + + +/* + * ICMDecompressionSessionRef + * + * Summary: + * Represents a decompression session that emits CVPixelBufferRefs + * containing frames, tagged with display times. + * + * Discussion: + * ICMDecompressionSession does not support source extraction, + * matrix transformations, graphics transfer modes, region-based + * clipping or data-loading procedures. Note that the pixel buffers + * may be output out of display order, provided that the client opts + * in. + */ +typedef struct OpaqueICMDecompressionSession* ICMDecompressionSessionRef; + +/* + * QTVisualContextRef + * + * Summary: + * Represents a destination visual rendering environment. + * + * Discussion: + * The QTVisualContextRef type encapsulates a connection to a + * generic visual destination. A single visual context object may + * not be associated with more than one movie at a time. + */ +typedef struct OpaqueQTVisualContext* QTVisualContextRef; + +/* + * ICMDecompressionSessionOptionsRef + * + * Summary: + * Holds options for a decompression session. + */ +typedef struct OpaqueICMDecompressionSessionOptions* ICMDecompressionSessionOptionsRef; + +/* + * ICMDecompressionFrameOptionsRef + * + * Summary: + * Holds options for decompressing an individual frame. + */ +typedef struct OpaqueICMDecompressionFrameOptions* ICMDecompressionFrameOptionsRef; + +/* + * ICMDecompressionTrackingFlags + * + * Summary: + * Describes changes in state of a frame queued with an ICM + * decompression session. + */ +typedef UInt32 ICMDecompressionTrackingFlags; +enum { + + /* + * Indicates that this is the last call for this sourceFrameRefCon. + */ + kICMDecompressionTracking_LastCall = 1L << 0, + + /* + * Indicates that the session no longer needs the source data pointer. + */ + kICMDecompressionTracking_ReleaseSourceData = 1L << 1, + + /* + * Indicates that a frame is being emitted. The pixelBuffer parameter + * contains the decompressed frame. If the decompression session is + * targetting a visual context, the frame has not yet been sent to + * the visual context but will be after the callback returns. + */ + kICMDecompressionTracking_EmittingFrame = 1L << 2, + + /* + * Indicates that this frame was decoded. + */ + kICMDecompressionTracking_FrameDecoded = 1L << 3, + + /* + * Indicates that the codec decided to drop this frame. + */ + kICMDecompressionTracking_FrameDropped = 1L << 4, + + /* + * Indicates that this frame will not be able to be displayed unless + * it is queued for redecode (also known as FrameNotDisplayable). + */ + kICMDecompressionTracking_FrameNeedsRequeueing = 1L << 5 +}; + + +/* + * ICMDecompressionTrackingCallback + * + * Summary: + * The callback through which a client of an ICM decompression + * session receives decoded frames and information about decoding. + * + * Discussion: + * The client may retain the emitted pixel buffers as long as it + * needs; they will not be reused before the client releases them. + * + * Parameters: + * + * decompressionTrackingRefCon: + * The callback's reference value, copied from the + * decompressionTrackingRefCon field of the + * ICMDecompressionTrackingCallbackRecord structure. + * + * result: + * Indicates whether there was an error in decompression. + * + * decompressionTrackingFlags: + * One or more flags describing the a frame's state transitions. + * + * pixelBuffer: + * When the kICMDecompressionTracking_EmittingFrame flag is set in + * decompressionTrackingFlags, a pixel buffer containing the + * decompressed frame. Otherwise, NULL. + * + * displayTime: + * If kICMValidTime_DisplayTimeStampIsValid is set in + * validTimeFlags, the display time of the frame. + * + * displayDuration: + * If kICMValidTime_DisplayDurationIsValid is set in + * validTimeFlags, the display duration of the frame. + * + * validTimeFlags: + * Indicates which of displayTime and displayDuration is valid. + * + * reserved: + * Reserved for future use. Ignore the value of this parameter. + * + * sourceFrameRefCon: + * The frame's reference value, copied from the sourceFrameRefCon + * parameter to ICMDecompressionSessionDecodeFrame. + */ +typedef CALLBACK_API_C( void , ICMDecompressionTrackingCallback )(void *decompressionTrackingRefCon, OSStatus result, ICMDecompressionTrackingFlags decompressionTrackingFlags, CVPixelBufferRef pixelBuffer, TimeValue64 displayTime, TimeValue64 displayDuration, ICMValidTimeFlags validTimeFlags, void *reserved, void *sourceFrameRefCon); + +/* + * ICMDecompressionTrackingCallbackRecord + * + * Summary: + * A tracking callback for an ICM decompression session. + */ +struct ICMDecompressionTrackingCallbackRecord { + + /* + * The callback function pointer. + */ + ICMDecompressionTrackingCallback decompressionTrackingCallback; + + /* + * The callback's reference value. + */ + void * decompressionTrackingRefCon; +}; +typedef struct ICMDecompressionTrackingCallbackRecord ICMDecompressionTrackingCallbackRecord; +/* + * ICMDecompressionSessionCreate() + * + * Summary: + * Creates a session for decompressing video frames. + * + * Discussion: + * Frames will be output through calls to trackingCallback. + * + * Parameters: + * + * allocator: + * An allocator for the session. Pass NULL to use the default + * allocator. + * + * desc: + * An image description for the source frames. + * + * decompressionOptions: + * Options for the session. The session will retain this options + * object. You may change some options during the session by + * modifying the object. + * + * destinationPixelBufferAttributes: + * Describes requirements for emitted pixel buffers. + * + * trackingCallback: + * The callback to be called with information about queued frames, + * and pixel buffers containing the decompressed frames. + * + * decompressionSessionOut: + * Points to a variable to receive the new decompression session. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionSessionCreate( + CFAllocatorRef allocator, /* can be NULL */ + ImageDescriptionHandle desc, + ICMDecompressionSessionOptionsRef decompressionOptions, /* can be NULL */ + CFDictionaryRef destinationPixelBufferAttributes, /* can be NULL */ + ICMDecompressionTrackingCallbackRecord * trackingCallback, + ICMDecompressionSessionRef * decompressionSessionOut); + + +/* + * ICMDecompressionSessionCreateForVisualContext() + * + * Summary: + * Creates a session for decompressing video frames. + * + * Discussion: + * Frames will be output to a visual context. If desired, the + * trackingCallback may attach additional data to pixel buffers + * before they are sent to the visual context. + * + * Parameters: + * + * allocator: + * An allocator for the session. Pass NULL to use the default + * allocator. + * + * desc: + * An image description for the source frames. + * + * decompressionOptions: + * Options for the session. The session will retain this options + * object. You may change some options during the session by + * modifying the object. + * + * visualContext: + * The target visual context. + * + * trackingCallback: + * The callback to be called with information about queued frames, + * and pixel buffers containing the decompressed frames. + * + * decompressionSessionOut: + * Points to a variable to receive the new decompression session. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionSessionCreateForVisualContext( + CFAllocatorRef allocator, /* can be NULL */ + ImageDescriptionHandle desc, + ICMDecompressionSessionOptionsRef decompressionOptions, /* can be NULL */ + QTVisualContextRef visualContext, + ICMDecompressionTrackingCallbackRecord * trackingCallback, + ICMDecompressionSessionRef * decompressionSessionOut); + + +/* + * ICMDecompressionSessionRetain() + * + * Summary: + * Increments the retain count of a decompression session. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( ICMDecompressionSessionRef ) +ICMDecompressionSessionRetain(ICMDecompressionSessionRef session); + + +/* + * ICMDecompressionSessionRelease() + * + * Summary: + * Decrements the retain count of a decompression session. If it + * drops to zero, the session is disposed. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( void ) +ICMDecompressionSessionRelease(ICMDecompressionSessionRef session); + + +/* + * ICMDecompressionSessionGetTypeID() + * + * Summary: + * Returns the CFTypeID for decompression sessions. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( CFTypeID ) +ICMDecompressionSessionGetTypeID(void); + + +/* + * ICMDecompressionSessionDecodeFrame() + * + * Summary: + * Queues a frame for decompression. + * + * Parameters: + * + * session: + * The decompression session. + * + * data: + * Points to the compressed data for this frame. The data must + * remain in this location until the tracking callback is called + * with the kICMDecompressionTracking_ReleaseSourceData flag set + * in decompressionTrackingFlags. + * + * dataSize: + * The number of bytes of compressed data. You may not pass zero + * in this parameter. + * + * frameOptions: + * Options for this frame. + * + * frameTime: + * Points to a structure describing the frame's timing information. + * + * sourceFrameRefCon: + * Your reference value for the frame. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionSessionDecodeFrame( + ICMDecompressionSessionRef session, + const UInt8 * data, + ByteCount dataSize, + ICMDecompressionFrameOptionsRef frameOptions, /* can be NULL */ + const ICMFrameTimeRecord * frameTime, + void * sourceFrameRefCon); + + +/* + * ICMDecompressionSessionGetPropertyInfo() + * + * Summary: + * Retrieves information about properties of a decompression session. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionSessionGetPropertyInfo( + ICMDecompressionSessionRef session, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ComponentValueType * outPropType, /* can be NULL */ + ByteCount * outPropValueSize, /* can be NULL */ + UInt32 * outPropertyFlags); /* can be NULL */ + + +/* + * ICMDecompressionSessionGetProperty() + * + * Summary: + * Retrieves the value of a specific property of a decompression + * session. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionSessionGetProperty( + ICMDecompressionSessionRef session, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ByteCount inPropValueSize, + ComponentValuePtr outPropValueAddress, + ByteCount * outPropValueSizeUsed); /* can be NULL */ + + +/* + * ICMDecompressionSessionSetProperty() + * + * Summary: + * Sets the value of a specific property of a decompression session. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionSessionSetProperty( + ICMDecompressionSessionRef session, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ByteCount inPropValueSize, + ConstComponentValuePtr inPropValueAddress); + + + +/* + * ICMNonScheduledDisplayTime + * + * Discussion: + * The display time for a decompression session. + */ +struct ICMNonScheduledDisplayTime { + + /* + * A display time. Usually this is the display time of a + * non-scheduled queued frame. + */ + TimeValue64 displayTime; + + /* + * The timescale according to which displayTime should be interpreted. + */ + TimeScale displayTimeScale; + + /* + * Reserved, set to zero. + */ + UInt32 flags; +}; +typedef struct ICMNonScheduledDisplayTime ICMNonScheduledDisplayTime; + +/* + * Summary: + * Properties of decompression sessions. + */ +enum { + + /* + * Class identifier for decompression session properties. + */ + kQTPropertyClass_ICMDecompressionSession = FOUR_CHAR_CODE('icds'), + + /* + * The non-scheduled display time for a decompression session. + * Setting this requests display of the non-scheduled queued frame at + * that display time, if there is one. + * See ICMDecompressionSessionSetNonScheduledDisplayTime. + */ + kICMDecompressionSessionPropertyID_NonScheduledDisplayTime = FOUR_CHAR_CODE('nsti'), /* ICMNonScheduledDisplayTime, Read/Write */ + + /* + * The direction for non-scheduled display time. + * See ICMDecompressionSessionSetNonScheduledDisplayDirection. + */ + kICMDecompressionSessionPropertyID_NonScheduledDisplayDirection = FOUR_CHAR_CODE('nsdu'), /* Fixed, Read/Write */ + + /* + * The pixel buffer pool from which emitted pixel buffers are + * allocated. Getting this does not change the retain count of the + * pool. + */ + kICMDecompressionSessionPropertyID_PixelBufferPool = FOUR_CHAR_CODE('pool'), /* CVPixelBufferPoolRef, Read */ + + /* + * Indicates whether the a common pixel buffer pool is shared between + * the decompressor and the session client. This is false if separate + * pools are used because the decompressor's and the client's pixel + * buffer attributes were incompatible. + */ + kICMDecompressionSessionPropertyID_PixelBufferPoolIsShared = FOUR_CHAR_CODE('plsh') /* Boolean, Read */ +}; + +/* + * ICMDecompressionSessionSetNonScheduledDisplayTime() + * + * Summary: + * Sets the display time for a decompression session, and requests + * display of the non-scheduled queued frame at that display time, + * if there is one. + * + * Discussion: + * Call ICMDecompressionSessionSetNonScheduledDisplayTime after + * queueing non-scheduled frames with + * ICMDecompressionSessionDecodeFrame with the + * icmFrameTimeIsNonScheduledDisplayTime flag set to request display + * of the frame at a particular display time. + * If there is no queued non-scheduled frame with this display time, + * the frame with the next earlier display time is displayed. (Which + * of two display times is earlier is determined using the + * non-scheduled display time direction, which you can set with + * ICMDecompressionSessionSetNonScheduledDisplayDirection.) If there + * is no such frame, nothing happens. + * This has no effect if frames are scheduled against a timebase. + * + * Parameters: + * + * session: + * The decompression session. + * + * displayTime: + * A display time. Usually this is the display time of a + * non-scheduled queued frame. + * + * displayTimeScale: + * The timescale according to which displayTime should be + * interpreted. + * + * flags: + * Reserved, set to zero. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionSessionSetNonScheduledDisplayTime( + ICMDecompressionSessionRef session, + TimeValue64 displayTime, + TimeScale displayTimeScale, + UInt32 flags); + + +/* + * ICMDecompressionSessionSetNonScheduledDisplayDirection() + * + * Summary: + * Sets the direction for non-scheduled display time. + * + * Discussion: + * If rate is zero or positive, direction is forwards. If negative, + * direction is backwards. + * Any frames queued under the opposite direction will be flushed. + * + * The non-scheduled display direction defaults to forwards (rate + * 1.0). + * + * Parameters: + * + * session: + * The decompression session. + * + * rate: + * Indicates the direction. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionSessionSetNonScheduledDisplayDirection( + ICMDecompressionSessionRef session, + Fixed rate); + + +/* + * ICMDecompressionSessionFlush() + * + * Summary: + * Flushes frames queued with a decompression session. + * + * Discussion: + * The tracking callback will be called for each frame with the + * result -1. + * + * Parameters: + * + * session: + * The decompression session. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionSessionFlush(ICMDecompressionSessionRef session); + + + + +/* + * ICMDecompressionSessionOptionsCreate() + * + * Summary: + * Creates a decompression session options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionSessionOptionsCreate( + CFAllocatorRef allocator, /* can be NULL */ + ICMDecompressionSessionOptionsRef * options); + + +/* + * ICMDecompressionSessionOptionsCreateCopy() + * + * Summary: + * Copies a decompression session options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionSessionOptionsCreateCopy( + CFAllocatorRef allocator, /* can be NULL */ + ICMDecompressionSessionOptionsRef originalOptions, + ICMDecompressionSessionOptionsRef * copiedOptions); + + +/* + * ICMDecompressionSessionOptionsRetain() + * + * Summary: + * Increments the retain count of a decompression session options + * object. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( ICMDecompressionSessionOptionsRef ) +ICMDecompressionSessionOptionsRetain(ICMDecompressionSessionOptionsRef options); + + +/* + * ICMDecompressionSessionOptionsRelease() + * + * Summary: + * Decrements the retain count of a decompression session options + * object. If it drops to zero, the object is disposed. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( void ) +ICMDecompressionSessionOptionsRelease(ICMDecompressionSessionOptionsRef options); + + +/* + * ICMDecompressionSessionOptionsGetTypeID() + * + * Summary: + * Returns the CFTypeID for decompression session options objects. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( CFTypeID ) +ICMDecompressionSessionOptionsGetTypeID(void); + + +/* + * ICMDecompressionSessionOptionsGetPropertyInfo() + * + * Summary: + * Retrieves information about properties of a decompression session + * options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionSessionOptionsGetPropertyInfo( + ICMDecompressionSessionOptionsRef options, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ComponentValueType * outPropType, /* can be NULL */ + ByteCount * outPropValueSize, /* can be NULL */ + UInt32 * outPropertyFlags); /* can be NULL */ + + +/* + * ICMDecompressionSessionOptionsGetProperty() + * + * Summary: + * Retrieves the value of a specific property of a decompression + * session options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionSessionOptionsGetProperty( + ICMDecompressionSessionOptionsRef options, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ByteCount inPropValueSize, + ComponentValuePtr outPropValueAddress, + ByteCount * outPropValueSizeUsed); /* can be NULL */ + + +/* + * ICMDecompressionSessionOptionsSetProperty() + * + * Summary: + * Sets the value of a specific property of a decompression session + * options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionSessionOptionsSetProperty( + ICMDecompressionSessionOptionsRef options, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ByteCount inPropValueSize, + ConstComponentValuePtr inPropValueAddress); + + + +/* + * Summary: + * Properties of decompression session options objects. + */ +enum { + + /* + * Class identifier for decompression session options object + * properties. + */ + kQTPropertyClass_ICMDecompressionSessionOptions = FOUR_CHAR_CODE('idso'), + + /* + * By default, this is true, meaning that frames must be output in + * display order. Set this to false to allow frames to be output in + * decode order rather than in display order. + */ + kICMDecompressionSessionOptionsPropertyID_DisplayOrderRequired = FOUR_CHAR_CODE('dorq'), /* Boolean, Read/Write */ + + /* + * A specific decompressor component or component instance to be + * used, or one of the wildcards anyCodec, bestSpeedCodec, + * bestFidelityCodec, or bestCompressionCodec. + * By default, this is anyCodec. + */ + kICMDecompressionSessionOptionsPropertyID_DecompressorComponent = FOUR_CHAR_CODE('imdc'), /* DecompressorComponent, Read/Write */ + + /* + * The decompression accuracy. + * The default accuracy is codecNormalQuality. + */ + kICMDecompressionSessionOptionsPropertyID_Accuracy = FOUR_CHAR_CODE('acur'), /* CodecQ, Read/Write */ + + /* + * Requests special handling of fields. Not all codecs will obey this + * request; some codecs will only handle it at certain accuracy + * levels. Ignored for non-interlaced content. + */ + kICMDecompressionSessionOptionsPropertyID_FieldMode = FOUR_CHAR_CODE('fiel'), /* ICMFieldMode, Read/Write */ + + /* + * The maximum number of buffers ahead of the current time that + * should be decompressed. Used in sessions that target visual + * contexts. By default, the number of buffers will be determined + * from the visual context. + */ + kICMDecompressionSessionOptionsPropertyID_MaxBufferCount = FOUR_CHAR_CODE('m#bf'), /* UInt32, Read/Write */ + + /* + * The minimum time ahead of the current time that frames should be + * decompressed. Used in sessions that target visual contexts. By + * default, the output-ahead time will be determined from the visual + * context. + */ + kICMDecompressionSessionOptionsPropertyID_OutputAheadTime = FOUR_CHAR_CODE('futu'), /* TimeRecord, Read/Write */ + + /* + * You can set the aperture mode property on a decompression session + * options object to indicate whether pixel buffers should be tagged + * to enable aspect ratio and clean aperture correction. The default + * aperture mode for a decompression session is clean aperture mode. + */ + kICMDecompressionSessionOptionsPropertyID_ApertureMode = FOUR_CHAR_CODE('apmd') /* OSType, Read/Write */ +}; + + +/* + * ICMFieldMode + * + * Summary: + * Describes special field handling. + */ +typedef UInt32 ICMFieldMode; +enum { + + /* + * Both fields should be decompressed. + */ + kICMFieldMode_BothFields = 0, + + /* + * Only the top field should be decompressed, producing a half-height + * image. + */ + kICMFieldMode_TopFieldOnly = 1, + + /* + * Only the bottom field should be decompressed, producing a + * half-height image. + */ + kICMFieldMode_BottomFieldOnly = 2, + + /* + * Both fields should be decompressed, and then filtered to reduce + * interlacing artifacts. + */ + kICMFieldMode_DeinterlaceFields = 3 +}; + + +/* + * ICMDecompressionFrameOptionsCreate() + * + * Summary: + * Creates a frame decompression options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionFrameOptionsCreate( + CFAllocatorRef allocator, /* can be NULL */ + ICMDecompressionFrameOptionsRef * options); + + +/* + * ICMDecompressionFrameOptionsCreateCopy() + * + * Summary: + * Copies a frame decompression options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionFrameOptionsCreateCopy( + CFAllocatorRef allocator, /* can be NULL */ + ICMDecompressionFrameOptionsRef originalOptions, + ICMDecompressionFrameOptionsRef * copiedOptions); + + +/* + * ICMDecompressionFrameOptionsRetain() + * + * Summary: + * Increments the retain count of a frame decompression options + * object. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( ICMDecompressionFrameOptionsRef ) +ICMDecompressionFrameOptionsRetain(ICMDecompressionFrameOptionsRef options); + + +/* + * ICMDecompressionFrameOptionsRelease() + * + * Summary: + * Decrements the retain count of a frame decompression options + * object. If it drops to zero, the object is disposed. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( void ) +ICMDecompressionFrameOptionsRelease(ICMDecompressionFrameOptionsRef options); + + +/* + * ICMDecompressionFrameOptionsGetTypeID() + * + * Summary: + * Returns the CFTypeID for frame decompression options objects. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( CFTypeID ) +ICMDecompressionFrameOptionsGetTypeID(void); + + +/* + * ICMDecompressionFrameOptionsGetPropertyInfo() + * + * Summary: + * Retrieves information about properties of a decompression frame + * options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionFrameOptionsGetPropertyInfo( + ICMDecompressionFrameOptionsRef options, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ComponentValueType * outPropType, /* can be NULL */ + ByteCount * outPropValueSize, /* can be NULL */ + UInt32 * outPropertyFlags); /* can be NULL */ + + +/* + * ICMDecompressionFrameOptionsGetProperty() + * + * Summary: + * Retrieves the value of a specific property of a decompression + * frame options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionFrameOptionsGetProperty( + ICMDecompressionFrameOptionsRef options, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ByteCount inPropValueSize, + ComponentValuePtr outPropValueAddress, + ByteCount * outPropValueSizeUsed); /* can be NULL */ + + +/* + * ICMDecompressionFrameOptionsSetProperty() + * + * Summary: + * Sets the value of a specific property of a decompression frame + * options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMDecompressionFrameOptionsSetProperty( + ICMDecompressionFrameOptionsRef options, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ByteCount inPropValueSize, + ConstComponentValuePtr inPropValueAddress); + + + +/* + * Summary: + * Properties of decompression frame options objects. + */ +enum { + + /* + * Class identifier for decompression frame options object properties. + */ + kQTPropertyClass_ICMDecompressionFrameOptions = FOUR_CHAR_CODE('idfo'), + + /* + * A specific pixel buffer that the frame should be decompressed + * into. Setting this circumvents the pixel buffer pool mechanism. If + * this buffer is not compatible with the codec's pixel buffer + * requirements, decompression will fail. + */ + kICMDecompressionFrameOptionsPropertyID_DestinationPixelBuffer = FOUR_CHAR_CODE('cvpb') /* CVPixelBufferRef, Read/Write */ +}; + + +/* + * ICMCompressionSessionRef + * + * Summary: + * Represents a compression session for a sequence of images. + * B-frame capable. + */ +typedef struct OpaqueICMCompressionSession* ICMCompressionSessionRef; + +/* + * ICMEncodedFrameRef + * + * Summary: + * Represents a frame encoded by a compressor component and emitted + * by a compression session. + * + * Discussion: + * Compressor components have access to the mutable flavor of + * encoded frame object (ICMMutableEncodedFrameRef); compression + * session clients receive the read-only flavor + * (ICMMutableEncodedFrameRef). + */ +typedef const struct OpaqueICMEncodedFrame* ICMEncodedFrameRef; +typedef struct OpaqueICMEncodedFrame* ICMMutableEncodedFrameRef; + +/* + * ICMCompressionSessionOptionsRef + * + * Summary: + * An opaque struct which holds options to configure a compression + * session. + */ +typedef struct OpaqueICMCompressionSessionOptions* ICMCompressionSessionOptionsRef; + +/* + * ICMCompressionFrameOptionsRef + * + * Summary: + * A token which holds options to configure an individual frame + * during a compression session. + */ +typedef struct OpaqueICMCompressionFrameOptions* ICMCompressionFrameOptionsRef; + +/* + * ICMMultiPassStorageRef + * + * Summary: + * A mechanism for storing information for each frame of a multipass + * compression session. + * + * Discussion: + * The ICM provides default storage mechanisms using temporary + * files, but clients may override this with custom mechanisms. + */ +typedef struct OpaqueICMMultiPassStorage* ICMMultiPassStorageRef; + +/* + * ICMEncodedFrameOutputCallback + * + * Summary: + * The callback through which a client of an ICM compression session + * receives encoded frames. + * + * Discussion: + * During the encoded frame output callback, the ICM has a reference + * to the passed ICMEncodedFrame, but the ICM will release that + * reference afterwards; the callback should retain the encoded + * frame if the client wants to keep it after the callback returns. + * + * Parameters: + * + * encodedFrameOutputRefCon: + * The callback's reference value, copied from the + * encodedFrameOutputRefCon field of the + * ICMEncodedFrameOutputRecord. + * + * session: + * The compression session. + * + * error: + * Indicates whether there was an error. + * + * frame: + * The encoded frame. + * + * reserved: + * Reserved for future use. Ignore the value of this parameter. + * + * Result: + * If the callback returns an error, the compressor and ICM will + * stop emitting frames so that the error can be propogated back to + * the caller of ICMCompressionSessionEncodeFrame or + * ICMCompressionSessionCompleteFrames. + */ +typedef CALLBACK_API_C( OSStatus , ICMEncodedFrameOutputCallback )(void *encodedFrameOutputRefCon, ICMCompressionSessionRef session, OSStatus error, ICMEncodedFrameRef frame, void *reserved); + +/* + * ICMEncodedFrameOutputRecord + * + * Summary: + * Holds an encoded frame callback and reference value. + */ +struct ICMEncodedFrameOutputRecord { + + /* + * An encoded frame callback. + */ + ICMEncodedFrameOutputCallback encodedFrameOutputCallback; + + /* + * The reference value for the encoded frame callback. + */ + void * encodedFrameOutputRefCon; + + /* + * The allocator for encoded frame data. Pass NULL if you do not need + * a specific allocator. + */ + CFAllocatorRef frameDataAllocator; +}; +typedef struct ICMEncodedFrameOutputRecord ICMEncodedFrameOutputRecord; + +/* + * ICMSourceTrackingFlags + * + */ +typedef UInt32 ICMSourceTrackingFlags; +enum { + + /* + * Indicates that this is the last call for this sourceFrameRefCon. + */ + kICMSourceTracking_LastCall = 1L << 0, + + /* + * Indicates that the session is done with the source pixel buffer + * and has released any reference to it that it had. + */ + kICMSourceTracking_ReleasedPixelBuffer = 1L << 1, + + /* + * Indicates that this frame was encoded. + */ + kICMSourceTracking_FrameWasEncoded = 1L << 2, + + /* + * Indicates that this frame was dropped. + */ + kICMSourceTracking_FrameWasDropped = 1L << 3, + + /* + * Indicates that this frame was merged into other frames. + */ + kICMSourceTracking_FrameWasMerged = 1L << 4, + + /* + * Indicates that the time stamp of this frame was modified. + */ + kICMSourceTracking_FrameTimeWasChanged = 1L << 5, + + /* + * Indicates that the ICM has copied the image from the source pixel + * buffer into another pixel buffer because the source pixel buffer + * was not compatible with the compressor's required pixel buffer + * attributes. + */ + kICMSourceTracking_CopiedPixelBuffer = 1L << 6 +}; + + +/* + * ICMSourceTrackingCallback + * + * Summary: + * A callback which the ICM calls to provide information about the + * status of a frame that was passed to + * ICMCompressionSessionEncodeFrame. + * + * Discussion: + * Note that this callback may be called several times. + * + * Parameters: + * + * sourceTrackingRefCon: + * The callback's reference value, copied from the + * sourceTrackingRefCon field of ICMSourceTrackingCallbackRecord. + * + * sourceTrackingFlags: + * Flags describing what has happened to the frame. + * + * sourceFrameRefCon: + * The frame's reference value, copied from the sourceFrameRefCon + * parameter to ICMCompressionSessionEncodeFrame. + * + * reserved: + * Reserved for future use. Ignore the value of this parameter. + */ +typedef CALLBACK_API_C( void , ICMSourceTrackingCallback )(void *sourceTrackingRefCon, ICMSourceTrackingFlags sourceTrackingFlags, void *sourceFrameRefCon, void *reserved); + +/* + * ICMSourceTrackingCallbackRecord + * + * Summary: + * A tracking callback for an ICM compression session. + */ +struct ICMSourceTrackingCallbackRecord { + + /* + * The callback function pointer. + */ + ICMSourceTrackingCallback sourceTrackingCallback; + + /* + * The callback's reference value. + */ + void * sourceTrackingRefCon; +}; +typedef struct ICMSourceTrackingCallbackRecord ICMSourceTrackingCallbackRecord; + +/* + * ICMFrameType + * + * Summary: + * Informally identifies a type of frame. + * + * Discussion: + * Do not assume that there are no other frame types beyond I, P and + * B. + */ +typedef UInt16 ICMFrameType; +enum { + kICMFrameType_I = 'I', + kICMFrameType_P = 'P', + kICMFrameType_B = 'B', + kICMFrameType_Unknown = 0 +}; + + +/* ICMCompressionSessionRef routines */ +/* + * ICMCompressionSessionCreate() + * + * Summary: + * Creates a compression session for the given codec type. + * + * Discussion: + * Some compressors do not support arbitrary source dimensions, and + * may override the suggested width and height. + * + * Parameters: + * + * allocator: + * An allocator for the session. Pass NULL to use the default + * allocator. + * + * width: + * The width of frames. + * + * height: + * The height of frames. + * + * cType: + * The codec type. + * + * timescale: + * The timescale to be used for all timestamps and durations used + * in the session. + * + * compressionOptions: + * Settings configuring the session. + * + * sourcePixelBufferAttributes: + * Required attributes for source pixel buffers, used when + * creating a pixel buffer pool for source frames. If you do not + * want the ICM to create one for you, pass NULL. (Using pixel + * buffers not allocated by the ICM may increase the chance that + * it will be necessary to copy image data.) + * + * encodedFrameOutputRecord: + * The callback that will receive encoded frames. + * + * compressionSessionOut: + * Points to a variable to receive the created session object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionCreate( + CFAllocatorRef allocator, /* can be NULL */ + int width, + int height, + CodecType cType, + TimeScale timescale, + ICMCompressionSessionOptionsRef compressionOptions, /* can be NULL */ + CFDictionaryRef sourcePixelBufferAttributes, /* can be NULL */ + ICMEncodedFrameOutputRecord * encodedFrameOutputRecord, + ICMCompressionSessionRef * compressionSessionOut); + + +/* + * ICMCompressionSessionRetain() + * + * Summary: + * Increments the retain count of a compression session. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( ICMCompressionSessionRef ) +ICMCompressionSessionRetain(ICMCompressionSessionRef session); + + +/* + * ICMCompressionSessionRelease() + * + * Summary: + * Decrements the retain count of a compression session. If it + * drops to zero, the session is disposed. + * + * Discussion: + * If you pass NULL to this function, nothing happens. Remember to + * call ICMCompressionSessionCompleteFrames first if you want to + * ensure any pending frames are emitted. If you do not, they will + * be discarded. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( void ) +ICMCompressionSessionRelease(ICMCompressionSessionRef session); + + +/* + * ICMCompressionSessionGetTypeID() + * + * Summary: + * Returns the CFTypeID for compression sessions. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( CFTypeID ) +ICMCompressionSessionGetTypeID(void); + + +/* + * ICMCompressionSessionGetPropertyInfo() + * + * Summary: + * Retrieves information about properties of a compression session. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionGetPropertyInfo( + ICMCompressionSessionRef session, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ComponentValueType * outPropType, /* can be NULL */ + ByteCount * outPropValueSize, /* can be NULL */ + UInt32 * outPropertyFlags); /* can be NULL */ + + +/* + * ICMCompressionSessionGetProperty() + * + * Summary: + * Retrieves the value of a specific property of a compression + * session. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionGetProperty( + ICMCompressionSessionRef session, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ByteCount inPropValueSize, + ComponentValuePtr outPropValueAddress, + ByteCount * outPropValueSizeUsed); /* can be NULL */ + + +/* + * ICMCompressionSessionSetProperty() + * + * Summary: + * Sets the value of a specific property of a compression session. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionSetProperty( + ICMCompressionSessionRef session, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ByteCount inPropValueSize, + ConstComponentValuePtr inPropValueAddress); + + + +/* + * Summary: + * Properties of compression sessions. + */ +enum { + + /* + * Class identifier for compression session properties. + */ + kQTPropertyClass_ICMCompressionSession = FOUR_CHAR_CODE('icse'), + + /* + * The time scale for the compression session. + */ + kICMCompressionSessionPropertyID_TimeScale = FOUR_CHAR_CODE('tscl'), /* TimeScale, Read */ + + /* + * The compressor's pixel buffer attributes for the compression + * session. You can use these to create a pixel buffer pool for + * source pixel buffers. Note that this is not the same as the + * sourcePixelBufferAttributes passed in to + * ICMCompressionSessionCreate. Getting this property does not change + * its retain count. + */ + kICMCompressionSessionPropertyID_CompressorPixelBufferAttributes = FOUR_CHAR_CODE('batt'), /* CFDictionaryRef, Read */ + + /* + * A pool that can provide ideal source pixel buffers for a + * compression session. The compression session creates this pixel + * buffer pool based on the compressor's pixel buffer attributes and + * any pixel buffer attributes passed in to + * ICMCompressionSessionCreate. If the source pixel buffer attributes + * and the compressor pixel buffer attributes can not be reconciled, + * the pool is based on the source pixel buffer attributes and the + * ICM converts each CVPixelBuffer internally. + */ + kICMCompressionSessionPropertyID_PixelBufferPool = FOUR_CHAR_CODE('pool'), /* CVPixelBufferPoolRef, Read */ + + /* + * The image description for the compression session. For some + * codecs, the image description may not be available before the + * first frame is compressed. Multiple calls to retrieve this + * property will return the same handle. The ICM will dispose this + * handle when the compression session is disposed. + * IMPORTANT: The caller must NOT dispose this handle. + */ + kICMCompressionSessionPropertyID_ImageDescription = FOUR_CHAR_CODE('idsc') /* ImageDescriptionHandle, Read */ +}; + +/* + * ICMCompressionSessionGetTimeScale() + * + * Summary: + * Retrieves the time scale for the compression session. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( TimeScale ) +ICMCompressionSessionGetTimeScale(ICMCompressionSessionRef session); + + +/* + * ICMCompressionSessionGetPixelBufferPool() + * + * Summary: + * Returns a pool that can provide ideal source pixel buffers for a + * compression session. + * + * Discussion: + * The compression session creates this pixel buffer pool based on + * the compressor's pixel buffer attributes and any pixel buffer + * attributes passed in to ICMCompressionSessionCreate. If the + * source pixel buffer attributes and the compressor pixel buffer + * attributes can not be reconciled, the pool is based on the source + * pixel buffer attributes and the ICM converts each CVPixelBuffer + * internally. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( CVPixelBufferPoolRef ) +ICMCompressionSessionGetPixelBufferPool(ICMCompressionSessionRef session); + + +/* + * ICMCompressionSessionGetImageDescription() + * + * Summary: + * Retrieves the image description for the compression session. + * + * Discussion: + * For some codecs, this may fail if called before the first frame + * is compressed. Multiple calls to + * ICMCompressionSessionGetImageDescription will return the same + * handle. The ICM will dispose this handle when the compression + * session is disposed. + * IMPORTANT: The caller must NOT dispose this handle. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionGetImageDescription( + ICMCompressionSessionRef session, + ImageDescriptionHandle * imageDescOut); + + +/* ICMCompressionSessionRef encoding routines */ +/* + * ICMCompressionSessionEncodeFrame() + * + * Summary: + * Call this function to present frames to the compression session. + * Encoded frames may or may not be output before the function + * returns. + * + * Discussion: + * The session will retain the pixel buffer as long as necessary; + * the client should not modify the pixel data until the session + * releases it. (The most practical way to deal with this is by + * allocating pixel buffers from a pool.) + * The client may fill in both, either or neither of + * displayTimeStamp and displayDuration, but should set the + * appropriate flags to indicate which is valid. If the client needs + * to track the progress of a source frame, it should provide a + * sourceTrackingCallback. + * Note: If multipass compression is enabled, calls to + * ICMCompressionSessionEncodeFrame must be bracketed by + * ICMCompressionSessionBeginPass ... ICMCompressionSessionEndPass. + * + * Parameters: + * + * session: + * Identifies the compression session. + * + * pixelBuffer: + * Contains the source image to be compressed. PixelBuffer must + * have a nonzero reference count. The session will retain it as + * long as necessary. The client should not modify pixel buffer's + * pixels until the pixel buffer release callback is called. In a + * multipass encoding session pass where the compressor suggested + * the flag kICMCompressionPassMode_NoSourceFrames, you may pass + * NULL for pixelBuffer. + * + * displayTimeStamp: + * The display timestamp of the frame, using the timescale passed + * to ICMCompressionSessionCreate. If you pass a valid value, set + * the kICMValidTime_DisplayTimeStampIsValid flag in + * validTimeFlags. + * + * displayDuration: + * The display duration of the frame, using the timescale passed + * to ICMCompressionSessionCreate. If you pass a valid value, set + * the kICMValidTime_DisplayDurationIsValid flag in validTimeFlags. + * + * validTimeFlags: + * Flags to indicate which of displayTimeStamp and displayDuration + * are valid. + * + * frameOptions: + * Options for this frame. + * + * sourceTrackingCallback: + * A callback to be notified about the status of this source + * frame. Pass NULL if you do not require notification. + * + * sourceFrameRefCon: + * Your reference to the source frame. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionEncodeFrame( + ICMCompressionSessionRef session, + CVPixelBufferRef pixelBuffer, + TimeValue64 displayTimeStamp, + TimeValue64 displayDuration, + ICMValidTimeFlags validTimeFlags, + ICMCompressionFrameOptionsRef frameOptions, /* can be NULL */ + ICMSourceTrackingCallbackRecord * sourceTrackingCallback, /* can be NULL */ + void * sourceFrameRefCon); + + + +/* + * ICMCompressionSessionCompleteFrames() + * + * Discussion: + * Call this function to force the compression session to complete + * encoding frames. Set completeAllFrames to direct the session to + * complete all pending frames. + * If completeAllFrames is false, only frames with display time + * stamps up to and including completeUntilDisplayTimeStamp. + * If ICMCompressionSessionOptionsSetDurationsNeeded is true and you + * are passing valid display timestamps but not display durations to + * ICMCompressionSessionEncodeFrame, pass the display timestamp of + * the next frame that would be passed to EncodeFrame in + * nextDisplayTimeStamp. + * Note: This function might return before frames are completed if + * the encoded frame callback returns an error. + * + * Parameters: + * + * session: + * Identifies the compression session. + * + * completeAllFrames: + * Set to direct the session to complete all pending frames. + * + * completeUntilDisplayTimeStamp: + * If completeAllFrames is false, the display timestamp to + * complete frames up to. Ignored if completeAllFrames is true. + * + * nextDisplayTimeStamp: + * See above. Ignored unless + * ICMCompressionSessionOptionsSetDurationsNeeded set true and + * kICMValidTime_DisplayDurationIsValid was clear in + * validTimeFlags in last call to ICMCompressionSessionEncodeFrame. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionCompleteFrames( + ICMCompressionSessionRef session, + Boolean completeAllFrames, + TimeValue64 completeUntilDisplayTimeStamp, + TimeValue64 nextDisplayTimeStamp); + + + +/* ICMCompressionSessionRef multipass support routines */ + +/* + * ICMCompressionPassModeFlags + * + * Summary: + * Flags describing how a compressor should behave in a given pass + * of multipass encoding. + */ +typedef UInt32 ICMCompressionPassModeFlags; +enum { + + /* + * In this pass the compressor shall output encoded frames. + */ + kICMCompressionPassMode_OutputEncodedFrames = 1L << 0, + + /* + * In this pass the client need not provide source frame buffers. + */ + kICMCompressionPassMode_NoSourceFrames = 1L << 1, + + /* + * In this pass the compressor may write private data to multipass + * storage. + */ + kICMCompressionPassMode_WriteToMultiPassStorage = 1L << 2, + + /* + * In this pass the compressor may read private data from multipass + * storage. + */ + kICMCompressionPassMode_ReadFromMultiPassStorage = 1L << 3, + + /* + * The compressor will set this flag to indicate that it will not be + * able to output encoded frames in the coming pass. If this flag is + * not set, then the client is allowed to set the + * kICMCompressionPassMode_OutputEncodedFrames flag when calling + * ICMCompressionSessionBeginPass. + */ + kICMCompressionPassMode_NotReadyToOutputEncodedFrames = 1L << 4 +}; + +/* + * ICMCompressionSessionSupportsMultiPassEncoding() + * + * Summary: + * Queries whether a compression session supports multipass encoding. + * + * Discussion: + * Even if this function returns false, if you set the + * kICMCompressionSessionOptionsPropertyID_MultiPassStorage property + * on the CompressionSessionOptions, you must call + * ICMCompressionSessionBeginPass and ICMCompressionSessionEndPass. + * + * Parameters: + * + * session: + * The compression session. + * + * multiPassStyleFlags: + * Reserved. Set to zero. + * + * firstPassModeFlagsOut: + * Points to a variable to receive the session's requested mode + * flags for the first pass. The client may modify these flags, + * but should not set kICMCompressionPassMode_NoSourceFrames. Pass + * NULL if you do not want this information. + * + * Result: + * true if the session supports multipass encoding, false otherwise. + * If the session does not support multipass encoding, + * *firstPassModeFlagsOut will be set to + * kICMCompressionPassMode_OutputEncodedFrames. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( Boolean ) +ICMCompressionSessionSupportsMultiPassEncoding( + ICMCompressionSessionRef session, + UInt32 multiPassStyleFlags, + ICMCompressionPassModeFlags * firstPassModeFlagsOut); /* can be NULL */ + + +/* + * ICMCompressionSessionBeginPass() + * + * Summary: + * Call to announce the start of a specific compression pass. + * + * Discussion: + * The source frames and frame options for each display timestamp + * should be the same across passes. + * During multipass compression, valid displayTimeStamps must be + * passed to ICMCompressionSessionEncodeFrame since they are used to + * index the compressor's stored state. + * During an analysis pass + * (kICMCompressionPassMode_WriteToMultiPassStorage), the compressor + * does not output encoded frames, but records compressor-private + * information for each frame. + * During repeated analysis passes and the encoding pass + * (kICMCompressionPassMode_ReadFromMultiPassStorage), the + * compressor may refer to this information for other frames and use + * it to improve encoding. + * During an encoding pass + * (kICMCompressionPassMode_OutputEncodedFrames), the compressor + * must output encoded frames. + * If the compressor set the kICMCompressionPassMode_NoSourceFrames + * flag for the pass, the client may pass NULL pixel buffers to + * ICMCompressionSessionEncodeFrame. + * By default, the ICM provides local storage that lasts only until + * the compression session is disposed. If the client provides + * custom multipass storage, pass may be performed at different + * times or on different machines; segments of each pass may even be + * distributed. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionBeginPass( + ICMCompressionSessionRef session, + ICMCompressionPassModeFlags passModeFlags, + UInt32 flags); + + +/* + * ICMCompressionSessionEndPass() + * + * Summary: + * Call to announce the end of a pass. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionEndPass(ICMCompressionSessionRef session); + + +/* + * ICMCompressionSessionProcessBetweenPasses() + * + * Summary: + * Lets the compressor perform processing between passes. + * + * Discussion: + * Call this function repeatedly, until the compressor sets + * *interpassProcessingDoneOut to true to indicate that it is done + * with this round of interpass processing. + * When done, the compressor will indicate its preferred mode for + * the next pass. + * The client may choose to begin an encoding pass (by ORing in the + * kICMCompressionPassMode_OutputEncodedFrames flag) regardless of + * the compressor's request. + * + * Parameters: + * + * session: + * The compression session. + * + * flags: + * Reserved. Set to zero. + * + * interpassProcessingDoneOut: + * Points to a Boolean that will be set to false if + * ICMCompressionSessionProcessBetweenPasses should be called + * again, true if not + * + * requestedNextPassModeFlagsOut: + * Points to ICMCompressionPassModeFlags that will be set to the + * codec's recommended mode flags for the next pass. + * kICMCompressionPassMode_OutputEncodedFrames will only be set if + * it recommends that the next pass be the final one. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionProcessBetweenPasses( + ICMCompressionSessionRef session, + UInt32 flags, + Boolean * interpassProcessingDoneOut, + ICMCompressionPassModeFlags * requestedNextPassModeFlagsOut); + + + +/* ICMCompressionSessionOptionsRef routines */ +/* + * ICMCompressionSessionOptionsCreate() + * + * Summary: + * Creates a compression session options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionOptionsCreate( + CFAllocatorRef allocator, /* can be NULL */ + ICMCompressionSessionOptionsRef * options); + + +/* + * ICMCompressionSessionOptionsCreateCopy() + * + * Summary: + * Copies a compression session options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionOptionsCreateCopy( + CFAllocatorRef allocator, /* can be NULL */ + ICMCompressionSessionOptionsRef originalOptions, + ICMCompressionSessionOptionsRef * copiedOptions); + + +/* + * ICMCompressionSessionOptionsRetain() + * + * Summary: + * Increments the retain count of a compression session options + * object. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( ICMCompressionSessionOptionsRef ) +ICMCompressionSessionOptionsRetain(ICMCompressionSessionOptionsRef options); + + +/* + * ICMCompressionSessionOptionsRelease() + * + * Summary: + * Decrements the retain count of a compression session options + * object. If it drops to zero, the object is disposed. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( void ) +ICMCompressionSessionOptionsRelease(ICMCompressionSessionOptionsRef options); + + +/* + * ICMCompressionSessionOptionsGetTypeID() + * + * Summary: + * Returns the CFTypeID for compression session options objects. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( CFTypeID ) +ICMCompressionSessionOptionsGetTypeID(void); + + +/* + * ICMCompressionSessionOptionsGetPropertyInfo() + * + * Summary: + * Retrieves information about properties of a compression session + * options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionOptionsGetPropertyInfo( + ICMCompressionSessionOptionsRef options, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ComponentValueType * outPropType, /* can be NULL */ + ByteCount * outPropValueSize, /* can be NULL */ + UInt32 * outPropertyFlags); /* can be NULL */ + + +/* + * ICMCompressionSessionOptionsGetProperty() + * + * Summary: + * Retrieves the value of a specific property of a compression + * session options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionOptionsGetProperty( + ICMCompressionSessionOptionsRef options, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ByteCount inPropValueSize, + ComponentValuePtr outPropValueAddress, + ByteCount * outPropValueSizeUsed); /* can be NULL */ + + +/* + * ICMCompressionSessionOptionsSetProperty() + * + * Summary: + * Sets the value of a specific property of a compression session + * options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionOptionsSetProperty( + ICMCompressionSessionOptionsRef options, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ByteCount inPropValueSize, + ConstComponentValuePtr inPropValueAddress); + + + +/* + */ +enum { + + /* + * Indicates no limit on the number of frames in the compression + * window. + */ + kICMUnlimitedFrameDelayCount = -1L, + + /* + * Indicates no time limit on the number of frames in the compression + * window. + */ + kICMUnlimitedFrameDelayTime = -1L, + + /* + * Indicates no CPU time limit on compression. + */ + kICMUnlimitedCPUTimeBudget = -1L +}; + + +/* + * ICMDataRateLimit + * + * Summary: + * A hard limit on the data rate. + * + * Discussion: + * A hard limit is described by a data size in bytes and a duration + * in seconds, and requires that the total size of compressed data + * for any continuous segment of that duration (in decode time) must + * not exceed the provided data size. + */ +struct ICMDataRateLimit { + + /* + * The number of bytes. + */ + SInt32 dataSize; + + /* + * The number of seconds. + */ + Float32 dataDuration; +}; +typedef struct ICMDataRateLimit ICMDataRateLimit; + +/* + * Summary: + * Scaling modes + * + * Discussion: + * These constants indicate how source frames to a compression + * session should be scaled if the dimensions and/or display aspect + * ratio do not match. + */ +enum { + + /* + * The full width and height of source frames shall be scaled to the + * full width and height of the destination. This is the default if + * no other scaling mode is specified. + */ + kICMScalingMode_StretchProductionAperture = FOUR_CHAR_CODE('sp2p'), + + /* + * The clean aperture of the source frames shall be scaled to the + * clean aperture of the destination. + */ + kICMScalingMode_StretchCleanAperture = FOUR_CHAR_CODE('sc2c'), + + /* + * The clean aperture of the source frames shall be scaled to fit + * inside the clean aperture of the destination, preserving the + * original display aspect ratio. If the display aspect ratios are + * different, the source frames will be centered with black bars + * above and below, or to the left and right. + */ + kICMScalingMode_Letterbox = FOUR_CHAR_CODE('lett'), + + /* + * The clean aperture of the source frames shall be scaled to cover + * the clean aperture of the destination, preserving the original + * display aspect ratio. If the display aspect ratios are different, + * the source frames will be centered and cropped. + */ + kICMScalingMode_Trim = FOUR_CHAR_CODE('trim') +}; + + +/* + * ICMSimpleBoundaryConditions + * + * Summary: + * Indicates whether and how a compression session's frames will be + * concatenated with other compressed frames to form a longer series. + * + * Discussion: + * Some clients divide a long series of frames into several shorter + * segments, each of which is then compressed by an independent + * compression session. Boundary conditions tell the compressor + * about how each session fits into the greater series: does this + * session stand alone, or will it be used to encode the first + * segment, a middle segment, or the last segment in a longer + * continuum? + * This information enables compressors to ensure that compressed + * segments can be concatenated smoothly -- for example, avoiding + * data rate spikes where segments are joined. + * By default, a session is assumed to stand alone. + */ +struct ICMSimpleBoundaryConditions { + + /* + * True if frames compressed in a separate session will be + * concatenated before the beginning of this one. False if this is a + * stand-alone session, or if this session will encode the first + * segment of a multi-segment compression. By default, false. + */ + Boolean moreFramesBeforeStart; + + /* + * True if frames compressed in a separate session will be + * concatenated following the end of this one. False if this is a + * stand-alone session, or if this session will encode the last + * segment of a multi-segment compression. By default, false. + */ + Boolean moreFramesAfterEnd; +}; +typedef struct ICMSimpleBoundaryConditions ICMSimpleBoundaryConditions; + +/* + * Summary: + * Properties of compression sessions options objects. + */ +enum { + + /* + * Class identifier for compression session options object properties. + */ + kQTPropertyClass_ICMCompressionSessionOptions = FOUR_CHAR_CODE('icso'), + + /* + * Enables temporal compression. By default, temporal compression is + * disabled. + * IMPORTANT: If you want temporal compression (P frames and/or B + * frames) you must set this to true. + */ + kICMCompressionSessionOptionsPropertyID_AllowTemporalCompression = FOUR_CHAR_CODE('p ok'), /* Boolean, Read/Write */ + + /* + * Enables frame reordering. + * In order to encode B frames, a compressor must reorder frames, + * which means that the order in which they will be emitted and + * stored (the decode order) is different from the order in which + * they were presented to the compressor (the display order). + * By default, frame reordering is disabled. + * IMPORTANT: In order to encode using B frames, you must enable + * frame reordering. + */ + kICMCompressionSessionOptionsPropertyID_AllowFrameReordering = FOUR_CHAR_CODE('b ok'), /* Boolean, Read/Write */ + + /* + * Indicates that durations of emitted frames are needed. + * If this flag is set and source frames are provided with times but + * not durations, then frames will be delayed so that durations can + * be calculated as the difference between one frame's time stamp and + * the next frame's time stamp. + * By default, this flag is clear, so frames will not be delayed in + * order to calculate durations. + * IMPORTANT: If you will be passing encoded frames to + * AddMediaSampleFromEncodedFrame, you must set this flag to true. + */ + kICMCompressionSessionOptionsPropertyID_DurationsNeeded = FOUR_CHAR_CODE('need'), /* Boolean, Read/Write */ + + /* + * The maximum interval between key frames, also known as the key + * frame rate. + * Key frames, also known as sync frames, reset inter-frame + * dependencies; decoding a key frame is sufficient to prepare a + * decompressor for correctly decoding the difference frames that + * follow. + * Compressors are allowed to generate key frames more frequently if + * this would result in more efficient compression. + * The default key frame interval is 0, which indicates that the + * compressor should choose where to place all key frames. A key + * frame interval of 1 indicates that every frame must be a key + * frame, 2 indicates that at least every other frame must be a key + * frame, etc. + */ + kICMCompressionSessionOptionsPropertyID_MaxKeyFrameInterval = FOUR_CHAR_CODE('kyfr'), /* SInt32, Read/Write */ + + /* + * The requested maximum interval between partial sync frames. If the + * interval is n, any sequence of n successive frames must include at + * least one key or partial sync frame. + * Where supported, partial sync frames perform a partial reset of + * inter-frame dependencies; decoding two partial sync frames and the + * non-droppable difference frames between them is sufficient to + * prepare a decompressor for correctly decoding the difference + * frames that follow. + * Compressors are allowed to generate partial sync frames more + * frequently if this would result in more efficient compression. + * + * The default partial sync frame interval is 0, which indicates that + * the compressor should choose where to place partial sync frames. A + * partial sync frame interval of 1 means there can be no difference + * frames, so it is equivalent to a key frame interval of 1. A + * partial sync frame interval of 2 means that every other frame must + * be a key frame or a partial sync frame. + * Compressors that do not support partial sync frames will ignore + * this setting. + */ + kICMCompressionSessionOptionsPropertyID_MaxPartialSyncFrameInterval = FOUR_CHAR_CODE('psfr'), /* SInt32, Read/Write */ + + /* + * Enables the compressor to modify frame times. + * Some compressors are able to identify and coalesce runs of + * identical frames and output single frames with longer duration, or + * output frames at a different frame rate from the original. This + * feature is controlled by the "allow frame time changes" flag. By + * default, this flag is set to false, which forces compressors to + * emit one encoded frame for every source frame, and to preserve + * frame display times. + * (Note: this feature replaces the practice of having compressors + * return special high similarity values to indicate that frames + * could be dropped.) + * If you want to allow the compressor to modify frame times in order + * to improve compression performance, enable frame time changes. + */ + kICMCompressionSessionOptionsPropertyID_AllowFrameTimeChanges = FOUR_CHAR_CODE('+ ok'), /* Boolean, Read/Write */ + + /* + * Enables the compressor to call the encoded-frame callback from a + * different thread. + * By default, the flag is false, which means that the compressor + * must call the encoded-frame callback from the same thread that + * ICMCompressionSessionEncodeFrame and + * ICMCompressionSessionCompleteFrames were called on. + */ + kICMCompressionSessionOptionsPropertyID_AllowAsyncCompletion = FOUR_CHAR_CODE('asok'), /* Boolean, Read/Write */ + + /* + * The maximum frame delay count is the maximum number of frames that + * a compressor is allowed to hold before it must output a compressed + * frame. It limits the number of frames that may be held in the + * "compression window". If the maximum frame delay count is M, then + * before the call to encode frame N returns, frame N-M must have + * been emitted. + * The default is kICMUnlimitedFrameDelayCount, which sets no limit + * on the compression window. + */ + kICMCompressionSessionOptionsPropertyID_MaxFrameDelayCount = FOUR_CHAR_CODE('cwin'), /* SInt32, Read/Write */ + + /* + * The maximum frame delay time is the maximum difference between a + * source frame's display time and the corresponding encoded frame's + * decode time. It limits the span of display time that may be held + * in the "compression window". If the maximum frame delay time is + * TM, then before the call to encode a frame with display time TN + * returns, all frames with display times up to and including TN-TM + * must have been emitted. + * The default is kICMUnlimitedFrameDelayTime, which sets no time + * limit on the compression window. + */ + kICMCompressionSessionOptionsPropertyID_MaxFrameDelayTime = FOUR_CHAR_CODE('cwit'), /* TimeValue64, Read/Write */ + + /* + * Sets a specific compressor component or component instance to be + * used, or one of the wildcards anyCodec, bestSpeedCodec, + * bestFidelityCodec, or bestCompressionCodec. + * Use this API to force the Image Compression Manager to use a + * specific compressor component or compressor component instance. + * (If you pass in a component instance that you opened, the ICM will + * not close that instance; you must do so after the compression + * session is released.) To allow the Image Compression Manager to + * choose the compressor component, set the compressorComponent to + * anyCodec (the default), bestSpeedCodec, bestFidelityCodec or + * bestCompressionCodec. + */ + kICMCompressionSessionOptionsPropertyID_CompressorComponent = FOUR_CHAR_CODE('imco'), /* CompressorComponent, Read/Write */ + + /* + * A handle containing compressor settings. The compressor will be + * configured with these settings (by a call to + * ImageCodecSetSettings) during ICMCompressionSessionCreate. + */ + kICMCompressionSessionOptionsPropertyID_CompressorSettings = FOUR_CHAR_CODE('cost'), /* Handle, Read/Write */ + + /* + * The depth for compression. + * If a compressor does not support a specific depth, the closest + * supported depth will be used (preferring deeper depths to + * shallower depths). The default depth is k24RGBPixelFormat. + */ + kICMCompressionSessionOptionsPropertyID_Depth = FOUR_CHAR_CODE('deep'), /* UInt32, Read/Write */ + + /* + * The color table for compression. Used with indexed-color depths. + * + * Clients who get this property are responsible for disposing the + * returned CTabHandle. + */ + kICMCompressionSessionOptionsPropertyID_ColorTable = FOUR_CHAR_CODE('clut'), /* CTabHandle, Read/Write*/ + + /* + * The compression quality. + * This value is always used to set the spatialQuality; if temporal + * compression is enabled, it is also used to set temporalQuality. + * <BR> The default quality is codecNormalQuality. + */ + kICMCompressionSessionOptionsPropertyID_Quality = FOUR_CHAR_CODE('qual'), /* CodecQ, Read/Write */ + + /* + * The long-term desired average data rate in bytes per second. + * This is not a hard limit. + * The default data rate is zero, which indicates that the quality + * setting should determine the size of compressed data. + * Note that data rate settings only have an effect when timing + * information is provided for source frames, and that some codecs do + * not support limiting to specified data rates. + */ + kICMCompressionSessionOptionsPropertyID_AverageDataRate = FOUR_CHAR_CODE('aver'), /* SInt32, Read/Write */ + + /* + * Zero, one or two hard limits on data rate. + * Each hard limit is described by a data size in bytes and a + * duration in seconds, and requires that the total size of + * compressed data for any contiguous segment of that duration (in + * decode time) must not exceed the data size. + * By default, no data rate limits are set. + * When setting this property, the inPropValueSize parameter should + * be the number of data rate limits multiplied by + * sizeof(ICMDataRateLimit). + * Note that data rate settings only have an effect when timing + * information is provided for source frames, and that some codecs do + * not support limiting to specified data rates. + */ + kICMCompressionSessionOptionsPropertyID_DataRateLimits = FOUR_CHAR_CODE('hard'), /* C array of ICMDataRateLimit struct, Read/Write */ + + /* + * The current number of data rate limits. + */ + kICMCompressionSessionOptionsPropertyID_DataRateLimitCount = FOUR_CHAR_CODE('har#'), /* UInt32, Read */ + + /* + * The maximum allowed number of data rate limits. (Currently 2.) + */ + kICMCompressionSessionOptionsPropertyID_MaxDataRateLimits = FOUR_CHAR_CODE('mhar'), /* UInt32, Read */ + + /* + * Indicates that the source was previously compressed. + * This property is purely an optional, informational hint to the + * compressor; by default it is false. + */ + kICMCompressionSessionOptionsPropertyID_WasCompressed = FOUR_CHAR_CODE('wasc'), /* Boolean, Read/Write */ + + /* + * Recommends a CPU time budget for the compressor in microseconds + * per frame. + * Zero means to go as fast as possible. + * By default, this is set to kICMUnlimitedCPUTimeBudget, which sets + * no limit. + * This is an advisory hint to the compressor, and some compressors + * may ignore it. Multithreaded compressors may use this amount of + * CPU time on each processor. + * Compressors should not feel compelled to use the full time budget + * if they complete ahead of time! + */ + kICMCompressionSessionOptionsPropertyID_CPUTimeBudget = FOUR_CHAR_CODE('cput'), /* UInt32, Read/Write */ + + /* + * Storage for multi-pass compression. + * To enable multipass compression, the client must provide a storage + * location for multipass data. Use + * ICMMultiPassStorageCreateWithTemporaryFile to have the ICM store + * it in a temporary file. Use + * ICMMultiPassStorageCreateWithCallbacks to manage the storage + * yourself. + * Note that the amount of multipass data to be stored can be + * substantial; it could be greater than the size of the output movie + * file. + * If this property is not NULL, the client must call + * ICMCompressionSessionBeginPass and ICMCompressionSessionEndPass + * around groups of calls to ICMCompressionSessionEncodeFrame. + * By default, this property is NULL and multipass compression is + * not enabled. The compression session options object retains the + * multipass storage object, when one is set. + */ + kICMCompressionSessionOptionsPropertyID_MultiPassStorage = FOUR_CHAR_CODE('imps'), /* ICMMultiPassStorageRef, Read/Write */ + + /* + * Indicates the number of source frames, if known. If nonzero, this + * should be the exact number of times that the client calls + * ICMCompressionSessionEncodeFrame in each pass. + * The default is 0, which indicates that the number of source frames + * is not known. + */ + kICMCompressionSessionOptionsPropertyID_SourceFrameCount = FOUR_CHAR_CODE('frco'), /* UInt64, Read/Write */ + + /* + * Indicates the expected frame rate, if known. The frame rate is + * measured in frames per second. This is not used to control the + * frame rate; it is provided as a hint to the compressor so that it + * can set up internal configuration before compression begins. The + * actual frame rate will depend on frame durations and may vary. By + * default, this is zero, indicating "unknown". + */ + kICMCompressionSessionOptionsPropertyID_ExpectedFrameRate = FOUR_CHAR_CODE('fran'), /* Fixed, Read/Write */ + + /* + * Indicates how source frames to a compression session should be + * scaled if the dimensions and/or display aspect ratio do not match. + */ + kICMCompressionSessionOptionsPropertyID_ScalingMode = FOUR_CHAR_CODE('scam'), /* OSType, Read/Write */ + + /* + * Describes the clean aperture for compressed frames. Note that if + * the compressor enforces a clean aperture, it will override this + * setting. The clean aperture will be set on the output image + * description and may affect scaling in some scaling modes. By + * default, this is all zeros, meaning unset. + */ + kICMCompressionSessionOptionsPropertyID_CleanAperture = FOUR_CHAR_CODE('clap'), /* Native-endian CleanApertureImageDescriptionExtension, Read/Write */ + + /* + * Describes the pixel aspect ratio for compressed frames. Note that + * if the compressor enforces a pixel aspect ratio, it will override + * this setting. The pixel aspect ratio will be set on the output + * image description and may affect scaling in some scaling modes. By + * default, this is all zeros, meaning unset. + */ + kICMCompressionSessionOptionsPropertyID_PixelAspectRatio = FOUR_CHAR_CODE('pasp'), /* Native-endian PixelAspectRatioImageDescriptionExtension, Read/Write */ + + /* + * Describes the number and order of fields for compressed frames. + * Note that if the compressor enforces field info, it will override + * this setting. The field info will be set on the output image + * description and may affect scaling in some scaling modes. By + * default, this is all zeros, meaning unset. + */ + kICMCompressionSessionOptionsPropertyID_FieldInfo = FOUR_CHAR_CODE('fiel'), /* FieldInfoImageDescriptionExtension2, Read/Write */ + + /* + * Indicates whether and how a compression session's frames will be + * concatenated with other compressed frames to form a longer series. + */ + kICMCompressionSessionOptionsPropertyID_SimpleBoundaryConditions = FOUR_CHAR_CODE('ends'), /* ICMSimpleBoundaryConditions struct, Read/Write */ + + /* + * Requests additional distortion to be applied to the aspect ratio + * in the kICMScalingMode_Letterbox and kICMScalingMode_Trim scaling + * modes. Values greater than fixed1 mean wider, values less than + * fixed1 mean narrower. For example, a value of X2Fix(2.0) would + * make the picture aspect ratio twice as wide. + */ + kICMCompressionSessionOptionsPropertyID_ExtraAspectRatioStretchFactor = FOUR_CHAR_CODE('exsf') /* Fixed, Default fixed1, Read/Write */ +}; + + +/* + * ICMCompressionSessionOptionsSetAllowTemporalCompression() + * + * Summary: + * Enables temporal compression. + * + * Discussion: + * By default, temporal compression is disabled. + * IMPORTANT: If you want temporal compression (P frames and/or B + * frames) you must set this to true. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionOptionsSetAllowTemporalCompression( + ICMCompressionSessionOptionsRef options, + Boolean allowTemporalCompression); + + +/* + * ICMCompressionSessionOptionsGetAllowTemporalCompression() + * + * Summary: + * Retrieves the allow temporal compression flag. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( Boolean ) +ICMCompressionSessionOptionsGetAllowTemporalCompression(ICMCompressionSessionOptionsRef options); + + +/* + * ICMCompressionSessionOptionsSetAllowFrameReordering() + * + * Summary: + * Enables frame reordering. + * + * Discussion: + * In order to encode B frames, a compressor must reorder frames, + * which means that the order in which they will be emitted and + * stored (the decode order) is different from the order in which + * they were presented to the compressor (the display order). + * By default, frame reordering is disabled. + * IMPORTANT: In order to encode using B frames, you must enable + * frame reordering. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionOptionsSetAllowFrameReordering( + ICMCompressionSessionOptionsRef options, + Boolean allowFrameReordering); + + +/* + * ICMCompressionSessionOptionsGetAllowFrameReordering() + * + * Summary: + * Retrieves the allow frame reordering flag. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( Boolean ) +ICMCompressionSessionOptionsGetAllowFrameReordering(ICMCompressionSessionOptionsRef options); + + +/* + * ICMCompressionSessionOptionsSetDurationsNeeded() + * + * Summary: + * Indicates that durations of emitted frames are needed. + * + * Discussion: + * If this flag is set and source frames are provided with times but + * not durations, then frames will be delayed so that durations can + * be calculated as the difference between one frame's time stamp + * and the next frame's time stamp. + * By default, this flag is clear, so frames will not be delayed in + * order to calculate durations. + * IMPORTANT: If you will be passing encoded frames to + * AddMediaSampleFromEncodedFrame, you must set this flag to true. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionOptionsSetDurationsNeeded( + ICMCompressionSessionOptionsRef options, + Boolean decodeDurationsNeeded); + + +/* + * ICMCompressionSessionOptionsGetDurationsNeeded() + * + * Summary: + * Retrieves the "durations needed" flag. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( Boolean ) +ICMCompressionSessionOptionsGetDurationsNeeded(ICMCompressionSessionOptionsRef options); + + +/* + * ICMCompressionSessionOptionsSetMaxKeyFrameInterval() + * + * Summary: + * Sets the maximum interval between key frames (also known as the + * key frame rate). + * + * Discussion: + * Compressors are allowed to generate key frames more frequently if + * this would result in more efficient compression. + * The default key frame interval is 0, which indicates that the + * compressor should choose where to place all key frames. + * (Note: this is a break with previous practice, which used a key + * frame rate of zero to disable temporal compression.) + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionOptionsSetMaxKeyFrameInterval( + ICMCompressionSessionOptionsRef options, + SInt32 maxKeyFrameInterval); + + +/* + * ICMCompressionSessionOptionsGetMaxKeyFrameInterval() + * + * Summary: + * Retrieves the maximum key frame interval. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( SInt32 ) +ICMCompressionSessionOptionsGetMaxKeyFrameInterval(ICMCompressionSessionOptionsRef options); + + +/* + * ICMCompressionSessionOptionsSetAllowFrameTimeChanges() + * + * Summary: + * Enables the compressor to modify frame times. + * + * Discussion: + * Some compressors are able to identify and coalesce runs of + * identical frames and output single frames with longer duration, + * or output frames at a different frame rate from the original. + * This feature is controlled by the "allow frame time changes" + * flag. By default, this flag is set to false, which forces + * compressors to emit one encoded frame for every source frame, and + * to preserve frame display times. + * (Note: this feature replaces the practice of having compressors + * return special high similarity values to indicate that frames + * could be dropped.) + * If you want to allow the compressor to modify frame times in + * order to improve compression performance, enable frame time + * changes. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionSessionOptionsSetAllowFrameTimeChanges( + ICMCompressionSessionOptionsRef options, + Boolean allowFrameTimeChanges); + + +/* + * ICMCompressionSessionOptionsGetAllowFrameTimeChanges() + * + * Summary: + * Retrieves the allow frame time changes flag. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( Boolean ) +ICMCompressionSessionOptionsGetAllowFrameTimeChanges(ICMCompressionSessionOptionsRef options); + + + + +/* ICMMultiPassStorageRef routines */ + +/* + * ICMMultiPassStorageCreationFlags + * + */ +typedef UInt32 ICMMultiPassStorageCreationFlags; +enum { + + /* + * Indicates that the temporary file should not be deleted when the + * multipass storage is released. + */ + kICMMultiPassStorage_DoNotDeleteWhenDone = 1L << 0 +}; + +/* + * ICMMultiPassStorageCreateWithTemporaryFile() + * + * Summary: + * Creates a multipass storage using a temporary file. + * + * Discussion: + * If you pass NULL for directoryRef, the ICM will use the user's + * temporary items folder. + * If you pass NULL for fileName, the ICM will pick a unique name. + * + * The file will be deleted when the multipass storage is released, + * unless you set the kICMMultiPassStorage_DoNotDeleteWhenDone flag. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMMultiPassStorageCreateWithTemporaryFile( + CFAllocatorRef allocator, /* can be NULL */ + FSRef * directoryRef, /* can be NULL */ + CFStringRef fileName, /* can be NULL */ + ICMMultiPassStorageCreationFlags flags, + ICMMultiPassStorageRef * multiPassStorageOut); + + + +/* + * ICMMultiPassStorageStep + * + * Summary: + * Indicates a jump in time stamps used to index multipass storage. + */ +typedef UInt32 ICMMultiPassStorageStep; +enum { + + /* + * Requests the first time stamp at which a value is stored. + */ + kICMMultiPassStorage_GetFirstTimeStamp = 1, + + /* + * Requests the previous time stamp before the given time stamp at + * which a value is stored. + */ + kICMMultiPassStorage_GetPreviousTimeStamp = 2, + + /* + * Requests the next time stamp after the given time stamp at which a + * value is stored. + */ + kICMMultiPassStorage_GetNextTimeStamp = 3, + + /* + * Requests the last time stamp at which a value is stored. + */ + kICMMultiPassStorage_GetLastTimeStamp = 4 +}; + + + +/* + * ICMMultiPassSetDataAtTimeStampCallback + * + * Summary: + * Stores a value at a given time stamp. + * + * Discussion: + * The new data should replace any previous data held at that + * timestamp with that index. + * + * Parameters: + * + * storageRefCon: + * The callbacks' reference value. + * + * timeStamp: + * The time stamp at which the value should be stored. + * + * index: + * An index by which multiple values may be stored at a time + * stamp. The meaning of individual indexes is private to the + * compressor. + * + * data: + * The data to be stored, or NULL to delete the value. The + * contents are private to the compressor component. + */ +typedef CALLBACK_API_C( OSStatus , ICMMultiPassSetDataAtTimeStampCallback )(void *storageRefCon, TimeValue64 timeStamp, long index, CFDataRef data); + +/* + * ICMMultiPassGetTimeStampCallback + * + * Summary: + * Retrieves a time stamp for which a value is stored. + * + * Parameters: + * + * storageRefCon: + * The callbacks' reference value. + * + * fromTimeStamp: + * The initial time stamp. Ignored for some values of step. + * + * step: + * Indicates the kind of time stamp search to perform. + * + * timeStampOut: + * Points to a TimeValue64 to receive the found time stamp. Set to + * -1 if no time stamp is found. + */ +typedef CALLBACK_API_C( OSStatus , ICMMultiPassGetTimeStampCallback )(void *storageRefCon, TimeValue64 fromTimeStamp, ICMMultiPassStorageStep step, TimeValue64 *timeStampOut); + +/* + * ICMMultiPassCopyDataAtTimeStampCallback + * + * Summary: + * Retrieves a value at a given time stamp and index. + * + * Parameters: + * + * storageRefCon: + * The callbacks' reference value. + * + * timeStamp: + * The time stamp at which the value should be retrieved. + * + * index: + * An index by which multiple values may be stored at a time + * stamp. The meaning of individual indexes is private to the + * compressor. + * + * dataOut: + * Points to a variable to receive the value. Set to a + * newly-created CFMutableData containing the value for the given + * time stamp and index, or set to NULL if no value is at that + * time stamp and index. It will be the callers responsibility to + * release the CFMutableData. + */ +typedef CALLBACK_API_C( OSStatus , ICMMultiPassCopyDataAtTimeStampCallback )(void *storageRefCon, TimeValue64 timeStamp, long index, CFMutableDataRef *dataOut); + +/* + * ICMMultiPassReleaseCallback + * + * Summary: + * Called when the multipass storage's retain count drops to zero. + * + * Parameters: + * + * storageRefCon: + * The callbacks' reference value. + */ +typedef CALLBACK_API_C( OSStatus , ICMMultiPassReleaseCallback )(void * storageRefCon); + +/* + * ICMMultiPassStorageCallbacks + * + * Summary: + * A collection of callbacks for creating a custom multipass storage + * object. + */ +struct ICMMultiPassStorageCallbacks { + + /* + * The version of the struct. Set to + * kICMMultiPassStorageCallbacksVersionOne. + */ + UInt32 version; + + /* + * The callbacks' reference value. + */ + void * storageRefCon; + + /* + * The callback for storing values. + */ + ICMMultiPassSetDataAtTimeStampCallback setDataAtTimeStampCallback; + + /* + * The callback for finding time stamps. + */ + ICMMultiPassGetTimeStampCallback getTimeStampCallback; + + /* + * The callback for retrieving values. + */ + ICMMultiPassCopyDataAtTimeStampCallback copyDataAtTimeStampCallback; + + /* + * The callback for disposing the callback's state when done. + */ + ICMMultiPassReleaseCallback releaseCallback; +}; +typedef struct ICMMultiPassStorageCallbacks ICMMultiPassStorageCallbacks; +enum { + kICMMultiPassStorageCallbacksVersionOne = 1 +}; + +/* + * ICMMultiPassStorageCreateWithCallbacks() + * + * Summary: + * Assembles a multipass storage mechanism from callbacks. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMMultiPassStorageCreateWithCallbacks( + CFAllocatorRef allocator, /* can be NULL */ + ICMMultiPassStorageCallbacks * callbacks, + ICMMultiPassStorageRef * multiPassStorageOut); + + +/* + * ICMMultiPassStorageRetain() + * + * Summary: + * Increments the retain count of a multipass storage object. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( ICMMultiPassStorageRef ) +ICMMultiPassStorageRetain(ICMMultiPassStorageRef multiPassStorage); + + +/* + * ICMMultiPassStorageRelease() + * + * Summary: + * Decrements the retain count of a multipass storage object. If it + * drops to zero, the object is disposed. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( void ) +ICMMultiPassStorageRelease(ICMMultiPassStorageRef multiPassStorage); + + +/* + * ICMMultiPassStorageGetTypeID() + * + * Summary: + * Returns the CFTypeID for multipass storage objects. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( CFTypeID ) +ICMMultiPassStorageGetTypeID(void); + + + +/* ICMCompressionFrameOptionsRef routines */ +/* + * ICMCompressionFrameOptionsCreate() + * + * Summary: + * Creates a frame compression options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionFrameOptionsCreate( + CFAllocatorRef allocator, /* can be NULL */ + ICMCompressionSessionRef session, + ICMCompressionFrameOptionsRef * options); + + +/* + * ICMCompressionFrameOptionsCreateCopy() + * + * Summary: + * Copies a frame compression options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionFrameOptionsCreateCopy( + CFAllocatorRef allocator, /* can be NULL */ + ICMCompressionFrameOptionsRef originalOptions, + ICMCompressionFrameOptionsRef * copiedOptions); + + +/* + * ICMCompressionFrameOptionsRetain() + * + * Summary: + * Increments the retain count of a frame compression options object. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( ICMCompressionFrameOptionsRef ) +ICMCompressionFrameOptionsRetain(ICMCompressionFrameOptionsRef options); + + +/* + * ICMCompressionFrameOptionsRelease() + * + * Summary: + * Decrements the retain count of a frame compression options + * object. If it drops to zero, the object is disposed. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( void ) +ICMCompressionFrameOptionsRelease(ICMCompressionFrameOptionsRef options); + + +/* + * ICMCompressionFrameOptionsGetTypeID() + * + * Summary: + * Returns the CFTypeID for frame compression options objects. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( CFTypeID ) +ICMCompressionFrameOptionsGetTypeID(void); + + +/* + * ICMCompressionFrameOptionsGetPropertyInfo() + * + * Summary: + * Retrieves information about properties of a compression frame + * options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionFrameOptionsGetPropertyInfo( + ICMCompressionFrameOptionsRef options, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ComponentValueType * outPropType, /* can be NULL */ + ByteCount * outPropValueSize, /* can be NULL */ + UInt32 * outPropertyFlags); /* can be NULL */ + + +/* + * ICMCompressionFrameOptionsGetProperty() + * + * Summary: + * Retrieves the value of a specific property of a compression frame + * options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionFrameOptionsGetProperty( + ICMCompressionFrameOptionsRef options, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ByteCount inPropValueSize, + ComponentValuePtr outPropValueAddress, + ByteCount * outPropValueSizeUsed); /* can be NULL */ + + +/* + * ICMCompressionFrameOptionsSetProperty() + * + * Summary: + * Sets the value of a specific property of a compression frame + * options object. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionFrameOptionsSetProperty( + ICMCompressionFrameOptionsRef options, + ComponentPropertyClass inPropClass, + ComponentPropertyID inPropID, + ByteCount inPropValueSize, + ConstComponentValuePtr inPropValueAddress); + + + +/* + * Summary: + * Properties of compression frame options objects. + */ +enum { + + /* + * Class identifier for compression frame options object properties. + */ + kQTPropertyClass_ICMCompressionFrameOptions = FOUR_CHAR_CODE('icfo'), + + /* + * Forces frames to be compressed as key frames. + * The compressor must obey the "force key frame" flag if set. By + * default this property is false. + */ + kICMCompressionFrameOptionsPropertyID_ForceKeyFrame = FOUR_CHAR_CODE('keyf'), /* Boolean, Read/Write */ + + /* + * Requests a frame be compressed as a particular frame type. + * The frame type setting may be ignored by the compressor if not + * appropriate. + * By default this is set to kICMFrameType_Unknown. + * Do not assume that kICMFrameType_I means a key frame; if you need + * a key frame, set the "force key frame" property. + */ + kICMCompressionFrameOptionsPropertyID_FrameType = FOUR_CHAR_CODE('frty') /* ICMFrameType, Read/Write */ +}; + +/* + * ICMCompressionFrameOptionsSetForceKeyFrame() + * + * Summary: + * Forces frames to be compressed as key frames. + * + * Discussion: + * The compressor must obey the "force key frame" flag if set. By + * default this is set false. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionFrameOptionsSetForceKeyFrame( + ICMCompressionFrameOptionsRef options, + Boolean forceKeyFrame); + + +/* + * ICMCompressionFrameOptionsGetForceKeyFrame() + * + * Summary: + * Retrieves the "force key frame" flag. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( Boolean ) +ICMCompressionFrameOptionsGetForceKeyFrame(ICMCompressionFrameOptionsRef options); + + +/* + * ICMCompressionFrameOptionsSetFrameType() + * + * Summary: + * Requests a frame be compressed as a particular frame type. + * + * Discussion: + * The frame type setting may be ignored by the compressor if not + * appropriate. + * By default this is set to kICMFrameType_Unknown. + * Do not assume that kICMFrameType_I means a key frame; if you need + * a key frame, set forceKeyFrame. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressionFrameOptionsSetFrameType( + ICMCompressionFrameOptionsRef options, + ICMFrameType frameType); + + +/* + * ICMCompressionFrameOptionsGetFrameType() + * + * Summary: + * Retrieves the frame type setting. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( ICMFrameType ) +ICMCompressionFrameOptionsGetFrameType(ICMCompressionFrameOptionsRef options); + + + +/* ICMEncodedFrameRef routines */ +/* + * ICMEncodedFrameRetain() + * + * Summary: + * Increments the retain count of an encoded frame object. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( ICMEncodedFrameRef ) +ICMEncodedFrameRetain(ICMEncodedFrameRef frame); + + +/* + * ICMEncodedFrameRelease() + * + * Summary: + * Decrements the retain count of an encoded frame object. If it + * drops to zero, the object is disposed. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( void ) +ICMEncodedFrameRelease(ICMEncodedFrameRef frame); + + +/* + * ICMEncodedFrameGetTypeID() + * + * Summary: + * Returns the CFTypeID for encoded frame objects. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( CFTypeID ) +ICMEncodedFrameGetTypeID(void); + + +/* + * ICMEncodedFrameGetDataPtr() + * + * Summary: + * Gets the data buffer. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( UInt8 * ) +ICMEncodedFrameGetDataPtr(ICMEncodedFrameRef frame); + + +/* + * ICMEncodedFrameGetBufferSize() + * + * Summary: + * Gets the size of the data buffer. + * + * Discussion: + * This is the physical size of the buffer. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( ByteCount ) +ICMEncodedFrameGetBufferSize(ICMEncodedFrameRef frame); + + +/* + * ICMEncodedFrameGetDataSize() + * + * Summary: + * Gets the data size of the compressed frame in the buffer. + * + * Discussion: + * This is the logical size of the frame data. It may be less than + * the physical size of the buffer. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( ByteCount ) +ICMEncodedFrameGetDataSize(ICMEncodedFrameRef frame); + + +/* + * ICMEncodedFrameSetDataSize() + * + * Summary: + * Sets the data size of the compressed frame in the buffer. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMEncodedFrameSetDataSize( + ICMMutableEncodedFrameRef frame, + ByteCount dataSize); + + +/* + * ICMEncodedFrameGetDecodeNumber() + * + * Summary: + * Retrieves the decode number. + * + * Discussion: + * The ICM automatically stamps ascending decode numbers on frames + * after the compressor emits them. The first decode number in a + * session is 1. + * Note: Compressors should not call this function. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( UInt32 ) +ICMEncodedFrameGetDecodeNumber(ICMEncodedFrameRef frame); + + +/* + * ICMEncodedFrameGetTimeScale() + * + * Summary: + * Retrieves the timescale. + * + * Discussion: + * This is always the same as the timescale of the compression + * session. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( TimeScale ) +ICMEncodedFrameGetTimeScale(ICMEncodedFrameRef frame); + + +/* + * ICMEncodedFrameGetImageDescription() + * + * Summary: + * Retrieves the image description. + * + * Discussion: + * Returns the same image description handle as + * ICMCompressionSessionGetImageDescription. + * IMPORTANT: The caller should NOT dispose this handle. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMEncodedFrameGetImageDescription( + ICMEncodedFrameRef frame, + ImageDescriptionHandle * imageDescOut); + + +/* + * ICMEncodedFrameGetValidTimeFlags() + * + * Summary: + * Retrieves flags indicating which of the time stamps and durations + * are valid. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( ICMValidTimeFlags ) +ICMEncodedFrameGetValidTimeFlags(ICMEncodedFrameRef frame); + + +/* + * ICMEncodedFrameGetDecodeTimeStamp() + * + * Summary: + * Retrieves the frame's decode time stamp. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( TimeValue64 ) +ICMEncodedFrameGetDecodeTimeStamp(ICMEncodedFrameRef frame); + + +/* + * ICMEncodedFrameGetDisplayTimeStamp() + * + * Summary: + * Retrieves the frame's display time stamp. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( TimeValue64 ) +ICMEncodedFrameGetDisplayTimeStamp(ICMEncodedFrameRef frame); + + +/* + * ICMEncodedFrameGetDisplayOffset() + * + * Summary: + * Retrieves the frame's display offset, which is the offset from + * decode time stamp to display time stamp. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( TimeValue64 ) +ICMEncodedFrameGetDisplayOffset(ICMEncodedFrameRef frame); + + +/* + * ICMEncodedFrameGetDecodeDuration() + * + * Summary: + * Retrieves the frame's decode duration. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( TimeValue64 ) +ICMEncodedFrameGetDecodeDuration(ICMEncodedFrameRef frame); + + +/* + * ICMEncodedFrameGetDisplayDuration() + * + * Summary: + * Retrieves the frame's display duration. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( TimeValue64 ) +ICMEncodedFrameGetDisplayDuration(ICMEncodedFrameRef frame); + + + +/* + * ICMEncodedFrameSetValidTimeFlags() + * + * Summary: + * Sets flags that indicate which of the time stamps and durations + * are valid. + * + * Discussion: + * Note that setting the (decode/display) (timestamp/duration) + * automatically sets the corresponding valid time flags. For + * example, calling ICMEncodedFrameSetDecodeTimeStamp sets + * kICMValidTime_DisplayTimeStampIsValid. If both decode timestamp + * and display timestamp are valid, + * kICMValidTime_DisplayOffsetIsValid is automatically set. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMEncodedFrameSetValidTimeFlags( + ICMMutableEncodedFrameRef frame, + ICMValidTimeFlags validTimeFlags); + + +/* + * ICMEncodedFrameSetDecodeTimeStamp() + * + * Summary: + * Sets the decode time stamp. + * + * Discussion: + * This automatically sets the kICMValidTime_DecodeTimeStampIsValid + * flag. If the display timestamp is valid, it also sets the + * kICMValidTime_DisplayOffsetIsValid flag. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMEncodedFrameSetDecodeTimeStamp( + ICMMutableEncodedFrameRef frame, + TimeValue64 decodeTimeStamp); + + +/* + * ICMEncodedFrameSetDisplayTimeStamp() + * + * Summary: + * Sets the display time stamp. + * + * Discussion: + * This automatically sets the kICMValidTime_DisplayTimeStampIsValid + * flag. If the decode timestamp is valid, it also sets the + * kICMValidTime_DisplayOffsetIsValid flag. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMEncodedFrameSetDisplayTimeStamp( + ICMMutableEncodedFrameRef frame, + TimeValue64 displayTimeStamp); + + +/* + * ICMEncodedFrameSetDecodeDuration() + * + * Summary: + * Sets the decode duration. + * + * Discussion: + * This automatically sets the kICMValidTime_DecodeDurationIsValid + * flag. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMEncodedFrameSetDecodeDuration( + ICMMutableEncodedFrameRef frame, + TimeValue64 decodeDuration); + + +/* + * ICMEncodedFrameSetDisplayDuration() + * + * Summary: + * Sets the display duration. + * + * Discussion: + * This automatically sets the kICMValidTime_DisplayDurationIsValid + * flag. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMEncodedFrameSetDisplayDuration( + ICMMutableEncodedFrameRef frame, + TimeValue64 displayDuration); + + +/* + * ICMEncodedFrameGetMediaSampleFlags() + * + * Summary: + * Retrieves the media sample flags for an encoded frame. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( MediaSampleFlags ) +ICMEncodedFrameGetMediaSampleFlags(ICMEncodedFrameRef frame); + + +/* + * ICMEncodedFrameSetMediaSampleFlags() + * + * Summary: + * Sets the media sample flags for an encoded frame. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMEncodedFrameSetMediaSampleFlags( + ICMMutableEncodedFrameRef frame, + MediaSampleFlags mediaSampleFlags); + + +/* + * ICMEncodedFrameGetFrameType() + * + * Summary: + * Retrieves the frame type for an encoded frame. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( ICMFrameType ) +ICMEncodedFrameGetFrameType(ICMEncodedFrameRef frame); + + +/* + * ICMEncodedFrameSetFrameType() + * + * Summary: + * Sets the frame type for an encoded frame. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMEncodedFrameSetFrameType( + ICMMutableEncodedFrameRef frame, + ICMFrameType frameType); + + +/* + * ICMEncodedFrameGetSimilarity() + * + * Summary: + * Retrieves the similarity for an encoded frame. + * + * Discussion: + * 1.0 means identical. 0.0 means not at all alike. By default, + * this is set to -1.0, which means unknown. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( Float32 ) +ICMEncodedFrameGetSimilarity(ICMEncodedFrameRef frame); + + +/* + * ICMEncodedFrameSetSimilarity() + * + * Summary: + * Sets the similarity for an encoded frame. + * + * Discussion: + * 1.0 means identical. 0.0 means not at all alike. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMEncodedFrameSetSimilarity( + ICMMutableEncodedFrameRef frame, + Float32 similarity); + + +/* + * ICMEncodedFrameGetSourceFrameRefCon() + * + * Summary: + * Retrieves the source frame reference value. + * + * Discussion: + * This is copied from the sourceFrameRefCon parameter to + * ICMCompressionSessionEncodeFrame. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( void * ) +ICMEncodedFrameGetSourceFrameRefCon(ICMEncodedFrameRef frame); + + +/* ICMCompressorSession interface for compressor components */ + +/* + * ICMCompressorSessionRef + * + * Summary: + * Represents the session between the ICM and an image compressor + * component. + * + * Discussion: + * (Do not confuse this with ICMCompressionSessionRef, which is the + * session between the client and the ICM.) Note: compressors do not + * need to make any retain or release calls on this token. + */ +typedef struct OpaqueICMCompressorSession* ICMCompressorSessionRef; + +/* + * ICMCompressorSourceFrameRef + * + * Summary: + * An opaque token that represents a frame that has been passed to + * ICMCompressionSessionEncodeFrame. + * + * Discussion: + * Such tokens are passed to the compressor component, which may + * retain a window of them in order to perform out-of-order encoding. + */ +typedef struct OpaqueICMCompressorSourceFrame* ICMCompressorSourceFrameRef; +/* + * ICMCompressorSourceFrameRetain() + * + * Summary: + * Increments the retain count of a source frame object. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( ICMCompressorSourceFrameRef ) +ICMCompressorSourceFrameRetain(ICMCompressorSourceFrameRef sourceFrame); + + +/* + * ICMCompressorSourceFrameRelease() + * + * Summary: + * Decrements the retain count of a source frame object. If it + * drops to zero, the object is disposed. + * + * Discussion: + * If you pass NULL to this function, nothing happens. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( void ) +ICMCompressorSourceFrameRelease(ICMCompressorSourceFrameRef sourceFrame); + + +/* + * ICMCompressorSourceFrameGetTypeID() + * + * Summary: + * Returns the CFTypeID for source frame objects. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( CFTypeID ) +ICMCompressorSourceFrameGetTypeID(void); + + +/* + * ICMCompressorSourceFrameGetPixelBuffer() + * + * Summary: + * Retrieves a source frame's pixel buffer. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( CVPixelBufferRef ) +ICMCompressorSourceFrameGetPixelBuffer(ICMCompressorSourceFrameRef sourceFrame); + + +/* + * ICMCompressorSourceFrameGetDisplayNumber() + * + * Summary: + * Retrieves a source frame's display number. + * + * Discussion: + * The ICM tags source frames with display numbers in the order they + * are passed to ICMCompressionSessionEncodeFrame; the first display + * number is 1. Compressors may compare these numbers to work out + * whether prediction is forward or backward even when display times + * are not provided. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( long ) +ICMCompressorSourceFrameGetDisplayNumber(ICMCompressorSourceFrameRef sourceFrame); + + +/* + * ICMCompressorSourceFrameGetDisplayTimeStampAndDuration() + * + * Summary: + * Retrieves the display time stamp and duration of a source frame. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressorSourceFrameGetDisplayTimeStampAndDuration( + ICMCompressorSourceFrameRef sourceFrame, + TimeValue64 * displayTimeStampOut, /* can be NULL */ + TimeValue64 * displayDurationOut, /* can be NULL */ + TimeScale * timeScaleOut, /* can be NULL */ + ICMValidTimeFlags * validTimeFlagsOut); /* can be NULL */ + + +/* + * ICMCompressorSourceFrameGetFrameOptions() + * + * Summary: + * Retrieves the frame compression options for a source frame. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( ICMCompressionFrameOptionsRef ) +ICMCompressorSourceFrameGetFrameOptions(ICMCompressorSourceFrameRef sourceFrame); + + +/* + * ICMCompressorSourceFrameDetachPixelBuffer() + * + * Summary: + * Disconnects the pixel buffer from the source frame and allows it + * to be released. + * + * Discussion: + * Compressor components often need to hold onto + * ICMCompressorSourceFrameRefs for some time after they are done + * with the pixel buffers. In order to allow pixel buffer memory to + * be released earlier, they may call + * ICMCompressorSourceFrameDetachPixelBuffer to declare that they + * have no further need for the source frame's pixel buffer. After + * calling this, ICMCompressorSourceFrameGetPixelBuffer will return + * NULL. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressorSourceFrameDetachPixelBuffer(ICMCompressorSourceFrameRef sourceFrame); + + + +/* + * ICMCompressorSessionDropFrame() + * + * Summary: + * Called by a compressor to indicate that sourceFrame has been + * dropped and will not contribute to any encoded frames. + * + * Discussion: + * Calling this function does not automatically release the source + * frame; if the compressor called ICMCompressorSourceFrameRetain it + * should still call ICMCompressorSourceFrameRelease. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressorSessionDropFrame( + ICMCompressorSessionRef session, + ICMCompressorSourceFrameRef sourceFrame); + + +/* + * ICMCompressorSessionEmitEncodedFrame() + * + * Summary: + * Called by a compressor to output an encoded frame corresponding + * to one (or more) source frames. + * + * Discussion: + * (Encoded frames may only correspond to more than one source frame + * if allowFrameTimeChanges is set in the + * compressionSessionOptions.) + * After calling this, the compressor should release the encoded + * frame by calling ICMEncodedFrameRelease. + * Calling this function does not automatically release the source + * frames; if the compressor called ICMCompressorSourceFrameRetain + * it should still call ICMCompressorSourceFrameRelease. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMCompressorSessionEmitEncodedFrame( + ICMCompressorSessionRef session, + ICMMutableEncodedFrameRef encodedFrame, + long numberOfSourceFrames, + ICMCompressorSourceFrameRef sourceFrames[]); + + +/* + * ICMEncodedFrameCreateMutable() + * + * Summary: + * Called by a compressor to create an encoded-frame token + * corresponding to a given source frame. + * + * Discussion: + * The encoded frame will initially have zero mediaSampleFlags; if + * the frame is not a key frame, the compressor must call + * ICMEncodedFrameSetMediaSampleFlags to set mediaSampleNotSync. If + * the frame is droppable, the compressor should set + * mediaSampleDroppable. If the frame is a partial key frame, the + * compressor should set mediaSamplePartialSync. + * The encoded frame will initially have undefined decodeTimeStamp + * and decodeDuration. The compressor may set these directly by + * calling ICMEncodedFrameSetDecodeTimeStamp and/or + * ICMEncodedFrameSetDecodeDuration. If these are not set by the + * compressor, the ICM will attempt to derive them. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMEncodedFrameCreateMutable( + ICMCompressorSessionRef session, + ICMCompressorSourceFrameRef sourceFrame, + ByteCount bufferSize, + ICMMutableEncodedFrameRef * frameOut); + + +/* Multi-pass storage access routines for compressor components */ +/* + * ICMMultiPassStorageSetDataAtTimeStamp() + * + * Summary: + * Called by a multipass-capable compressor to store data at a given + * timestamp. + * + * Discussion: + * The new data replaces any previous data held at that timestamp. + * If data is NULL, the data for that timestamp is deleted. The + * format of the data is private to the compressor. + * + * Parameters: + * + * multiPassStorage: + * The multipass storage object. + * + * timeStamp: + * The time stamp at which the value should be stored. + * + * index: + * An index by which multiple values may be stored at a time + * stamp. The meaning of individual indexes is private to the + * compressor. + * + * data: + * The data to be stored, or NULL to delete the value. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMMultiPassStorageSetDataAtTimeStamp( + ICMMultiPassStorageRef multiPassStorage, + TimeValue64 timeStamp, + long index, + CFDataRef data); + + +/* + * ICMMultiPassStorageGetTimeStamp() + * + * Summary: + * Called by a multipass-capable compressor to retrieve a time stamp + * for which a value is stored. + * + * Parameters: + * + * multiPassStorage: + * The multipass storage object. + * + * fromTimeStamp: + * The initial time stamp. Ignored for some values of step. + * + * step: + * Indicates the kind of time stamp search to perform. + * + * timeStampOut: + * Points to a TimeValue64 to receive the found time stamp. It + * will be set to -1 if no time stamp is found. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMMultiPassStorageGetTimeStamp( + ICMMultiPassStorageRef multiPassStorage, + TimeValue64 fromTimeStamp, + ICMMultiPassStorageStep step, + TimeValue64 * timeStampOut); + + +/* + * ICMMultiPassStorageCopyDataAtTimeStamp() + * + * Summary: + * Called by a multipass-capable compressor to retrieve data at a + * given timestamp. + * + * Parameters: + * + * multiPassStorage: + * The multipass storage object. + * + * timeStamp: + * The time stamp at which the value should be retrieved. + * + * index: + * An index by which multiple values may be stored at a time + * stamp. The meaning of individual indexes is private to the + * compressor. + * + * dataOut: + * Points to a CFMutableDataRef to receive the value. It will be + * set to a newly-created CFMutableData containing the value for + * the given time stamp and index, or set to NULL if no value is + * at that time stamp and index. It is the caller's responsibility + * to release the CFMutableData. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +ICMMultiPassStorageCopyDataAtTimeStamp( + ICMMultiPassStorageRef multiPassStorage, + TimeValue64 timeStamp, + long index, + CFMutableDataRef * dataOut); + + + + +#if TARGET_OS_MAC +/* + * kQTVisualContextTypeKey + * + * Summary: + * Read-only CFStringRef: Type of the visual context. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +extern const CFStringRef kQTVisualContextTypeKey; +/* + * kQTVisualContextType_PixelBuffer + * + * Summary: + * Value for kQTVisualContextTypeKey for pixel buffer visual + * contexts. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +extern const CFStringRef kQTVisualContextType_PixelBuffer; +/* + * kQTVisualContextType_OpenGLTexture + * + * Summary: + * Value for kQTVisualContextTypeKey for OpenGL texture visual + * contexts. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +extern const CFStringRef kQTVisualContextType_OpenGLTexture; +/* + * kQTVisualContextWorkingColorSpaceKey + * + * Summary: + * CGColorSpaceRef: Color space in which QuickTime will perform + * image processing. If this attribute is not set, images will be + * processed in the output color space. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +extern const CFStringRef kQTVisualContextWorkingColorSpaceKey; +/* + * kQTVisualContextOutputColorSpaceKey + * + * Summary: + * CGColorSpaceRef: Color space of images produced by this visual + * context. If this attribute is not set, images may be in any color + * space. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +extern const CFStringRef kQTVisualContextOutputColorSpaceKey; +/* + * kQTVisualContextExpectedReadAheadKey + * + * Summary: + * CFNumberRef: Number of seconds ahead of real-time that the client + * expects to pull images out of the visual context. Applications + * using the CoreVideo display link should set this attribute + * according to value returned from + * CVDisplayLinkGetOutputVideoLatency(). + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +extern const CFStringRef kQTVisualContextExpectedReadAheadKey; +/* + * kQTVisualContextPixelBufferAttributesKey + * + * Summary: + * CFDictionaryRef: Dictionary containing pixel buffer attributes as + * described for the CoreVideo pixel buffer pool. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +extern const CFStringRef kQTVisualContextPixelBufferAttributesKey; +/* + * kQTVisualContextTargetDimensionsKey + * + * Summary: + * CFDictionaryRef: Dictionary containing + * kQTVisualContextTargetDimensions_WidthKey and + * kQTVisualContextTargetDimensions_HeightKey. This is only a hint + * to optimize certain media types, such as text, that can render at + * any resolution. If this attribute is not set, the movie will + * render at its native resolution. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +extern const CFStringRef kQTVisualContextTargetDimensionsKey; +/* + * kQTVisualContextTargetDimensions_WidthKey + * + * Summary: + * CFNumberRef: Width, in pixels, of the rendering target. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +extern const CFStringRef kQTVisualContextTargetDimensions_WidthKey; +/* + * kQTVisualContextTargetDimensions_HeightKey + * + * Summary: + * CFNumberRef: Height, in pixels, of the rendering target. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +extern const CFStringRef kQTVisualContextTargetDimensions_HeightKey; +#else +#define kQTVisualContextTypeKey CFSTR("Type") +#define kQTVisualContextType_PixelBuffer CFSTR("PixelBuffer") +#define kQTVisualContextType_OpenGLTexture CFSTR("OpenGLTexture") +#define kQTVisualContextType_Direct3DTexture CFSTR("Direct3DTexture") +#define kQTVisualContextWorkingColorSpaceKey CFSTR("WorkingColorSpace") +#define kQTVisualContextOutputColorSpaceKey CFSTR("OutputColorSpace") +#define kQTVisualContextExpectedReadAheadKey CFSTR("ExpectedReadAhead") +#define kQTVisualContextPixelBufferAttributesKey CFSTR("PixelBufferAttributes") +#define kQTVisualContextTargetDimensionsKey CFSTR("TargetDimensions") +#define kQTVisualContextTargetDimensions_WidthKey CFSTR("Width") +#define kQTVisualContextTargetDimensions_HeightKey CFSTR("Height") +#endif /* TARGET_OS_MAC */ + +/* + * QTVisualContextRetain() + * + * Summary: + * Increments the visual context's reference count. + * + * Discussion: + * The same visual context is returned for convenience. If + * visualContext is NULL, nothing happens. + * + * Parameters: + * + * visualContext: + * [in] The visual context to retain. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( QTVisualContextRef ) +QTVisualContextRetain(QTVisualContextRef visualContext); + + +/* + * QTVisualContextRelease() + * + * Summary: + * Decrements the visual context's reference count. + * + * Discussion: + * If the retain count decreases to zero, the visual context is + * disposed. If visualContext is NULL, nothing happens. + * + * Parameters: + * + * visualContext: + * [in] The visual context to release. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( void ) +QTVisualContextRelease(QTVisualContextRef visualContext); + + +/* + * QTVisualContextGetTypeID() + * + * Summary: + * Returns the CFTypeID for QTVisualContextRef. + * + * Discussion: + * You could use this to test whether a CFTypeRef that extracted + * from a CF container such as a CFArray was a QTVisualContextRef. + * All visual contexts have the same CFTypeID. If you need to + * distinguish between different types of visual contexts (eg. + * PixelBuffer vs. OpenGLTexture), query for kQTVisualContextTypeKey + * with QTVisualContextGetAttribute(). + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( CFTypeID ) +QTVisualContextGetTypeID(void); + + +/* + * QTVisualContextSetAttribute() + * + * Summary: + * Sets a visual context attribute. + * + * Parameters: + * + * visualContext: + * [in] The visual context. + * + * attributeKey: + * [in] Identifier of attribute to set. + * + * attributeValue: + * [in] Value of attribute to set, or NULL to remove a value. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +QTVisualContextSetAttribute( + QTVisualContextRef visualContext, + CFStringRef attributeKey, + CFTypeRef attributeValue); /* can be NULL */ + + +/* + * QTVisualContextGetAttribute() + * + * Summary: + * Gets a visual context attribute. + * + * Parameters: + * + * visualContext: + * [in] The visual context. + * + * attributeKey: + * [in] Identifier of attribute to get. + * + * attributeValueOut: + * [out] Pointer to variable that will receive the attribute + * value, or NULL if the attribute is not set. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +QTVisualContextGetAttribute( + QTVisualContextRef visualContext, + CFStringRef attributeKey, + CFTypeRef * attributeValueOut); + + + +/* + * QTVisualContextImageAvailableCallback + * + * Summary: + * User-defined callback function to recieve notifications when a + * new image becomes available. + * + * Discussion: + * Due to unpredictible activity, such as user seeks or the arrival + * of streaming video packets from a network, new images may become + * available for times supposedly occupied by previous images. + * Applications using the CoreVideo display link to drive rendering + * probably do not need to install a callback of this type since + * they will already be checking for new images at a sufficient rate. + * + * Parameters: + * + * visualContext: + * [in] The visual context invoking the callback. + * + * timeStamp: + * [in] Time for which a new image has become available. + * + * refCon: + * [in] User-defined value passed to + * QTVisualContextSetImageAvailableCallback. + */ +typedef CALLBACK_API_C( void , QTVisualContextImageAvailableCallback )(QTVisualContextRef visualContext, const CVTimeStamp *timeStamp, void *refCon); +/* + * QTVisualContextSetImageAvailableCallback() + * + * Summary: + * Installs user-defined callback to be notified when new images + * become available. + * + * Discussion: + * This routine installs the user defined + * QTVisualContextImageAvailableCallback callback. There can only be + * one callback associated with a QTVisualContext at a given time. + * + * Parameters: + * + * visualContext: + * [in] The visual context. + * + * imageAvailableCallback: + * [in] User-defined callback function to recieve notifications. + * Pass NULL to remove any existing callback. + * + * refCon: + * [in] User-defined value to pass to + * QTVisualContextImageAvailableCallback. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +QTVisualContextSetImageAvailableCallback( + QTVisualContextRef visualContext, + QTVisualContextImageAvailableCallback imageAvailableCallback, /* can be NULL */ + void * refCon); /* can be NULL */ + + +/* + * QTVisualContextIsNewImageAvailable() + * + * Summary: + * Queries whether a new image is available for a given time. + * + * Discussion: + * This function returns true if there is a image available for the + * specified time that is different from the last image retrieved + * from QTVisualContextCopyImageForTime. See + * QTVisualContextCopyImageForTime for restrictions on time-stamps. + * + * Parameters: + * + * visualContext: + * [in] The visual context. + * + * timeStamp: + * [in] Time in question. Pass NULL to request the image at the + * current time. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( Boolean ) +QTVisualContextIsNewImageAvailable( + QTVisualContextRef visualContext, + const CVTimeStamp * timeStamp); /* can be NULL */ + + +/* + * QTVisualContextCopyImageForTime() + * + * Summary: + * Retrieves an image buffer from the visual context, indexed by the + * provided timestamp. + * + * Discussion: + * You should not request image buffers further ahead of the current + * time than the read-ahead time specified with the + * kQTVisualContextExpectedReadAheadKey attribute. You may skip + * images by passing later times, but you may not pass an earlier + * time than passed to a previous call to this function. + * + * Parameters: + * + * visualContext: + * [in] The visual context. + * + * allocator: + * [in] Allocator used to create new CVImageBufferRef. + * + * timeStamp: + * [in] Time in question. Pass NULL to request the image at the + * current time. + * + * newImage: + * [out] Points to variable to receive new image. If there is no + * video at the requested time, this variable will be set to NULL. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +QTVisualContextCopyImageForTime( + QTVisualContextRef visualContext, + CFAllocatorRef allocator, /* can be NULL */ + const CVTimeStamp * timeStamp, /* can be NULL */ + CVImageBufferRef * newImage); + + +/* + * QTVisualContextTask() + * + * Summary: + * Causes visual context to release internally held resources for + * later re-use. + * + * Discussion: + * For optimal resource management, this function should be called + * in every rendering pass, after old images have been released, new + * images have been used and all rendering has been flushed to the + * screen. This call is not mandatory. + * + * Parameters: + * + * visualContext: + * [in] The visual context. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( void ) +QTVisualContextTask(QTVisualContextRef visualContext); + + +#if TARGET_OS_MAC +/* + * QTOpenGLTextureContextCreate() + * + * Summary: + * Creates a new OpenGL texture context for the given OpenGL context + * and pixel format. + * + * Discussion: + * This function will fail if the graphics hardware is insufficient. + * + * Parameters: + * + * allocator: + * [in] Allocator used to create the texture context. + * + * cglContext: + * [in] OpenGL context used to create textures. + * + * cglPixelFormat: + * [in] OpenGL pixel format used to create the OpenGL context. + * + * attributes: + * [in] Dictionary of attributes. + * + * newTextureContext: + * [out] Points to a variable to recieve the new OpenGL texture + * context. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +QTOpenGLTextureContextCreate( + CFAllocatorRef allocator, /* can be NULL */ + CGLContextObj cglContext, + CGLPixelFormatObj cglPixelFormat, + CFDictionaryRef attributes, /* can be NULL */ + QTVisualContextRef * newTextureContext); + + +/* + * QTPixelBufferContextCreate() + * + * Summary: + * Creates a new pixel buffer context with the given attributes. + * + * Discussion: + * This function will fail if the graphics hardware is insufficient. + * + * Parameters: + * + * allocator: + * [in] Allocator used to create the pixel buffer context. + * + * attributes: + * [in] Dictionary of attributes. + * + * newPixelBufferContext: + * [out] Points to a variable to recieve the new pixel buffer + * context. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: in version 10.4 (or QuickTime 7.0) and later + */ +EXTERN_API_C( OSStatus ) +QTPixelBufferContextCreate( + CFAllocatorRef allocator, /* can be NULL */ + CFDictionaryRef attributes, /* can be NULL */ + QTVisualContextRef * newPixelBufferContext); + + +#endif /* TARGET_OS_MAC */ + +#if TARGET_OS_WIN32 +#if CALL_NOT_IN_CARBON +/* + * QTDirect3DTextureContextCreate() + * + * Summary: + * Creates a new Direct3D texture context for the given Direct3D + * device and pixel format. + * + * Discussion: + * This function will fail if the graphics hardware is insufficient. + * + * Parameters: + * + * allocator: + * [in] Allocator used to create the texture context. + * + * d3dDevice: + * [in] Direct3D device used to create textures. + * + * d3dPixelFormat: + * [in] Direct3D pixel format used to create the Direct3D device. + * + * attributes: + * [in] Dictionary of attributes. + * + * newTextureContext: + * [out] Points to a variable to recieve the new Direct3D texture + * context. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available + * Mac OS X: not available + * Windows: in qtmlClient.lib 6.6 and later + */ +EXTERN_API_C( OSStatus ) +QTDirect3DTextureContextCreate( + CFAllocatorRef allocator, /* can be NULL */ + void * d3dDevice, + UInt32 d3dPixelFormat, + CFDictionaryRef attributes, /* can be NULL */ + QTVisualContextRef * newTextureContext); + + +#endif /* CALL_NOT_IN_CARBON */ + +#endif /* TARGET_OS_WIN32 */ + + +#endif // !__LP64__ + + + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=reset +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(pop) +#elif PRAGMA_STRUCT_PACK + #pragma pack() +#endif + +#ifdef PRAGMA_IMPORT_OFF +#pragma import off +#elif PRAGMA_IMPORT +#pragma import reset +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __IMAGECOMPRESSION__ */ + |