Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

13010 lines
422 KiB

  1. /*
  2. File: ImageCompression.h
  3. Contains: QuickTime Image Compression Interfaces.
  4. Version: QuickTime 7.3
  5. Copyright: (c) 2007 (c) 1990-2007 by Apple Inc., all rights reserved
  6. Bugs?: For bug reports, consult the following page on
  7. the World Wide Web:
  8. http://developer.apple.com/bugreporter/
  9. */
  10. #ifndef __IMAGECOMPRESSION__
  11. #define __IMAGECOMPRESSION__
  12. #ifndef __MACTYPES__
  13. #include <MacTypes.h>
  14. #endif
  15. #ifndef __QUICKDRAW__
  16. #include <Quickdraw.h>
  17. #endif
  18. #ifndef __QDOFFSCREEN__
  19. #include <QDOffscreen.h>
  20. #endif
  21. #ifndef __COMPONENTS__
  22. #include <Components.h>
  23. #endif
  24. #ifndef __DIALOGS__
  25. #include <Dialogs.h>
  26. #endif
  27. #ifndef __STANDARDFILE__
  28. #include <StandardFile.h>
  29. #endif
  30. #if TARGET_OS_MAC
  31. #include <OpenGL/OpenGL.h>
  32. #include <QuartzCore/CoreVideo.h>
  33. #else
  34. #include <CoreVideo.h>
  35. #endif /* TARGET_OS_MAC */
  36. #if PRAGMA_ONCE
  37. #pragma once
  38. #endif
  39. #ifdef __cplusplus
  40. extern "C" {
  41. #endif
  42. #if PRAGMA_IMPORT
  43. #pragma import on
  44. #endif
  45. #if PRAGMA_STRUCT_ALIGN
  46. #pragma options align=mac68k
  47. #elif PRAGMA_STRUCT_PACKPUSH
  48. #pragma pack(push, 2)
  49. #elif PRAGMA_STRUCT_PACK
  50. #pragma pack(2)
  51. #endif
  52. #ifndef AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
  53. #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER WEAK_IMPORT_ATTRIBUTE
  54. #endif
  55. #ifndef AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
  56. #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
  57. #endif
  58. #ifndef AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
  59. #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
  60. #endif
  61. #ifndef AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
  62. #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
  63. #endif
  64. #ifndef AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
  65. #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
  66. #endif
  67. #ifndef AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
  68. #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
  69. #endif
  70. /* QuickTime is not available to 64-bit clients */
  71. #if !__LP64__
  72. struct MatrixRecord {
  73. Fixed matrix[3][3];
  74. };
  75. typedef struct MatrixRecord MatrixRecord;
  76. typedef MatrixRecord * MatrixRecordPtr;
  77. enum {
  78. kRawCodecType = FOUR_CHAR_CODE('raw '),
  79. kCinepakCodecType = FOUR_CHAR_CODE('cvid'),
  80. kGraphicsCodecType = FOUR_CHAR_CODE('smc '),
  81. kAnimationCodecType = FOUR_CHAR_CODE('rle '),
  82. kVideoCodecType = FOUR_CHAR_CODE('rpza'),
  83. kComponentVideoCodecType = FOUR_CHAR_CODE('yuv2'),
  84. kJPEGCodecType = FOUR_CHAR_CODE('jpeg'),
  85. kMotionJPEGACodecType = FOUR_CHAR_CODE('mjpa'),
  86. kMotionJPEGBCodecType = FOUR_CHAR_CODE('mjpb'),
  87. kSGICodecType = FOUR_CHAR_CODE('.SGI'),
  88. kPlanarRGBCodecType = FOUR_CHAR_CODE('8BPS'),
  89. kMacPaintCodecType = FOUR_CHAR_CODE('PNTG'),
  90. kGIFCodecType = FOUR_CHAR_CODE('gif '),
  91. kPhotoCDCodecType = FOUR_CHAR_CODE('kpcd'),
  92. kQuickDrawGXCodecType = FOUR_CHAR_CODE('qdgx'),
  93. kAVRJPEGCodecType = FOUR_CHAR_CODE('avr '),
  94. kOpenDMLJPEGCodecType = FOUR_CHAR_CODE('dmb1'),
  95. kBMPCodecType = FOUR_CHAR_CODE('WRLE'),
  96. kWindowsRawCodecType = FOUR_CHAR_CODE('WRAW'),
  97. kVectorCodecType = FOUR_CHAR_CODE('path'),
  98. kQuickDrawCodecType = FOUR_CHAR_CODE('qdrw'),
  99. kWaterRippleCodecType = FOUR_CHAR_CODE('ripl'),
  100. kFireCodecType = FOUR_CHAR_CODE('fire'),
  101. kCloudCodecType = FOUR_CHAR_CODE('clou'),
  102. kH261CodecType = FOUR_CHAR_CODE('h261'),
  103. kH263CodecType = FOUR_CHAR_CODE('h263'),
  104. kDVCNTSCCodecType = FOUR_CHAR_CODE('dvc '), /* DV - NTSC and DVCPRO NTSC (available in QuickTime 6.0 or later)*/
  105. /* NOTE: kDVCProNTSCCodecType is deprecated. */
  106. /* Use kDVCNTSCCodecType instead -- as far as the codecs are concerned, */
  107. /* the two data formats are identical.*/
  108. kDVCPALCodecType = FOUR_CHAR_CODE('dvcp'),
  109. kDVCProPALCodecType = FOUR_CHAR_CODE('dvpp'), /* available in QuickTime 6.0 or later*/
  110. kDVCPro50NTSCCodecType = FOUR_CHAR_CODE('dv5n'),
  111. kDVCPro50PALCodecType = FOUR_CHAR_CODE('dv5p'),
  112. kDVCPro100NTSCCodecType = FOUR_CHAR_CODE('dv1n'),
  113. kDVCPro100PALCodecType = FOUR_CHAR_CODE('dv1p'),
  114. kDVCPROHD720pCodecType = FOUR_CHAR_CODE('dvhp'),
  115. kDVCPROHD1080i60CodecType = FOUR_CHAR_CODE('dvh6'),
  116. kDVCPROHD1080i50CodecType = FOUR_CHAR_CODE('dvh5'),
  117. kBaseCodecType = FOUR_CHAR_CODE('base'),
  118. kFLCCodecType = FOUR_CHAR_CODE('flic'),
  119. kTargaCodecType = FOUR_CHAR_CODE('tga '),
  120. kPNGCodecType = FOUR_CHAR_CODE('png '),
  121. kTIFFCodecType = FOUR_CHAR_CODE('tiff'), /* NOTE: despite what might seem obvious from the two constants*/
  122. /* below and their names, they really are correct. 'yuvu' really */
  123. /* does mean signed, and 'yuvs' really does mean unsigned. Really. */
  124. kComponentVideoSigned = FOUR_CHAR_CODE('yuvu'),
  125. kComponentVideoUnsigned = FOUR_CHAR_CODE('yuvs'),
  126. kCMYKCodecType = FOUR_CHAR_CODE('cmyk'),
  127. kMicrosoftVideo1CodecType = FOUR_CHAR_CODE('msvc'),
  128. kSorensonCodecType = FOUR_CHAR_CODE('SVQ1'),
  129. kSorenson3CodecType = FOUR_CHAR_CODE('SVQ3'), /* available in QuickTime 5 and later*/
  130. kIndeo4CodecType = FOUR_CHAR_CODE('IV41'),
  131. kMPEG4VisualCodecType = FOUR_CHAR_CODE('mp4v'),
  132. k64ARGBCodecType = FOUR_CHAR_CODE('b64a'),
  133. k48RGBCodecType = FOUR_CHAR_CODE('b48r'),
  134. k32AlphaGrayCodecType = FOUR_CHAR_CODE('b32a'),
  135. k16GrayCodecType = FOUR_CHAR_CODE('b16g'),
  136. kMpegYUV420CodecType = FOUR_CHAR_CODE('myuv'),
  137. kYUV420CodecType = FOUR_CHAR_CODE('y420'),
  138. kSorensonYUV9CodecType = FOUR_CHAR_CODE('syv9'),
  139. k422YpCbCr8CodecType = FOUR_CHAR_CODE('2vuy'), /* Component Y'CbCr 8-bit 4:2:2 */
  140. k444YpCbCr8CodecType = FOUR_CHAR_CODE('v308'), /* Component Y'CbCr 8-bit 4:4:4 */
  141. k4444YpCbCrA8CodecType = FOUR_CHAR_CODE('v408'), /* Component Y'CbCrA 8-bit 4:4:4:4 */
  142. k422YpCbCr16CodecType = FOUR_CHAR_CODE('v216'), /* Component Y'CbCr 10,12,14,16-bit 4:2:2*/
  143. k422YpCbCr10CodecType = FOUR_CHAR_CODE('v210'), /* Component Y'CbCr 10-bit 4:2:2 */
  144. k444YpCbCr10CodecType = FOUR_CHAR_CODE('v410'), /* Component Y'CbCr 10-bit 4:4:4 */
  145. k4444YpCbCrA8RCodecType = FOUR_CHAR_CODE('r408'), /* Component Y'CbCrA 8-bit 4:4:4:4, rendering format. full range alpha, zero biased yuv*/
  146. kJPEG2000CodecType = FOUR_CHAR_CODE('mjp2'),
  147. kPixletCodecType = FOUR_CHAR_CODE('pxlt'),
  148. kH264CodecType = FOUR_CHAR_CODE('avc1')
  149. };
  150. /* one source effects */
  151. enum {
  152. kBlurImageFilterType = FOUR_CHAR_CODE('blur'),
  153. kSharpenImageFilterType = FOUR_CHAR_CODE('shrp'),
  154. kEdgeDetectImageFilterType = FOUR_CHAR_CODE('edge'),
  155. kEmbossImageFilterType = FOUR_CHAR_CODE('embs'),
  156. kConvolveImageFilterType = FOUR_CHAR_CODE('genk'),
  157. kAlphaGainImageFilterType = FOUR_CHAR_CODE('gain'),
  158. kRGBColorBalanceImageFilterType = FOUR_CHAR_CODE('rgbb'),
  159. kHSLColorBalanceImageFilterType = FOUR_CHAR_CODE('hslb'),
  160. kColorSyncImageFilterType = FOUR_CHAR_CODE('sync'),
  161. kFilmNoiseImageFilterType = FOUR_CHAR_CODE('fmns'),
  162. kSolarizeImageFilterType = FOUR_CHAR_CODE('solr'),
  163. kColorTintImageFilterType = FOUR_CHAR_CODE('tint'),
  164. kLensFlareImageFilterType = FOUR_CHAR_CODE('lens'),
  165. kBrightnessContrastImageFilterType = FOUR_CHAR_CODE('brco')
  166. };
  167. /* two source effects */
  168. enum {
  169. kAlphaCompositorTransitionType = FOUR_CHAR_CODE('blnd'),
  170. kCrossFadeTransitionType = FOUR_CHAR_CODE('dslv'),
  171. kChannelCompositeEffectType = FOUR_CHAR_CODE('chan'),
  172. kChromaKeyTransitionType = FOUR_CHAR_CODE('ckey'),
  173. kImplodeTransitionType = FOUR_CHAR_CODE('mplo'),
  174. kExplodeTransitionType = FOUR_CHAR_CODE('xplo'),
  175. kGradientTransitionType = FOUR_CHAR_CODE('matt'),
  176. kPushTransitionType = FOUR_CHAR_CODE('push'),
  177. kSlideTransitionType = FOUR_CHAR_CODE('slid'),
  178. kWipeTransitionType = FOUR_CHAR_CODE('smpt'),
  179. kIrisTransitionType = FOUR_CHAR_CODE('smp2'),
  180. kRadialTransitionType = FOUR_CHAR_CODE('smp3'),
  181. kMatrixTransitionType = FOUR_CHAR_CODE('smp4'),
  182. kZoomTransitionType = FOUR_CHAR_CODE('zoom')
  183. };
  184. /* three source effects */
  185. enum {
  186. kTravellingMatteEffectType = FOUR_CHAR_CODE('trav')
  187. };
  188. /* Supported by QTNewGWorld in QuickTime 4.0 and later */
  189. enum {
  190. kCMYKPixelFormat = FOUR_CHAR_CODE('cmyk'), /* CMYK, 8-bit */
  191. k64ARGBPixelFormat = FOUR_CHAR_CODE('b64a'), /* ARGB, 16-bit big-endian samples */
  192. k48RGBPixelFormat = FOUR_CHAR_CODE('b48r'), /* RGB, 16-bit big-endian samples */
  193. k32AlphaGrayPixelFormat = FOUR_CHAR_CODE('b32a'), /* AlphaGray, 16-bit big-endian samples */
  194. k16GrayPixelFormat = FOUR_CHAR_CODE('b16g'), /* Grayscale, 16-bit big-endian samples */
  195. k422YpCbCr8PixelFormat = FOUR_CHAR_CODE('2vuy') /* Component Y'CbCr 8-bit 4:2:2, ordered Cb Y'0 Cr Y'1 */
  196. };
  197. /* Supported by QTNewGWorld in QuickTime 4.1.2 and later */
  198. enum {
  199. k4444YpCbCrA8PixelFormat = FOUR_CHAR_CODE('v408'), /* Component Y'CbCrA 8-bit 4:4:4:4, ordered Cb Y' Cr A */
  200. 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 */
  201. };
  202. /* Supported by QTNewGWorld in QuickTime 6.0 and later */
  203. enum {
  204. 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. */
  205. };
  206. /* These are the bits that are set in the Component flags, and also in the codecInfo struct. */
  207. enum {
  208. codecInfoDoes1 = (1L << 0), /* codec can work with 1-bit pixels */
  209. codecInfoDoes2 = (1L << 1), /* codec can work with 2-bit pixels */
  210. codecInfoDoes4 = (1L << 2), /* codec can work with 4-bit pixels */
  211. codecInfoDoes8 = (1L << 3), /* codec can work with 8-bit pixels */
  212. codecInfoDoes16 = (1L << 4), /* codec can work with 16-bit pixels */
  213. codecInfoDoes32 = (1L << 5), /* codec can work with 32-bit pixels */
  214. codecInfoDoesDither = (1L << 6), /* codec can do ditherMode */
  215. codecInfoDoesStretch = (1L << 7), /* codec can stretch to arbitrary sizes */
  216. codecInfoDoesShrink = (1L << 8), /* codec can shrink to arbitrary sizes */
  217. codecInfoDoesMask = (1L << 9), /* codec can mask to clipping regions */
  218. codecInfoDoesTemporal = (1L << 10), /* codec can handle temporal redundancy */
  219. codecInfoDoesDouble = (1L << 11), /* codec can stretch to double size exactly */
  220. codecInfoDoesQuad = (1L << 12), /* codec can stretch to quadruple size exactly */
  221. codecInfoDoesHalf = (1L << 13), /* codec can shrink to half size */
  222. codecInfoDoesQuarter = (1L << 14), /* codec can shrink to quarter size */
  223. codecInfoDoesRotate = (1L << 15), /* codec can rotate on decompress */
  224. codecInfoDoesHorizFlip = (1L << 16), /* codec can flip horizontally on decompress */
  225. codecInfoDoesVertFlip = (1L << 17), /* codec can flip vertically on decompress */
  226. codecInfoHasEffectParameterList = (1L << 18), /* codec implements get effects parameter list call, once was codecInfoDoesSkew */
  227. codecInfoDoesBlend = (1L << 19), /* codec can blend on decompress */
  228. codecInfoDoesReorder = (1L << 19), /* codec can rearrange frames during compression */
  229. codecInfoDoesWarp = (1L << 20), /* codec can warp arbitrarily on decompress */
  230. codecInfoDoesMultiPass = (1L << 20), /* codec can perform multi-pass compression */
  231. codecInfoDoesRecompress = (1L << 21), /* codec can recompress image without accumulating errors */
  232. codecInfoDoesSpool = (1L << 22), /* codec can spool image data */
  233. codecInfoDoesRateConstrain = (1L << 23) /* codec can data rate constrain */
  234. };
  235. enum {
  236. codecInfoDepth1 = (1L << 0), /* compressed data at 1 bpp depth available */
  237. codecInfoDepth2 = (1L << 1), /* compressed data at 2 bpp depth available */
  238. codecInfoDepth4 = (1L << 2), /* compressed data at 4 bpp depth available */
  239. codecInfoDepth8 = (1L << 3), /* compressed data at 8 bpp depth available */
  240. codecInfoDepth16 = (1L << 4), /* compressed data at 16 bpp depth available */
  241. codecInfoDepth32 = (1L << 5), /* compressed data at 32 bpp depth available */
  242. codecInfoDepth24 = (1L << 6), /* compressed data at 24 bpp depth available */
  243. codecInfoDepth33 = (1L << 7), /* compressed data at 1 bpp monochrome depth available */
  244. codecInfoDepth34 = (1L << 8), /* compressed data at 2 bpp grayscale depth available */
  245. codecInfoDepth36 = (1L << 9), /* compressed data at 4 bpp grayscale depth available */
  246. codecInfoDepth40 = (1L << 10), /* compressed data at 8 bpp grayscale depth available */
  247. codecInfoStoresClut = (1L << 11), /* compressed data can have custom cluts */
  248. codecInfoDoesLossless = (1L << 12), /* compressed data can be stored in lossless format */
  249. codecInfoSequenceSensitive = (1L << 13) /* compressed data is sensitive to out of sequence decoding */
  250. };
  251. /* input sequence flags*/
  252. enum {
  253. codecFlagUseImageBuffer = (1L << 0), /* decompress*/
  254. codecFlagUseScreenBuffer = (1L << 1), /* decompress*/
  255. codecFlagUpdatePrevious = (1L << 2), /* compress*/
  256. codecFlagNoScreenUpdate = (1L << 3), /* decompress*/
  257. codecFlagWasCompressed = (1L << 4), /* compress*/
  258. codecFlagDontOffscreen = (1L << 5), /* decompress*/
  259. codecFlagUpdatePreviousComp = (1L << 6), /* compress*/
  260. codecFlagForceKeyFrame = (1L << 7), /* compress*/
  261. codecFlagOnlyScreenUpdate = (1L << 8), /* decompress*/
  262. codecFlagLiveGrab = (1L << 9), /* compress*/
  263. codecFlagDiffFrame = (1L << 9), /* decompress*/
  264. codecFlagDontUseNewImageBuffer = (1L << 10), /* decompress*/
  265. codecFlagInterlaceUpdate = (1L << 11), /* decompress*/
  266. codecFlagCatchUpDiff = (1L << 12), /* decompress*/
  267. codecFlagSupportDisable = (1L << 13), /* decompress*/
  268. codecFlagReenable = (1L << 14) /* decompress*/
  269. };
  270. /* output sequence flags*/
  271. enum {
  272. codecFlagOutUpdateOnNextIdle = (1L << 9),
  273. codecFlagOutUpdateOnDataSourceChange = (1L << 10),
  274. codecFlagSequenceSensitive = (1L << 11),
  275. codecFlagOutUpdateOnTimeChange = (1L << 12),
  276. codecFlagImageBufferNotSourceImage = (1L << 13),
  277. codecFlagUsedNewImageBuffer = (1L << 14),
  278. codecFlagUsedImageBuffer = (1L << 15)
  279. };
  280. enum {
  281. /* The minimum data size for spooling in or out data */
  282. codecMinimumDataSize = 32768L
  283. };
  284. enum {
  285. compressorComponentType = FOUR_CHAR_CODE('imco'), /* the type for "Components" which compress images */
  286. decompressorComponentType = FOUR_CHAR_CODE('imdc') /* the type for "Components" which decompress images */
  287. };
  288. typedef Component CompressorComponent;
  289. typedef Component DecompressorComponent;
  290. typedef Component CodecComponent;
  291. #define anyCodec ((CodecComponent)0)
  292. #define bestSpeedCodec ((CodecComponent)-1)
  293. #define bestFidelityCodec ((CodecComponent)-2)
  294. #define bestCompressionCodec ((CodecComponent)-3)
  295. typedef OSType CodecType;
  296. typedef unsigned short CodecFlags;
  297. typedef unsigned long CodecQ;
  298. enum {
  299. codecLosslessQuality = 0x00000400,
  300. codecMaxQuality = 0x000003FF,
  301. codecMinQuality = 0x00000000,
  302. codecLowQuality = 0x00000100,
  303. codecNormalQuality = 0x00000200,
  304. codecHighQuality = 0x00000300
  305. };
  306. enum {
  307. codecLockBitsShieldCursor = (1 << 0) /* shield cursor */
  308. };
  309. enum {
  310. codecCompletionSource = (1 << 0), /* asynchronous codec is done with source data */
  311. codecCompletionDest = (1 << 1), /* asynchronous codec is done with destination data */
  312. codecCompletionDontUnshield = (1 << 2), /* on dest complete don't unshield cursor */
  313. codecCompletionWentOffscreen = (1 << 3), /* codec used offscreen buffer */
  314. codecCompletionUnlockBits = (1 << 4), /* on dest complete, call ICMSequenceUnlockBits */
  315. codecCompletionForceChainFlush = (1 << 5), /* ICM needs to flush the whole chain */
  316. codecCompletionDropped = (1 << 6), /* codec decided to drop this frame */
  317. codecCompletionDecoded = (1 << 10), /* codec has decoded this frame; if it is cancelled and rescheduled, set icmFrameAlreadyDecoded in ICMFrameTimeRecord.flags */
  318. 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. */
  319. codecCompletionNotDrawn = (1 << 12) /* set in conjunction with codecCompletionDest to indicate that the frame was not drawn */
  320. };
  321. enum {
  322. codecProgressOpen = 0,
  323. codecProgressUpdatePercent = 1,
  324. codecProgressClose = 2
  325. };
  326. typedef CALLBACK_API( OSErr , ICMDataProcPtr )(Ptr *dataP, long bytesNeeded, long refcon);
  327. typedef CALLBACK_API( OSErr , ICMFlushProcPtr )(Ptr data, long bytesAdded, long refcon);
  328. typedef CALLBACK_API( void , ICMCompletionProcPtr )(OSErr result, short flags, long refcon);
  329. typedef CALLBACK_API( OSErr , ICMProgressProcPtr )(short message, Fixed completeness, long refcon);
  330. typedef CALLBACK_API( void , StdPixProcPtr )(PixMap *src, Rect *srcRect, MatrixRecord *matrix, short mode, RgnHandle mask, PixMap *matte, Rect *matteRect, short flags);
  331. typedef CALLBACK_API( void , QDPixProcPtr )(PixMap *src, Rect *srcRect, MatrixRecord *matrix, short mode, RgnHandle mask, PixMap *matte, Rect *matteRect, short flags);
  332. typedef CALLBACK_API( void , ICMAlignmentProcPtr )(Rect *rp, long refcon);
  333. typedef CALLBACK_API( void , ICMCursorShieldedProcPtr )(const Rect *r, void *refcon, long flags);
  334. typedef CALLBACK_API( void , ICMMemoryDisposedProcPtr )(Ptr memoryBlock, void *refcon);
  335. typedef void * ICMCursorNotify;
  336. typedef CALLBACK_API( OSErr , ICMConvertDataFormatProcPtr )(void *refCon, long flags, Handle desiredFormat, Handle sourceDataFormat, void *srcData, long srcDataSize, void **dstData, long *dstDataSize);
  337. typedef STACK_UPP_TYPE(ICMDataProcPtr) ICMDataUPP;
  338. typedef STACK_UPP_TYPE(ICMFlushProcPtr) ICMFlushUPP;
  339. typedef STACK_UPP_TYPE(ICMCompletionProcPtr) ICMCompletionUPP;
  340. typedef STACK_UPP_TYPE(ICMProgressProcPtr) ICMProgressUPP;
  341. typedef STACK_UPP_TYPE(StdPixProcPtr) StdPixUPP;
  342. typedef STACK_UPP_TYPE(QDPixProcPtr) QDPixUPP;
  343. typedef STACK_UPP_TYPE(ICMAlignmentProcPtr) ICMAlignmentUPP;
  344. typedef STACK_UPP_TYPE(ICMCursorShieldedProcPtr) ICMCursorShieldedUPP;
  345. typedef STACK_UPP_TYPE(ICMMemoryDisposedProcPtr) ICMMemoryDisposedUPP;
  346. typedef STACK_UPP_TYPE(ICMConvertDataFormatProcPtr) ICMConvertDataFormatUPP;
  347. typedef long ImageSequence;
  348. typedef long ImageSequenceDataSource;
  349. typedef long ImageTranscodeSequence;
  350. typedef long ImageFieldSequence;
  351. struct ICMProgressProcRecord {
  352. ICMProgressUPP progressProc;
  353. long progressRefCon;
  354. };
  355. typedef struct ICMProgressProcRecord ICMProgressProcRecord;
  356. typedef ICMProgressProcRecord * ICMProgressProcRecordPtr;
  357. struct ICMCompletionProcRecord {
  358. ICMCompletionUPP completionProc;
  359. long completionRefCon;
  360. };
  361. typedef struct ICMCompletionProcRecord ICMCompletionProcRecord;
  362. typedef ICMCompletionProcRecord * ICMCompletionProcRecordPtr;
  363. struct ICMDataProcRecord {
  364. ICMDataUPP dataProc;
  365. long dataRefCon;
  366. };
  367. typedef struct ICMDataProcRecord ICMDataProcRecord;
  368. typedef ICMDataProcRecord * ICMDataProcRecordPtr;
  369. struct ICMFlushProcRecord {
  370. ICMFlushUPP flushProc;
  371. long flushRefCon;
  372. };
  373. typedef struct ICMFlushProcRecord ICMFlushProcRecord;
  374. typedef ICMFlushProcRecord * ICMFlushProcRecordPtr;
  375. struct ICMAlignmentProcRecord {
  376. ICMAlignmentUPP alignmentProc;
  377. long alignmentRefCon;
  378. };
  379. typedef struct ICMAlignmentProcRecord ICMAlignmentProcRecord;
  380. typedef ICMAlignmentProcRecord * ICMAlignmentProcRecordPtr;
  381. struct DataRateParams {
  382. long dataRate;
  383. long dataOverrun;
  384. long frameDuration;
  385. long keyFrameRate;
  386. CodecQ minSpatialQuality;
  387. CodecQ minTemporalQuality;
  388. };
  389. typedef struct DataRateParams DataRateParams;
  390. typedef DataRateParams * DataRateParamsPtr;
  391. struct ImageDescription {
  392. long idSize; /* total size of ImageDescription including extra data ( CLUTs and other per sequence data ) */
  393. CodecType cType; /* what kind of codec compressed this data */
  394. long resvd1; /* reserved for Apple use */
  395. short resvd2; /* reserved for Apple use */
  396. short dataRefIndex; /* set to zero */
  397. short version; /* which version is this data */
  398. short revisionLevel; /* what version of that codec did this */
  399. long vendor; /* whose codec compressed this data */
  400. CodecQ temporalQuality; /* what was the temporal quality factor */
  401. CodecQ spatialQuality; /* what was the spatial quality factor */
  402. short width; /* how many pixels wide is this data */
  403. short height; /* how many pixels high is this data */
  404. Fixed hRes; /* horizontal resolution */
  405. Fixed vRes; /* vertical resolution */
  406. long dataSize; /* if known, the size of data for this image descriptor */
  407. short frameCount; /* number of frames this description applies to */
  408. Str31 name; /* name of codec ( in case not installed ) */
  409. short depth; /* what depth is this data (1-32) or ( 33-40 grayscale ) */
  410. short clutID; /* clut id or if 0 clut follows or -1 if no clut */
  411. };
  412. typedef struct ImageDescription ImageDescription;
  413. typedef ImageDescription * ImageDescriptionPtr;
  414. typedef ImageDescriptionPtr * ImageDescriptionHandle;
  415. struct CodecInfo {
  416. Str31 typeName; /* name of the codec type i.e.: 'Apple Image Compression' */
  417. short version; /* version of the codec data that this codec knows about */
  418. short revisionLevel; /* revision level of this codec i.e: 0x00010001 (1.0.1) */
  419. long vendor; /* Maker of this codec i.e: 'appl' */
  420. long decompressFlags; /* codecInfo flags for decompression capabilities */
  421. long compressFlags; /* codecInfo flags for compression capabilities */
  422. long formatFlags; /* codecInfo flags for compression format details */
  423. UInt8 compressionAccuracy; /* measure (1-255) of accuracy of this codec for compress (0 if unknown) */
  424. UInt8 decompressionAccuracy; /* measure (1-255) of accuracy of this codec for decompress (0 if unknown) */
  425. unsigned short compressionSpeed; /* ( millisecs for compressing 320x240 on base mac II) (0 if unknown) */
  426. unsigned short decompressionSpeed; /* ( millisecs for decompressing 320x240 on mac II)(0 if unknown) */
  427. UInt8 compressionLevel; /* measure (1-255) of compression level of this codec (0 if unknown) */
  428. UInt8 resvd; /* pad */
  429. short minimumHeight; /* minimum height of image (block size) */
  430. short minimumWidth; /* minimum width of image (block size) */
  431. short decompressPipelineLatency; /* in milliseconds ( for asynchronous codecs ) */
  432. short compressPipelineLatency; /* in milliseconds ( for asynchronous codecs ) */
  433. long privateData;
  434. };
  435. typedef struct CodecInfo CodecInfo;
  436. struct CodecNameSpec {
  437. CodecComponent codec;
  438. CodecType cType;
  439. Str31 typeName;
  440. Handle name;
  441. };
  442. typedef struct CodecNameSpec CodecNameSpec;
  443. struct CodecNameSpecList {
  444. short count;
  445. CodecNameSpec list[1];
  446. };
  447. typedef struct CodecNameSpecList CodecNameSpecList;
  448. typedef CodecNameSpecList * CodecNameSpecListPtr;
  449. enum {
  450. defaultDither = 0,
  451. forceDither = 1,
  452. suppressDither = 2,
  453. useColorMatching = 4
  454. };
  455. enum {
  456. callStdBits = 1,
  457. callOldBits = 2,
  458. noDefaultOpcodes = 4
  459. };
  460. enum {
  461. graphicsModeStraightAlpha = 256,
  462. graphicsModePreWhiteAlpha = 257,
  463. graphicsModePreBlackAlpha = 258,
  464. graphicsModeComposition = 259,
  465. graphicsModeStraightAlphaBlend = 260,
  466. graphicsModePreMulColorAlpha = 261,
  467. graphicsModePerComponentAlpha = 272
  468. };
  469. enum {
  470. evenField1ToEvenFieldOut = 1 << 0,
  471. evenField1ToOddFieldOut = 1 << 1,
  472. oddField1ToEvenFieldOut = 1 << 2,
  473. oddField1ToOddFieldOut = 1 << 3,
  474. evenField2ToEvenFieldOut = 1 << 4,
  475. evenField2ToOddFieldOut = 1 << 5,
  476. oddField2ToEvenFieldOut = 1 << 6,
  477. oddField2ToOddFieldOut = 1 << 7
  478. };
  479. /* Flags for ICMFrameTimeRecord.flags */
  480. enum {
  481. icmFrameTimeHasVirtualStartTimeAndDuration = 1 << 0,
  482. icmFrameAlreadyDecoded = 1 << 1,
  483. icmFrameTimeIsNonScheduledDisplayTime = 1 << 2,
  484. icmFrameTimeHasDecodeTime = 1 << 3,
  485. icmFrameTimeDecodeImmediately = 1 << 4,
  486. icmFrameTimeDoNotDisplay = 1 << 5
  487. };
  488. struct ICMFrameTimeRecord {
  489. wide value; /* frame display time*/
  490. long scale; /* timescale of value/duration fields*/
  491. void * base; /* timebase*/
  492. long duration; /* duration frame is to be displayed (0 if unknown)*/
  493. Fixed rate; /* rate of timebase relative to wall-time*/
  494. long recordSize; /* total number of bytes in ICMFrameTimeRecord*/
  495. long frameNumber; /* number of frame, zero if not known*/
  496. long flags;
  497. wide virtualStartTime; /* conceptual start time*/
  498. long virtualDuration; /* conceptual duration*/
  499. /* The following fields only exist for QuickTime 7.0 and greater. */
  500. TimeValue64 decodeTime; /* suggested decode time, if icmFrameTimeHasDecodeTime is set in flags*/
  501. };
  502. typedef struct ICMFrameTimeRecord ICMFrameTimeRecord;
  503. typedef ICMFrameTimeRecord * ICMFrameTimePtr;
  504. #ifndef __QTUUID__
  505. #define __QTUUID__ 1
  506. /* QuickTime flavor of universally unique identifier (uuid)*/
  507. struct QTUUID {
  508. UInt32 data1;
  509. UInt16 data2;
  510. UInt16 data3;
  511. UInt8 data4[8];
  512. };
  513. typedef struct QTUUID QTUUID;
  514. typedef QTUUID QTMediaContextID;
  515. #endif /* !defined(__QTUUID__) */
  516. /* See Movies.h for the flags themselves. */
  517. typedef UInt32 MediaSampleFlags;
  518. /*
  519. * NewICMDataUPP()
  520. *
  521. * Availability:
  522. * Non-Carbon CFM: available as macro/inline
  523. * CarbonLib: in CarbonLib 1.0 and later
  524. * Mac OS X: in version 10.0 and later
  525. */
  526. EXTERN_API_C( ICMDataUPP )
  527. NewICMDataUPP(ICMDataProcPtr userRoutine);
  528. #if !OPAQUE_UPP_TYPES
  529. enum { uppICMDataProcInfo = 0x00000FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */
  530. #ifdef __cplusplus
  531. inline DEFINE_API_C(ICMDataUPP) NewICMDataUPP(ICMDataProcPtr userRoutine) { return (ICMDataUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMDataProcInfo, GetCurrentArchitecture()); }
  532. #else
  533. #define NewICMDataUPP(userRoutine) (ICMDataUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMDataProcInfo, GetCurrentArchitecture())
  534. #endif
  535. #endif
  536. /*
  537. * NewICMFlushUPP()
  538. *
  539. * Availability:
  540. * Non-Carbon CFM: available as macro/inline
  541. * CarbonLib: in CarbonLib 1.0 and later
  542. * Mac OS X: in version 10.0 and later
  543. */
  544. EXTERN_API_C( ICMFlushUPP )
  545. NewICMFlushUPP(ICMFlushProcPtr userRoutine);
  546. #if !OPAQUE_UPP_TYPES
  547. enum { uppICMFlushProcInfo = 0x00000FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */
  548. #ifdef __cplusplus
  549. inline DEFINE_API_C(ICMFlushUPP) NewICMFlushUPP(ICMFlushProcPtr userRoutine) { return (ICMFlushUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMFlushProcInfo, GetCurrentArchitecture()); }
  550. #else
  551. #define NewICMFlushUPP(userRoutine) (ICMFlushUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMFlushProcInfo, GetCurrentArchitecture())
  552. #endif
  553. #endif
  554. /*
  555. * NewICMCompletionUPP()
  556. *
  557. * Availability:
  558. * Non-Carbon CFM: available as macro/inline
  559. * CarbonLib: in CarbonLib 1.0 and later
  560. * Mac OS X: in version 10.0 and later
  561. */
  562. EXTERN_API_C( ICMCompletionUPP )
  563. NewICMCompletionUPP(ICMCompletionProcPtr userRoutine);
  564. #if !OPAQUE_UPP_TYPES
  565. enum { uppICMCompletionProcInfo = 0x00000E80 }; /* pascal no_return_value Func(2_bytes, 2_bytes, 4_bytes) */
  566. #ifdef __cplusplus
  567. inline DEFINE_API_C(ICMCompletionUPP) NewICMCompletionUPP(ICMCompletionProcPtr userRoutine) { return (ICMCompletionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMCompletionProcInfo, GetCurrentArchitecture()); }
  568. #else
  569. #define NewICMCompletionUPP(userRoutine) (ICMCompletionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMCompletionProcInfo, GetCurrentArchitecture())
  570. #endif
  571. #endif
  572. /*
  573. * NewICMProgressUPP()
  574. *
  575. * Availability:
  576. * Non-Carbon CFM: available as macro/inline
  577. * CarbonLib: in CarbonLib 1.0 and later
  578. * Mac OS X: in version 10.0 and later
  579. */
  580. EXTERN_API_C( ICMProgressUPP )
  581. NewICMProgressUPP(ICMProgressProcPtr userRoutine);
  582. #if !OPAQUE_UPP_TYPES
  583. enum { uppICMProgressProcInfo = 0x00000FA0 }; /* pascal 2_bytes Func(2_bytes, 4_bytes, 4_bytes) */
  584. #ifdef __cplusplus
  585. inline DEFINE_API_C(ICMProgressUPP) NewICMProgressUPP(ICMProgressProcPtr userRoutine) { return (ICMProgressUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMProgressProcInfo, GetCurrentArchitecture()); }
  586. #else
  587. #define NewICMProgressUPP(userRoutine) (ICMProgressUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMProgressProcInfo, GetCurrentArchitecture())
  588. #endif
  589. #endif
  590. /*
  591. * NewStdPixUPP()
  592. *
  593. * Availability:
  594. * Non-Carbon CFM: available as macro/inline
  595. * CarbonLib: in CarbonLib 1.0 and later
  596. * Mac OS X: in version 10.0 and later
  597. */
  598. EXTERN_API_C( StdPixUPP )
  599. NewStdPixUPP(StdPixProcPtr userRoutine);
  600. #if !OPAQUE_UPP_TYPES
  601. enum { uppStdPixProcInfo = 0x002FEFC0 }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes, 2_bytes) */
  602. #ifdef __cplusplus
  603. inline DEFINE_API_C(StdPixUPP) NewStdPixUPP(StdPixProcPtr userRoutine) { return (StdPixUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppStdPixProcInfo, GetCurrentArchitecture()); }
  604. #else
  605. #define NewStdPixUPP(userRoutine) (StdPixUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppStdPixProcInfo, GetCurrentArchitecture())
  606. #endif
  607. #endif
  608. /*
  609. * NewQDPixUPP()
  610. *
  611. * Availability:
  612. * Non-Carbon CFM: available as macro/inline
  613. * CarbonLib: in CarbonLib 1.0 and later
  614. * Mac OS X: in version 10.0 and later
  615. */
  616. EXTERN_API_C( QDPixUPP )
  617. NewQDPixUPP(QDPixProcPtr userRoutine);
  618. #if !OPAQUE_UPP_TYPES
  619. enum { uppQDPixProcInfo = 0x002FEFC0 }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes, 2_bytes) */
  620. #ifdef __cplusplus
  621. inline DEFINE_API_C(QDPixUPP) NewQDPixUPP(QDPixProcPtr userRoutine) { return (QDPixUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPixProcInfo, GetCurrentArchitecture()); }
  622. #else
  623. #define NewQDPixUPP(userRoutine) (QDPixUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPixProcInfo, GetCurrentArchitecture())
  624. #endif
  625. #endif
  626. /*
  627. * NewICMAlignmentUPP()
  628. *
  629. * Availability:
  630. * Non-Carbon CFM: available as macro/inline
  631. * CarbonLib: in CarbonLib 1.0 and later
  632. * Mac OS X: in version 10.0 and later
  633. */
  634. EXTERN_API_C( ICMAlignmentUPP )
  635. NewICMAlignmentUPP(ICMAlignmentProcPtr userRoutine);
  636. #if !OPAQUE_UPP_TYPES
  637. enum { uppICMAlignmentProcInfo = 0x000003C0 }; /* pascal no_return_value Func(4_bytes, 4_bytes) */
  638. #ifdef __cplusplus
  639. inline DEFINE_API_C(ICMAlignmentUPP) NewICMAlignmentUPP(ICMAlignmentProcPtr userRoutine) { return (ICMAlignmentUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMAlignmentProcInfo, GetCurrentArchitecture()); }
  640. #else
  641. #define NewICMAlignmentUPP(userRoutine) (ICMAlignmentUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMAlignmentProcInfo, GetCurrentArchitecture())
  642. #endif
  643. #endif
  644. /*
  645. * NewICMCursorShieldedUPP()
  646. *
  647. * Availability:
  648. * Non-Carbon CFM: available as macro/inline
  649. * CarbonLib: in CarbonLib 1.0 and later
  650. * Mac OS X: in version 10.0 and later
  651. */
  652. EXTERN_API_C( ICMCursorShieldedUPP )
  653. NewICMCursorShieldedUPP(ICMCursorShieldedProcPtr userRoutine);
  654. #if !OPAQUE_UPP_TYPES
  655. enum { uppICMCursorShieldedProcInfo = 0x00000FC0 }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes) */
  656. #ifdef __cplusplus
  657. inline DEFINE_API_C(ICMCursorShieldedUPP) NewICMCursorShieldedUPP(ICMCursorShieldedProcPtr userRoutine) { return (ICMCursorShieldedUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMCursorShieldedProcInfo, GetCurrentArchitecture()); }
  658. #else
  659. #define NewICMCursorShieldedUPP(userRoutine) (ICMCursorShieldedUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMCursorShieldedProcInfo, GetCurrentArchitecture())
  660. #endif
  661. #endif
  662. /*
  663. * NewICMMemoryDisposedUPP()
  664. *
  665. * Availability:
  666. * Non-Carbon CFM: available as macro/inline
  667. * CarbonLib: in CarbonLib 1.0 and later
  668. * Mac OS X: in version 10.0 and later
  669. */
  670. EXTERN_API_C( ICMMemoryDisposedUPP )
  671. NewICMMemoryDisposedUPP(ICMMemoryDisposedProcPtr userRoutine);
  672. #if !OPAQUE_UPP_TYPES
  673. enum { uppICMMemoryDisposedProcInfo = 0x000003C0 }; /* pascal no_return_value Func(4_bytes, 4_bytes) */
  674. #ifdef __cplusplus
  675. inline DEFINE_API_C(ICMMemoryDisposedUPP) NewICMMemoryDisposedUPP(ICMMemoryDisposedProcPtr userRoutine) { return (ICMMemoryDisposedUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMMemoryDisposedProcInfo, GetCurrentArchitecture()); }
  676. #else
  677. #define NewICMMemoryDisposedUPP(userRoutine) (ICMMemoryDisposedUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMMemoryDisposedProcInfo, GetCurrentArchitecture())
  678. #endif
  679. #endif
  680. /*
  681. * NewICMConvertDataFormatUPP()
  682. *
  683. * Availability:
  684. * Non-Carbon CFM: available as macro/inline
  685. * CarbonLib: in CarbonLib 1.0 and later
  686. * Mac OS X: in version 10.0 and later
  687. */
  688. EXTERN_API_C( ICMConvertDataFormatUPP )
  689. NewICMConvertDataFormatUPP(ICMConvertDataFormatProcPtr userRoutine);
  690. #if !OPAQUE_UPP_TYPES
  691. enum { uppICMConvertDataFormatProcInfo = 0x003FFFE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  692. #ifdef __cplusplus
  693. inline DEFINE_API_C(ICMConvertDataFormatUPP) NewICMConvertDataFormatUPP(ICMConvertDataFormatProcPtr userRoutine) { return (ICMConvertDataFormatUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMConvertDataFormatProcInfo, GetCurrentArchitecture()); }
  694. #else
  695. #define NewICMConvertDataFormatUPP(userRoutine) (ICMConvertDataFormatUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMConvertDataFormatProcInfo, GetCurrentArchitecture())
  696. #endif
  697. #endif
  698. /*
  699. * DisposeICMDataUPP()
  700. *
  701. * Availability:
  702. * Non-Carbon CFM: available as macro/inline
  703. * CarbonLib: in CarbonLib 1.0 and later
  704. * Mac OS X: in version 10.0 and later
  705. */
  706. EXTERN_API_C( void )
  707. DisposeICMDataUPP(ICMDataUPP userUPP);
  708. #if !OPAQUE_UPP_TYPES
  709. #ifdef __cplusplus
  710. inline DEFINE_API_C(void) DisposeICMDataUPP(ICMDataUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  711. #else
  712. #define DisposeICMDataUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  713. #endif
  714. #endif
  715. /*
  716. * DisposeICMFlushUPP()
  717. *
  718. * Availability:
  719. * Non-Carbon CFM: available as macro/inline
  720. * CarbonLib: in CarbonLib 1.0 and later
  721. * Mac OS X: in version 10.0 and later
  722. */
  723. EXTERN_API_C( void )
  724. DisposeICMFlushUPP(ICMFlushUPP userUPP);
  725. #if !OPAQUE_UPP_TYPES
  726. #ifdef __cplusplus
  727. inline DEFINE_API_C(void) DisposeICMFlushUPP(ICMFlushUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  728. #else
  729. #define DisposeICMFlushUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  730. #endif
  731. #endif
  732. /*
  733. * DisposeICMCompletionUPP()
  734. *
  735. * Availability:
  736. * Non-Carbon CFM: available as macro/inline
  737. * CarbonLib: in CarbonLib 1.0 and later
  738. * Mac OS X: in version 10.0 and later
  739. */
  740. EXTERN_API_C( void )
  741. DisposeICMCompletionUPP(ICMCompletionUPP userUPP);
  742. #if !OPAQUE_UPP_TYPES
  743. #ifdef __cplusplus
  744. inline DEFINE_API_C(void) DisposeICMCompletionUPP(ICMCompletionUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  745. #else
  746. #define DisposeICMCompletionUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  747. #endif
  748. #endif
  749. /*
  750. * DisposeICMProgressUPP()
  751. *
  752. * Availability:
  753. * Non-Carbon CFM: available as macro/inline
  754. * CarbonLib: in CarbonLib 1.0 and later
  755. * Mac OS X: in version 10.0 and later
  756. */
  757. EXTERN_API_C( void )
  758. DisposeICMProgressUPP(ICMProgressUPP userUPP);
  759. #if !OPAQUE_UPP_TYPES
  760. #ifdef __cplusplus
  761. inline DEFINE_API_C(void) DisposeICMProgressUPP(ICMProgressUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  762. #else
  763. #define DisposeICMProgressUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  764. #endif
  765. #endif
  766. /*
  767. * DisposeStdPixUPP()
  768. *
  769. * Availability:
  770. * Non-Carbon CFM: available as macro/inline
  771. * CarbonLib: in CarbonLib 1.0 and later
  772. * Mac OS X: in version 10.0 and later
  773. */
  774. EXTERN_API_C( void )
  775. DisposeStdPixUPP(StdPixUPP userUPP);
  776. #if !OPAQUE_UPP_TYPES
  777. #ifdef __cplusplus
  778. inline DEFINE_API_C(void) DisposeStdPixUPP(StdPixUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  779. #else
  780. #define DisposeStdPixUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  781. #endif
  782. #endif
  783. /*
  784. * DisposeQDPixUPP()
  785. *
  786. * Availability:
  787. * Non-Carbon CFM: available as macro/inline
  788. * CarbonLib: in CarbonLib 1.0 and later
  789. * Mac OS X: in version 10.0 and later
  790. */
  791. EXTERN_API_C( void )
  792. DisposeQDPixUPP(QDPixUPP userUPP);
  793. #if !OPAQUE_UPP_TYPES
  794. #ifdef __cplusplus
  795. inline DEFINE_API_C(void) DisposeQDPixUPP(QDPixUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  796. #else
  797. #define DisposeQDPixUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  798. #endif
  799. #endif
  800. /*
  801. * DisposeICMAlignmentUPP()
  802. *
  803. * Availability:
  804. * Non-Carbon CFM: available as macro/inline
  805. * CarbonLib: in CarbonLib 1.0 and later
  806. * Mac OS X: in version 10.0 and later
  807. */
  808. EXTERN_API_C( void )
  809. DisposeICMAlignmentUPP(ICMAlignmentUPP userUPP);
  810. #if !OPAQUE_UPP_TYPES
  811. #ifdef __cplusplus
  812. inline DEFINE_API_C(void) DisposeICMAlignmentUPP(ICMAlignmentUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  813. #else
  814. #define DisposeICMAlignmentUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  815. #endif
  816. #endif
  817. /*
  818. * DisposeICMCursorShieldedUPP()
  819. *
  820. * Availability:
  821. * Non-Carbon CFM: available as macro/inline
  822. * CarbonLib: in CarbonLib 1.0 and later
  823. * Mac OS X: in version 10.0 and later
  824. */
  825. EXTERN_API_C( void )
  826. DisposeICMCursorShieldedUPP(ICMCursorShieldedUPP userUPP);
  827. #if !OPAQUE_UPP_TYPES
  828. #ifdef __cplusplus
  829. inline DEFINE_API_C(void) DisposeICMCursorShieldedUPP(ICMCursorShieldedUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  830. #else
  831. #define DisposeICMCursorShieldedUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  832. #endif
  833. #endif
  834. /*
  835. * DisposeICMMemoryDisposedUPP()
  836. *
  837. * Availability:
  838. * Non-Carbon CFM: available as macro/inline
  839. * CarbonLib: in CarbonLib 1.0 and later
  840. * Mac OS X: in version 10.0 and later
  841. */
  842. EXTERN_API_C( void )
  843. DisposeICMMemoryDisposedUPP(ICMMemoryDisposedUPP userUPP);
  844. #if !OPAQUE_UPP_TYPES
  845. #ifdef __cplusplus
  846. inline DEFINE_API_C(void) DisposeICMMemoryDisposedUPP(ICMMemoryDisposedUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  847. #else
  848. #define DisposeICMMemoryDisposedUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  849. #endif
  850. #endif
  851. /*
  852. * DisposeICMConvertDataFormatUPP()
  853. *
  854. * Availability:
  855. * Non-Carbon CFM: available as macro/inline
  856. * CarbonLib: in CarbonLib 1.0 and later
  857. * Mac OS X: in version 10.0 and later
  858. */
  859. EXTERN_API_C( void )
  860. DisposeICMConvertDataFormatUPP(ICMConvertDataFormatUPP userUPP);
  861. #if !OPAQUE_UPP_TYPES
  862. #ifdef __cplusplus
  863. inline DEFINE_API_C(void) DisposeICMConvertDataFormatUPP(ICMConvertDataFormatUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  864. #else
  865. #define DisposeICMConvertDataFormatUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  866. #endif
  867. #endif
  868. /*
  869. * InvokeICMDataUPP()
  870. *
  871. * Availability:
  872. * Non-Carbon CFM: available as macro/inline
  873. * CarbonLib: in CarbonLib 1.0 and later
  874. * Mac OS X: in version 10.0 and later
  875. */
  876. EXTERN_API_C( OSErr )
  877. InvokeICMDataUPP(
  878. Ptr * dataP,
  879. long bytesNeeded,
  880. long refcon,
  881. ICMDataUPP userUPP);
  882. #if !OPAQUE_UPP_TYPES
  883. #ifdef __cplusplus
  884. 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); }
  885. #else
  886. #define InvokeICMDataUPP(dataP, bytesNeeded, refcon, userUPP) (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppICMDataProcInfo, (dataP), (bytesNeeded), (refcon))
  887. #endif
  888. #endif
  889. /*
  890. * InvokeICMFlushUPP()
  891. *
  892. * Availability:
  893. * Non-Carbon CFM: available as macro/inline
  894. * CarbonLib: in CarbonLib 1.0 and later
  895. * Mac OS X: in version 10.0 and later
  896. */
  897. EXTERN_API_C( OSErr )
  898. InvokeICMFlushUPP(
  899. Ptr data,
  900. long bytesAdded,
  901. long refcon,
  902. ICMFlushUPP userUPP);
  903. #if !OPAQUE_UPP_TYPES
  904. #ifdef __cplusplus
  905. 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); }
  906. #else
  907. #define InvokeICMFlushUPP(data, bytesAdded, refcon, userUPP) (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppICMFlushProcInfo, (data), (bytesAdded), (refcon))
  908. #endif
  909. #endif
  910. /*
  911. * InvokeICMCompletionUPP()
  912. *
  913. * Availability:
  914. * Non-Carbon CFM: available as macro/inline
  915. * CarbonLib: in CarbonLib 1.0 and later
  916. * Mac OS X: in version 10.0 and later
  917. */
  918. EXTERN_API_C( void )
  919. InvokeICMCompletionUPP(
  920. OSErr result,
  921. short flags,
  922. long refcon,
  923. ICMCompletionUPP userUPP);
  924. #if !OPAQUE_UPP_TYPES
  925. #ifdef __cplusplus
  926. inline DEFINE_API_C(void) InvokeICMCompletionUPP(OSErr result, short flags, long refcon, ICMCompletionUPP userUPP) { CALL_THREE_PARAMETER_UPP(userUPP, uppICMCompletionProcInfo, result, flags, refcon); }
  927. #else
  928. #define InvokeICMCompletionUPP(result, flags, refcon, userUPP) CALL_THREE_PARAMETER_UPP((userUPP), uppICMCompletionProcInfo, (result), (flags), (refcon))
  929. #endif
  930. #endif
  931. /*
  932. * InvokeICMProgressUPP()
  933. *
  934. * Availability:
  935. * Non-Carbon CFM: available as macro/inline
  936. * CarbonLib: in CarbonLib 1.0 and later
  937. * Mac OS X: in version 10.0 and later
  938. */
  939. EXTERN_API_C( OSErr )
  940. InvokeICMProgressUPP(
  941. short message,
  942. Fixed completeness,
  943. long refcon,
  944. ICMProgressUPP userUPP);
  945. #if !OPAQUE_UPP_TYPES
  946. #ifdef __cplusplus
  947. 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); }
  948. #else
  949. #define InvokeICMProgressUPP(message, completeness, refcon, userUPP) (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppICMProgressProcInfo, (message), (completeness), (refcon))
  950. #endif
  951. #endif
  952. /*
  953. * InvokeStdPixUPP()
  954. *
  955. * Availability:
  956. * Non-Carbon CFM: available as macro/inline
  957. * CarbonLib: in CarbonLib 1.0 and later
  958. * Mac OS X: in version 10.0 and later
  959. */
  960. EXTERN_API_C( void )
  961. InvokeStdPixUPP(
  962. PixMap * src,
  963. Rect * srcRect,
  964. MatrixRecord * matrix,
  965. short mode,
  966. RgnHandle mask,
  967. PixMap * matte,
  968. Rect * matteRect,
  969. short flags,
  970. StdPixUPP userUPP);
  971. #if !OPAQUE_UPP_TYPES
  972. #ifdef __cplusplus
  973. 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); }
  974. #else
  975. #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))
  976. #endif
  977. #endif
  978. /*
  979. * InvokeQDPixUPP()
  980. *
  981. * Availability:
  982. * Non-Carbon CFM: available as macro/inline
  983. * CarbonLib: in CarbonLib 1.0 and later
  984. * Mac OS X: in version 10.0 and later
  985. */
  986. EXTERN_API_C( void )
  987. InvokeQDPixUPP(
  988. PixMap * src,
  989. Rect * srcRect,
  990. MatrixRecord * matrix,
  991. short mode,
  992. RgnHandle mask,
  993. PixMap * matte,
  994. Rect * matteRect,
  995. short flags,
  996. QDPixUPP userUPP);
  997. #if !OPAQUE_UPP_TYPES
  998. #ifdef __cplusplus
  999. 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); }
  1000. #else
  1001. #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))
  1002. #endif
  1003. #endif
  1004. /*
  1005. * InvokeICMAlignmentUPP()
  1006. *
  1007. * Availability:
  1008. * Non-Carbon CFM: available as macro/inline
  1009. * CarbonLib: in CarbonLib 1.0 and later
  1010. * Mac OS X: in version 10.0 and later
  1011. */
  1012. EXTERN_API_C( void )
  1013. InvokeICMAlignmentUPP(
  1014. Rect * rp,
  1015. long refcon,
  1016. ICMAlignmentUPP userUPP);
  1017. #if !OPAQUE_UPP_TYPES
  1018. #ifdef __cplusplus
  1019. inline DEFINE_API_C(void) InvokeICMAlignmentUPP(Rect * rp, long refcon, ICMAlignmentUPP userUPP) { CALL_TWO_PARAMETER_UPP(userUPP, uppICMAlignmentProcInfo, rp, refcon); }
  1020. #else
  1021. #define InvokeICMAlignmentUPP(rp, refcon, userUPP) CALL_TWO_PARAMETER_UPP((userUPP), uppICMAlignmentProcInfo, (rp), (refcon))
  1022. #endif
  1023. #endif
  1024. /*
  1025. * InvokeICMCursorShieldedUPP()
  1026. *
  1027. * Availability:
  1028. * Non-Carbon CFM: available as macro/inline
  1029. * CarbonLib: in CarbonLib 1.0 and later
  1030. * Mac OS X: in version 10.0 and later
  1031. */
  1032. EXTERN_API_C( void )
  1033. InvokeICMCursorShieldedUPP(
  1034. const Rect * r,
  1035. void * refcon,
  1036. long flags,
  1037. ICMCursorShieldedUPP userUPP);
  1038. #if !OPAQUE_UPP_TYPES
  1039. #ifdef __cplusplus
  1040. inline DEFINE_API_C(void) InvokeICMCursorShieldedUPP(const Rect * r, void * refcon, long flags, ICMCursorShieldedUPP userUPP) { CALL_THREE_PARAMETER_UPP(userUPP, uppICMCursorShieldedProcInfo, r, refcon, flags); }
  1041. #else
  1042. #define InvokeICMCursorShieldedUPP(r, refcon, flags, userUPP) CALL_THREE_PARAMETER_UPP((userUPP), uppICMCursorShieldedProcInfo, (r), (refcon), (flags))
  1043. #endif
  1044. #endif
  1045. /*
  1046. * InvokeICMMemoryDisposedUPP()
  1047. *
  1048. * Availability:
  1049. * Non-Carbon CFM: available as macro/inline
  1050. * CarbonLib: in CarbonLib 1.0 and later
  1051. * Mac OS X: in version 10.0 and later
  1052. */
  1053. EXTERN_API_C( void )
  1054. InvokeICMMemoryDisposedUPP(
  1055. Ptr memoryBlock,
  1056. void * refcon,
  1057. ICMMemoryDisposedUPP userUPP);
  1058. #if !OPAQUE_UPP_TYPES
  1059. #ifdef __cplusplus
  1060. inline DEFINE_API_C(void) InvokeICMMemoryDisposedUPP(Ptr memoryBlock, void * refcon, ICMMemoryDisposedUPP userUPP) { CALL_TWO_PARAMETER_UPP(userUPP, uppICMMemoryDisposedProcInfo, memoryBlock, refcon); }
  1061. #else
  1062. #define InvokeICMMemoryDisposedUPP(memoryBlock, refcon, userUPP) CALL_TWO_PARAMETER_UPP((userUPP), uppICMMemoryDisposedProcInfo, (memoryBlock), (refcon))
  1063. #endif
  1064. #endif
  1065. /*
  1066. * InvokeICMConvertDataFormatUPP()
  1067. *
  1068. * Availability:
  1069. * Non-Carbon CFM: available as macro/inline
  1070. * CarbonLib: in CarbonLib 1.0 and later
  1071. * Mac OS X: in version 10.0 and later
  1072. */
  1073. EXTERN_API_C( OSErr )
  1074. InvokeICMConvertDataFormatUPP(
  1075. void * refCon,
  1076. long flags,
  1077. Handle desiredFormat,
  1078. Handle sourceDataFormat,
  1079. void * srcData,
  1080. long srcDataSize,
  1081. void ** dstData,
  1082. long * dstDataSize,
  1083. ICMConvertDataFormatUPP userUPP);
  1084. #if !OPAQUE_UPP_TYPES
  1085. #ifdef __cplusplus
  1086. 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); }
  1087. #else
  1088. #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))
  1089. #endif
  1090. #endif
  1091. #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
  1092. /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
  1093. #define NewICMDataProc(userRoutine) NewICMDataUPP(userRoutine)
  1094. #define NewICMFlushProc(userRoutine) NewICMFlushUPP(userRoutine)
  1095. #define NewICMCompletionProc(userRoutine) NewICMCompletionUPP(userRoutine)
  1096. #define NewICMProgressProc(userRoutine) NewICMProgressUPP(userRoutine)
  1097. #define NewStdPixProc(userRoutine) NewStdPixUPP(userRoutine)
  1098. #define NewQDPixProc(userRoutine) NewQDPixUPP(userRoutine)
  1099. #define NewICMAlignmentProc(userRoutine) NewICMAlignmentUPP(userRoutine)
  1100. #define NewICMCursorShieldedProc(userRoutine) NewICMCursorShieldedUPP(userRoutine)
  1101. #define NewICMMemoryDisposedProc(userRoutine) NewICMMemoryDisposedUPP(userRoutine)
  1102. #define NewICMConvertDataFormatProc(userRoutine) NewICMConvertDataFormatUPP(userRoutine)
  1103. #define CallICMDataProc(userRoutine, dataP, bytesNeeded, refcon) InvokeICMDataUPP(dataP, bytesNeeded, refcon, userRoutine)
  1104. #define CallICMFlushProc(userRoutine, data, bytesAdded, refcon) InvokeICMFlushUPP(data, bytesAdded, refcon, userRoutine)
  1105. #define CallICMCompletionProc(userRoutine, result, flags, refcon) InvokeICMCompletionUPP(result, flags, refcon, userRoutine)
  1106. #define CallICMProgressProc(userRoutine, message, completeness, refcon) InvokeICMProgressUPP(message, completeness, refcon, userRoutine)
  1107. #define CallStdPixProc(userRoutine, src, srcRect, matrix, mode, mask, matte, matteRect, flags) InvokeStdPixUPP(src, srcRect, matrix, mode, mask, matte, matteRect, flags, userRoutine)
  1108. #define CallQDPixProc(userRoutine, src, srcRect, matrix, mode, mask, matte, matteRect, flags) InvokeQDPixUPP(src, srcRect, matrix, mode, mask, matte, matteRect, flags, userRoutine)
  1109. #define CallICMAlignmentProc(userRoutine, rp, refcon) InvokeICMAlignmentUPP(rp, refcon, userRoutine)
  1110. #define CallICMCursorShieldedProc(userRoutine, r, refcon, flags) InvokeICMCursorShieldedUPP(r, refcon, flags, userRoutine)
  1111. #define CallICMMemoryDisposedProc(userRoutine, memoryBlock, refcon) InvokeICMMemoryDisposedUPP(memoryBlock, refcon, userRoutine)
  1112. #define CallICMConvertDataFormatProc(userRoutine, refCon, flags, desiredFormat, sourceDataFormat, srcData, srcDataSize, dstData, dstDataSize) InvokeICMConvertDataFormatUPP(refCon, flags, desiredFormat, sourceDataFormat, srcData, srcDataSize, dstData, dstDataSize, userRoutine)
  1113. #endif /* CALL_NOT_IN_CARBON */
  1114. /*
  1115. * CodecManagerVersion()
  1116. *
  1117. * Availability:
  1118. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1119. * CarbonLib: in CarbonLib 1.0 and later
  1120. * Mac OS X: in version 10.0 and later
  1121. * Windows: in qtmlClient.lib 3.0 and later
  1122. */
  1123. EXTERN_API( OSErr )
  1124. CodecManagerVersion(long * version);
  1125. /*
  1126. * GetCodecNameList()
  1127. *
  1128. * Availability:
  1129. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1130. * CarbonLib: in CarbonLib 1.0 and later
  1131. * Mac OS X: in version 10.0 and later
  1132. * Windows: in qtmlClient.lib 3.0 and later
  1133. */
  1134. EXTERN_API( OSErr )
  1135. GetCodecNameList(
  1136. CodecNameSpecListPtr * list,
  1137. short showAll);
  1138. /*
  1139. * DisposeCodecNameList()
  1140. *
  1141. * Availability:
  1142. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1143. * CarbonLib: in CarbonLib 1.0 and later
  1144. * Mac OS X: in version 10.0 and later
  1145. * Windows: in qtmlClient.lib 3.0 and later
  1146. */
  1147. EXTERN_API( OSErr )
  1148. DisposeCodecNameList(CodecNameSpecListPtr list);
  1149. /*
  1150. * GetCodecInfo()
  1151. *
  1152. * Availability:
  1153. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1154. * CarbonLib: in CarbonLib 1.0 and later
  1155. * Mac OS X: in version 10.0 and later
  1156. * Windows: in qtmlClient.lib 3.0 and later
  1157. */
  1158. EXTERN_API( OSErr )
  1159. GetCodecInfo(
  1160. CodecInfo * info,
  1161. CodecType cType,
  1162. CodecComponent codec);
  1163. /*
  1164. * GetMaxCompressionSize()
  1165. *
  1166. * Availability:
  1167. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1168. * CarbonLib: in CarbonLib 1.0 and later
  1169. * Mac OS X: in version 10.0 and later
  1170. * Windows: in qtmlClient.lib 3.0 and later
  1171. */
  1172. EXTERN_API( OSErr )
  1173. GetMaxCompressionSize(
  1174. PixMapHandle src,
  1175. const Rect * srcRect,
  1176. short colorDepth,
  1177. CodecQ quality,
  1178. CodecType cType,
  1179. CompressorComponent codec,
  1180. long * size);
  1181. /*
  1182. * GetCSequenceMaxCompressionSize()
  1183. *
  1184. * Availability:
  1185. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1186. * CarbonLib: in CarbonLib 1.0 and later
  1187. * Mac OS X: in version 10.0 and later
  1188. * Windows: in qtmlClient.lib 3.0 and later
  1189. */
  1190. EXTERN_API( OSErr )
  1191. GetCSequenceMaxCompressionSize(
  1192. ImageSequence seqID,
  1193. PixMapHandle src,
  1194. long * size);
  1195. /*
  1196. * GetCompressionTime()
  1197. *
  1198. * Availability:
  1199. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1200. * CarbonLib: in CarbonLib 1.0 and later
  1201. * Mac OS X: in version 10.0 and later
  1202. * Windows: in qtmlClient.lib 3.0 and later
  1203. */
  1204. EXTERN_API( OSErr )
  1205. GetCompressionTime(
  1206. PixMapHandle src,
  1207. const Rect * srcRect,
  1208. short colorDepth,
  1209. CodecType cType,
  1210. CompressorComponent codec,
  1211. CodecQ * spatialQuality,
  1212. CodecQ * temporalQuality,
  1213. unsigned long * compressTime);
  1214. /*
  1215. * CompressImage()
  1216. *
  1217. * Availability:
  1218. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1219. * CarbonLib: in CarbonLib 1.0 and later
  1220. * Mac OS X: in version 10.0 and later
  1221. * Windows: in qtmlClient.lib 3.0 and later
  1222. */
  1223. EXTERN_API( OSErr )
  1224. CompressImage(
  1225. PixMapHandle src,
  1226. const Rect * srcRect,
  1227. CodecQ quality,
  1228. CodecType cType,
  1229. ImageDescriptionHandle desc,
  1230. Ptr data);
  1231. /*
  1232. * FCompressImage()
  1233. *
  1234. * Availability:
  1235. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1236. * CarbonLib: in CarbonLib 1.0 and later
  1237. * Mac OS X: in version 10.0 and later
  1238. * Windows: in qtmlClient.lib 3.0 and later
  1239. */
  1240. EXTERN_API( OSErr )
  1241. FCompressImage(
  1242. PixMapHandle src,
  1243. const Rect * srcRect,
  1244. short colorDepth,
  1245. CodecQ quality,
  1246. CodecType cType,
  1247. CompressorComponent codec,
  1248. CTabHandle ctable,
  1249. CodecFlags flags,
  1250. long bufferSize,
  1251. ICMFlushProcRecordPtr flushProc,
  1252. ICMProgressProcRecordPtr progressProc,
  1253. ImageDescriptionHandle desc,
  1254. Ptr data);
  1255. /*
  1256. * DecompressImage()
  1257. *
  1258. * Availability:
  1259. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1260. * CarbonLib: in CarbonLib 1.0 and later
  1261. * Mac OS X: in version 10.0 and later
  1262. * Windows: in qtmlClient.lib 3.0 and later
  1263. */
  1264. EXTERN_API( OSErr )
  1265. DecompressImage(
  1266. Ptr data,
  1267. ImageDescriptionHandle desc,
  1268. PixMapHandle dst,
  1269. const Rect * srcRect,
  1270. const Rect * dstRect,
  1271. short mode,
  1272. RgnHandle mask);
  1273. /*
  1274. * FDecompressImage()
  1275. *
  1276. * Availability:
  1277. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1278. * CarbonLib: in CarbonLib 1.0 and later
  1279. * Mac OS X: in version 10.0 and later
  1280. * Windows: in qtmlClient.lib 3.0 and later
  1281. */
  1282. EXTERN_API( OSErr )
  1283. FDecompressImage(
  1284. Ptr data,
  1285. ImageDescriptionHandle desc,
  1286. PixMapHandle dst,
  1287. const Rect * srcRect,
  1288. MatrixRecordPtr matrix,
  1289. short mode,
  1290. RgnHandle mask,
  1291. PixMapHandle matte,
  1292. const Rect * matteRect,
  1293. CodecQ accuracy,
  1294. DecompressorComponent codec,
  1295. long bufferSize,
  1296. ICMDataProcRecordPtr dataProc,
  1297. ICMProgressProcRecordPtr progressProc);
  1298. /* For video compression, consider using ICMCompressionSessionCreate etc. instead of CompressSequenceBegin etc. */
  1299. /*
  1300. * CompressSequenceBegin()
  1301. *
  1302. * Availability:
  1303. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1304. * CarbonLib: in CarbonLib 1.0 and later
  1305. * Mac OS X: in version 10.0 and later
  1306. * Windows: in qtmlClient.lib 3.0 and later
  1307. */
  1308. EXTERN_API( OSErr )
  1309. CompressSequenceBegin(
  1310. ImageSequence * seqID,
  1311. PixMapHandle src,
  1312. PixMapHandle prev,
  1313. const Rect * srcRect,
  1314. const Rect * prevRect,
  1315. short colorDepth,
  1316. CodecType cType,
  1317. CompressorComponent codec,
  1318. CodecQ spatialQuality,
  1319. CodecQ temporalQuality,
  1320. long keyFrameRate,
  1321. CTabHandle ctable,
  1322. CodecFlags flags,
  1323. ImageDescriptionHandle desc);
  1324. /*
  1325. * CompressSequenceFrame()
  1326. *
  1327. * Availability:
  1328. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1329. * CarbonLib: in CarbonLib 1.0 and later
  1330. * Mac OS X: in version 10.0 and later
  1331. * Windows: in qtmlClient.lib 3.0 and later
  1332. */
  1333. EXTERN_API( OSErr )
  1334. CompressSequenceFrame(
  1335. ImageSequence seqID,
  1336. PixMapHandle src,
  1337. const Rect * srcRect,
  1338. CodecFlags flags,
  1339. Ptr data,
  1340. long * dataSize,
  1341. UInt8 * similarity,
  1342. ICMCompletionProcRecordPtr asyncCompletionProc);
  1343. /* For video decompression, consider using ICMDecompressionSessionCreate etc. instead of DecompressSequenceBegin etc. */
  1344. /*
  1345. * DecompressSequenceBegin()
  1346. *
  1347. * Availability:
  1348. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1349. * CarbonLib: in CarbonLib 1.0 and later
  1350. * Mac OS X: in version 10.0 and later
  1351. * Windows: in qtmlClient.lib 3.0 and later
  1352. */
  1353. EXTERN_API( OSErr )
  1354. DecompressSequenceBegin(
  1355. ImageSequence * seqID,
  1356. ImageDescriptionHandle desc,
  1357. CGrafPtr port,
  1358. GDHandle gdh,
  1359. const Rect * srcRect,
  1360. MatrixRecordPtr matrix,
  1361. short mode,
  1362. RgnHandle mask,
  1363. CodecFlags flags,
  1364. CodecQ accuracy,
  1365. DecompressorComponent codec);
  1366. /* For video decompression, consider using ICMDecompressionSessionCreate etc. instead of DecompressSequenceBeginS etc. */
  1367. /*
  1368. * DecompressSequenceBeginS()
  1369. *
  1370. * Availability:
  1371. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1372. * CarbonLib: in CarbonLib 1.0 and later
  1373. * Mac OS X: in version 10.0 and later
  1374. * Windows: in qtmlClient.lib 3.0 and later
  1375. */
  1376. EXTERN_API( OSErr )
  1377. DecompressSequenceBeginS(
  1378. ImageSequence * seqID,
  1379. ImageDescriptionHandle desc,
  1380. Ptr data,
  1381. long dataSize,
  1382. CGrafPtr port,
  1383. GDHandle gdh,
  1384. const Rect * srcRect,
  1385. MatrixRecordPtr matrix,
  1386. short mode,
  1387. RgnHandle mask,
  1388. CodecFlags flags,
  1389. CodecQ accuracy,
  1390. DecompressorComponent codec);
  1391. /*
  1392. * DecompressSequenceFrame()
  1393. *
  1394. * Availability:
  1395. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1396. * CarbonLib: in CarbonLib 1.0 and later
  1397. * Mac OS X: in version 10.0 and later
  1398. * Windows: in qtmlClient.lib 3.0 and later
  1399. */
  1400. EXTERN_API( OSErr )
  1401. DecompressSequenceFrame(
  1402. ImageSequence seqID,
  1403. Ptr data,
  1404. CodecFlags inFlags,
  1405. CodecFlags * outFlags,
  1406. ICMCompletionProcRecordPtr asyncCompletionProc);
  1407. /*
  1408. * DecompressSequenceFrameS()
  1409. *
  1410. * Availability:
  1411. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1412. * CarbonLib: in CarbonLib 1.0 and later
  1413. * Mac OS X: in version 10.0 and later
  1414. * Windows: in qtmlClient.lib 3.0 and later
  1415. */
  1416. EXTERN_API( OSErr )
  1417. DecompressSequenceFrameS(
  1418. ImageSequence seqID,
  1419. Ptr data,
  1420. long dataSize,
  1421. CodecFlags inFlags,
  1422. CodecFlags * outFlags,
  1423. ICMCompletionProcRecordPtr asyncCompletionProc);
  1424. /*
  1425. * DecompressSequenceFrameWhen()
  1426. *
  1427. * Availability:
  1428. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1429. * CarbonLib: in CarbonLib 1.0 and later
  1430. * Mac OS X: in version 10.0 and later
  1431. * Windows: in qtmlClient.lib 3.0 and later
  1432. */
  1433. EXTERN_API( OSErr )
  1434. DecompressSequenceFrameWhen(
  1435. ImageSequence seqID,
  1436. Ptr data,
  1437. long dataSize,
  1438. CodecFlags inFlags,
  1439. CodecFlags * outFlags,
  1440. ICMCompletionProcRecordPtr asyncCompletionProc,
  1441. const ICMFrameTimeRecord * frameTime);
  1442. /*
  1443. * CDSequenceFlush()
  1444. *
  1445. * Availability:
  1446. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1447. * CarbonLib: in CarbonLib 1.0 and later
  1448. * Mac OS X: in version 10.0 and later
  1449. * Windows: in qtmlClient.lib 3.0 and later
  1450. */
  1451. EXTERN_API( OSErr )
  1452. CDSequenceFlush(ImageSequence seqID);
  1453. /*
  1454. * SetDSequenceMatrix()
  1455. *
  1456. * Availability:
  1457. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1458. * CarbonLib: in CarbonLib 1.0 and later
  1459. * Mac OS X: in version 10.0 and later
  1460. * Windows: in qtmlClient.lib 3.0 and later
  1461. */
  1462. EXTERN_API( OSErr )
  1463. SetDSequenceMatrix(
  1464. ImageSequence seqID,
  1465. MatrixRecordPtr matrix);
  1466. /*
  1467. * GetDSequenceMatrix()
  1468. *
  1469. * Availability:
  1470. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  1471. * CarbonLib: in CarbonLib 1.0.2 and later
  1472. * Mac OS X: in version 10.0 and later
  1473. * Windows: in qtmlClient.lib 4.0 and later
  1474. */
  1475. EXTERN_API( OSErr )
  1476. GetDSequenceMatrix(
  1477. ImageSequence seqID,
  1478. MatrixRecordPtr matrix);
  1479. /*
  1480. * SetDSequenceMatte()
  1481. *
  1482. * Availability:
  1483. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1484. * CarbonLib: in CarbonLib 1.0 and later
  1485. * Mac OS X: in version 10.0 and later
  1486. * Windows: in qtmlClient.lib 3.0 and later
  1487. */
  1488. EXTERN_API( OSErr )
  1489. SetDSequenceMatte(
  1490. ImageSequence seqID,
  1491. PixMapHandle matte,
  1492. const Rect * matteRect);
  1493. /*
  1494. * SetDSequenceMask()
  1495. *
  1496. * Availability:
  1497. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1498. * CarbonLib: in CarbonLib 1.0 and later
  1499. * Mac OS X: in version 10.0 and later
  1500. * Windows: in qtmlClient.lib 3.0 and later
  1501. */
  1502. EXTERN_API( OSErr )
  1503. SetDSequenceMask(
  1504. ImageSequence seqID,
  1505. RgnHandle mask);
  1506. /*
  1507. * SetDSequenceTransferMode()
  1508. *
  1509. * Availability:
  1510. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1511. * CarbonLib: in CarbonLib 1.0 and later
  1512. * Mac OS X: in version 10.0 and later
  1513. * Windows: in qtmlClient.lib 3.0 and later
  1514. */
  1515. EXTERN_API( OSErr )
  1516. SetDSequenceTransferMode(
  1517. ImageSequence seqID,
  1518. short mode,
  1519. const RGBColor * opColor);
  1520. /*
  1521. * SetDSequenceDataProc()
  1522. *
  1523. * Availability:
  1524. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1525. * CarbonLib: in CarbonLib 1.0 and later
  1526. * Mac OS X: in version 10.0 and later
  1527. * Windows: in qtmlClient.lib 3.0 and later
  1528. */
  1529. EXTERN_API( OSErr )
  1530. SetDSequenceDataProc(
  1531. ImageSequence seqID,
  1532. ICMDataProcRecordPtr dataProc,
  1533. long bufferSize);
  1534. /*
  1535. * SetDSequenceAccuracy()
  1536. *
  1537. * Availability:
  1538. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1539. * CarbonLib: in CarbonLib 1.0 and later
  1540. * Mac OS X: in version 10.0 and later
  1541. * Windows: in qtmlClient.lib 3.0 and later
  1542. */
  1543. EXTERN_API( OSErr )
  1544. SetDSequenceAccuracy(
  1545. ImageSequence seqID,
  1546. CodecQ accuracy);
  1547. /*
  1548. * SetDSequenceSrcRect()
  1549. *
  1550. * Availability:
  1551. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1552. * CarbonLib: in CarbonLib 1.0 and later
  1553. * Mac OS X: in version 10.0 and later
  1554. * Windows: in qtmlClient.lib 3.0 and later
  1555. */
  1556. EXTERN_API( OSErr )
  1557. SetDSequenceSrcRect(
  1558. ImageSequence seqID,
  1559. const Rect * srcRect);
  1560. /*
  1561. * SetDSequenceFlags()
  1562. *
  1563. * Availability:
  1564. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  1565. * CarbonLib: in CarbonLib 1.0.2 and later
  1566. * Mac OS X: in version 10.0 and later
  1567. * Windows: in qtmlClient.lib 4.0 and later
  1568. */
  1569. EXTERN_API( OSErr )
  1570. SetDSequenceFlags(
  1571. ImageSequence seqID,
  1572. long flags,
  1573. long flagsMask);
  1574. enum {
  1575. codecDSequenceDisableOverlaySurface = (1L << 5),
  1576. codecDSequenceSingleField = (1L << 6),
  1577. codecDSequenceBidirectionalPrediction = (1L << 7),
  1578. codecDSequenceFlushInsteadOfDirtying = (1L << 8),
  1579. codecDSequenceEnableSubPixelPositioning = (1L << 9),
  1580. codecDSequenceDeinterlaceFields = (1L << 10)
  1581. };
  1582. typedef CodecComponent * CodecComponentPtr;
  1583. typedef CodecComponentPtr * CodecComponentHandle;
  1584. /* selectors for ICMSequenceGet/SetInfo*/
  1585. enum {
  1586. kICMSequenceTaskWeight = FOUR_CHAR_CODE('twei'), /* data is pointer to UInt32*/
  1587. kICMSequenceTaskName = FOUR_CHAR_CODE('tnam'), /* data is pointer to OSType*/
  1588. kICMSequenceUserPreferredCodecs = FOUR_CHAR_CODE('punt') /* data is pointer to CodecComponentHandle*/
  1589. };
  1590. /*
  1591. * ICMSequenceGetInfo()
  1592. *
  1593. * Availability:
  1594. * Non-Carbon CFM: in QuickTimeLib 5.0 and later
  1595. * CarbonLib: in CarbonLib 1.3 and later
  1596. * Mac OS X: in version 10.0 and later
  1597. * Windows: in qtmlClient.lib 5.0 and later
  1598. */
  1599. EXTERN_API( OSErr )
  1600. ICMSequenceGetInfo(
  1601. ImageSequence seqID,
  1602. OSType which,
  1603. void * data);
  1604. /*
  1605. * ICMSequenceSetInfo()
  1606. *
  1607. * Availability:
  1608. * Non-Carbon CFM: in QuickTimeLib 5.0 and later
  1609. * CarbonLib: in CarbonLib 1.3 and later
  1610. * Mac OS X: in version 10.0 and later
  1611. * Windows: in qtmlClient.lib 5.0 and later
  1612. */
  1613. EXTERN_API( OSErr )
  1614. ICMSequenceSetInfo(
  1615. ImageSequence seqID,
  1616. OSType which,
  1617. void * data,
  1618. Size dataSize);
  1619. /*
  1620. * GetDSequenceImageBuffer()
  1621. *
  1622. * Availability:
  1623. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1624. * CarbonLib: in CarbonLib 1.0 and later
  1625. * Mac OS X: in version 10.0 and later
  1626. * Windows: in qtmlClient.lib 3.0 and later
  1627. */
  1628. EXTERN_API( OSErr )
  1629. GetDSequenceImageBuffer(
  1630. ImageSequence seqID,
  1631. GWorldPtr * gworld);
  1632. /*
  1633. * GetDSequenceScreenBuffer()
  1634. *
  1635. * Availability:
  1636. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1637. * CarbonLib: in CarbonLib 1.0 and later
  1638. * Mac OS X: in version 10.0 and later
  1639. * Windows: in qtmlClient.lib 3.0 and later
  1640. */
  1641. EXTERN_API( OSErr )
  1642. GetDSequenceScreenBuffer(
  1643. ImageSequence seqID,
  1644. GWorldPtr * gworld);
  1645. /*
  1646. * SetCSequenceQuality()
  1647. *
  1648. * Availability:
  1649. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1650. * CarbonLib: in CarbonLib 1.0 and later
  1651. * Mac OS X: in version 10.0 and later
  1652. * Windows: in qtmlClient.lib 3.0 and later
  1653. */
  1654. EXTERN_API( OSErr )
  1655. SetCSequenceQuality(
  1656. ImageSequence seqID,
  1657. CodecQ spatialQuality,
  1658. CodecQ temporalQuality);
  1659. /*
  1660. * SetCSequencePrev()
  1661. *
  1662. * Availability:
  1663. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1664. * CarbonLib: in CarbonLib 1.0 and later
  1665. * Mac OS X: in version 10.0 and later
  1666. * Windows: in qtmlClient.lib 3.0 and later
  1667. */
  1668. EXTERN_API( OSErr )
  1669. SetCSequencePrev(
  1670. ImageSequence seqID,
  1671. PixMapHandle prev,
  1672. const Rect * prevRect);
  1673. /*
  1674. * SetCSequenceFlushProc()
  1675. *
  1676. * Availability:
  1677. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1678. * CarbonLib: in CarbonLib 1.0 and later
  1679. * Mac OS X: in version 10.0 and later
  1680. * Windows: in qtmlClient.lib 3.0 and later
  1681. */
  1682. EXTERN_API( OSErr )
  1683. SetCSequenceFlushProc(
  1684. ImageSequence seqID,
  1685. ICMFlushProcRecordPtr flushProc,
  1686. long bufferSize);
  1687. /*
  1688. * SetCSequenceKeyFrameRate()
  1689. *
  1690. * Availability:
  1691. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1692. * CarbonLib: in CarbonLib 1.0 and later
  1693. * Mac OS X: in version 10.0 and later
  1694. * Windows: in qtmlClient.lib 3.0 and later
  1695. */
  1696. EXTERN_API( OSErr )
  1697. SetCSequenceKeyFrameRate(
  1698. ImageSequence seqID,
  1699. long keyFrameRate);
  1700. /*
  1701. * GetCSequenceKeyFrameRate()
  1702. *
  1703. * Availability:
  1704. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1705. * CarbonLib: in CarbonLib 1.0 and later
  1706. * Mac OS X: in version 10.0 and later
  1707. * Windows: in qtmlClient.lib 3.0 and later
  1708. */
  1709. EXTERN_API( OSErr )
  1710. GetCSequenceKeyFrameRate(
  1711. ImageSequence seqID,
  1712. long * keyFrameRate);
  1713. /*
  1714. * GetCSequencePrevBuffer()
  1715. *
  1716. * Availability:
  1717. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1718. * CarbonLib: in CarbonLib 1.0 and later
  1719. * Mac OS X: in version 10.0 and later
  1720. * Windows: in qtmlClient.lib 3.0 and later
  1721. */
  1722. EXTERN_API( OSErr )
  1723. GetCSequencePrevBuffer(
  1724. ImageSequence seqID,
  1725. GWorldPtr * gworld);
  1726. /*
  1727. * CDSequenceBusy()
  1728. *
  1729. * Availability:
  1730. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1731. * CarbonLib: in CarbonLib 1.0 and later
  1732. * Mac OS X: in version 10.0 and later
  1733. * Windows: in qtmlClient.lib 3.0 and later
  1734. */
  1735. EXTERN_API( OSErr )
  1736. CDSequenceBusy(ImageSequence seqID);
  1737. /*
  1738. * CDSequenceEnd()
  1739. *
  1740. * Availability:
  1741. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1742. * CarbonLib: in CarbonLib 1.0 and later
  1743. * Mac OS X: in version 10.0 and later
  1744. * Windows: in qtmlClient.lib 3.0 and later
  1745. */
  1746. EXTERN_API( OSErr )
  1747. CDSequenceEnd(ImageSequence seqID);
  1748. /*
  1749. * CDSequenceEquivalentImageDescription()
  1750. *
  1751. * Availability:
  1752. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1753. * CarbonLib: in CarbonLib 1.0 and later
  1754. * Mac OS X: in version 10.0 and later
  1755. * Windows: in qtmlClient.lib 3.0 and later
  1756. */
  1757. EXTERN_API( OSErr )
  1758. CDSequenceEquivalentImageDescription(
  1759. ImageSequence seqID,
  1760. ImageDescriptionHandle newDesc,
  1761. Boolean * equivalent);
  1762. /*
  1763. * CDSequenceEquivalentImageDescriptionS()
  1764. *
  1765. * Availability:
  1766. * Non-Carbon CFM: in QuickTimeLib 5.0 and later
  1767. * CarbonLib: in CarbonLib 1.3 and later
  1768. * Mac OS X: in version 10.0 and later
  1769. * Windows: in qtmlClient.lib 5.0 and later
  1770. */
  1771. EXTERN_API( OSErr )
  1772. CDSequenceEquivalentImageDescriptionS(
  1773. ImageSequence seqID,
  1774. ImageDescriptionHandle newDesc,
  1775. Boolean * equivalent,
  1776. Boolean * canSwitch);
  1777. /*
  1778. * ReplaceDSequenceImageDescription()
  1779. *
  1780. * Availability:
  1781. * Non-Carbon CFM: in QuickTimeLib 5.0 and later
  1782. * CarbonLib: in CarbonLib 1.3 and later
  1783. * Mac OS X: in version 10.0 and later
  1784. * Windows: in qtmlClient.lib 5.0 and later
  1785. */
  1786. EXTERN_API( OSErr )
  1787. ReplaceDSequenceImageDescription(
  1788. ImageSequence seqID,
  1789. ImageDescriptionHandle newDesc);
  1790. /*
  1791. * GetCompressedImageSize()
  1792. *
  1793. * Availability:
  1794. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1795. * CarbonLib: in CarbonLib 1.0 and later
  1796. * Mac OS X: in version 10.0 and later
  1797. * Windows: in qtmlClient.lib 3.0 and later
  1798. */
  1799. EXTERN_API( OSErr )
  1800. GetCompressedImageSize(
  1801. ImageDescriptionHandle desc,
  1802. Ptr data,
  1803. long bufferSize,
  1804. ICMDataProcRecordPtr dataProc,
  1805. long * dataSize);
  1806. /*
  1807. * GetSimilarity()
  1808. *
  1809. * Availability:
  1810. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1811. * CarbonLib: in CarbonLib 1.0 and later
  1812. * Mac OS X: in version 10.0 and later
  1813. * Windows: in qtmlClient.lib 3.0 and later
  1814. */
  1815. EXTERN_API( OSErr )
  1816. GetSimilarity(
  1817. PixMapHandle src,
  1818. const Rect * srcRect,
  1819. ImageDescriptionHandle desc,
  1820. Ptr data,
  1821. Fixed * similarity);
  1822. enum {
  1823. kImageDescriptionSampleFormat = FOUR_CHAR_CODE('idfm'), /* image description extension describing sample format*/
  1824. kImageDescriptionClassicAtomFormat = FOUR_CHAR_CODE('atom'), /* sample contains classic atom structure (ie, GX codec and Curve codec)*/
  1825. kImageDescriptionQTAtomFormat = FOUR_CHAR_CODE('qtat'), /* sample contains QT atom structure*/
  1826. kImageDescriptionEffectDataFormat = FOUR_CHAR_CODE('fxat'), /* sample describes an effect (as QTAtoms)*/
  1827. kImageDescriptionPrivateDataFormat = FOUR_CHAR_CODE('priv'), /* sample is in a private codec specific format*/
  1828. kImageDescriptionAlternateCodec = FOUR_CHAR_CODE('subs'), /* image description extension containing the OSType of a substitute codec should the main codec not be available*/
  1829. 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)*/
  1830. };
  1831. /*
  1832. * GetImageDescriptionCTable()
  1833. *
  1834. * Availability:
  1835. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1836. * CarbonLib: in CarbonLib 1.0 and later
  1837. * Mac OS X: in version 10.0 and later
  1838. * Windows: in qtmlClient.lib 3.0 and later
  1839. */
  1840. EXTERN_API( OSErr )
  1841. GetImageDescriptionCTable(
  1842. ImageDescriptionHandle desc,
  1843. CTabHandle * ctable);
  1844. /*
  1845. * SetImageDescriptionCTable()
  1846. *
  1847. * Availability:
  1848. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1849. * CarbonLib: in CarbonLib 1.0 and later
  1850. * Mac OS X: in version 10.0 and later
  1851. * Windows: in qtmlClient.lib 3.0 and later
  1852. */
  1853. EXTERN_API( OSErr )
  1854. SetImageDescriptionCTable(
  1855. ImageDescriptionHandle desc,
  1856. CTabHandle ctable);
  1857. /*
  1858. * GetImageDescriptionExtension()
  1859. *
  1860. * Availability:
  1861. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1862. * CarbonLib: in CarbonLib 1.0 and later
  1863. * Mac OS X: in version 10.0 and later
  1864. * Windows: in qtmlClient.lib 3.0 and later
  1865. */
  1866. EXTERN_API( OSErr )
  1867. GetImageDescriptionExtension(
  1868. ImageDescriptionHandle desc,
  1869. Handle * extension,
  1870. long idType,
  1871. long index);
  1872. /*
  1873. * AddImageDescriptionExtension()
  1874. *
  1875. * Availability:
  1876. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1877. * CarbonLib: in CarbonLib 1.0 and later
  1878. * Mac OS X: in version 10.0 and later
  1879. * Windows: in qtmlClient.lib 3.0 and later
  1880. */
  1881. EXTERN_API( OSErr )
  1882. AddImageDescriptionExtension(
  1883. ImageDescriptionHandle desc,
  1884. Handle extension,
  1885. long idType);
  1886. /*
  1887. * RemoveImageDescriptionExtension()
  1888. *
  1889. * Availability:
  1890. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1891. * CarbonLib: in CarbonLib 1.0 and later
  1892. * Mac OS X: in version 10.0 and later
  1893. * Windows: in qtmlClient.lib 3.0 and later
  1894. */
  1895. EXTERN_API( OSErr )
  1896. RemoveImageDescriptionExtension(
  1897. ImageDescriptionHandle desc,
  1898. long idType,
  1899. long index);
  1900. /*
  1901. * CountImageDescriptionExtensionType()
  1902. *
  1903. * Availability:
  1904. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1905. * CarbonLib: in CarbonLib 1.0 and later
  1906. * Mac OS X: in version 10.0 and later
  1907. * Windows: in qtmlClient.lib 3.0 and later
  1908. */
  1909. EXTERN_API( OSErr )
  1910. CountImageDescriptionExtensionType(
  1911. ImageDescriptionHandle desc,
  1912. long idType,
  1913. long * count);
  1914. /*
  1915. * GetNextImageDescriptionExtensionType()
  1916. *
  1917. * Availability:
  1918. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1919. * CarbonLib: in CarbonLib 1.0 and later
  1920. * Mac OS X: in version 10.0 and later
  1921. * Windows: in qtmlClient.lib 3.0 and later
  1922. */
  1923. EXTERN_API( OSErr )
  1924. GetNextImageDescriptionExtensionType(
  1925. ImageDescriptionHandle desc,
  1926. long * idType);
  1927. /*
  1928. * FindCodec()
  1929. *
  1930. * Availability:
  1931. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1932. * CarbonLib: in CarbonLib 1.0 and later
  1933. * Mac OS X: in version 10.0 and later
  1934. * Windows: in qtmlClient.lib 3.0 and later
  1935. */
  1936. EXTERN_API( OSErr )
  1937. FindCodec(
  1938. CodecType cType,
  1939. CodecComponent specCodec,
  1940. CompressorComponent * compressor,
  1941. DecompressorComponent * decompressor);
  1942. /*
  1943. * CompressPicture()
  1944. *
  1945. * Availability:
  1946. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1947. * CarbonLib: in CarbonLib 1.0 and later
  1948. * Mac OS X: in version 10.0 and later
  1949. * Windows: in qtmlClient.lib 3.0 and later
  1950. */
  1951. EXTERN_API( OSErr )
  1952. CompressPicture(
  1953. PicHandle srcPicture,
  1954. PicHandle dstPicture,
  1955. CodecQ quality,
  1956. CodecType cType);
  1957. /*
  1958. * FCompressPicture()
  1959. *
  1960. * Availability:
  1961. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1962. * CarbonLib: in CarbonLib 1.0 and later
  1963. * Mac OS X: in version 10.0 and later
  1964. * Windows: in qtmlClient.lib 3.0 and later
  1965. */
  1966. EXTERN_API( OSErr )
  1967. FCompressPicture(
  1968. PicHandle srcPicture,
  1969. PicHandle dstPicture,
  1970. short colorDepth,
  1971. CTabHandle ctable,
  1972. CodecQ quality,
  1973. short doDither,
  1974. short compressAgain,
  1975. ICMProgressProcRecordPtr progressProc,
  1976. CodecType cType,
  1977. CompressorComponent codec);
  1978. /*
  1979. * CompressPictureFile()
  1980. *
  1981. * Availability:
  1982. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1983. * CarbonLib: in CarbonLib 1.0 and later
  1984. * Mac OS X: in version 10.0 and later
  1985. * Windows: in qtmlClient.lib 3.0 and later
  1986. */
  1987. EXTERN_API( OSErr )
  1988. CompressPictureFile(
  1989. short srcRefNum,
  1990. short dstRefNum,
  1991. CodecQ quality,
  1992. CodecType cType);
  1993. /*
  1994. * FCompressPictureFile()
  1995. *
  1996. * Availability:
  1997. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  1998. * CarbonLib: in CarbonLib 1.0 and later
  1999. * Mac OS X: in version 10.0 and later
  2000. * Windows: in qtmlClient.lib 3.0 and later
  2001. */
  2002. EXTERN_API( OSErr )
  2003. FCompressPictureFile(
  2004. short srcRefNum,
  2005. short dstRefNum,
  2006. short colorDepth,
  2007. CTabHandle ctable,
  2008. CodecQ quality,
  2009. short doDither,
  2010. short compressAgain,
  2011. ICMProgressProcRecordPtr progressProc,
  2012. CodecType cType,
  2013. CompressorComponent codec);
  2014. /*
  2015. * GetPictureFileHeader()
  2016. *
  2017. * Availability:
  2018. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2019. * CarbonLib: in CarbonLib 1.0 and later
  2020. * Mac OS X: in version 10.0 and later
  2021. * Windows: in qtmlClient.lib 3.0 and later
  2022. */
  2023. EXTERN_API( OSErr )
  2024. GetPictureFileHeader(
  2025. short refNum,
  2026. Rect * frame,
  2027. OpenCPicParams * header);
  2028. /*
  2029. * DrawPictureFile()
  2030. *
  2031. * Availability:
  2032. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2033. * CarbonLib: in CarbonLib 1.0 and later
  2034. * Mac OS X: in version 10.0 and later
  2035. * Windows: in qtmlClient.lib 3.0 and later
  2036. */
  2037. EXTERN_API( OSErr )
  2038. DrawPictureFile(
  2039. short refNum,
  2040. const Rect * frame,
  2041. ICMProgressProcRecordPtr progressProc);
  2042. /*
  2043. * DrawTrimmedPicture()
  2044. *
  2045. * Availability:
  2046. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2047. * CarbonLib: in CarbonLib 1.0 and later
  2048. * Mac OS X: in version 10.0 and later
  2049. * Windows: in qtmlClient.lib 3.0 and later
  2050. */
  2051. EXTERN_API( OSErr )
  2052. DrawTrimmedPicture(
  2053. PicHandle srcPicture,
  2054. const Rect * frame,
  2055. RgnHandle trimMask,
  2056. short doDither,
  2057. ICMProgressProcRecordPtr progressProc);
  2058. /*
  2059. * DrawTrimmedPictureFile()
  2060. *
  2061. * Availability:
  2062. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2063. * CarbonLib: in CarbonLib 1.0 and later
  2064. * Mac OS X: in version 10.0 and later
  2065. * Windows: in qtmlClient.lib 3.0 and later
  2066. */
  2067. EXTERN_API( OSErr )
  2068. DrawTrimmedPictureFile(
  2069. short srcRefnum,
  2070. const Rect * frame,
  2071. RgnHandle trimMask,
  2072. short doDither,
  2073. ICMProgressProcRecordPtr progressProc);
  2074. /*
  2075. * MakeThumbnailFromPicture()
  2076. *
  2077. * Availability:
  2078. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2079. * CarbonLib: in CarbonLib 1.0 and later
  2080. * Mac OS X: in version 10.0 and later
  2081. * Windows: in qtmlClient.lib 3.0 and later
  2082. */
  2083. EXTERN_API( OSErr )
  2084. MakeThumbnailFromPicture(
  2085. PicHandle picture,
  2086. short colorDepth,
  2087. PicHandle thumbnail,
  2088. ICMProgressProcRecordPtr progressProc);
  2089. /*
  2090. * MakeThumbnailFromPictureFile()
  2091. *
  2092. * Availability:
  2093. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2094. * CarbonLib: in CarbonLib 1.0 and later
  2095. * Mac OS X: in version 10.0 and later
  2096. * Windows: in qtmlClient.lib 3.0 and later
  2097. */
  2098. EXTERN_API( OSErr )
  2099. MakeThumbnailFromPictureFile(
  2100. short refNum,
  2101. short colorDepth,
  2102. PicHandle thumbnail,
  2103. ICMProgressProcRecordPtr progressProc);
  2104. /*
  2105. * MakeThumbnailFromPixMap()
  2106. *
  2107. * Availability:
  2108. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2109. * CarbonLib: in CarbonLib 1.0 and later
  2110. * Mac OS X: in version 10.0 and later
  2111. * Windows: in qtmlClient.lib 3.0 and later
  2112. */
  2113. EXTERN_API( OSErr )
  2114. MakeThumbnailFromPixMap(
  2115. PixMapHandle src,
  2116. const Rect * srcRect,
  2117. short colorDepth,
  2118. PicHandle thumbnail,
  2119. ICMProgressProcRecordPtr progressProc);
  2120. /*
  2121. * TrimImage()
  2122. *
  2123. * Availability:
  2124. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2125. * CarbonLib: in CarbonLib 1.0 and later
  2126. * Mac OS X: in version 10.0 and later
  2127. * Windows: in qtmlClient.lib 3.0 and later
  2128. */
  2129. EXTERN_API( OSErr )
  2130. TrimImage(
  2131. ImageDescriptionHandle desc,
  2132. Ptr inData,
  2133. long inBufferSize,
  2134. ICMDataProcRecordPtr dataProc,
  2135. Ptr outData,
  2136. long outBufferSize,
  2137. ICMFlushProcRecordPtr flushProc,
  2138. Rect * trimRect,
  2139. ICMProgressProcRecordPtr progressProc);
  2140. /*
  2141. * ConvertImage()
  2142. *
  2143. * Availability:
  2144. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2145. * CarbonLib: in CarbonLib 1.0 and later
  2146. * Mac OS X: in version 10.0 and later
  2147. * Windows: in qtmlClient.lib 3.0 and later
  2148. */
  2149. EXTERN_API( OSErr )
  2150. ConvertImage(
  2151. ImageDescriptionHandle srcDD,
  2152. Ptr srcData,
  2153. short colorDepth,
  2154. CTabHandle ctable,
  2155. CodecQ accuracy,
  2156. CodecQ quality,
  2157. CodecType cType,
  2158. CodecComponent codec,
  2159. ImageDescriptionHandle dstDD,
  2160. Ptr dstData);
  2161. /*
  2162. * GetCompressedPixMapInfo()
  2163. *
  2164. * Availability:
  2165. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2166. * CarbonLib: in CarbonLib 1.0 and later
  2167. * Mac OS X: in version 10.0 and later
  2168. * Windows: in qtmlClient.lib 3.0 and later
  2169. */
  2170. EXTERN_API( OSErr )
  2171. GetCompressedPixMapInfo(
  2172. PixMapPtr pix,
  2173. ImageDescriptionHandle * desc,
  2174. Ptr * data,
  2175. long * bufferSize,
  2176. ICMDataProcRecord * dataProc,
  2177. ICMProgressProcRecord * progressProc);
  2178. /*
  2179. * SetCompressedPixMapInfo()
  2180. *
  2181. * Availability:
  2182. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2183. * CarbonLib: in CarbonLib 1.0 and later
  2184. * Mac OS X: in version 10.0 and later
  2185. * Windows: in qtmlClient.lib 3.0 and later
  2186. */
  2187. EXTERN_API( OSErr )
  2188. SetCompressedPixMapInfo(
  2189. PixMapPtr pix,
  2190. ImageDescriptionHandle desc,
  2191. Ptr data,
  2192. long bufferSize,
  2193. ICMDataProcRecordPtr dataProc,
  2194. ICMProgressProcRecordPtr progressProc);
  2195. /*
  2196. * StdPix()
  2197. *
  2198. * Availability:
  2199. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2200. * CarbonLib: in CarbonLib 1.0 and later
  2201. * Mac OS X: in version 10.0 and later
  2202. * Windows: in qtmlClient.lib 3.0 and later
  2203. */
  2204. EXTERN_API( void )
  2205. StdPix(
  2206. PixMapPtr src,
  2207. const Rect * srcRect,
  2208. MatrixRecordPtr matrix,
  2209. short mode,
  2210. RgnHandle mask,
  2211. PixMapPtr matte,
  2212. const Rect * matteRect,
  2213. short flags);
  2214. /*
  2215. * TransformRgn()
  2216. *
  2217. * Availability:
  2218. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2219. * CarbonLib: in CarbonLib 1.0 and later
  2220. * Mac OS X: in version 10.0 and later
  2221. * Windows: in qtmlClient.lib 3.0 and later
  2222. */
  2223. EXTERN_API( OSErr )
  2224. TransformRgn(
  2225. MatrixRecordPtr matrix,
  2226. RgnHandle rgn);
  2227. /***********
  2228. preview stuff
  2229. ***********/
  2230. #if CALL_NOT_IN_CARBON
  2231. /*
  2232. * SFGetFilePreview()
  2233. *
  2234. * Availability:
  2235. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2236. * CarbonLib: not available
  2237. * Mac OS X: not available
  2238. * Windows: in qtmlClient.lib 3.0 and later
  2239. */
  2240. EXTERN_API( void )
  2241. SFGetFilePreview(
  2242. Point where,
  2243. ConstStr255Param prompt,
  2244. FileFilterUPP fileFilter,
  2245. short numTypes,
  2246. ConstSFTypeListPtr typeList,
  2247. DlgHookUPP dlgHook,
  2248. SFReply * reply);
  2249. /*
  2250. * SFPGetFilePreview()
  2251. *
  2252. * Availability:
  2253. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2254. * CarbonLib: not available
  2255. * Mac OS X: not available
  2256. * Windows: in qtmlClient.lib 3.0 and later
  2257. */
  2258. EXTERN_API( void )
  2259. SFPGetFilePreview(
  2260. Point where,
  2261. ConstStr255Param prompt,
  2262. FileFilterUPP fileFilter,
  2263. short numTypes,
  2264. ConstSFTypeListPtr typeList,
  2265. DlgHookUPP dlgHook,
  2266. SFReply * reply,
  2267. short dlgID,
  2268. ModalFilterUPP filterProc);
  2269. /*
  2270. * StandardGetFilePreview()
  2271. *
  2272. * Availability:
  2273. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2274. * CarbonLib: not available
  2275. * Mac OS X: not available
  2276. * Windows: in qtmlClient.lib 3.0 and later
  2277. */
  2278. EXTERN_API( void )
  2279. StandardGetFilePreview(
  2280. FileFilterUPP fileFilter,
  2281. short numTypes,
  2282. ConstSFTypeListPtr typeList,
  2283. StandardFileReply * reply);
  2284. /*
  2285. * CustomGetFilePreview()
  2286. *
  2287. * Availability:
  2288. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2289. * CarbonLib: not available
  2290. * Mac OS X: not available
  2291. * Windows: in qtmlClient.lib 3.0 and later
  2292. */
  2293. EXTERN_API( void )
  2294. CustomGetFilePreview(
  2295. FileFilterYDUPP fileFilter,
  2296. short numTypes,
  2297. ConstSFTypeListPtr typeList,
  2298. StandardFileReply * reply,
  2299. short dlgID,
  2300. Point where,
  2301. DlgHookYDUPP dlgHook,
  2302. ModalFilterYDUPP filterProc,
  2303. ActivationOrderListPtr activeList,
  2304. ActivateYDUPP activateProc,
  2305. void * yourDataPtr);
  2306. #endif /* CALL_NOT_IN_CARBON */
  2307. /*
  2308. * MakeFilePreview()
  2309. *
  2310. * Availability:
  2311. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2312. * CarbonLib: in CarbonLib 1.0 and later
  2313. * Mac OS X: in version 10.0 and later
  2314. * Windows: in qtmlClient.lib 3.0 and later
  2315. */
  2316. EXTERN_API( OSErr )
  2317. MakeFilePreview(
  2318. short resRefNum,
  2319. ICMProgressProcRecordPtr progress);
  2320. /*
  2321. * AddFilePreview()
  2322. *
  2323. * Availability:
  2324. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2325. * CarbonLib: in CarbonLib 1.0 and later
  2326. * Mac OS X: in version 10.0 and later
  2327. * Windows: in qtmlClient.lib 3.0 and later
  2328. */
  2329. EXTERN_API( OSErr )
  2330. AddFilePreview(
  2331. short resRefNum,
  2332. OSType previewType,
  2333. Handle previewData);
  2334. enum {
  2335. sfpItemPreviewAreaUser = 11,
  2336. sfpItemPreviewStaticText = 12,
  2337. sfpItemPreviewDividerUser = 13,
  2338. sfpItemCreatePreviewButton = 14,
  2339. sfpItemShowPreviewButton = 15
  2340. };
  2341. struct PreviewResourceRecord {
  2342. unsigned long modDate;
  2343. short version;
  2344. OSType resType;
  2345. short resID;
  2346. };
  2347. typedef struct PreviewResourceRecord PreviewResourceRecord;
  2348. typedef PreviewResourceRecord * PreviewResourcePtr;
  2349. typedef PreviewResourcePtr * PreviewResource;
  2350. /*
  2351. * AlignScreenRect()
  2352. *
  2353. * Availability:
  2354. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2355. * CarbonLib: in CarbonLib 1.0 and later
  2356. * Mac OS X: in version 10.0 and later
  2357. * Windows: in qtmlClient.lib 3.0 and later
  2358. */
  2359. EXTERN_API( void )
  2360. AlignScreenRect(
  2361. Rect * rp,
  2362. ICMAlignmentProcRecordPtr alignmentProc);
  2363. /*
  2364. * AlignWindow()
  2365. *
  2366. * Availability:
  2367. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2368. * CarbonLib: in CarbonLib 1.0 and later
  2369. * Mac OS X: in version 10.0 and later
  2370. * Windows: in qtmlClient.lib 3.0 and later
  2371. */
  2372. EXTERN_API( void )
  2373. AlignWindow(
  2374. WindowRef wp,
  2375. Boolean front,
  2376. const Rect * alignmentRect,
  2377. ICMAlignmentProcRecordPtr alignmentProc);
  2378. /*
  2379. * DragAlignedWindow()
  2380. *
  2381. * Availability:
  2382. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2383. * CarbonLib: in CarbonLib 1.0 and later
  2384. * Mac OS X: in version 10.0 and later
  2385. * Windows: in qtmlClient.lib 3.0 and later
  2386. */
  2387. EXTERN_API( void )
  2388. DragAlignedWindow(
  2389. WindowRef wp,
  2390. Point startPt,
  2391. Rect * boundsRect,
  2392. Rect * alignmentRect,
  2393. ICMAlignmentProcRecordPtr alignmentProc);
  2394. /*
  2395. * DragAlignedGrayRgn()
  2396. *
  2397. * Availability:
  2398. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2399. * CarbonLib: in CarbonLib 1.0 and later
  2400. * Mac OS X: in version 10.0 and later
  2401. * Windows: in qtmlClient.lib 3.0 and later
  2402. */
  2403. EXTERN_API( long )
  2404. DragAlignedGrayRgn(
  2405. RgnHandle theRgn,
  2406. Point startPt,
  2407. Rect * boundsRect,
  2408. Rect * slopRect,
  2409. short axis,
  2410. UniversalProcPtr actionProc,
  2411. Rect * alignmentRect,
  2412. ICMAlignmentProcRecordPtr alignmentProc);
  2413. /*
  2414. * SetCSequenceDataRateParams()
  2415. *
  2416. * Availability:
  2417. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2418. * CarbonLib: in CarbonLib 1.0 and later
  2419. * Mac OS X: in version 10.0 and later
  2420. * Windows: in qtmlClient.lib 3.0 and later
  2421. */
  2422. EXTERN_API( OSErr )
  2423. SetCSequenceDataRateParams(
  2424. ImageSequence seqID,
  2425. DataRateParamsPtr params);
  2426. /*
  2427. * SetCSequenceFrameNumber()
  2428. *
  2429. * Availability:
  2430. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2431. * CarbonLib: in CarbonLib 1.0 and later
  2432. * Mac OS X: in version 10.0 and later
  2433. * Windows: in qtmlClient.lib 3.0 and later
  2434. */
  2435. EXTERN_API( OSErr )
  2436. SetCSequenceFrameNumber(
  2437. ImageSequence seqID,
  2438. long frameNumber);
  2439. /*
  2440. * SetCSequencePreferredPacketSize()
  2441. *
  2442. * Availability:
  2443. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2444. * CarbonLib: in CarbonLib 1.0 and later
  2445. * Mac OS X: in version 10.0 and later
  2446. * Windows: in qtmlClient.lib 3.0 and later
  2447. */
  2448. EXTERN_API( OSErr )
  2449. SetCSequencePreferredPacketSize(
  2450. ImageSequence seqID,
  2451. long preferredPacketSizeInBytes);
  2452. /*
  2453. * NewImageGWorld()
  2454. *
  2455. * Availability:
  2456. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2457. * CarbonLib: in CarbonLib 1.0 and later
  2458. * Mac OS X: in version 10.0 and later
  2459. * Windows: in qtmlClient.lib 3.0 and later
  2460. */
  2461. EXTERN_API( OSErr )
  2462. NewImageGWorld(
  2463. GWorldPtr * gworld,
  2464. ImageDescriptionHandle idh,
  2465. GWorldFlags flags);
  2466. /*
  2467. * GetCSequenceDataRateParams()
  2468. *
  2469. * Availability:
  2470. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2471. * CarbonLib: in CarbonLib 1.0 and later
  2472. * Mac OS X: in version 10.0 and later
  2473. * Windows: in qtmlClient.lib 3.0 and later
  2474. */
  2475. EXTERN_API( OSErr )
  2476. GetCSequenceDataRateParams(
  2477. ImageSequence seqID,
  2478. DataRateParamsPtr params);
  2479. /*
  2480. * GetCSequenceFrameNumber()
  2481. *
  2482. * Availability:
  2483. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2484. * CarbonLib: in CarbonLib 1.0 and later
  2485. * Mac OS X: in version 10.0 and later
  2486. * Windows: in qtmlClient.lib 3.0 and later
  2487. */
  2488. EXTERN_API( OSErr )
  2489. GetCSequenceFrameNumber(
  2490. ImageSequence seqID,
  2491. long * frameNumber);
  2492. /*
  2493. * GetBestDeviceRect()
  2494. *
  2495. * Availability:
  2496. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2497. * CarbonLib: in CarbonLib 1.0 and later
  2498. * Mac OS X: in version 10.0 and later
  2499. * Windows: in qtmlClient.lib 3.0 and later
  2500. */
  2501. EXTERN_API( OSErr )
  2502. GetBestDeviceRect(
  2503. GDHandle * gdh,
  2504. Rect * rp);
  2505. /*
  2506. * SetSequenceProgressProc()
  2507. *
  2508. * Availability:
  2509. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2510. * CarbonLib: in CarbonLib 1.0 and later
  2511. * Mac OS X: in version 10.0 and later
  2512. * Windows: in qtmlClient.lib 3.0 and later
  2513. */
  2514. EXTERN_API( OSErr )
  2515. SetSequenceProgressProc(
  2516. ImageSequence seqID,
  2517. ICMProgressProcRecord * progressProc);
  2518. /*
  2519. * GDHasScale()
  2520. *
  2521. * Availability:
  2522. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2523. * CarbonLib: in CarbonLib 1.0 and later
  2524. * Mac OS X: in version 10.0 and later
  2525. * Windows: in qtmlClient.lib 3.0 and later
  2526. */
  2527. EXTERN_API( OSErr )
  2528. GDHasScale(
  2529. GDHandle gdh,
  2530. short depth,
  2531. Fixed * scale);
  2532. /*
  2533. * GDGetScale()
  2534. *
  2535. * Availability:
  2536. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2537. * CarbonLib: in CarbonLib 1.0 and later
  2538. * Mac OS X: in version 10.0 and later
  2539. * Windows: in qtmlClient.lib 3.0 and later
  2540. */
  2541. EXTERN_API( OSErr )
  2542. GDGetScale(
  2543. GDHandle gdh,
  2544. Fixed * scale,
  2545. short * flags);
  2546. /*
  2547. * GDSetScale()
  2548. *
  2549. * Availability:
  2550. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2551. * CarbonLib: in CarbonLib 1.0 and later
  2552. * Mac OS X: in version 10.0 and later
  2553. * Windows: in qtmlClient.lib 3.0 and later
  2554. */
  2555. EXTERN_API( OSErr )
  2556. GDSetScale(
  2557. GDHandle gdh,
  2558. Fixed scale,
  2559. short flags);
  2560. /*
  2561. * ICMShieldSequenceCursor()
  2562. *
  2563. * Availability:
  2564. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2565. * CarbonLib: in CarbonLib 1.0 and later
  2566. * Mac OS X: in version 10.0 and later
  2567. * Windows: in qtmlClient.lib 3.0 and later
  2568. */
  2569. EXTERN_API( OSErr )
  2570. ICMShieldSequenceCursor(ImageSequence seqID);
  2571. /*
  2572. * ICMDecompressComplete()
  2573. *
  2574. * Availability:
  2575. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2576. * CarbonLib: in CarbonLib 1.0 and later
  2577. * Mac OS X: in version 10.0 and later
  2578. * Windows: in qtmlClient.lib 3.0 and later
  2579. */
  2580. EXTERN_API( void )
  2581. ICMDecompressComplete(
  2582. ImageSequence seqID,
  2583. OSErr err,
  2584. short flag,
  2585. ICMCompletionProcRecordPtr completionRtn);
  2586. /*
  2587. * ICMDecompressCompleteS()
  2588. *
  2589. * Availability:
  2590. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  2591. * CarbonLib: in CarbonLib 1.1 and later
  2592. * Mac OS X: in version 10.0 and later
  2593. * Windows: in qtmlClient.lib 3.0 and later
  2594. */
  2595. EXTERN_API( OSErr )
  2596. ICMDecompressCompleteS(
  2597. ImageSequence seqID,
  2598. OSErr err,
  2599. short flag,
  2600. ICMCompletionProcRecordPtr completionRtn);
  2601. /*
  2602. * ICMSequenceLockBits()
  2603. *
  2604. * Availability:
  2605. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  2606. * CarbonLib: in CarbonLib 1.0 and later
  2607. * Mac OS X: in version 10.0 and later
  2608. * Windows: in qtmlClient.lib 3.0 and later
  2609. */
  2610. EXTERN_API( OSErr )
  2611. ICMSequenceLockBits(
  2612. ImageSequence seqID,
  2613. PixMapPtr dst,
  2614. long flags);
  2615. /*
  2616. * ICMSequenceUnlockBits()
  2617. *
  2618. * Availability:
  2619. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  2620. * CarbonLib: in CarbonLib 1.0 and later
  2621. * Mac OS X: in version 10.0 and later
  2622. * Windows: in qtmlClient.lib 3.0 and later
  2623. */
  2624. EXTERN_API( OSErr )
  2625. ICMSequenceUnlockBits(
  2626. ImageSequence seqID,
  2627. long flags);
  2628. enum {
  2629. kICMPixelFormatIsPlanarMask = 0x0F, /* these bits in formatFlags indicate how many planes there are; they're 0 if chunky*/
  2630. kICMPixelFormatIsIndexed = (1L << 4),
  2631. kICMPixelFormatIsSupportedByQD = (1L << 5),
  2632. kICMPixelFormatIsMonochrome = (1L << 6),
  2633. kICMPixelFormatHasAlphaChannel = (1L << 7)
  2634. };
  2635. struct ICMPixelFormatInfo {
  2636. long size; /* caller MUST fill this in with sizeof(ICMPixelFormatInfo) before calling ICMGet/SetPixelFormatInfo*/
  2637. unsigned long formatFlags;
  2638. short bitsPerPixel[14]; /* list each plane's bits per pixel separately if planar*/
  2639. /* new field for QuickTime 4.1*/
  2640. Fixed defaultGammaLevel;
  2641. /* new fields for QuickTime 6.0*/
  2642. short horizontalSubsampling[14]; /* per plane; use 1 if plane is not subsampled*/
  2643. short verticalSubsampling[14]; /* per plane; use 1 if plane is not subsampled*/
  2644. /* new fields for QuickTime 6.5*/
  2645. short cmpCount; /* for use in PixMap.cmpCount*/
  2646. short cmpSize; /* for use in PixMap.cmpSize*/
  2647. };
  2648. typedef struct ICMPixelFormatInfo ICMPixelFormatInfo;
  2649. typedef ICMPixelFormatInfo * ICMPixelFormatInfoPtr;
  2650. /* IMPORTANT: Fill in theInfo->size with sizeof(ICMPixelFormatInfo) before calling ICMGetPixelFormatInfo */
  2651. /*
  2652. * ICMGetPixelFormatInfo()
  2653. *
  2654. * Availability:
  2655. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  2656. * CarbonLib: in CarbonLib 1.0 and later
  2657. * Mac OS X: in version 10.0 and later
  2658. * Windows: in qtmlClient.lib 3.0 and later
  2659. */
  2660. EXTERN_API( OSErr )
  2661. ICMGetPixelFormatInfo(
  2662. OSType PixelFormat,
  2663. ICMPixelFormatInfoPtr theInfo);
  2664. /* IMPORTANT: Fill in theInfo->size with sizeof(ICMPixelFormatInfo) before calling ICMSetPixelFormatInfo */
  2665. /*
  2666. * ICMSetPixelFormatInfo()
  2667. *
  2668. * Availability:
  2669. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  2670. * CarbonLib: in CarbonLib 1.1 and later
  2671. * Mac OS X: in version 10.0 and later
  2672. * Windows: in qtmlClient.lib 3.0 and later
  2673. */
  2674. EXTERN_API( OSErr )
  2675. ICMSetPixelFormatInfo(
  2676. OSType PixelFormat,
  2677. ICMPixelFormatInfoPtr theInfo);
  2678. enum {
  2679. kICMGetChainUltimateParent = 0,
  2680. kICMGetChainParent = 1,
  2681. kICMGetChainChild = 2,
  2682. kICMGetChainUltimateChild = 3
  2683. };
  2684. /*
  2685. * ICMSequenceGetChainMember()
  2686. *
  2687. * Availability:
  2688. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  2689. * CarbonLib: in CarbonLib 1.0 and later
  2690. * Mac OS X: in version 10.0 and later
  2691. * Windows: in qtmlClient.lib 3.0 and later
  2692. */
  2693. EXTERN_API( OSErr )
  2694. ICMSequenceGetChainMember(
  2695. ImageSequence seqID,
  2696. ImageSequence * retSeqID,
  2697. long flags);
  2698. /*
  2699. * SetDSequenceTimeCode()
  2700. *
  2701. * Availability:
  2702. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2703. * CarbonLib: in CarbonLib 1.0 and later
  2704. * Mac OS X: in version 10.0 and later
  2705. * Windows: in qtmlClient.lib 3.0 and later
  2706. */
  2707. EXTERN_API( OSErr )
  2708. SetDSequenceTimeCode(
  2709. ImageSequence seqID,
  2710. void * timeCodeFormat,
  2711. void * timeCodeTime);
  2712. /*
  2713. * CDSequenceNewMemory()
  2714. *
  2715. * Availability:
  2716. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2717. * CarbonLib: in CarbonLib 1.0 and later
  2718. * Mac OS X: in version 10.0 and later
  2719. * Windows: in qtmlClient.lib 3.0 and later
  2720. */
  2721. EXTERN_API( OSErr )
  2722. CDSequenceNewMemory(
  2723. ImageSequence seqID,
  2724. Ptr * data,
  2725. Size dataSize,
  2726. long dataUse,
  2727. ICMMemoryDisposedUPP memoryGoneProc,
  2728. void * refCon);
  2729. /*
  2730. * CDSequenceDisposeMemory()
  2731. *
  2732. * Availability:
  2733. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2734. * CarbonLib: in CarbonLib 1.0 and later
  2735. * Mac OS X: in version 10.0 and later
  2736. * Windows: in qtmlClient.lib 3.0 and later
  2737. */
  2738. EXTERN_API( OSErr )
  2739. CDSequenceDisposeMemory(
  2740. ImageSequence seqID,
  2741. Ptr data);
  2742. /*
  2743. * CDSequenceNewDataSource()
  2744. *
  2745. * Availability:
  2746. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2747. * CarbonLib: in CarbonLib 1.0 and later
  2748. * Mac OS X: in version 10.0 and later
  2749. * Windows: in qtmlClient.lib 3.0 and later
  2750. */
  2751. EXTERN_API( OSErr )
  2752. CDSequenceNewDataSource(
  2753. ImageSequence seqID,
  2754. ImageSequenceDataSource * sourceID,
  2755. OSType sourceType,
  2756. long sourceInputNumber,
  2757. Handle dataDescription,
  2758. ICMConvertDataFormatUPP transferProc,
  2759. void * refCon);
  2760. /*
  2761. * CDSequenceDisposeDataSource()
  2762. *
  2763. * Availability:
  2764. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2765. * CarbonLib: in CarbonLib 1.0 and later
  2766. * Mac OS X: in version 10.0 and later
  2767. * Windows: in qtmlClient.lib 3.0 and later
  2768. */
  2769. EXTERN_API( OSErr )
  2770. CDSequenceDisposeDataSource(ImageSequenceDataSource sourceID);
  2771. /*
  2772. * CDSequenceSetSourceData()
  2773. *
  2774. * Availability:
  2775. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2776. * CarbonLib: in CarbonLib 1.0 and later
  2777. * Mac OS X: in version 10.0 and later
  2778. * Windows: in qtmlClient.lib 3.0 and later
  2779. */
  2780. EXTERN_API( OSErr )
  2781. CDSequenceSetSourceData(
  2782. ImageSequenceDataSource sourceID,
  2783. void * data,
  2784. long dataSize);
  2785. /*
  2786. * CDSequenceChangedSourceData()
  2787. *
  2788. * Availability:
  2789. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2790. * CarbonLib: in CarbonLib 1.0 and later
  2791. * Mac OS X: in version 10.0 and later
  2792. * Windows: in qtmlClient.lib 3.0 and later
  2793. */
  2794. EXTERN_API( OSErr )
  2795. CDSequenceChangedSourceData(ImageSequenceDataSource sourceID);
  2796. /*
  2797. * CDSequenceSetSourceDataQueue()
  2798. *
  2799. * Availability:
  2800. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  2801. * CarbonLib: in CarbonLib 1.1 and later
  2802. * Mac OS X: in version 10.0 and later
  2803. * Windows: in qtmlClient.lib 3.0 and later
  2804. */
  2805. EXTERN_API( OSErr )
  2806. CDSequenceSetSourceDataQueue(
  2807. ImageSequenceDataSource sourceID,
  2808. QHdrPtr dataQueue);
  2809. /*
  2810. * CDSequenceGetDataSource()
  2811. *
  2812. * Availability:
  2813. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  2814. * CarbonLib: in CarbonLib 1.0 and later
  2815. * Mac OS X: in version 10.0 and later
  2816. * Windows: in qtmlClient.lib 3.0 and later
  2817. */
  2818. EXTERN_API( OSErr )
  2819. CDSequenceGetDataSource(
  2820. ImageSequence seqID,
  2821. ImageSequenceDataSource * sourceID,
  2822. OSType sourceType,
  2823. long sourceInputNumber);
  2824. /*
  2825. * PtInDSequenceData()
  2826. *
  2827. * Availability:
  2828. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2829. * CarbonLib: in CarbonLib 1.0 and later
  2830. * Mac OS X: in version 10.0 and later
  2831. * Windows: in qtmlClient.lib 3.0 and later
  2832. */
  2833. EXTERN_API( OSErr )
  2834. PtInDSequenceData(
  2835. ImageSequence seqID,
  2836. void * data,
  2837. Size dataSize,
  2838. Point where,
  2839. Boolean * hit);
  2840. /*
  2841. * HitTestDSequenceData()
  2842. *
  2843. * Availability:
  2844. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  2845. * CarbonLib: in CarbonLib 1.0 and later
  2846. * Mac OS X: in version 10.0 and later
  2847. * Windows: in qtmlClient.lib 3.0 and later
  2848. */
  2849. EXTERN_API( OSErr )
  2850. HitTestDSequenceData(
  2851. ImageSequence seqID,
  2852. void * data,
  2853. Size dataSize,
  2854. Point where,
  2855. long * hit,
  2856. long hitFlags);
  2857. /*
  2858. * SetDSequenceNonScheduledDisplayTime()
  2859. *
  2860. * Availability:
  2861. * Non-Carbon CFM: not available
  2862. * CarbonLib: not available
  2863. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  2864. * Windows: in qtmlClient.lib version 10.4 (or QuickTime 7.0) and later
  2865. */
  2866. EXTERN_API( OSErr )
  2867. SetDSequenceNonScheduledDisplayTime(
  2868. ImageSequence sequence,
  2869. TimeValue64 displayTime,
  2870. TimeScale displayTimeScale,
  2871. UInt32 flags);
  2872. /*
  2873. * GetDSequenceNonScheduledDisplayTime()
  2874. *
  2875. * Availability:
  2876. * Non-Carbon CFM: not available
  2877. * CarbonLib: not available
  2878. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  2879. * Windows: in qtmlClient.lib version 10.4 (or QuickTime 7.0) and later
  2880. */
  2881. EXTERN_API( OSErr )
  2882. GetDSequenceNonScheduledDisplayTime(
  2883. ImageSequence sequence,
  2884. TimeValue64 * displayTime,
  2885. TimeScale * displayTimeScale);
  2886. /*
  2887. * SetDSequenceNonScheduledDisplayDirection()
  2888. *
  2889. * Availability:
  2890. * Non-Carbon CFM: not available
  2891. * CarbonLib: not available
  2892. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  2893. * Windows: in qtmlClient.lib version 10.4 (or QuickTime 7.0) and later
  2894. */
  2895. EXTERN_API( OSErr )
  2896. SetDSequenceNonScheduledDisplayDirection(
  2897. ImageSequence sequence,
  2898. Fixed rate);
  2899. /*
  2900. * GetDSequenceNonScheduledDisplayDirection()
  2901. *
  2902. * Availability:
  2903. * Non-Carbon CFM: not available
  2904. * CarbonLib: not available
  2905. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  2906. * Windows: in qtmlClient.lib version 10.4 (or QuickTime 7.0) and later
  2907. */
  2908. EXTERN_API( OSErr )
  2909. GetDSequenceNonScheduledDisplayDirection(
  2910. ImageSequence sequence,
  2911. Fixed * rate);
  2912. /*
  2913. * GetGraphicsImporterForFile()
  2914. *
  2915. * Availability:
  2916. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2917. * CarbonLib: in CarbonLib 1.0 and later
  2918. * Mac OS X: in version 10.0 and later
  2919. * Windows: in qtmlClient.lib 3.0 and later
  2920. */
  2921. EXTERN_API( OSErr )
  2922. GetGraphicsImporterForFile(
  2923. const FSSpec * theFile,
  2924. ComponentInstance * gi);
  2925. /*
  2926. * GetGraphicsImporterForDataRef()
  2927. *
  2928. * Availability:
  2929. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2930. * CarbonLib: in CarbonLib 1.0 and later
  2931. * Mac OS X: in version 10.0 and later
  2932. * Windows: in qtmlClient.lib 3.0 and later
  2933. */
  2934. EXTERN_API( OSErr )
  2935. GetGraphicsImporterForDataRef(
  2936. Handle dataRef,
  2937. OSType dataRefType,
  2938. ComponentInstance * gi);
  2939. enum {
  2940. kDontUseValidateToFindGraphicsImporter = 1L << 0
  2941. };
  2942. /*
  2943. * GetGraphicsImporterForFileWithFlags()
  2944. *
  2945. * Availability:
  2946. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  2947. * CarbonLib: in CarbonLib 1.1 and later
  2948. * Mac OS X: in version 10.0 and later
  2949. * Windows: in qtmlClient.lib 3.0 and later
  2950. */
  2951. EXTERN_API( OSErr )
  2952. GetGraphicsImporterForFileWithFlags(
  2953. const FSSpec * theFile,
  2954. ComponentInstance * gi,
  2955. long flags);
  2956. /*
  2957. * GetGraphicsImporterForDataRefWithFlags()
  2958. *
  2959. * Availability:
  2960. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  2961. * CarbonLib: in CarbonLib 1.1 and later
  2962. * Mac OS X: in version 10.0 and later
  2963. * Windows: in qtmlClient.lib 3.0 and later
  2964. */
  2965. EXTERN_API( OSErr )
  2966. GetGraphicsImporterForDataRefWithFlags(
  2967. Handle dataRef,
  2968. OSType dataRefType,
  2969. ComponentInstance * gi,
  2970. long flags);
  2971. /*
  2972. * QTGetFileNameExtension()
  2973. *
  2974. * Availability:
  2975. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  2976. * CarbonLib: in CarbonLib 1.0 and later
  2977. * Mac OS X: in version 10.0 and later
  2978. * Windows: in qtmlClient.lib 3.0 and later
  2979. */
  2980. EXTERN_API( OSErr )
  2981. QTGetFileNameExtension(
  2982. ConstStrFileNameParam fileName,
  2983. OSType fileType,
  2984. OSType * extension);
  2985. /*
  2986. * ImageTranscodeSequenceBegin()
  2987. *
  2988. * Availability:
  2989. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  2990. * CarbonLib: in CarbonLib 1.0 and later
  2991. * Mac OS X: in version 10.0 and later
  2992. * Windows: in qtmlClient.lib 3.0 and later
  2993. */
  2994. EXTERN_API( OSErr )
  2995. ImageTranscodeSequenceBegin(
  2996. ImageTranscodeSequence * its,
  2997. ImageDescriptionHandle srcDesc,
  2998. OSType destType,
  2999. ImageDescriptionHandle * dstDesc,
  3000. void * data,
  3001. long dataSize);
  3002. /*
  3003. * ImageTranscodeSequenceEnd()
  3004. *
  3005. * Availability:
  3006. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3007. * CarbonLib: in CarbonLib 1.0 and later
  3008. * Mac OS X: in version 10.0 and later
  3009. * Windows: in qtmlClient.lib 3.0 and later
  3010. */
  3011. EXTERN_API( OSErr )
  3012. ImageTranscodeSequenceEnd(ImageTranscodeSequence its);
  3013. /*
  3014. * ImageTranscodeFrame()
  3015. *
  3016. * Availability:
  3017. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3018. * CarbonLib: in CarbonLib 1.0 and later
  3019. * Mac OS X: in version 10.0 and later
  3020. * Windows: in qtmlClient.lib 3.0 and later
  3021. */
  3022. EXTERN_API( OSErr )
  3023. ImageTranscodeFrame(
  3024. ImageTranscodeSequence its,
  3025. void * srcData,
  3026. long srcDataSize,
  3027. void ** dstData,
  3028. long * dstDataSize);
  3029. /*
  3030. * ImageTranscodeDisposeFrameData()
  3031. *
  3032. * Availability:
  3033. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3034. * CarbonLib: in CarbonLib 1.0 and later
  3035. * Mac OS X: in version 10.0 and later
  3036. * Windows: in qtmlClient.lib 3.0 and later
  3037. */
  3038. EXTERN_API( OSErr )
  3039. ImageTranscodeDisposeFrameData(
  3040. ImageTranscodeSequence its,
  3041. void * dstData);
  3042. /*
  3043. * CDSequenceInvalidate()
  3044. *
  3045. * Availability:
  3046. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3047. * CarbonLib: in CarbonLib 1.0 and later
  3048. * Mac OS X: in version 10.0 and later
  3049. * Windows: in qtmlClient.lib 3.0 and later
  3050. */
  3051. EXTERN_API( OSErr )
  3052. CDSequenceInvalidate(
  3053. ImageSequence seqID,
  3054. RgnHandle invalRgn);
  3055. /*
  3056. * CDSequenceSetTimeBase()
  3057. *
  3058. * Availability:
  3059. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  3060. * CarbonLib: in CarbonLib 1.0 and later
  3061. * Mac OS X: in version 10.0 and later
  3062. * Windows: in qtmlClient.lib 3.0 and later
  3063. */
  3064. EXTERN_API( OSErr )
  3065. CDSequenceSetTimeBase(
  3066. ImageSequence seqID,
  3067. void * base);
  3068. /*
  3069. * ImageFieldSequenceBegin()
  3070. *
  3071. * Availability:
  3072. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3073. * CarbonLib: in CarbonLib 1.0 and later
  3074. * Mac OS X: in version 10.0 and later
  3075. * Windows: in qtmlClient.lib 3.0 and later
  3076. */
  3077. EXTERN_API( OSErr )
  3078. ImageFieldSequenceBegin(
  3079. ImageFieldSequence * ifs,
  3080. ImageDescriptionHandle desc1,
  3081. ImageDescriptionHandle desc2,
  3082. ImageDescriptionHandle descOut);
  3083. /*
  3084. * ImageFieldSequenceExtractCombine()
  3085. *
  3086. * Availability:
  3087. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3088. * CarbonLib: in CarbonLib 1.0 and later
  3089. * Mac OS X: in version 10.0 and later
  3090. * Windows: in qtmlClient.lib 3.0 and later
  3091. */
  3092. EXTERN_API( OSErr )
  3093. ImageFieldSequenceExtractCombine(
  3094. ImageFieldSequence ifs,
  3095. long fieldFlags,
  3096. void * data1,
  3097. long dataSize1,
  3098. void * data2,
  3099. long dataSize2,
  3100. void * outputData,
  3101. long * outDataSize);
  3102. /*
  3103. * ImageFieldSequenceEnd()
  3104. *
  3105. * Availability:
  3106. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3107. * CarbonLib: in CarbonLib 1.0 and later
  3108. * Mac OS X: in version 10.0 and later
  3109. * Windows: in qtmlClient.lib 3.0 and later
  3110. */
  3111. EXTERN_API( OSErr )
  3112. ImageFieldSequenceEnd(ImageFieldSequence ifs);
  3113. enum {
  3114. kICMTempThenAppMemory = 1L << 12,
  3115. kICMAppThenTempMemory = 1L << 13
  3116. };
  3117. /*
  3118. * QTNewGWorld()
  3119. *
  3120. * Availability:
  3121. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  3122. * CarbonLib: in CarbonLib 1.0 and later
  3123. * Mac OS X: in version 10.0 and later
  3124. * Windows: in qtmlClient.lib 3.0 and later
  3125. */
  3126. EXTERN_API( OSErr )
  3127. QTNewGWorld(
  3128. GWorldPtr * offscreenGWorld,
  3129. OSType PixelFormat,
  3130. const Rect * boundsRect,
  3131. CTabHandle cTable,
  3132. GDHandle aGDevice,
  3133. GWorldFlags flags);
  3134. /*
  3135. * QTNewGWorldFromPtr()
  3136. *
  3137. * Availability:
  3138. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  3139. * CarbonLib: in CarbonLib 1.0.2 and later
  3140. * Mac OS X: in version 10.0 and later
  3141. * Windows: in qtmlClient.lib 4.0 and later
  3142. */
  3143. EXTERN_API( OSErr )
  3144. QTNewGWorldFromPtr(
  3145. GWorldPtr * gw,
  3146. OSType pixelFormat,
  3147. const Rect * boundsRect,
  3148. CTabHandle cTable,
  3149. GDHandle aGDevice,
  3150. GWorldFlags flags,
  3151. void * baseAddr,
  3152. long rowBytes);
  3153. /*
  3154. * QTUpdateGWorld()
  3155. *
  3156. * Availability:
  3157. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  3158. * CarbonLib: in CarbonLib 1.0 and later
  3159. * Mac OS X: in version 10.0 and later
  3160. * Windows: in qtmlClient.lib 3.0 and later
  3161. */
  3162. EXTERN_API( GWorldFlags )
  3163. QTUpdateGWorld(
  3164. GWorldPtr * offscreenGWorld,
  3165. OSType PixelFormat,
  3166. const Rect * boundsRect,
  3167. CTabHandle cTable,
  3168. GDHandle aGDevice,
  3169. GWorldFlags flags);
  3170. /*
  3171. * MakeImageDescriptionForPixMap()
  3172. *
  3173. * Availability:
  3174. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  3175. * CarbonLib: in CarbonLib 1.0 and later
  3176. * Mac OS X: in version 10.0 and later
  3177. * Windows: in qtmlClient.lib 3.0 and later
  3178. */
  3179. EXTERN_API( OSErr )
  3180. MakeImageDescriptionForPixMap(
  3181. PixMapHandle pixmap,
  3182. ImageDescriptionHandle * idh);
  3183. /*
  3184. * MakeImageDescriptionForEffect()
  3185. *
  3186. * Availability:
  3187. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  3188. * CarbonLib: in CarbonLib 1.0.2 and later
  3189. * Mac OS X: in version 10.0 and later
  3190. * Windows: in qtmlClient.lib 4.0 and later
  3191. */
  3192. EXTERN_API( OSErr )
  3193. MakeImageDescriptionForEffect(
  3194. OSType effectType,
  3195. ImageDescriptionHandle * idh);
  3196. /*
  3197. * QTGetPixelSize()
  3198. *
  3199. * Availability:
  3200. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  3201. * CarbonLib: in CarbonLib 1.0 and later
  3202. * Mac OS X: in version 10.0 and later
  3203. * Windows: in qtmlClient.lib 3.0 and later
  3204. */
  3205. EXTERN_API( short )
  3206. QTGetPixelSize(OSType PixelFormat);
  3207. /*
  3208. * QTGetPixelFormatDepthForImageDescription()
  3209. *
  3210. * Availability:
  3211. * Non-Carbon CFM: in QuickTimeLib 6.0 and later
  3212. * CarbonLib: in CarbonLib 1.6 and later
  3213. * Mac OS X: in version 10.2 and later
  3214. * Windows: in qtmlClient.lib 6.0 and later
  3215. */
  3216. EXTERN_API( short )
  3217. QTGetPixelFormatDepthForImageDescription(OSType PixelFormat);
  3218. /*
  3219. * QTGetPixMapPtrRowBytes()
  3220. *
  3221. * Availability:
  3222. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  3223. * CarbonLib: in CarbonLib 1.0.2 and later
  3224. * Mac OS X: in version 10.0 and later
  3225. * Windows: in qtmlClient.lib 4.0 and later
  3226. */
  3227. EXTERN_API( long )
  3228. QTGetPixMapPtrRowBytes(PixMapPtr pm);
  3229. /*
  3230. * QTGetPixMapHandleRowBytes()
  3231. *
  3232. * Availability:
  3233. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  3234. * CarbonLib: in CarbonLib 1.0.2 and later
  3235. * Mac OS X: in version 10.0 and later
  3236. * Windows: in qtmlClient.lib 4.0 and later
  3237. */
  3238. EXTERN_API( long )
  3239. QTGetPixMapHandleRowBytes(PixMapHandle pm);
  3240. /*
  3241. * QTSetPixMapPtrRowBytes()
  3242. *
  3243. * Availability:
  3244. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  3245. * CarbonLib: in CarbonLib 1.0.2 and later
  3246. * Mac OS X: in version 10.0 and later
  3247. * Windows: in qtmlClient.lib 4.0 and later
  3248. */
  3249. EXTERN_API( OSErr )
  3250. QTSetPixMapPtrRowBytes(
  3251. PixMapPtr pm,
  3252. long rowBytes);
  3253. /*
  3254. * QTSetPixMapHandleRowBytes()
  3255. *
  3256. * Availability:
  3257. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  3258. * CarbonLib: in CarbonLib 1.0.2 and later
  3259. * Mac OS X: in version 10.0 and later
  3260. * Windows: in qtmlClient.lib 4.0 and later
  3261. */
  3262. EXTERN_API( OSErr )
  3263. QTSetPixMapHandleRowBytes(
  3264. PixMapHandle pm,
  3265. long rowBytes);
  3266. enum {
  3267. kQTUsePlatformDefaultGammaLevel = 0, /* When decompressing into this PixMap, gamma-correct to the platform's standard gamma. */
  3268. kQTUseSourceGammaLevel = -1L, /* When decompressing into this PixMap, don't perform gamma-correction. */
  3269. kQTCCIR601VideoGammaLevel = 0x00023333 /* 2.2, standard television video gamma.*/
  3270. };
  3271. /*
  3272. * QTGetPixMapPtrGammaLevel()
  3273. *
  3274. * Availability:
  3275. * Non-Carbon CFM: in QuickTimeLib 5.0 and later
  3276. * CarbonLib: in CarbonLib 1.3 and later
  3277. * Mac OS X: in version 10.0 and later
  3278. * Windows: in qtmlClient.lib 5.0 and later
  3279. */
  3280. EXTERN_API( Fixed )
  3281. QTGetPixMapPtrGammaLevel(PixMapPtr pm);
  3282. /*
  3283. * QTSetPixMapPtrGammaLevel()
  3284. *
  3285. * Availability:
  3286. * Non-Carbon CFM: in QuickTimeLib 5.0 and later
  3287. * CarbonLib: in CarbonLib 1.3 and later
  3288. * Mac OS X: in version 10.0 and later
  3289. * Windows: in qtmlClient.lib 5.0 and later
  3290. */
  3291. EXTERN_API( OSErr )
  3292. QTSetPixMapPtrGammaLevel(
  3293. PixMapPtr pm,
  3294. Fixed gammaLevel);
  3295. /*
  3296. * QTGetPixMapHandleGammaLevel()
  3297. *
  3298. * Availability:
  3299. * Non-Carbon CFM: in QuickTimeLib 5.0 and later
  3300. * CarbonLib: in CarbonLib 1.3 and later
  3301. * Mac OS X: in version 10.0 and later
  3302. * Windows: in qtmlClient.lib 5.0 and later
  3303. */
  3304. EXTERN_API( Fixed )
  3305. QTGetPixMapHandleGammaLevel(PixMapHandle pm);
  3306. /*
  3307. * QTSetPixMapHandleGammaLevel()
  3308. *
  3309. * Availability:
  3310. * Non-Carbon CFM: in QuickTimeLib 5.0 and later
  3311. * CarbonLib: in CarbonLib 1.3 and later
  3312. * Mac OS X: in version 10.0 and later
  3313. * Windows: in qtmlClient.lib 5.0 and later
  3314. */
  3315. EXTERN_API( OSErr )
  3316. QTSetPixMapHandleGammaLevel(
  3317. PixMapHandle pm,
  3318. Fixed gammaLevel);
  3319. /*
  3320. * QTGetPixMapPtrRequestedGammaLevel()
  3321. *
  3322. * Availability:
  3323. * Non-Carbon CFM: in QuickTimeLib 5.0 and later
  3324. * CarbonLib: in CarbonLib 1.3 and later
  3325. * Mac OS X: in version 10.0 and later
  3326. * Windows: in qtmlClient.lib 5.0 and later
  3327. */
  3328. EXTERN_API( Fixed )
  3329. QTGetPixMapPtrRequestedGammaLevel(PixMapPtr pm);
  3330. /*
  3331. * QTSetPixMapPtrRequestedGammaLevel()
  3332. *
  3333. * Availability:
  3334. * Non-Carbon CFM: in QuickTimeLib 5.0 and later
  3335. * CarbonLib: in CarbonLib 1.3 and later
  3336. * Mac OS X: in version 10.0 and later
  3337. * Windows: in qtmlClient.lib 5.0 and later
  3338. */
  3339. EXTERN_API( OSErr )
  3340. QTSetPixMapPtrRequestedGammaLevel(
  3341. PixMapPtr pm,
  3342. Fixed requestedGammaLevel);
  3343. /*
  3344. * QTGetPixMapHandleRequestedGammaLevel()
  3345. *
  3346. * Availability:
  3347. * Non-Carbon CFM: in QuickTimeLib 5.0 and later
  3348. * CarbonLib: in CarbonLib 1.3 and later
  3349. * Mac OS X: in version 10.0 and later
  3350. * Windows: in qtmlClient.lib 5.0 and later
  3351. */
  3352. EXTERN_API( Fixed )
  3353. QTGetPixMapHandleRequestedGammaLevel(PixMapHandle pm);
  3354. /*
  3355. * QTSetPixMapHandleRequestedGammaLevel()
  3356. *
  3357. * Availability:
  3358. * Non-Carbon CFM: in QuickTimeLib 5.0 and later
  3359. * CarbonLib: in CarbonLib 1.3 and later
  3360. * Mac OS X: in version 10.0 and later
  3361. * Windows: in qtmlClient.lib 5.0 and later
  3362. */
  3363. EXTERN_API( OSErr )
  3364. QTSetPixMapHandleRequestedGammaLevel(
  3365. PixMapHandle pm,
  3366. Fixed requestedGammaLevel);
  3367. /*
  3368. * QuadToQuadMatrix()
  3369. *
  3370. * Availability:
  3371. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  3372. * CarbonLib: in CarbonLib 1.0.2 and later
  3373. * Mac OS X: in version 10.0 and later
  3374. * Windows: in qtmlClient.lib 4.0 and later
  3375. */
  3376. EXTERN_API( OSErr )
  3377. QuadToQuadMatrix(
  3378. const Fixed * source,
  3379. const Fixed * dest,
  3380. MatrixRecord * map);
  3381. enum {
  3382. identityMatrixType = 0x00, /* result if matrix is identity */
  3383. translateMatrixType = 0x01, /* result if matrix translates */
  3384. scaleMatrixType = 0x02, /* result if matrix scales */
  3385. scaleTranslateMatrixType = 0x03, /* result if matrix scales and translates */
  3386. linearMatrixType = 0x04, /* result if matrix is general 2 x 2 */
  3387. linearTranslateMatrixType = 0x05, /* result if matrix is general 2 x 2 and translates */
  3388. perspectiveMatrixType = 0x06 /* result if matrix is general 3 x 3 */
  3389. };
  3390. typedef unsigned short MatrixFlags;
  3391. /*
  3392. * GetMatrixType()
  3393. *
  3394. * Availability:
  3395. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3396. * CarbonLib: in CarbonLib 1.0 and later
  3397. * Mac OS X: in version 10.0 and later
  3398. * Windows: in qtmlClient.lib 3.0 and later
  3399. */
  3400. EXTERN_API( short )
  3401. GetMatrixType(const MatrixRecord * m);
  3402. /*
  3403. * CopyMatrix()
  3404. *
  3405. * Availability:
  3406. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3407. * CarbonLib: in CarbonLib 1.0 and later
  3408. * Mac OS X: in version 10.0 and later
  3409. * Windows: in qtmlClient.lib 3.0 and later
  3410. */
  3411. EXTERN_API( void )
  3412. CopyMatrix(
  3413. const MatrixRecord * m1,
  3414. MatrixRecord * m2);
  3415. /*
  3416. * EqualMatrix()
  3417. *
  3418. * Availability:
  3419. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3420. * CarbonLib: in CarbonLib 1.0 and later
  3421. * Mac OS X: in version 10.0 and later
  3422. * Windows: in qtmlClient.lib 3.0 and later
  3423. */
  3424. EXTERN_API( Boolean )
  3425. EqualMatrix(
  3426. const MatrixRecord * m1,
  3427. const MatrixRecord * m2);
  3428. /*
  3429. * SetIdentityMatrix()
  3430. *
  3431. * Availability:
  3432. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3433. * CarbonLib: in CarbonLib 1.0 and later
  3434. * Mac OS X: in version 10.0 and later
  3435. * Windows: in qtmlClient.lib 3.0 and later
  3436. */
  3437. EXTERN_API( void )
  3438. SetIdentityMatrix(MatrixRecord * matrix);
  3439. /*
  3440. * TranslateMatrix()
  3441. *
  3442. * Availability:
  3443. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3444. * CarbonLib: in CarbonLib 1.0 and later
  3445. * Mac OS X: in version 10.0 and later
  3446. * Windows: in qtmlClient.lib 3.0 and later
  3447. */
  3448. EXTERN_API( void )
  3449. TranslateMatrix(
  3450. MatrixRecord * m,
  3451. Fixed deltaH,
  3452. Fixed deltaV);
  3453. /*
  3454. * RotateMatrix()
  3455. *
  3456. * Availability:
  3457. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3458. * CarbonLib: in CarbonLib 1.0 and later
  3459. * Mac OS X: in version 10.0 and later
  3460. * Windows: in qtmlClient.lib 3.0 and later
  3461. */
  3462. EXTERN_API( void )
  3463. RotateMatrix(
  3464. MatrixRecord * m,
  3465. Fixed degrees,
  3466. Fixed aboutX,
  3467. Fixed aboutY);
  3468. /*
  3469. * ScaleMatrix()
  3470. *
  3471. * Availability:
  3472. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3473. * CarbonLib: in CarbonLib 1.0 and later
  3474. * Mac OS X: in version 10.0 and later
  3475. * Windows: in qtmlClient.lib 3.0 and later
  3476. */
  3477. EXTERN_API( void )
  3478. ScaleMatrix(
  3479. MatrixRecord * m,
  3480. Fixed scaleX,
  3481. Fixed scaleY,
  3482. Fixed aboutX,
  3483. Fixed aboutY);
  3484. /*
  3485. * SkewMatrix()
  3486. *
  3487. * Availability:
  3488. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3489. * CarbonLib: in CarbonLib 1.0 and later
  3490. * Mac OS X: in version 10.0 and later
  3491. * Windows: in qtmlClient.lib 3.0 and later
  3492. */
  3493. EXTERN_API( void )
  3494. SkewMatrix(
  3495. MatrixRecord * m,
  3496. Fixed skewX,
  3497. Fixed skewY,
  3498. Fixed aboutX,
  3499. Fixed aboutY);
  3500. /*
  3501. * TransformFixedPoints()
  3502. *
  3503. * Availability:
  3504. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3505. * CarbonLib: in CarbonLib 1.0 and later
  3506. * Mac OS X: in version 10.0 and later
  3507. * Windows: in qtmlClient.lib 3.0 and later
  3508. */
  3509. EXTERN_API( OSErr )
  3510. TransformFixedPoints(
  3511. const MatrixRecord * m,
  3512. FixedPoint * fpt,
  3513. long count);
  3514. /*
  3515. * TransformPoints()
  3516. *
  3517. * Availability:
  3518. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3519. * CarbonLib: in CarbonLib 1.0 and later
  3520. * Mac OS X: in version 10.0 and later
  3521. * Windows: in qtmlClient.lib 3.0 and later
  3522. */
  3523. EXTERN_API( OSErr )
  3524. TransformPoints(
  3525. const MatrixRecord * mp,
  3526. Point * pt1,
  3527. long count);
  3528. /*
  3529. * TransformFixedRect()
  3530. *
  3531. * Availability:
  3532. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3533. * CarbonLib: in CarbonLib 1.0 and later
  3534. * Mac OS X: in version 10.0 and later
  3535. * Windows: in qtmlClient.lib 3.0 and later
  3536. */
  3537. EXTERN_API( Boolean )
  3538. TransformFixedRect(
  3539. const MatrixRecord * m,
  3540. FixedRect * fr,
  3541. FixedPoint * fpp);
  3542. /*
  3543. * TransformRect()
  3544. *
  3545. * Availability:
  3546. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3547. * CarbonLib: in CarbonLib 1.0 and later
  3548. * Mac OS X: in version 10.0 and later
  3549. * Windows: in qtmlClient.lib 3.0 and later
  3550. */
  3551. EXTERN_API( Boolean )
  3552. TransformRect(
  3553. const MatrixRecord * m,
  3554. Rect * r,
  3555. FixedPoint * fpp);
  3556. /*
  3557. * InverseMatrix()
  3558. *
  3559. * Availability:
  3560. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3561. * CarbonLib: in CarbonLib 1.0 and later
  3562. * Mac OS X: in version 10.0 and later
  3563. * Windows: in qtmlClient.lib 3.0 and later
  3564. */
  3565. EXTERN_API( Boolean )
  3566. InverseMatrix(
  3567. const MatrixRecord * m,
  3568. MatrixRecord * im);
  3569. /*
  3570. * ConcatMatrix()
  3571. *
  3572. * Availability:
  3573. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3574. * CarbonLib: in CarbonLib 1.0 and later
  3575. * Mac OS X: in version 10.0 and later
  3576. * Windows: in qtmlClient.lib 3.0 and later
  3577. */
  3578. EXTERN_API( void )
  3579. ConcatMatrix(
  3580. const MatrixRecord * a,
  3581. MatrixRecord * b);
  3582. /*
  3583. * RectMatrix()
  3584. *
  3585. * Availability:
  3586. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3587. * CarbonLib: in CarbonLib 1.0 and later
  3588. * Mac OS X: in version 10.0 and later
  3589. * Windows: in qtmlClient.lib 3.0 and later
  3590. */
  3591. EXTERN_API( void )
  3592. RectMatrix(
  3593. MatrixRecord * matrix,
  3594. const Rect * srcRect,
  3595. const Rect * dstRect);
  3596. /*
  3597. * MapMatrix()
  3598. *
  3599. * Availability:
  3600. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3601. * CarbonLib: in CarbonLib 1.0 and later
  3602. * Mac OS X: in version 10.0 and later
  3603. * Windows: in qtmlClient.lib 3.0 and later
  3604. */
  3605. EXTERN_API( void )
  3606. MapMatrix(
  3607. MatrixRecord * matrix,
  3608. const Rect * fromRect,
  3609. const Rect * toRect);
  3610. /*
  3611. * CompAdd()
  3612. *
  3613. * Availability:
  3614. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3615. * CarbonLib: in CarbonLib 1.0 and later
  3616. * Mac OS X: in version 10.0 and later
  3617. * Windows: in qtmlClient.lib 3.0 and later
  3618. */
  3619. EXTERN_API( void )
  3620. CompAdd(
  3621. wide * src,
  3622. wide * dst);
  3623. /*
  3624. * CompSub()
  3625. *
  3626. * Availability:
  3627. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3628. * CarbonLib: in CarbonLib 1.0 and later
  3629. * Mac OS X: in version 10.0 and later
  3630. * Windows: in qtmlClient.lib 3.0 and later
  3631. */
  3632. EXTERN_API( void )
  3633. CompSub(
  3634. wide * src,
  3635. wide * dst);
  3636. /*
  3637. * CompNeg()
  3638. *
  3639. * Availability:
  3640. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3641. * CarbonLib: in CarbonLib 1.0 and later
  3642. * Mac OS X: in version 10.0 and later
  3643. * Windows: in qtmlClient.lib 3.0 and later
  3644. */
  3645. EXTERN_API( void )
  3646. CompNeg(wide * dst);
  3647. /*
  3648. * CompShift()
  3649. *
  3650. * Availability:
  3651. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3652. * CarbonLib: in CarbonLib 1.0 and later
  3653. * Mac OS X: in version 10.0 and later
  3654. * Windows: in qtmlClient.lib 3.0 and later
  3655. */
  3656. EXTERN_API( void )
  3657. CompShift(
  3658. wide * src,
  3659. short shift);
  3660. /*
  3661. * CompMul()
  3662. *
  3663. * Availability:
  3664. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3665. * CarbonLib: in CarbonLib 1.0 and later
  3666. * Mac OS X: in version 10.0 and later
  3667. * Windows: in qtmlClient.lib 3.0 and later
  3668. */
  3669. EXTERN_API( void )
  3670. CompMul(
  3671. long src1,
  3672. long src2,
  3673. wide * dst);
  3674. /*
  3675. * CompDiv()
  3676. *
  3677. * Availability:
  3678. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3679. * CarbonLib: in CarbonLib 1.0 and later
  3680. * Mac OS X: in version 10.0 and later
  3681. * Windows: in qtmlClient.lib 3.0 and later
  3682. */
  3683. EXTERN_API( long )
  3684. CompDiv(
  3685. wide * numerator,
  3686. long denominator,
  3687. long * remainder);
  3688. /*
  3689. * CompFixMul()
  3690. *
  3691. * Availability:
  3692. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3693. * CarbonLib: in CarbonLib 1.0 and later
  3694. * Mac OS X: in version 10.0 and later
  3695. * Windows: in qtmlClient.lib 3.0 and later
  3696. */
  3697. EXTERN_API( void )
  3698. CompFixMul(
  3699. wide * compSrc,
  3700. Fixed fixSrc,
  3701. wide * compDst);
  3702. /*
  3703. * CompMulDiv()
  3704. *
  3705. * Availability:
  3706. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3707. * CarbonLib: in CarbonLib 1.0 and later
  3708. * Mac OS X: in version 10.0 and later
  3709. * Windows: in qtmlClient.lib 3.0 and later
  3710. */
  3711. EXTERN_API( void )
  3712. CompMulDiv(
  3713. wide * co,
  3714. long mul,
  3715. long divisor);
  3716. /*
  3717. * CompMulDivTrunc()
  3718. *
  3719. * Availability:
  3720. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3721. * CarbonLib: in CarbonLib 1.0 and later
  3722. * Mac OS X: in version 10.0 and later
  3723. * Windows: in qtmlClient.lib 3.0 and later
  3724. */
  3725. EXTERN_API( void )
  3726. CompMulDivTrunc(
  3727. wide * co,
  3728. long mul,
  3729. long divisor,
  3730. long * remainder);
  3731. /*
  3732. * CompCompare()
  3733. *
  3734. * Availability:
  3735. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3736. * CarbonLib: in CarbonLib 1.0 and later
  3737. * Mac OS X: in version 10.0 and later
  3738. * Windows: in qtmlClient.lib 3.0 and later
  3739. */
  3740. EXTERN_API( long )
  3741. CompCompare(
  3742. const wide * a,
  3743. const wide * minusb);
  3744. /*
  3745. * CompSquareRoot()
  3746. *
  3747. * Availability:
  3748. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  3749. * CarbonLib: in CarbonLib 1.0 and later
  3750. * Mac OS X: in version 10.0 and later
  3751. * Windows: in qtmlClient.lib 3.0 and later
  3752. */
  3753. EXTERN_API( unsigned long )
  3754. CompSquareRoot(const wide * src);
  3755. /*
  3756. * FixMulDiv()
  3757. *
  3758. * Availability:
  3759. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3760. * CarbonLib: in CarbonLib 1.0 and later
  3761. * Mac OS X: in version 10.0 and later
  3762. * Windows: in qtmlClient.lib 3.0 and later
  3763. */
  3764. EXTERN_API( Fixed )
  3765. FixMulDiv(
  3766. Fixed src,
  3767. Fixed mul,
  3768. Fixed divisor);
  3769. /*
  3770. * UnsignedFixMulDiv()
  3771. *
  3772. * Availability:
  3773. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3774. * CarbonLib: in CarbonLib 1.0 and later
  3775. * Mac OS X: in version 10.0 and later
  3776. * Windows: in qtmlClient.lib 3.0 and later
  3777. */
  3778. EXTERN_API( Fixed )
  3779. UnsignedFixMulDiv(
  3780. Fixed src,
  3781. Fixed mul,
  3782. Fixed divisor);
  3783. /*
  3784. * FracSinCos()
  3785. *
  3786. * Availability:
  3787. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3788. * CarbonLib: in CarbonLib 1.0 and later
  3789. * Mac OS X: in version 10.0 and later
  3790. * Windows: in qtmlClient.lib 3.0 and later
  3791. */
  3792. EXTERN_API( Fract )
  3793. FracSinCos(
  3794. Fixed degree,
  3795. Fract * cosOut);
  3796. /*
  3797. * FixExp2()
  3798. *
  3799. * Availability:
  3800. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3801. * CarbonLib: in CarbonLib 1.0 and later
  3802. * Mac OS X: in version 10.0 and later
  3803. * Windows: in qtmlClient.lib 3.0 and later
  3804. */
  3805. EXTERN_API( Fixed )
  3806. FixExp2(Fixed src);
  3807. /*
  3808. * FixLog2()
  3809. *
  3810. * Availability:
  3811. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3812. * CarbonLib: in CarbonLib 1.0 and later
  3813. * Mac OS X: in version 10.0 and later
  3814. * Windows: in qtmlClient.lib 3.0 and later
  3815. */
  3816. EXTERN_API( Fixed )
  3817. FixLog2(Fixed src);
  3818. /*
  3819. * FixPow()
  3820. *
  3821. * Availability:
  3822. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  3823. * CarbonLib: in CarbonLib 1.0 and later
  3824. * Mac OS X: in version 10.0 and later
  3825. * Windows: in qtmlClient.lib 3.0 and later
  3826. */
  3827. EXTERN_API( Fixed )
  3828. FixPow(
  3829. Fixed base,
  3830. Fixed exp);
  3831. typedef ComponentInstance GraphicsImportComponent;
  3832. enum {
  3833. GraphicsImporterComponentType = FOUR_CHAR_CODE('grip')
  3834. };
  3835. /* Component flags for Graphics Importer components */
  3836. enum {
  3837. graphicsImporterIsBaseImporter = 1L << 0,
  3838. graphicsImporterCanValidateFile = 1L << 9,
  3839. graphicsImporterSubTypeIsFileExtension = 1L << 12,
  3840. graphicsImporterHasMIMEList = 1L << 14,
  3841. graphicsImporterUsesImageDecompressor = 1L << 23
  3842. };
  3843. /* Atom types for QuickTime Image files */
  3844. enum {
  3845. quickTimeImageFileImageDescriptionAtom = FOUR_CHAR_CODE('idsc'),
  3846. quickTimeImageFileImageDataAtom = FOUR_CHAR_CODE('idat'),
  3847. quickTimeImageFileMetaDataAtom = FOUR_CHAR_CODE('meta'),
  3848. quickTimeImageFileColorSyncProfileAtom = FOUR_CHAR_CODE('iicc')
  3849. };
  3850. /* Flags for GraphicsImportDoesDrawAllPixels */
  3851. enum {
  3852. graphicsImporterDrawsAllPixels = 0,
  3853. graphicsImporterDoesntDrawAllPixels = 1,
  3854. graphicsImporterDontKnowIfDrawAllPixels = 2
  3855. };
  3856. /* Flags for GraphicsImportSetFlags */
  3857. enum {
  3858. kGraphicsImporterDontDoGammaCorrection = 1L << 0,
  3859. kGraphicsImporterTrustResolutionFromFile = 1L << 1,
  3860. kGraphicsImporterEnableSubPixelPositioning = 1L << 2,
  3861. kGraphicsImporterDontUseColorMatching = 1L << 3 /* set this flag (*before* calling GraphicsImportGetColorSyncProfile) if you do matching yourself */
  3862. };
  3863. /* Flags for GraphicsImportCreateCGImage */
  3864. enum {
  3865. kGraphicsImportCreateCGImageUsingCurrentSettings = 1L << 0
  3866. };
  3867. enum {
  3868. kGraphicsExportGroup = FOUR_CHAR_CODE('expo'),
  3869. kGraphicsExportFileType = FOUR_CHAR_CODE('ftyp'),
  3870. kGraphicsExportMIMEType = FOUR_CHAR_CODE('mime'),
  3871. kGraphicsExportExtension = FOUR_CHAR_CODE('ext '),
  3872. kGraphicsExportDescription = FOUR_CHAR_CODE('desc')
  3873. };
  3874. /* User data types for layers of Photoshop files */
  3875. enum {
  3876. kQTPhotoshopLayerMode = FOUR_CHAR_CODE('lmod'), /* OSType */
  3877. kQTPhotoshopLayerOpacity = FOUR_CHAR_CODE('lopa'), /* UInt8, 0 = transparent .. 255 = opaque */
  3878. kQTPhotoshopLayerClipping = FOUR_CHAR_CODE('lclp'), /* UInt8, 0 = base, 1 = non-base */
  3879. kQTPhotoshopLayerFlags = FOUR_CHAR_CODE('lflg'), /* UInt8 */
  3880. kQTPhotoshopLayerName = 0xA96C6E6D, /* Text */
  3881. kQTPhotoshopLayerUnicodeName = FOUR_CHAR_CODE('luni') /* Unicode characters, not terminated */
  3882. };
  3883. /* User data returned by graphics importers to suggest intended use for indexed images */
  3884. enum {
  3885. kQTIndexedImageType = FOUR_CHAR_CODE('nth?'), /* 1 or more OSTypes, such as the following values: */
  3886. kQTIndexedImageIsThumbnail = FOUR_CHAR_CODE('n=th'), /* The image at this index is a thumbnail. */
  3887. kQTIndexedImageIsLayer = FOUR_CHAR_CODE('n=ly'), /* The image at this index is a layer. */
  3888. kQTIndexedImageIsPage = FOUR_CHAR_CODE('n=pg'), /* The image at this index is a page. */
  3889. kQTIndexedImageIsMultiResolution = FOUR_CHAR_CODE('n=rs') /* The image at this index is one of several identical images at different resolutions. */
  3890. };
  3891. /* Other user data types returned by graphics importers */
  3892. enum {
  3893. kQTTIFFUserDataPrefix = 0x74690000, /* Added to some tag values in TIFF IFDs to generate user data codes. (0x7469 is 'ti'.) */
  3894. /* For example, YCbCrPositioning is tag 0x0213, so its user data code is 0x74690213. */
  3895. kQTTIFFExifUserDataPrefix = 0x65780000, /* Added to tag values in Exif IFDs to generate user data codes. (0x6578 is 'ex'.) */
  3896. /* For example, DateTimeOriginal is tag 0x9003, so its user data code is 0x65789003. */
  3897. kQTTIFFExifGPSUserDataPrefix = 0x67700000, /* Added to tag values in Exif GPS IFDs to generate user data codes. (0x6770 is 'gp'.) */
  3898. /* For example, GPSAltitude is tag 0x0006, so its user data code is 0x6770006. */
  3899. kQTAlphaMode = FOUR_CHAR_CODE('almo'), /* UInt32; eg, graphicsModeStraightAlpha or graphicsModePreBlackAlpha */
  3900. kQTAlphaModePreMulColor = FOUR_CHAR_CODE('almp'), /* RGBColor; used if kQTAlphaMode is graphicsModePreMulColorAlpha */
  3901. kUserDataIPTC = FOUR_CHAR_CODE('iptc')
  3902. };
  3903. /* Found in TIFF and Exif JPEG files */
  3904. enum {
  3905. kQTTIFFUserDataOrientation = 0x74690112, /* 1 SHORT */
  3906. kQTTIFFUserDataTransferFunction = 0x7469012D, /* n SHORTs */
  3907. kQTTIFFUserDataWhitePoint = 0x7469013E, /* 2 RATIONALs */
  3908. kQTTIFFUserDataPrimaryChromaticities = 0x7469013F, /* 6 RATIONALs */
  3909. kQTTIFFUserDataTransferRange = 0x74690156, /* 6 SHORTs */
  3910. kQTTIFFUserDataYCbCrPositioning = 0x74690213, /* 1 SHORT */
  3911. kQTTIFFUserDataReferenceBlackWhite = 0x74690214 /* n LONGs */
  3912. };
  3913. /* Found in GeoTIFF files; defined in the GeoTIFF 1.0 spec */
  3914. enum {
  3915. kQTTIFFUserDataModelPixelScale = 0x7469830E, /* 3 DOUBLEs */
  3916. kQTTIFFUserDataModelTransformation = 0x746985D8, /* 16 DOUBLEs */
  3917. kQTTIFFUserDataModelTiepoint = 0x74698482, /* n DOUBLEs */
  3918. kQTTIFFUserDataGeoKeyDirectory = 0x746987AF, /* n SHORTs */
  3919. kQTTIFFUserDataGeoDoubleParams = 0x746987B0, /* n DOUBLEs */
  3920. kQTTIFFUserDataGeoAsciiParams = 0x746987B1, /* n ASCIIs */
  3921. kQTTIFFUserDataIntergraphMatrix = 0x74698480 /* 16 or 17 DOUBLEs */
  3922. };
  3923. /* Found in Exif TIFF and Exif JPEG files; defined in the Exif 2.1 spec */
  3924. enum {
  3925. kQTExifUserDataExifVersion = 0x65789000, /* 4 bytes (import only) */
  3926. kQTExifUserDataFlashPixVersion = 0x6578A000, /* 4 bytes */
  3927. kQTExifUserDataColorSpace = 0x6578A001, /* 1 SHORT */
  3928. kQTExifUserDataComponentsConfiguration = 0x65789101, /* 4 bytes */
  3929. kQTExifUserDataCompressedBitsPerPixel = 0x65789102, /* 1 RATIONAL */
  3930. kQTExifUserDataPixelXDimension = 0x6578A002, /* 1 SHORT or LONG */
  3931. kQTExifUserDataPixelYDimension = 0x6578A003, /* 1 SHORT or LONG */
  3932. kQTExifUserDataMakerNote = 0x6578927C, /* n bytes */
  3933. kQTExifUserDataUserComment = 0x65789286, /* n bytes (Note: this constant was erroneously 0x6578928C)*/
  3934. kQTExifUserDataRelatedSoundFile = 0x6578A004, /* 13 ASCIIs*/
  3935. kQTExifUserDataDateTimeOriginal = 0x65789003, /* 20 ASCIIs */
  3936. kQTExifUserDataDateTimeDigitized = 0x65789004, /* 20 ASCIIs */
  3937. kQTExifUserDataSubSecTime = 0x65789290, /* n ASCIIs */
  3938. kQTExifUserDataSubSecTimeOriginal = 0x65789291, /* n ASCIIs */
  3939. kQTExifUserDataSubSecTimeDigitized = 0x65789292, /* n ASCIIs */
  3940. kQTExifUserDataExposureTime = 0x6578829A, /* 1 RATIONAL */
  3941. kQTExifUserDataFNumber = 0x6578829D, /* 1 RATIONAL */
  3942. kQTExifUserDataExposureProgram = 0x65788822, /* 1 SHORT */
  3943. kQTExifUserDataSpectralSensitivity = 0x65788824, /* n ASCIIs */
  3944. kQTExifUserDataISOSpeedRatings = 0x65788827, /* n SHORTs */
  3945. kQTExifUserDataShutterSpeedValue = 0x65789201, /* 1 SIGNED RATIONAL */
  3946. kQTExifUserDataApertureValue = 0x65789202, /* 1 RATIONAL */
  3947. kQTExifUserDataBrightnessValue = 0x65789203, /* 1 SIGNED RATIONAL */
  3948. kQTExifUserDataExposureBiasValue = 0x65789204, /* 1 SIGNED RATIONAL */
  3949. kQTExifUserDataMaxApertureValue = 0x65789205, /* 1 RATIONAL */
  3950. kQTExifUserDataSubjectDistance = 0x65789206, /* 1 RATIONAL */
  3951. kQTExifUserDataMeteringMode = 0x65789207, /* 1 SHORT */
  3952. kQTExifUserDataLightSource = 0x65789208, /* 1 SHORT */
  3953. kQTExifUserDataFlash = 0x65789209, /* 1 SHORT */
  3954. kQTExifUserDataFocalLength = 0x6578920A, /* 1 RATIONAL */
  3955. kQTExifUserDataFlashEnergy = 0x6578A20B, /* 1 RATIONAL */
  3956. kQTExifUserDataFocalPlaneXResolution = 0x6578A20E, /* 1 RATIONAL */
  3957. kQTExifUserDataFocalPlaneYResolution = 0x6578A20F, /* 1 RATIONAL */
  3958. kQTExifUserDataFocalPlaneResolutionUnit = 0x6578A210, /* 1 SHORT */
  3959. kQTExifUserDataSubjectLocation = 0x6578A214, /* 1 SHORT */
  3960. kQTExifUserDataExposureIndex = 0x6578A215, /* 1 RATIONAL */
  3961. kQTExifUserDataSensingMethod = 0x6578A217, /* 1 SHORT */
  3962. kQTExifUserDataFileSource = 0x6578A300, /* 1 UNDEFINED */
  3963. kQTExifUserDataSceneType = 0x6578A301 /* 1 UNDEFINED */
  3964. };
  3965. /* Found in some Exif TIFF and Exif JPEG files; defined in the Exif 2.1 spec */
  3966. /* Note: these were wrong in the QuickTime 6.0 headers -- the high two bytes were 0x677 instead of 0x6770. */
  3967. enum {
  3968. kQTExifUserDataGPSVersionID = 0x67700000, /* 4 BYTEs */
  3969. kQTExifUserDataGPSLatitudeRef = 0x67700001, /* 2 ASCIIs*/
  3970. kQTExifUserDataGPSLatitude = 0x67700002, /* 3 RATIONALs */
  3971. kQTExifUserDataGPSLongitudeRef = 0x67700003, /* 2 ASCIIs */
  3972. kQTExifUserDataGPSLongitude = 0x67700004, /* 3 RATIONALs */
  3973. kQTExifUserDataGPSAltitudeRef = 0x67700005, /* 1 BYTE */
  3974. kQTExifUserDataGPSAltitude = 0x67700006, /* 1 RATIONAL */
  3975. kQTExifUserDataGPSTimeStamp = 0x67700007, /* 3 RATIONALs */
  3976. kQTExifUserDataGPSSatellites = 0x67700008, /* n ASCIIs */
  3977. kQTExifUserDataGPSStatus = 0x67700009, /* 2 ASCIIs */
  3978. kQTExifUserDataGPSMeasureMode = 0x6770000A, /* 2 ASCIIs */
  3979. kQTExifUserDataGPSDOP = 0x6770000B, /* 1 RATIONAL */
  3980. kQTExifUserDataGPSSpeedRef = 0x6770000C, /* 2 ASCIIs */
  3981. kQTExifUserDataGPSSpeed = 0x6770000D, /* 1 RATIONAL */
  3982. kQTExifUserDataGPSTrackRef = 0x6770000E, /* 2 ASCIIs */
  3983. kQTExifUserDataGPSTrack = 0x6770000F, /* 1 RATIONAL */
  3984. kQTExifUserDataGPSImgDirectionRef = 0x67700010, /* 2 ASCIIs */
  3985. kQTExifUserDataGPSImgDirection = 0x67700011, /* 1 RATIONAL */
  3986. kQTExifUserDataGPSMapDatum = 0x67700012, /* n ASCII */
  3987. kQTExifUserDataGPSDestLatitudeRef = 0x67700013, /* 2 ASCIIs */
  3988. kQTExifUserDataGPSDestLatitude = 0x67700014, /* 3 RATIONALs */
  3989. kQTExifUserDataGPSDestLongitudeRef = 0x67700015, /* 2 ASCIIs */
  3990. kQTExifUserDataGPSDestLongitude = 0x67700016, /* 3 RATIONALs */
  3991. kQTExifUserDataGPSDestBearingRef = 0x67700017, /* 2 ASCIIs */
  3992. kQTExifUserDataGPSDestBearing = 0x67700018, /* 1 RATIONAL */
  3993. kQTExifUserDataGPSDestDistanceRef = 0x67700019, /* 2 ASCIIs */
  3994. kQTExifUserDataGPSDestDistance = 0x6770001A /* 1 RATIONAL */
  3995. };
  3996. /** These are GraphicsImport procedures **/
  3997. /*
  3998. * GraphicsImportSetDataReference()
  3999. *
  4000. * Availability:
  4001. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4002. * CarbonLib: in CarbonLib 1.0 and later
  4003. * Mac OS X: in version 10.0 and later
  4004. * Windows: in qtmlClient.lib 3.0 and later
  4005. */
  4006. EXTERN_API( ComponentResult )
  4007. GraphicsImportSetDataReference(
  4008. GraphicsImportComponent ci,
  4009. Handle dataRef,
  4010. OSType dataReType) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0001, 0x7000, 0xA82A);
  4011. /*
  4012. * GraphicsImportGetDataReference()
  4013. *
  4014. * Availability:
  4015. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4016. * CarbonLib: in CarbonLib 1.0 and later
  4017. * Mac OS X: in version 10.0 and later
  4018. * Windows: in qtmlClient.lib 3.0 and later
  4019. */
  4020. EXTERN_API( ComponentResult )
  4021. GraphicsImportGetDataReference(
  4022. GraphicsImportComponent ci,
  4023. Handle * dataRef,
  4024. OSType * dataReType) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0002, 0x7000, 0xA82A);
  4025. /*
  4026. * GraphicsImportSetDataFile()
  4027. *
  4028. * Availability:
  4029. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4030. * CarbonLib: in CarbonLib 1.0 and later
  4031. * Mac OS X: in version 10.0 and later
  4032. * Windows: in qtmlClient.lib 3.0 and later
  4033. */
  4034. EXTERN_API( ComponentResult )
  4035. GraphicsImportSetDataFile(
  4036. GraphicsImportComponent ci,
  4037. const FSSpec * theFile) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0003, 0x7000, 0xA82A);
  4038. /*
  4039. * GraphicsImportGetDataFile()
  4040. *
  4041. * Availability:
  4042. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4043. * CarbonLib: in CarbonLib 1.0 and later
  4044. * Mac OS X: in version 10.0 and later
  4045. * Windows: in qtmlClient.lib 3.0 and later
  4046. */
  4047. EXTERN_API( ComponentResult )
  4048. GraphicsImportGetDataFile(
  4049. GraphicsImportComponent ci,
  4050. FSSpec * theFile) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0004, 0x7000, 0xA82A);
  4051. /*
  4052. * GraphicsImportSetDataHandle()
  4053. *
  4054. * Availability:
  4055. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4056. * CarbonLib: in CarbonLib 1.0 and later
  4057. * Mac OS X: in version 10.0 and later
  4058. * Windows: in qtmlClient.lib 3.0 and later
  4059. */
  4060. EXTERN_API( ComponentResult )
  4061. GraphicsImportSetDataHandle(
  4062. GraphicsImportComponent ci,
  4063. Handle h) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0005, 0x7000, 0xA82A);
  4064. /*
  4065. * GraphicsImportGetDataHandle()
  4066. *
  4067. * Availability:
  4068. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4069. * CarbonLib: in CarbonLib 1.0 and later
  4070. * Mac OS X: in version 10.0 and later
  4071. * Windows: in qtmlClient.lib 3.0 and later
  4072. */
  4073. EXTERN_API( ComponentResult )
  4074. GraphicsImportGetDataHandle(
  4075. GraphicsImportComponent ci,
  4076. Handle * h) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0006, 0x7000, 0xA82A);
  4077. /*
  4078. * GraphicsImportGetImageDescription()
  4079. *
  4080. * Availability:
  4081. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4082. * CarbonLib: in CarbonLib 1.0 and later
  4083. * Mac OS X: in version 10.0 and later
  4084. * Windows: in qtmlClient.lib 3.0 and later
  4085. */
  4086. EXTERN_API( ComponentResult )
  4087. GraphicsImportGetImageDescription(
  4088. GraphicsImportComponent ci,
  4089. ImageDescriptionHandle * desc) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0007, 0x7000, 0xA82A);
  4090. /*
  4091. * GraphicsImportGetDataOffsetAndSize()
  4092. *
  4093. * Availability:
  4094. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4095. * CarbonLib: in CarbonLib 1.0 and later
  4096. * Mac OS X: in version 10.0 and later
  4097. * Windows: in qtmlClient.lib 3.0 and later
  4098. */
  4099. EXTERN_API( ComponentResult )
  4100. GraphicsImportGetDataOffsetAndSize(
  4101. GraphicsImportComponent ci,
  4102. unsigned long * offset,
  4103. unsigned long * size) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0008, 0x7000, 0xA82A);
  4104. /*
  4105. * GraphicsImportReadData()
  4106. *
  4107. * Availability:
  4108. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4109. * CarbonLib: in CarbonLib 1.0 and later
  4110. * Mac OS X: in version 10.0 and later
  4111. * Windows: in qtmlClient.lib 3.0 and later
  4112. */
  4113. EXTERN_API( ComponentResult )
  4114. GraphicsImportReadData(
  4115. GraphicsImportComponent ci,
  4116. void * dataPtr,
  4117. unsigned long dataOffset,
  4118. unsigned long dataSize) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0009, 0x7000, 0xA82A);
  4119. /*
  4120. * GraphicsImportSetClip()
  4121. *
  4122. * Availability:
  4123. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4124. * CarbonLib: in CarbonLib 1.0 and later
  4125. * Mac OS X: in version 10.0 and later
  4126. * Windows: in qtmlClient.lib 3.0 and later
  4127. */
  4128. EXTERN_API( ComponentResult )
  4129. GraphicsImportSetClip(
  4130. GraphicsImportComponent ci,
  4131. RgnHandle clipRgn) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000A, 0x7000, 0xA82A);
  4132. /*
  4133. * GraphicsImportGetClip()
  4134. *
  4135. * Availability:
  4136. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4137. * CarbonLib: in CarbonLib 1.0 and later
  4138. * Mac OS X: in version 10.0 and later
  4139. * Windows: in qtmlClient.lib 3.0 and later
  4140. */
  4141. EXTERN_API( ComponentResult )
  4142. GraphicsImportGetClip(
  4143. GraphicsImportComponent ci,
  4144. RgnHandle * clipRgn) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000B, 0x7000, 0xA82A);
  4145. /*
  4146. * GraphicsImportSetSourceRect()
  4147. *
  4148. * Availability:
  4149. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4150. * CarbonLib: in CarbonLib 1.0 and later
  4151. * Mac OS X: in version 10.0 and later
  4152. * Windows: in qtmlClient.lib 3.0 and later
  4153. */
  4154. EXTERN_API( ComponentResult )
  4155. GraphicsImportSetSourceRect(
  4156. GraphicsImportComponent ci,
  4157. const Rect * sourceRect) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000C, 0x7000, 0xA82A);
  4158. /*
  4159. * GraphicsImportGetSourceRect()
  4160. *
  4161. * Availability:
  4162. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4163. * CarbonLib: in CarbonLib 1.0 and later
  4164. * Mac OS X: in version 10.0 and later
  4165. * Windows: in qtmlClient.lib 3.0 and later
  4166. */
  4167. EXTERN_API( ComponentResult )
  4168. GraphicsImportGetSourceRect(
  4169. GraphicsImportComponent ci,
  4170. Rect * sourceRect) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000D, 0x7000, 0xA82A);
  4171. /*
  4172. * GraphicsImportGetNaturalBounds()
  4173. *
  4174. * Availability:
  4175. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4176. * CarbonLib: in CarbonLib 1.0 and later
  4177. * Mac OS X: in version 10.0 and later
  4178. * Windows: in qtmlClient.lib 3.0 and later
  4179. */
  4180. EXTERN_API( ComponentResult )
  4181. GraphicsImportGetNaturalBounds(
  4182. GraphicsImportComponent ci,
  4183. Rect * naturalBounds) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000E, 0x7000, 0xA82A);
  4184. /*
  4185. * GraphicsImportDraw()
  4186. *
  4187. * Availability:
  4188. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4189. * CarbonLib: in CarbonLib 1.0 and later
  4190. * Mac OS X: in version 10.0 and later
  4191. * Windows: in qtmlClient.lib 3.0 and later
  4192. */
  4193. EXTERN_API( ComponentResult )
  4194. GraphicsImportDraw(GraphicsImportComponent ci) FIVEWORDINLINE(0x2F3C, 0x0000, 0x000F, 0x7000, 0xA82A);
  4195. /*
  4196. * GraphicsImportSetGWorld()
  4197. *
  4198. * Availability:
  4199. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4200. * CarbonLib: in CarbonLib 1.0 and later
  4201. * Mac OS X: in version 10.0 and later
  4202. * Windows: in qtmlClient.lib 3.0 and later
  4203. */
  4204. EXTERN_API( ComponentResult )
  4205. GraphicsImportSetGWorld(
  4206. GraphicsImportComponent ci,
  4207. CGrafPtr port,
  4208. GDHandle gd) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0010, 0x7000, 0xA82A);
  4209. /*
  4210. * GraphicsImportGetGWorld()
  4211. *
  4212. * Availability:
  4213. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4214. * CarbonLib: in CarbonLib 1.0 and later
  4215. * Mac OS X: in version 10.0 and later
  4216. * Windows: in qtmlClient.lib 3.0 and later
  4217. */
  4218. EXTERN_API( ComponentResult )
  4219. GraphicsImportGetGWorld(
  4220. GraphicsImportComponent ci,
  4221. CGrafPtr * port,
  4222. GDHandle * gd) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0011, 0x7000, 0xA82A);
  4223. /*
  4224. * GraphicsImportSetMatrix()
  4225. *
  4226. * Availability:
  4227. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4228. * CarbonLib: in CarbonLib 1.0 and later
  4229. * Mac OS X: in version 10.0 and later
  4230. * Windows: in qtmlClient.lib 3.0 and later
  4231. */
  4232. EXTERN_API( ComponentResult )
  4233. GraphicsImportSetMatrix(
  4234. GraphicsImportComponent ci,
  4235. const MatrixRecord * matrix) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0012, 0x7000, 0xA82A);
  4236. /*
  4237. * GraphicsImportGetMatrix()
  4238. *
  4239. * Availability:
  4240. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4241. * CarbonLib: in CarbonLib 1.0 and later
  4242. * Mac OS X: in version 10.0 and later
  4243. * Windows: in qtmlClient.lib 3.0 and later
  4244. */
  4245. EXTERN_API( ComponentResult )
  4246. GraphicsImportGetMatrix(
  4247. GraphicsImportComponent ci,
  4248. MatrixRecord * matrix) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0013, 0x7000, 0xA82A);
  4249. /*
  4250. * GraphicsImportSetBoundsRect()
  4251. *
  4252. * Availability:
  4253. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4254. * CarbonLib: in CarbonLib 1.0 and later
  4255. * Mac OS X: in version 10.0 and later
  4256. * Windows: in qtmlClient.lib 3.0 and later
  4257. */
  4258. EXTERN_API( ComponentResult )
  4259. GraphicsImportSetBoundsRect(
  4260. GraphicsImportComponent ci,
  4261. const Rect * bounds) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0014, 0x7000, 0xA82A);
  4262. /*
  4263. * GraphicsImportGetBoundsRect()
  4264. *
  4265. * Availability:
  4266. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4267. * CarbonLib: in CarbonLib 1.0 and later
  4268. * Mac OS X: in version 10.0 and later
  4269. * Windows: in qtmlClient.lib 3.0 and later
  4270. */
  4271. EXTERN_API( ComponentResult )
  4272. GraphicsImportGetBoundsRect(
  4273. GraphicsImportComponent ci,
  4274. Rect * bounds) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0015, 0x7000, 0xA82A);
  4275. /*
  4276. * GraphicsImportSaveAsPicture()
  4277. *
  4278. * Availability:
  4279. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4280. * CarbonLib: in CarbonLib 1.0 and later
  4281. * Mac OS X: in version 10.0 and later
  4282. * Windows: in qtmlClient.lib 3.0 and later
  4283. */
  4284. EXTERN_API( ComponentResult )
  4285. GraphicsImportSaveAsPicture(
  4286. GraphicsImportComponent ci,
  4287. const FSSpec * fss,
  4288. ScriptCode scriptTag) FIVEWORDINLINE(0x2F3C, 0x0006, 0x0016, 0x7000, 0xA82A);
  4289. /*
  4290. * GraphicsImportSetGraphicsMode()
  4291. *
  4292. * Availability:
  4293. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4294. * CarbonLib: in CarbonLib 1.0 and later
  4295. * Mac OS X: in version 10.0 and later
  4296. * Windows: in qtmlClient.lib 3.0 and later
  4297. */
  4298. EXTERN_API( ComponentResult )
  4299. GraphicsImportSetGraphicsMode(
  4300. GraphicsImportComponent ci,
  4301. long graphicsMode,
  4302. const RGBColor * opColor) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0017, 0x7000, 0xA82A);
  4303. /*
  4304. * GraphicsImportGetGraphicsMode()
  4305. *
  4306. * Availability:
  4307. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4308. * CarbonLib: in CarbonLib 1.0 and later
  4309. * Mac OS X: in version 10.0 and later
  4310. * Windows: in qtmlClient.lib 3.0 and later
  4311. */
  4312. EXTERN_API( ComponentResult )
  4313. GraphicsImportGetGraphicsMode(
  4314. GraphicsImportComponent ci,
  4315. long * graphicsMode,
  4316. RGBColor * opColor) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0018, 0x7000, 0xA82A);
  4317. /*
  4318. * GraphicsImportSetQuality()
  4319. *
  4320. * Availability:
  4321. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4322. * CarbonLib: in CarbonLib 1.0 and later
  4323. * Mac OS X: in version 10.0 and later
  4324. * Windows: in qtmlClient.lib 3.0 and later
  4325. */
  4326. EXTERN_API( ComponentResult )
  4327. GraphicsImportSetQuality(
  4328. GraphicsImportComponent ci,
  4329. CodecQ quality) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0019, 0x7000, 0xA82A);
  4330. /*
  4331. * GraphicsImportGetQuality()
  4332. *
  4333. * Availability:
  4334. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4335. * CarbonLib: in CarbonLib 1.0 and later
  4336. * Mac OS X: in version 10.0 and later
  4337. * Windows: in qtmlClient.lib 3.0 and later
  4338. */
  4339. EXTERN_API( ComponentResult )
  4340. GraphicsImportGetQuality(
  4341. GraphicsImportComponent ci,
  4342. CodecQ * quality) FIVEWORDINLINE(0x2F3C, 0x0004, 0x001A, 0x7000, 0xA82A);
  4343. /*
  4344. * GraphicsImportSaveAsQuickTimeImageFile()
  4345. *
  4346. * Availability:
  4347. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4348. * CarbonLib: in CarbonLib 1.0 and later
  4349. * Mac OS X: in version 10.0 and later
  4350. * Windows: in qtmlClient.lib 3.0 and later
  4351. */
  4352. EXTERN_API( ComponentResult )
  4353. GraphicsImportSaveAsQuickTimeImageFile(
  4354. GraphicsImportComponent ci,
  4355. const FSSpec * fss,
  4356. ScriptCode scriptTag) FIVEWORDINLINE(0x2F3C, 0x0006, 0x001B, 0x7000, 0xA82A);
  4357. /*
  4358. * GraphicsImportSetDataReferenceOffsetAndLimit()
  4359. *
  4360. * Availability:
  4361. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4362. * CarbonLib: in CarbonLib 1.0 and later
  4363. * Mac OS X: in version 10.0 and later
  4364. * Windows: in qtmlClient.lib 3.0 and later
  4365. */
  4366. EXTERN_API( ComponentResult )
  4367. GraphicsImportSetDataReferenceOffsetAndLimit(
  4368. GraphicsImportComponent ci,
  4369. unsigned long offset,
  4370. unsigned long limit) FIVEWORDINLINE(0x2F3C, 0x0008, 0x001C, 0x7000, 0xA82A);
  4371. /*
  4372. * GraphicsImportGetDataReferenceOffsetAndLimit()
  4373. *
  4374. * Availability:
  4375. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4376. * CarbonLib: in CarbonLib 1.0 and later
  4377. * Mac OS X: in version 10.0 and later
  4378. * Windows: in qtmlClient.lib 3.0 and later
  4379. */
  4380. EXTERN_API( ComponentResult )
  4381. GraphicsImportGetDataReferenceOffsetAndLimit(
  4382. GraphicsImportComponent ci,
  4383. unsigned long * offset,
  4384. unsigned long * limit) FIVEWORDINLINE(0x2F3C, 0x0008, 0x001D, 0x7000, 0xA82A);
  4385. /*
  4386. * GraphicsImportGetAliasedDataReference()
  4387. *
  4388. * Availability:
  4389. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4390. * CarbonLib: in CarbonLib 1.0 and later
  4391. * Mac OS X: in version 10.0 and later
  4392. * Windows: in qtmlClient.lib 3.0 and later
  4393. */
  4394. EXTERN_API( ComponentResult )
  4395. GraphicsImportGetAliasedDataReference(
  4396. GraphicsImportComponent ci,
  4397. Handle * dataRef,
  4398. OSType * dataRefType) FIVEWORDINLINE(0x2F3C, 0x0008, 0x001E, 0x7000, 0xA82A);
  4399. /*
  4400. * GraphicsImportValidate()
  4401. *
  4402. * Availability:
  4403. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  4404. * CarbonLib: in CarbonLib 1.0 and later
  4405. * Mac OS X: in version 10.0 and later
  4406. * Windows: in qtmlClient.lib 3.0 and later
  4407. */
  4408. EXTERN_API( ComponentResult )
  4409. GraphicsImportValidate(
  4410. GraphicsImportComponent ci,
  4411. Boolean * valid) FIVEWORDINLINE(0x2F3C, 0x0004, 0x001F, 0x7000, 0xA82A);
  4412. /*
  4413. * GraphicsImportGetMetaData()
  4414. *
  4415. * Availability:
  4416. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  4417. * CarbonLib: in CarbonLib 1.0 and later
  4418. * Mac OS X: in version 10.0 and later
  4419. * Windows: in qtmlClient.lib 3.0 and later
  4420. */
  4421. EXTERN_API( ComponentResult )
  4422. GraphicsImportGetMetaData(
  4423. GraphicsImportComponent ci,
  4424. void * userData) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0020, 0x7000, 0xA82A);
  4425. /*
  4426. * GraphicsImportGetMIMETypeList()
  4427. *
  4428. * Availability:
  4429. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  4430. * CarbonLib: in CarbonLib 1.0 and later
  4431. * Mac OS X: in version 10.0 and later
  4432. * Windows: in qtmlClient.lib 3.0 and later
  4433. */
  4434. EXTERN_API( ComponentResult )
  4435. GraphicsImportGetMIMETypeList(
  4436. GraphicsImportComponent ci,
  4437. void * qtAtomContainerPtr) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0021, 0x7000, 0xA82A);
  4438. /*
  4439. * GraphicsImportDoesDrawAllPixels()
  4440. *
  4441. * Availability:
  4442. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  4443. * CarbonLib: in CarbonLib 1.0 and later
  4444. * Mac OS X: in version 10.0 and later
  4445. * Windows: in qtmlClient.lib 3.0 and later
  4446. */
  4447. EXTERN_API( ComponentResult )
  4448. GraphicsImportDoesDrawAllPixels(
  4449. GraphicsImportComponent ci,
  4450. short * drawsAllPixels) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0022, 0x7000, 0xA82A);
  4451. /*
  4452. * GraphicsImportGetAsPicture()
  4453. *
  4454. * Availability:
  4455. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  4456. * CarbonLib: in CarbonLib 1.0 and later
  4457. * Mac OS X: in version 10.0 and later
  4458. * Windows: in qtmlClient.lib 3.0 and later
  4459. */
  4460. EXTERN_API( ComponentResult )
  4461. GraphicsImportGetAsPicture(
  4462. GraphicsImportComponent ci,
  4463. PicHandle * picture) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0023, 0x7000, 0xA82A);
  4464. /*
  4465. * GraphicsImportExportImageFile()
  4466. *
  4467. * Availability:
  4468. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  4469. * CarbonLib: in CarbonLib 1.0 and later
  4470. * Mac OS X: in version 10.0 and later
  4471. * Windows: in qtmlClient.lib 3.0 and later
  4472. */
  4473. EXTERN_API( ComponentResult )
  4474. GraphicsImportExportImageFile(
  4475. GraphicsImportComponent ci,
  4476. OSType fileType,
  4477. OSType fileCreator,
  4478. const FSSpec * fss,
  4479. ScriptCode scriptTag) FIVEWORDINLINE(0x2F3C, 0x000E, 0x0024, 0x7000, 0xA82A);
  4480. /*
  4481. * GraphicsImportGetExportImageTypeList()
  4482. *
  4483. * Availability:
  4484. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  4485. * CarbonLib: in CarbonLib 1.0 and later
  4486. * Mac OS X: in version 10.0 and later
  4487. * Windows: in qtmlClient.lib 3.0 and later
  4488. */
  4489. EXTERN_API( ComponentResult )
  4490. GraphicsImportGetExportImageTypeList(
  4491. GraphicsImportComponent ci,
  4492. void * qtAtomContainerPtr) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0025, 0x7000, 0xA82A);
  4493. /*
  4494. * GraphicsImportDoExportImageFileDialog()
  4495. *
  4496. * Availability:
  4497. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  4498. * CarbonLib: in CarbonLib 1.0 and later
  4499. * Mac OS X: in version 10.0 and later
  4500. * Windows: in qtmlClient.lib 3.0 and later
  4501. */
  4502. EXTERN_API( ComponentResult )
  4503. GraphicsImportDoExportImageFileDialog(
  4504. GraphicsImportComponent ci,
  4505. const FSSpec * inDefaultSpec,
  4506. StringPtr prompt,
  4507. ModalFilterYDUPP filterProc,
  4508. OSType * outExportedType,
  4509. FSSpec * outExportedSpec,
  4510. ScriptCode * outScriptTag) FIVEWORDINLINE(0x2F3C, 0x0018, 0x0026, 0x7000, 0xA82A);
  4511. /*
  4512. * GraphicsImportGetExportSettingsAsAtomContainer()
  4513. *
  4514. * Availability:
  4515. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  4516. * CarbonLib: in CarbonLib 1.0 and later
  4517. * Mac OS X: in version 10.0 and later
  4518. * Windows: in qtmlClient.lib 3.0 and later
  4519. */
  4520. EXTERN_API( ComponentResult )
  4521. GraphicsImportGetExportSettingsAsAtomContainer(
  4522. GraphicsImportComponent ci,
  4523. void * qtAtomContainerPtr) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0027, 0x7000, 0xA82A);
  4524. /*
  4525. * GraphicsImportSetExportSettingsFromAtomContainer()
  4526. *
  4527. * Availability:
  4528. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  4529. * CarbonLib: in CarbonLib 1.0 and later
  4530. * Mac OS X: in version 10.0 and later
  4531. * Windows: in qtmlClient.lib 3.0 and later
  4532. */
  4533. EXTERN_API( ComponentResult )
  4534. GraphicsImportSetExportSettingsFromAtomContainer(
  4535. GraphicsImportComponent ci,
  4536. void * qtAtomContainer) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0028, 0x7000, 0xA82A);
  4537. /*
  4538. * GraphicsImportSetProgressProc()
  4539. *
  4540. * Availability:
  4541. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  4542. * CarbonLib: in CarbonLib 1.0 and later
  4543. * Mac OS X: in version 10.0 and later
  4544. * Windows: in qtmlClient.lib 3.0 and later
  4545. */
  4546. EXTERN_API( ComponentResult )
  4547. GraphicsImportSetProgressProc(
  4548. GraphicsImportComponent ci,
  4549. ICMProgressProcRecordPtr progressProc) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0029, 0x7000, 0xA82A);
  4550. /*
  4551. * GraphicsImportGetProgressProc()
  4552. *
  4553. * Availability:
  4554. * Non-Carbon CFM: in QuickTimeLib 3.0 and later
  4555. * CarbonLib: in CarbonLib 1.0 and later
  4556. * Mac OS X: in version 10.0 and later
  4557. * Windows: in qtmlClient.lib 3.0 and later
  4558. */
  4559. EXTERN_API( ComponentResult )
  4560. GraphicsImportGetProgressProc(
  4561. GraphicsImportComponent ci,
  4562. ICMProgressProcRecordPtr progressProc) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002A, 0x7000, 0xA82A);
  4563. /*
  4564. * GraphicsImportGetImageCount()
  4565. *
  4566. * Availability:
  4567. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  4568. * CarbonLib: in CarbonLib 1.0.2 and later
  4569. * Mac OS X: in version 10.0 and later
  4570. * Windows: in qtmlClient.lib 4.0 and later
  4571. */
  4572. EXTERN_API( ComponentResult )
  4573. GraphicsImportGetImageCount(
  4574. GraphicsImportComponent ci,
  4575. unsigned long * imageCount) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002B, 0x7000, 0xA82A);
  4576. /*
  4577. * GraphicsImportSetImageIndex()
  4578. *
  4579. * Availability:
  4580. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  4581. * CarbonLib: in CarbonLib 1.0.2 and later
  4582. * Mac OS X: in version 10.0 and later
  4583. * Windows: in qtmlClient.lib 4.0 and later
  4584. */
  4585. EXTERN_API( ComponentResult )
  4586. GraphicsImportSetImageIndex(
  4587. GraphicsImportComponent ci,
  4588. unsigned long imageIndex) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002C, 0x7000, 0xA82A);
  4589. /*
  4590. * GraphicsImportGetImageIndex()
  4591. *
  4592. * Availability:
  4593. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  4594. * CarbonLib: in CarbonLib 1.0.2 and later
  4595. * Mac OS X: in version 10.0 and later
  4596. * Windows: in qtmlClient.lib 4.0 and later
  4597. */
  4598. EXTERN_API( ComponentResult )
  4599. GraphicsImportGetImageIndex(
  4600. GraphicsImportComponent ci,
  4601. unsigned long * imageIndex) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002D, 0x7000, 0xA82A);
  4602. /*
  4603. * GraphicsImportGetDataOffsetAndSize64()
  4604. *
  4605. * Availability:
  4606. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  4607. * CarbonLib: in CarbonLib 1.0.2 and later
  4608. * Mac OS X: in version 10.0 and later
  4609. * Windows: in qtmlClient.lib 4.0 and later
  4610. */
  4611. EXTERN_API( ComponentResult )
  4612. GraphicsImportGetDataOffsetAndSize64(
  4613. GraphicsImportComponent ci,
  4614. wide * offset,
  4615. wide * size) FIVEWORDINLINE(0x2F3C, 0x0008, 0x002E, 0x7000, 0xA82A);
  4616. /*
  4617. * GraphicsImportReadData64()
  4618. *
  4619. * Availability:
  4620. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  4621. * CarbonLib: in CarbonLib 1.0.2 and later
  4622. * Mac OS X: in version 10.0 and later
  4623. * Windows: in qtmlClient.lib 4.0 and later
  4624. */
  4625. EXTERN_API( ComponentResult )
  4626. GraphicsImportReadData64(
  4627. GraphicsImportComponent ci,
  4628. void * dataPtr,
  4629. const wide * dataOffset,
  4630. unsigned long dataSize) FIVEWORDINLINE(0x2F3C, 0x000C, 0x002F, 0x7000, 0xA82A);
  4631. /*
  4632. * GraphicsImportSetDataReferenceOffsetAndLimit64()
  4633. *
  4634. * Availability:
  4635. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  4636. * CarbonLib: in CarbonLib 1.0.2 and later
  4637. * Mac OS X: in version 10.0 and later
  4638. * Windows: in qtmlClient.lib 4.0 and later
  4639. */
  4640. EXTERN_API( ComponentResult )
  4641. GraphicsImportSetDataReferenceOffsetAndLimit64(
  4642. GraphicsImportComponent ci,
  4643. const wide * offset,
  4644. const wide * limit) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0030, 0x7000, 0xA82A);
  4645. /*
  4646. * GraphicsImportGetDataReferenceOffsetAndLimit64()
  4647. *
  4648. * Availability:
  4649. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  4650. * CarbonLib: in CarbonLib 1.0.2 and later
  4651. * Mac OS X: in version 10.0 and later
  4652. * Windows: in qtmlClient.lib 4.0 and later
  4653. */
  4654. EXTERN_API( ComponentResult )
  4655. GraphicsImportGetDataReferenceOffsetAndLimit64(
  4656. GraphicsImportComponent ci,
  4657. wide * offset,
  4658. wide * limit) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0031, 0x7000, 0xA82A);
  4659. /*
  4660. * GraphicsImportGetDefaultMatrix()
  4661. *
  4662. * Availability:
  4663. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  4664. * CarbonLib: in CarbonLib 1.0.2 and later
  4665. * Mac OS X: in version 10.0 and later
  4666. * Windows: in qtmlClient.lib 4.0 and later
  4667. */
  4668. EXTERN_API( ComponentResult )
  4669. GraphicsImportGetDefaultMatrix(
  4670. GraphicsImportComponent ci,
  4671. MatrixRecord * defaultMatrix) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0032, 0x7000, 0xA82A);
  4672. /*
  4673. * GraphicsImportGetDefaultClip()
  4674. *
  4675. * Availability:
  4676. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  4677. * CarbonLib: in CarbonLib 1.0.2 and later
  4678. * Mac OS X: in version 10.0 and later
  4679. * Windows: in qtmlClient.lib 4.0 and later
  4680. */
  4681. EXTERN_API( ComponentResult )
  4682. GraphicsImportGetDefaultClip(
  4683. GraphicsImportComponent ci,
  4684. RgnHandle * defaultRgn) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0033, 0x7000, 0xA82A);
  4685. /*
  4686. * GraphicsImportGetDefaultGraphicsMode()
  4687. *
  4688. * Availability:
  4689. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  4690. * CarbonLib: in CarbonLib 1.0.2 and later
  4691. * Mac OS X: in version 10.0 and later
  4692. * Windows: in qtmlClient.lib 4.0 and later
  4693. */
  4694. EXTERN_API( ComponentResult )
  4695. GraphicsImportGetDefaultGraphicsMode(
  4696. GraphicsImportComponent ci,
  4697. long * defaultGraphicsMode,
  4698. RGBColor * defaultOpColor) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0034, 0x7000, 0xA82A);
  4699. /*
  4700. * GraphicsImportGetDefaultSourceRect()
  4701. *
  4702. * Availability:
  4703. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  4704. * CarbonLib: in CarbonLib 1.0.2 and later
  4705. * Mac OS X: in version 10.0 and later
  4706. * Windows: in qtmlClient.lib 4.0 and later
  4707. */
  4708. EXTERN_API( ComponentResult )
  4709. GraphicsImportGetDefaultSourceRect(
  4710. GraphicsImportComponent ci,
  4711. Rect * defaultSourceRect) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0035, 0x7000, 0xA82A);
  4712. /*
  4713. * GraphicsImportGetColorSyncProfile()
  4714. *
  4715. * Availability:
  4716. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  4717. * CarbonLib: in CarbonLib 1.0.2 and later
  4718. * Mac OS X: in version 10.0 and later
  4719. * Windows: in qtmlClient.lib 4.0 and later
  4720. */
  4721. EXTERN_API( ComponentResult )
  4722. GraphicsImportGetColorSyncProfile(
  4723. GraphicsImportComponent ci,
  4724. Handle * profile) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0036, 0x7000, 0xA82A);
  4725. /*
  4726. * GraphicsImportSetDestRect()
  4727. *
  4728. * Availability:
  4729. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  4730. * CarbonLib: in CarbonLib 1.0.2 and later
  4731. * Mac OS X: in version 10.0 and later
  4732. * Windows: in qtmlClient.lib 4.0 and later
  4733. */
  4734. EXTERN_API( ComponentResult )
  4735. GraphicsImportSetDestRect(
  4736. GraphicsImportComponent ci,
  4737. const Rect * destRect) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0037, 0x7000, 0xA82A);
  4738. /*
  4739. * GraphicsImportGetDestRect()
  4740. *
  4741. * Availability:
  4742. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  4743. * CarbonLib: in CarbonLib 1.0.2 and later
  4744. * Mac OS X: in version 10.0 and later
  4745. * Windows: in qtmlClient.lib 4.0 and later
  4746. */
  4747. EXTERN_API( ComponentResult )
  4748. GraphicsImportGetDestRect(
  4749. GraphicsImportComponent ci,
  4750. Rect * destRect) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0038, 0x7000, 0xA82A);
  4751. /*
  4752. * GraphicsImportSetFlags()
  4753. *
  4754. * Availability:
  4755. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  4756. * CarbonLib: in CarbonLib 1.0.2 and later
  4757. * Mac OS X: in version 10.0 and later
  4758. * Windows: in qtmlClient.lib 4.0 and later
  4759. */
  4760. EXTERN_API( ComponentResult )
  4761. GraphicsImportSetFlags(
  4762. GraphicsImportComponent ci,
  4763. long flags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0039, 0x7000, 0xA82A);
  4764. /*
  4765. * GraphicsImportGetFlags()
  4766. *
  4767. * Availability:
  4768. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  4769. * CarbonLib: in CarbonLib 1.0.2 and later
  4770. * Mac OS X: in version 10.0 and later
  4771. * Windows: in qtmlClient.lib 4.0 and later
  4772. */
  4773. EXTERN_API( ComponentResult )
  4774. GraphicsImportGetFlags(
  4775. GraphicsImportComponent ci,
  4776. long * flags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x003A, 0x7000, 0xA82A);
  4777. /* 2 private selectors */
  4778. /*
  4779. * GraphicsImportGetBaseDataOffsetAndSize64()
  4780. *
  4781. * Availability:
  4782. * Non-Carbon CFM: in QuickTimeLib 5.0.2 and later
  4783. * CarbonLib: in CarbonLib 1.4 and later
  4784. * Mac OS X: in version 10.1 and later
  4785. * Windows: in qtmlClient.lib 5.0.2 and later
  4786. */
  4787. EXTERN_API( ComponentResult )
  4788. GraphicsImportGetBaseDataOffsetAndSize64(
  4789. GraphicsImportComponent ci,
  4790. wide * offset,
  4791. wide * size) FIVEWORDINLINE(0x2F3C, 0x0008, 0x003D, 0x7000, 0xA82A);
  4792. /*
  4793. * GraphicsImportSetImageIndexToThumbnail()
  4794. *
  4795. * Availability:
  4796. * Non-Carbon CFM: in QuickTimeLib 6.0 and later
  4797. * CarbonLib: in CarbonLib 1.6 and later
  4798. * Mac OS X: in version 10.2 and later
  4799. * Windows: in qtmlClient.lib 6.0 and later
  4800. */
  4801. EXTERN_API( ComponentResult )
  4802. GraphicsImportSetImageIndexToThumbnail(GraphicsImportComponent ci) FIVEWORDINLINE(0x2F3C, 0x0000, 0x003E, 0x7000, 0xA82A);
  4803. #if TARGET_API_MAC_OSX
  4804. /*
  4805. * GraphicsImportCreateCGImage()
  4806. *
  4807. * Availability:
  4808. * Non-Carbon CFM: not available
  4809. * CarbonLib: not available
  4810. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  4811. */
  4812. EXTERN_API( ComponentResult )
  4813. GraphicsImportCreateCGImage(
  4814. GraphicsImportComponent ci,
  4815. CGImageRef * imageRefOut,
  4816. UInt32 flags) FIVEWORDINLINE(0x2F3C, 0x0008, 0x003F, 0x7000, 0xA82A);
  4817. #endif /* TARGET_API_MAC_OSX */
  4818. /*
  4819. * GraphicsImportSaveAsPictureToDataRef()
  4820. *
  4821. * Availability:
  4822. * Non-Carbon CFM: not available
  4823. * CarbonLib: not available
  4824. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  4825. * Windows: in qtmlClient.lib 6.5 and later
  4826. */
  4827. EXTERN_API( ComponentResult )
  4828. GraphicsImportSaveAsPictureToDataRef(
  4829. GraphicsImportComponent ci,
  4830. Handle dataRef,
  4831. OSType dataRefType) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0040, 0x7000, 0xA82A);
  4832. /*
  4833. * GraphicsImportSaveAsQuickTimeImageFileToDataRef()
  4834. *
  4835. * Availability:
  4836. * Non-Carbon CFM: not available
  4837. * CarbonLib: not available
  4838. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  4839. * Windows: in qtmlClient.lib 6.5 and later
  4840. */
  4841. EXTERN_API( ComponentResult )
  4842. GraphicsImportSaveAsQuickTimeImageFileToDataRef(
  4843. GraphicsImportComponent ci,
  4844. Handle dataRef,
  4845. OSType dataRefType) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0041, 0x7000, 0xA82A);
  4846. /*
  4847. * GraphicsImportExportImageFileToDataRef()
  4848. *
  4849. * Availability:
  4850. * Non-Carbon CFM: not available
  4851. * CarbonLib: not available
  4852. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  4853. * Windows: in qtmlClient.lib 6.5 and later
  4854. */
  4855. EXTERN_API( ComponentResult )
  4856. GraphicsImportExportImageFileToDataRef(
  4857. GraphicsImportComponent ci,
  4858. OSType fileType,
  4859. OSType fileCreator,
  4860. Handle dataRef,
  4861. OSType dataRefType) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0042, 0x7000, 0xA82A);
  4862. /*
  4863. * GraphicsImportDoExportImageFileToDataRefDialog()
  4864. *
  4865. * Availability:
  4866. * Non-Carbon CFM: not available
  4867. * CarbonLib: not available
  4868. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  4869. * Windows: in qtmlClient.lib 6.5 and later
  4870. */
  4871. EXTERN_API( ComponentResult )
  4872. GraphicsImportDoExportImageFileToDataRefDialog(
  4873. GraphicsImportComponent ci,
  4874. Handle inDataRef,
  4875. OSType inDataRefType,
  4876. CFStringRef prompt,
  4877. ModalFilterYDUPP filterProc,
  4878. OSType * outExportedType,
  4879. Handle * outDataRef,
  4880. OSType * outDataRefType) FIVEWORDINLINE(0x2F3C, 0x001C, 0x0043, 0x7000, 0xA82A);
  4881. #if TARGET_API_MAC_OSX
  4882. /* 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. */
  4883. /*
  4884. * GraphicsImportSetOverrideSourceColorSyncProfileRef()
  4885. *
  4886. * Availability:
  4887. * Non-Carbon CFM: not available
  4888. * CarbonLib: not available
  4889. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  4890. */
  4891. EXTERN_API( ComponentResult )
  4892. GraphicsImportSetOverrideSourceColorSyncProfileRef(
  4893. GraphicsImportComponent ci,
  4894. CMProfileRef newOverrideSourceProfileRef) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0044, 0x7000, 0xA82A);
  4895. /*
  4896. * GraphicsImportGetOverrideSourceColorSyncProfileRef()
  4897. *
  4898. * Availability:
  4899. * Non-Carbon CFM: not available
  4900. * CarbonLib: not available
  4901. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  4902. */
  4903. EXTERN_API( ComponentResult )
  4904. GraphicsImportGetOverrideSourceColorSyncProfileRef(
  4905. GraphicsImportComponent ci,
  4906. CMProfileRef * outOverrideSourceProfileRef) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0045, 0x7000, 0xA82A);
  4907. /* NOTE: If the destination ColorSync profile is NULL, then a generic ColorSync profile may be used. */
  4908. /*
  4909. * GraphicsImportSetDestinationColorSyncProfileRef()
  4910. *
  4911. * Availability:
  4912. * Non-Carbon CFM: not available
  4913. * CarbonLib: not available
  4914. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  4915. */
  4916. EXTERN_API( ComponentResult )
  4917. GraphicsImportSetDestinationColorSyncProfileRef(
  4918. GraphicsImportComponent ci,
  4919. CMProfileRef newDestinationProfileRef) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0046, 0x7000, 0xA82A);
  4920. /*
  4921. * GraphicsImportGetDestinationColorSyncProfileRef()
  4922. *
  4923. * Availability:
  4924. * Non-Carbon CFM: not available
  4925. * CarbonLib: not available
  4926. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  4927. */
  4928. EXTERN_API( ComponentResult )
  4929. GraphicsImportGetDestinationColorSyncProfileRef(
  4930. GraphicsImportComponent ci,
  4931. CMProfileRef * destinationProfileRef) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0047, 0x7000, 0xA82A);
  4932. #endif /* TARGET_API_MAC_OSX */
  4933. /*
  4934. * GraphicsImportWillUseColorMatching()
  4935. *
  4936. * Availability:
  4937. * Non-Carbon CFM: not available
  4938. * CarbonLib: not available
  4939. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  4940. * Windows: in qtmlClient.lib 6.5 and later
  4941. */
  4942. EXTERN_API( ComponentResult )
  4943. GraphicsImportWillUseColorMatching(
  4944. GraphicsImportComponent ci,
  4945. Boolean * outWillMatch) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0048, 0x7000, 0xA82A);
  4946. #if TARGET_API_MAC_OSX
  4947. /* This convenience API is implemented by the base graphics importer for format-specific importers. */
  4948. /*
  4949. * GraphicsImportGetGenericColorSyncProfile()
  4950. *
  4951. * Availability:
  4952. * Non-Carbon CFM: not available
  4953. * CarbonLib: not available
  4954. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  4955. */
  4956. EXTERN_API( ComponentResult )
  4957. GraphicsImportGetGenericColorSyncProfile(
  4958. GraphicsImportComponent ci,
  4959. OSType pixelFormat,
  4960. void * reservedSetToNULL,
  4961. UInt32 flags,
  4962. Handle * genericColorSyncProfileOut) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0049, 0x7000, 0xA82A);
  4963. #endif /* TARGET_API_MAC_OSX */
  4964. /* Format-specific importers that implement GetColorSyncProfile and that want the base graphics
  4965. importer to automatically support ColorSync matching should:
  4966. (a) implement GraphicsImportSetReturnGenericColorSyncProfile; when it is called, set an internal flag
  4967. (b) change GraphicsImportGetColorSyncProfile so that, if this internal flag is set,
  4968. when the source image file contains a profile
  4969. and the kGraphicsImporterDontUseColorMatching flag is NOT set,
  4970. it returns a generic profile of the appropriate colorspace instead.
  4971. Other importers should *not* implement GraphicsImportSetReturnGenericColorSyncProfile. */
  4972. /* WARNING: Applications should not call this API; it is internal graphics importer plumbing.
  4973. Set kGraphicsImporterDontUseColorMatching instead. */
  4974. /*
  4975. * GraphicsImportSetReturnGenericColorSyncProfile()
  4976. *
  4977. * Availability:
  4978. * Non-Carbon CFM: not available
  4979. * CarbonLib: not available
  4980. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  4981. * Windows: in qtmlClient.lib 6.5 and later
  4982. */
  4983. EXTERN_API( ComponentResult )
  4984. GraphicsImportSetReturnGenericColorSyncProfile(
  4985. GraphicsImportComponent ci,
  4986. Boolean returnGenericProfilesUnlessDontMatchFlagSet) FIVEWORDINLINE(0x2F3C, 0x0002, 0x004A, 0x7000, 0xA82A);
  4987. /* WARNING: Applications should not call this API; it is internal graphics importer plumbing. */
  4988. /*
  4989. * GraphicsImportGetReturnGenericColorSyncProfile()
  4990. *
  4991. * Availability:
  4992. * Non-Carbon CFM: not available
  4993. * CarbonLib: not available
  4994. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  4995. * Windows: in qtmlClient.lib 6.5 and later
  4996. */
  4997. EXTERN_API( ComponentResult )
  4998. GraphicsImportGetReturnGenericColorSyncProfile(
  4999. GraphicsImportComponent ci,
  5000. Boolean * returnGenericProfilesUnlessDontMatchFlagSet) FIVEWORDINLINE(0x2F3C, 0x0004, 0x004B, 0x7000, 0xA82A);
  5001. typedef ComponentInstance GraphicsExportComponent;
  5002. enum {
  5003. GraphicsExporterComponentType = FOUR_CHAR_CODE('grex'),
  5004. kBaseGraphicsExporterSubType = FOUR_CHAR_CODE('base')
  5005. };
  5006. /* Component flags for Graphics Exporter components */
  5007. enum {
  5008. graphicsExporterIsBaseExporter = 1L << 0,
  5009. graphicsExporterCanTranscode = 1L << 1,
  5010. graphicsExporterUsesImageCompressor = 1L << 2
  5011. };
  5012. struct QTResolutionSettings {
  5013. Fixed horizontalResolution;
  5014. Fixed verticalResolution;
  5015. };
  5016. typedef struct QTResolutionSettings QTResolutionSettings;
  5017. struct QTTargetDataSize {
  5018. unsigned long targetDataSize;
  5019. };
  5020. typedef struct QTTargetDataSize QTTargetDataSize;
  5021. struct QTThumbnailSettings {
  5022. long enableThumbnail; /* a thoroughly padded Boolean*/
  5023. long maxThumbnailWidth; /* set to zero to let someone else decide*/
  5024. long maxThumbnailHeight; /* set to zero to let someone else decide*/
  5025. };
  5026. typedef struct QTThumbnailSettings QTThumbnailSettings;
  5027. enum {
  5028. kQTResolutionSettings = FOUR_CHAR_CODE('reso'),
  5029. kQTTargetDataSize = FOUR_CHAR_CODE('dasz'),
  5030. kQTDontRecompress = FOUR_CHAR_CODE('dntr'),
  5031. kQTInterlaceStyle = FOUR_CHAR_CODE('ilac'),
  5032. kQTColorSyncProfile = FOUR_CHAR_CODE('iccp'),
  5033. kQTThumbnailSettings = FOUR_CHAR_CODE('thum'),
  5034. kQTEnableExif = FOUR_CHAR_CODE('exif'), /* UInt8 (boolean)*/
  5035. kQTMetaData = FOUR_CHAR_CODE('meta')
  5036. };
  5037. enum {
  5038. kQTTIFFCompressionMethod = FOUR_CHAR_CODE('tifc'), /* UInt32*/
  5039. kQTTIFFCompression_None = 1,
  5040. kQTTIFFCompression_PackBits = 32773L,
  5041. kQTTIFFLittleEndian = FOUR_CHAR_CODE('tife') /* UInt8 (boolean)*/
  5042. };
  5043. enum {
  5044. kQTPNGFilterPreference = FOUR_CHAR_CODE('pngf'), /* UInt32*/
  5045. kQTPNGFilterBestForColorType = FOUR_CHAR_CODE('bflt'),
  5046. kQTPNGFilterNone = 0,
  5047. kQTPNGFilterSub = 1,
  5048. kQTPNGFilterUp = 2,
  5049. kQTPNGFilterAverage = 3,
  5050. kQTPNGFilterPaeth = 4,
  5051. kQTPNGFilterAdaptivePerRow = FOUR_CHAR_CODE('aflt'),
  5052. kQTPNGInterlaceStyle = FOUR_CHAR_CODE('ilac'), /* UInt32*/
  5053. kQTPNGInterlaceNone = 0,
  5054. kQTPNGInterlaceAdam7 = 1
  5055. };
  5056. enum {
  5057. kQTJPEGQuantizationTables = FOUR_CHAR_CODE('jpqt'),
  5058. kQTJPEGHuffmanTables = FOUR_CHAR_CODE('jpht')
  5059. };
  5060. /** These are GraphicsExport procedures **/
  5061. /* To use: set the input and output (and other settings as desired) and call GEDoExport. */
  5062. /*
  5063. * GraphicsExportDoExport()
  5064. *
  5065. * Availability:
  5066. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5067. * CarbonLib: in CarbonLib 1.0.2 and later
  5068. * Mac OS X: in version 10.0 and later
  5069. * Windows: in qtmlClient.lib 4.0 and later
  5070. */
  5071. EXTERN_API( ComponentResult )
  5072. GraphicsExportDoExport(
  5073. GraphicsExportComponent ci,
  5074. unsigned long * actualSizeWritten) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0001, 0x7000, 0xA82A);
  5075. /* Used for internal communication between the base and format-specific graphics exporter: */
  5076. /*
  5077. * GraphicsExportCanTranscode()
  5078. *
  5079. * Availability:
  5080. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5081. * CarbonLib: in CarbonLib 1.0.2 and later
  5082. * Mac OS X: in version 10.0 and later
  5083. * Windows: in qtmlClient.lib 4.0 and later
  5084. */
  5085. EXTERN_API( ComponentResult )
  5086. GraphicsExportCanTranscode(
  5087. GraphicsExportComponent ci,
  5088. Boolean * canTranscode) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0002, 0x7000, 0xA82A);
  5089. /*
  5090. * GraphicsExportDoTranscode()
  5091. *
  5092. * Availability:
  5093. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5094. * CarbonLib: in CarbonLib 1.0.2 and later
  5095. * Mac OS X: in version 10.0 and later
  5096. * Windows: in qtmlClient.lib 4.0 and later
  5097. */
  5098. EXTERN_API( ComponentResult )
  5099. GraphicsExportDoTranscode(GraphicsExportComponent ci) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0003, 0x7000, 0xA82A);
  5100. /*
  5101. * GraphicsExportCanUseCompressor()
  5102. *
  5103. * Availability:
  5104. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5105. * CarbonLib: in CarbonLib 1.0.2 and later
  5106. * Mac OS X: in version 10.0 and later
  5107. * Windows: in qtmlClient.lib 4.0 and later
  5108. */
  5109. EXTERN_API( ComponentResult )
  5110. GraphicsExportCanUseCompressor(
  5111. GraphicsExportComponent ci,
  5112. Boolean * canUseCompressor,
  5113. void * codecSettingsAtomContainerPtr) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0004, 0x7000, 0xA82A);
  5114. /*
  5115. * GraphicsExportDoUseCompressor()
  5116. *
  5117. * Availability:
  5118. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5119. * CarbonLib: in CarbonLib 1.0.2 and later
  5120. * Mac OS X: in version 10.0 and later
  5121. * Windows: in qtmlClient.lib 4.0 and later
  5122. */
  5123. EXTERN_API( ComponentResult )
  5124. GraphicsExportDoUseCompressor(
  5125. GraphicsExportComponent ci,
  5126. void * codecSettingsAtomContainer,
  5127. ImageDescriptionHandle * outDesc) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0005, 0x7000, 0xA82A);
  5128. /*
  5129. * GraphicsExportDoStandaloneExport()
  5130. *
  5131. * Availability:
  5132. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5133. * CarbonLib: in CarbonLib 1.0.2 and later
  5134. * Mac OS X: in version 10.0 and later
  5135. * Windows: in qtmlClient.lib 4.0 and later
  5136. */
  5137. EXTERN_API( ComponentResult )
  5138. GraphicsExportDoStandaloneExport(GraphicsExportComponent ci) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0006, 0x7000, 0xA82A);
  5139. /* Queries applications can make of a format-specific graphics exporter: */
  5140. /*
  5141. * GraphicsExportGetDefaultFileTypeAndCreator()
  5142. *
  5143. * Availability:
  5144. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5145. * CarbonLib: in CarbonLib 1.0.2 and later
  5146. * Mac OS X: in version 10.0 and later
  5147. * Windows: in qtmlClient.lib 4.0 and later
  5148. */
  5149. EXTERN_API( ComponentResult )
  5150. GraphicsExportGetDefaultFileTypeAndCreator(
  5151. GraphicsExportComponent ci,
  5152. OSType * fileType,
  5153. OSType * fileCreator) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0007, 0x7000, 0xA82A);
  5154. /*
  5155. * GraphicsExportGetDefaultFileNameExtension()
  5156. *
  5157. * Availability:
  5158. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5159. * CarbonLib: in CarbonLib 1.0.2 and later
  5160. * Mac OS X: in version 10.0 and later
  5161. * Windows: in qtmlClient.lib 4.0 and later
  5162. */
  5163. EXTERN_API( ComponentResult )
  5164. GraphicsExportGetDefaultFileNameExtension(
  5165. GraphicsExportComponent ci,
  5166. OSType * fileNameExtension) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0008, 0x7000, 0xA82A);
  5167. /*
  5168. * GraphicsExportGetMIMETypeList()
  5169. *
  5170. * Availability:
  5171. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5172. * CarbonLib: in CarbonLib 1.0.2 and later
  5173. * Mac OS X: in version 10.0 and later
  5174. * Windows: in qtmlClient.lib 4.0 and later
  5175. */
  5176. EXTERN_API( ComponentResult )
  5177. GraphicsExportGetMIMETypeList(
  5178. GraphicsExportComponent ci,
  5179. void * qtAtomContainerPtr) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0009, 0x7000, 0xA82A);
  5180. /* (1 unused selector) */
  5181. /* Graphics exporter settings: */
  5182. /*
  5183. * GraphicsExportRequestSettings()
  5184. *
  5185. * Availability:
  5186. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5187. * CarbonLib: in CarbonLib 1.0.2 and later
  5188. * Mac OS X: in version 10.0 and later
  5189. * Windows: in qtmlClient.lib 4.0 and later
  5190. */
  5191. EXTERN_API( ComponentResult )
  5192. GraphicsExportRequestSettings(
  5193. GraphicsExportComponent ci,
  5194. ModalFilterYDUPP filterProc,
  5195. void * yourDataProc) FIVEWORDINLINE(0x2F3C, 0x0008, 0x000B, 0x7000, 0xA82A);
  5196. /*
  5197. * GraphicsExportSetSettingsFromAtomContainer()
  5198. *
  5199. * Availability:
  5200. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5201. * CarbonLib: in CarbonLib 1.0.2 and later
  5202. * Mac OS X: in version 10.0 and later
  5203. * Windows: in qtmlClient.lib 4.0 and later
  5204. */
  5205. EXTERN_API( ComponentResult )
  5206. GraphicsExportSetSettingsFromAtomContainer(
  5207. GraphicsExportComponent ci,
  5208. void * qtAtomContainer) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000C, 0x7000, 0xA82A);
  5209. /*
  5210. * GraphicsExportGetSettingsAsAtomContainer()
  5211. *
  5212. * Availability:
  5213. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5214. * CarbonLib: in CarbonLib 1.0.2 and later
  5215. * Mac OS X: in version 10.0 and later
  5216. * Windows: in qtmlClient.lib 4.0 and later
  5217. */
  5218. EXTERN_API( ComponentResult )
  5219. GraphicsExportGetSettingsAsAtomContainer(
  5220. GraphicsExportComponent ci,
  5221. void * qtAtomContainerPtr) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000D, 0x7000, 0xA82A);
  5222. /*
  5223. * GraphicsExportGetSettingsAsText()
  5224. *
  5225. * Availability:
  5226. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5227. * CarbonLib: in CarbonLib 1.0.2 and later
  5228. * Mac OS X: in version 10.0 and later
  5229. * Windows: in qtmlClient.lib 4.0 and later
  5230. */
  5231. EXTERN_API( ComponentResult )
  5232. GraphicsExportGetSettingsAsText(
  5233. GraphicsExportComponent ci,
  5234. Handle * theText) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000E, 0x7000, 0xA82A);
  5235. /* Graphics exporters may implement some or none of the following: */
  5236. /*
  5237. * GraphicsExportSetDontRecompress()
  5238. *
  5239. * Availability:
  5240. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5241. * CarbonLib: in CarbonLib 1.0.2 and later
  5242. * Mac OS X: in version 10.0 and later
  5243. * Windows: in qtmlClient.lib 4.0 and later
  5244. */
  5245. EXTERN_API( ComponentResult )
  5246. GraphicsExportSetDontRecompress(
  5247. GraphicsExportComponent ci,
  5248. Boolean dontRecompress) FIVEWORDINLINE(0x2F3C, 0x0002, 0x000F, 0x7000, 0xA82A);
  5249. /*
  5250. * GraphicsExportGetDontRecompress()
  5251. *
  5252. * Availability:
  5253. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5254. * CarbonLib: in CarbonLib 1.0.2 and later
  5255. * Mac OS X: in version 10.0 and later
  5256. * Windows: in qtmlClient.lib 4.0 and later
  5257. */
  5258. EXTERN_API( ComponentResult )
  5259. GraphicsExportGetDontRecompress(
  5260. GraphicsExportComponent ci,
  5261. Boolean * dontRecompress) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0010, 0x7000, 0xA82A);
  5262. /*
  5263. * GraphicsExportSetInterlaceStyle()
  5264. *
  5265. * Availability:
  5266. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5267. * CarbonLib: in CarbonLib 1.0.2 and later
  5268. * Mac OS X: in version 10.0 and later
  5269. * Windows: in qtmlClient.lib 4.0 and later
  5270. */
  5271. EXTERN_API( ComponentResult )
  5272. GraphicsExportSetInterlaceStyle(
  5273. GraphicsExportComponent ci,
  5274. unsigned long interlaceStyle) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0011, 0x7000, 0xA82A);
  5275. /*
  5276. * GraphicsExportGetInterlaceStyle()
  5277. *
  5278. * Availability:
  5279. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5280. * CarbonLib: in CarbonLib 1.0.2 and later
  5281. * Mac OS X: in version 10.0 and later
  5282. * Windows: in qtmlClient.lib 4.0 and later
  5283. */
  5284. EXTERN_API( ComponentResult )
  5285. GraphicsExportGetInterlaceStyle(
  5286. GraphicsExportComponent ci,
  5287. unsigned long * interlaceStyle) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0012, 0x7000, 0xA82A);
  5288. /*
  5289. * GraphicsExportSetMetaData()
  5290. *
  5291. * Availability:
  5292. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5293. * CarbonLib: in CarbonLib 1.0.2 and later
  5294. * Mac OS X: in version 10.0 and later
  5295. * Windows: in qtmlClient.lib 4.0 and later
  5296. */
  5297. EXTERN_API( ComponentResult )
  5298. GraphicsExportSetMetaData(
  5299. GraphicsExportComponent ci,
  5300. void * userData) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0013, 0x7000, 0xA82A);
  5301. /*
  5302. * GraphicsExportGetMetaData()
  5303. *
  5304. * Availability:
  5305. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5306. * CarbonLib: in CarbonLib 1.0.2 and later
  5307. * Mac OS X: in version 10.0 and later
  5308. * Windows: in qtmlClient.lib 4.0 and later
  5309. */
  5310. EXTERN_API( ComponentResult )
  5311. GraphicsExportGetMetaData(
  5312. GraphicsExportComponent ci,
  5313. void * userData) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0014, 0x7000, 0xA82A);
  5314. /*
  5315. * GraphicsExportSetTargetDataSize()
  5316. *
  5317. * Availability:
  5318. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5319. * CarbonLib: in CarbonLib 1.0.2 and later
  5320. * Mac OS X: in version 10.0 and later
  5321. * Windows: in qtmlClient.lib 4.0 and later
  5322. */
  5323. EXTERN_API( ComponentResult )
  5324. GraphicsExportSetTargetDataSize(
  5325. GraphicsExportComponent ci,
  5326. unsigned long targetDataSize) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0015, 0x7000, 0xA82A);
  5327. /*
  5328. * GraphicsExportGetTargetDataSize()
  5329. *
  5330. * Availability:
  5331. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5332. * CarbonLib: in CarbonLib 1.0.2 and later
  5333. * Mac OS X: in version 10.0 and later
  5334. * Windows: in qtmlClient.lib 4.0 and later
  5335. */
  5336. EXTERN_API( ComponentResult )
  5337. GraphicsExportGetTargetDataSize(
  5338. GraphicsExportComponent ci,
  5339. unsigned long * targetDataSize) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0016, 0x7000, 0xA82A);
  5340. /*
  5341. * GraphicsExportSetCompressionMethod()
  5342. *
  5343. * Availability:
  5344. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5345. * CarbonLib: in CarbonLib 1.0.2 and later
  5346. * Mac OS X: in version 10.0 and later
  5347. * Windows: in qtmlClient.lib 4.0 and later
  5348. */
  5349. EXTERN_API( ComponentResult )
  5350. GraphicsExportSetCompressionMethod(
  5351. GraphicsExportComponent ci,
  5352. long compressionMethod) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0017, 0x7000, 0xA82A);
  5353. /*
  5354. * GraphicsExportGetCompressionMethod()
  5355. *
  5356. * Availability:
  5357. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5358. * CarbonLib: in CarbonLib 1.0.2 and later
  5359. * Mac OS X: in version 10.0 and later
  5360. * Windows: in qtmlClient.lib 4.0 and later
  5361. */
  5362. EXTERN_API( ComponentResult )
  5363. GraphicsExportGetCompressionMethod(
  5364. GraphicsExportComponent ci,
  5365. long * compressionMethod) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0018, 0x7000, 0xA82A);
  5366. /*
  5367. * GraphicsExportSetCompressionQuality()
  5368. *
  5369. * Availability:
  5370. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5371. * CarbonLib: in CarbonLib 1.0.2 and later
  5372. * Mac OS X: in version 10.0 and later
  5373. * Windows: in qtmlClient.lib 4.0 and later
  5374. */
  5375. EXTERN_API( ComponentResult )
  5376. GraphicsExportSetCompressionQuality(
  5377. GraphicsExportComponent ci,
  5378. CodecQ spatialQuality) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0019, 0x7000, 0xA82A);
  5379. /*
  5380. * GraphicsExportGetCompressionQuality()
  5381. *
  5382. * Availability:
  5383. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5384. * CarbonLib: in CarbonLib 1.0.2 and later
  5385. * Mac OS X: in version 10.0 and later
  5386. * Windows: in qtmlClient.lib 4.0 and later
  5387. */
  5388. EXTERN_API( ComponentResult )
  5389. GraphicsExportGetCompressionQuality(
  5390. GraphicsExportComponent ci,
  5391. CodecQ * spatialQuality) FIVEWORDINLINE(0x2F3C, 0x0004, 0x001A, 0x7000, 0xA82A);
  5392. /*
  5393. * GraphicsExportSetResolution()
  5394. *
  5395. * Availability:
  5396. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5397. * CarbonLib: in CarbonLib 1.0.2 and later
  5398. * Mac OS X: in version 10.0 and later
  5399. * Windows: in qtmlClient.lib 4.0 and later
  5400. */
  5401. EXTERN_API( ComponentResult )
  5402. GraphicsExportSetResolution(
  5403. GraphicsExportComponent ci,
  5404. Fixed horizontalResolution,
  5405. Fixed verticalResolution) FIVEWORDINLINE(0x2F3C, 0x0008, 0x001B, 0x7000, 0xA82A);
  5406. /*
  5407. * GraphicsExportGetResolution()
  5408. *
  5409. * Availability:
  5410. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5411. * CarbonLib: in CarbonLib 1.0.2 and later
  5412. * Mac OS X: in version 10.0 and later
  5413. * Windows: in qtmlClient.lib 4.0 and later
  5414. */
  5415. EXTERN_API( ComponentResult )
  5416. GraphicsExportGetResolution(
  5417. GraphicsExportComponent ci,
  5418. Fixed * horizontalResolution,
  5419. Fixed * verticalResolution) FIVEWORDINLINE(0x2F3C, 0x0008, 0x001C, 0x7000, 0xA82A);
  5420. /*
  5421. * GraphicsExportSetDepth()
  5422. *
  5423. * Availability:
  5424. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5425. * CarbonLib: in CarbonLib 1.0.2 and later
  5426. * Mac OS X: in version 10.0 and later
  5427. * Windows: in qtmlClient.lib 4.0 and later
  5428. */
  5429. EXTERN_API( ComponentResult )
  5430. GraphicsExportSetDepth(
  5431. GraphicsExportComponent ci,
  5432. long depth) FIVEWORDINLINE(0x2F3C, 0x0004, 0x001D, 0x7000, 0xA82A);
  5433. /*
  5434. * GraphicsExportGetDepth()
  5435. *
  5436. * Availability:
  5437. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5438. * CarbonLib: in CarbonLib 1.0.2 and later
  5439. * Mac OS X: in version 10.0 and later
  5440. * Windows: in qtmlClient.lib 4.0 and later
  5441. */
  5442. EXTERN_API( ComponentResult )
  5443. GraphicsExportGetDepth(
  5444. GraphicsExportComponent ci,
  5445. long * depth) FIVEWORDINLINE(0x2F3C, 0x0004, 0x001E, 0x7000, 0xA82A);
  5446. /* (2 unused selectors) */
  5447. /*
  5448. * GraphicsExportSetColorSyncProfile()
  5449. *
  5450. * Availability:
  5451. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5452. * CarbonLib: in CarbonLib 1.0.2 and later
  5453. * Mac OS X: in version 10.0 and later
  5454. * Windows: in qtmlClient.lib 4.0 and later
  5455. */
  5456. EXTERN_API( ComponentResult )
  5457. GraphicsExportSetColorSyncProfile(
  5458. GraphicsExportComponent ci,
  5459. Handle colorSyncProfile) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0021, 0x7000, 0xA82A);
  5460. /*
  5461. * GraphicsExportGetColorSyncProfile()
  5462. *
  5463. * Availability:
  5464. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5465. * CarbonLib: in CarbonLib 1.0.2 and later
  5466. * Mac OS X: in version 10.0 and later
  5467. * Windows: in qtmlClient.lib 4.0 and later
  5468. */
  5469. EXTERN_API( ComponentResult )
  5470. GraphicsExportGetColorSyncProfile(
  5471. GraphicsExportComponent ci,
  5472. Handle * colorSyncProfile) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0022, 0x7000, 0xA82A);
  5473. /* Always implemented by the base graphics exporter: */
  5474. /*
  5475. * GraphicsExportSetProgressProc()
  5476. *
  5477. * Availability:
  5478. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5479. * CarbonLib: in CarbonLib 1.0.2 and later
  5480. * Mac OS X: in version 10.0 and later
  5481. * Windows: in qtmlClient.lib 4.0 and later
  5482. */
  5483. EXTERN_API( ComponentResult )
  5484. GraphicsExportSetProgressProc(
  5485. GraphicsExportComponent ci,
  5486. ICMProgressProcRecordPtr progressProc) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0023, 0x7000, 0xA82A);
  5487. /*
  5488. * GraphicsExportGetProgressProc()
  5489. *
  5490. * Availability:
  5491. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5492. * CarbonLib: in CarbonLib 1.0.2 and later
  5493. * Mac OS X: in version 10.0 and later
  5494. * Windows: in qtmlClient.lib 4.0 and later
  5495. */
  5496. EXTERN_API( ComponentResult )
  5497. GraphicsExportGetProgressProc(
  5498. GraphicsExportComponent ci,
  5499. ICMProgressProcRecordPtr progressProc) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0024, 0x7000, 0xA82A);
  5500. /* Sources for the input image: */
  5501. /*
  5502. * GraphicsExportSetInputDataReference()
  5503. *
  5504. * Availability:
  5505. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5506. * CarbonLib: in CarbonLib 1.0.2 and later
  5507. * Mac OS X: in version 10.0 and later
  5508. * Windows: in qtmlClient.lib 4.0 and later
  5509. */
  5510. EXTERN_API( ComponentResult )
  5511. GraphicsExportSetInputDataReference(
  5512. GraphicsExportComponent ci,
  5513. Handle dataRef,
  5514. OSType dataRefType,
  5515. ImageDescriptionHandle desc) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0025, 0x7000, 0xA82A);
  5516. /*
  5517. * GraphicsExportGetInputDataReference()
  5518. *
  5519. * Availability:
  5520. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5521. * CarbonLib: in CarbonLib 1.0.2 and later
  5522. * Mac OS X: in version 10.0 and later
  5523. * Windows: in qtmlClient.lib 4.0 and later
  5524. */
  5525. EXTERN_API( ComponentResult )
  5526. GraphicsExportGetInputDataReference(
  5527. GraphicsExportComponent ci,
  5528. Handle * dataRef,
  5529. OSType * dataRefType) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0026, 0x7000, 0xA82A);
  5530. /*
  5531. * GraphicsExportSetInputFile()
  5532. *
  5533. * Availability:
  5534. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5535. * CarbonLib: in CarbonLib 1.0.2 and later
  5536. * Mac OS X: in version 10.0 and later
  5537. * Windows: in qtmlClient.lib 4.0 and later
  5538. */
  5539. EXTERN_API( ComponentResult )
  5540. GraphicsExportSetInputFile(
  5541. GraphicsExportComponent ci,
  5542. const FSSpec * theFile,
  5543. ImageDescriptionHandle desc) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0027, 0x7000, 0xA82A);
  5544. /*
  5545. * GraphicsExportGetInputFile()
  5546. *
  5547. * Availability:
  5548. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5549. * CarbonLib: in CarbonLib 1.0.2 and later
  5550. * Mac OS X: in version 10.0 and later
  5551. * Windows: in qtmlClient.lib 4.0 and later
  5552. */
  5553. EXTERN_API( ComponentResult )
  5554. GraphicsExportGetInputFile(
  5555. GraphicsExportComponent ci,
  5556. FSSpec * theFile) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0028, 0x7000, 0xA82A);
  5557. /*
  5558. * GraphicsExportSetInputHandle()
  5559. *
  5560. * Availability:
  5561. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5562. * CarbonLib: in CarbonLib 1.0.2 and later
  5563. * Mac OS X: in version 10.0 and later
  5564. * Windows: in qtmlClient.lib 4.0 and later
  5565. */
  5566. EXTERN_API( ComponentResult )
  5567. GraphicsExportSetInputHandle(
  5568. GraphicsExportComponent ci,
  5569. Handle h,
  5570. ImageDescriptionHandle desc) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0029, 0x7000, 0xA82A);
  5571. /*
  5572. * GraphicsExportGetInputHandle()
  5573. *
  5574. * Availability:
  5575. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5576. * CarbonLib: in CarbonLib 1.0.2 and later
  5577. * Mac OS X: in version 10.0 and later
  5578. * Windows: in qtmlClient.lib 4.0 and later
  5579. */
  5580. EXTERN_API( ComponentResult )
  5581. GraphicsExportGetInputHandle(
  5582. GraphicsExportComponent ci,
  5583. Handle * h) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002A, 0x7000, 0xA82A);
  5584. /*
  5585. * GraphicsExportSetInputPtr()
  5586. *
  5587. * Availability:
  5588. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5589. * CarbonLib: in CarbonLib 1.0.2 and later
  5590. * Mac OS X: in version 10.0 and later
  5591. * Windows: in qtmlClient.lib 4.0 and later
  5592. */
  5593. EXTERN_API( ComponentResult )
  5594. GraphicsExportSetInputPtr(
  5595. GraphicsExportComponent ci,
  5596. Ptr p,
  5597. unsigned long size,
  5598. ImageDescriptionHandle desc) FIVEWORDINLINE(0x2F3C, 0x000C, 0x002B, 0x7000, 0xA82A);
  5599. /*
  5600. * GraphicsExportGetInputPtr()
  5601. *
  5602. * Availability:
  5603. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5604. * CarbonLib: in CarbonLib 1.0.2 and later
  5605. * Mac OS X: in version 10.0 and later
  5606. * Windows: in qtmlClient.lib 4.0 and later
  5607. */
  5608. EXTERN_API( ComponentResult )
  5609. GraphicsExportGetInputPtr(
  5610. GraphicsExportComponent ci,
  5611. Ptr * p,
  5612. unsigned long * size) FIVEWORDINLINE(0x2F3C, 0x0008, 0x002C, 0x7000, 0xA82A);
  5613. /*
  5614. * GraphicsExportSetInputGraphicsImporter()
  5615. *
  5616. * Availability:
  5617. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5618. * CarbonLib: in CarbonLib 1.0.2 and later
  5619. * Mac OS X: in version 10.0 and later
  5620. * Windows: in qtmlClient.lib 4.0 and later
  5621. */
  5622. EXTERN_API( ComponentResult )
  5623. GraphicsExportSetInputGraphicsImporter(
  5624. GraphicsExportComponent ci,
  5625. GraphicsImportComponent grip) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002D, 0x7000, 0xA82A);
  5626. /*
  5627. * GraphicsExportGetInputGraphicsImporter()
  5628. *
  5629. * Availability:
  5630. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5631. * CarbonLib: in CarbonLib 1.0.2 and later
  5632. * Mac OS X: in version 10.0 and later
  5633. * Windows: in qtmlClient.lib 4.0 and later
  5634. */
  5635. EXTERN_API( ComponentResult )
  5636. GraphicsExportGetInputGraphicsImporter(
  5637. GraphicsExportComponent ci,
  5638. GraphicsImportComponent * grip) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002E, 0x7000, 0xA82A);
  5639. /*
  5640. * GraphicsExportSetInputPicture()
  5641. *
  5642. * Availability:
  5643. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5644. * CarbonLib: in CarbonLib 1.0.2 and later
  5645. * Mac OS X: in version 10.0 and later
  5646. * Windows: in qtmlClient.lib 4.0 and later
  5647. */
  5648. EXTERN_API( ComponentResult )
  5649. GraphicsExportSetInputPicture(
  5650. GraphicsExportComponent ci,
  5651. PicHandle picture) FIVEWORDINLINE(0x2F3C, 0x0004, 0x002F, 0x7000, 0xA82A);
  5652. /*
  5653. * GraphicsExportGetInputPicture()
  5654. *
  5655. * Availability:
  5656. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5657. * CarbonLib: in CarbonLib 1.0.2 and later
  5658. * Mac OS X: in version 10.0 and later
  5659. * Windows: in qtmlClient.lib 4.0 and later
  5660. */
  5661. EXTERN_API( ComponentResult )
  5662. GraphicsExportGetInputPicture(
  5663. GraphicsExportComponent ci,
  5664. PicHandle * picture) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0030, 0x7000, 0xA82A);
  5665. /*
  5666. * GraphicsExportSetInputGWorld()
  5667. *
  5668. * Availability:
  5669. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5670. * CarbonLib: in CarbonLib 1.0.2 and later
  5671. * Mac OS X: in version 10.0 and later
  5672. * Windows: in qtmlClient.lib 4.0 and later
  5673. */
  5674. EXTERN_API( ComponentResult )
  5675. GraphicsExportSetInputGWorld(
  5676. GraphicsExportComponent ci,
  5677. GWorldPtr gworld) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0031, 0x7000, 0xA82A);
  5678. /*
  5679. * GraphicsExportGetInputGWorld()
  5680. *
  5681. * Availability:
  5682. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5683. * CarbonLib: in CarbonLib 1.0.2 and later
  5684. * Mac OS X: in version 10.0 and later
  5685. * Windows: in qtmlClient.lib 4.0 and later
  5686. */
  5687. EXTERN_API( ComponentResult )
  5688. GraphicsExportGetInputGWorld(
  5689. GraphicsExportComponent ci,
  5690. GWorldPtr * gworld) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0032, 0x7000, 0xA82A);
  5691. /*
  5692. * GraphicsExportSetInputPixmap()
  5693. *
  5694. * Availability:
  5695. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5696. * CarbonLib: in CarbonLib 1.0.2 and later
  5697. * Mac OS X: in version 10.0 and later
  5698. * Windows: in qtmlClient.lib 4.0 and later
  5699. */
  5700. EXTERN_API( ComponentResult )
  5701. GraphicsExportSetInputPixmap(
  5702. GraphicsExportComponent ci,
  5703. PixMapHandle pixmap) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0033, 0x7000, 0xA82A);
  5704. /*
  5705. * GraphicsExportGetInputPixmap()
  5706. *
  5707. * Availability:
  5708. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5709. * CarbonLib: in CarbonLib 1.0.2 and later
  5710. * Mac OS X: in version 10.0 and later
  5711. * Windows: in qtmlClient.lib 4.0 and later
  5712. */
  5713. EXTERN_API( ComponentResult )
  5714. GraphicsExportGetInputPixmap(
  5715. GraphicsExportComponent ci,
  5716. PixMapHandle * pixmap) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0034, 0x7000, 0xA82A);
  5717. /* Only applicable when the input is a data reference, file, handle or ptr: */
  5718. /*
  5719. * GraphicsExportSetInputOffsetAndLimit()
  5720. *
  5721. * Availability:
  5722. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5723. * CarbonLib: in CarbonLib 1.0.2 and later
  5724. * Mac OS X: in version 10.0 and later
  5725. * Windows: in qtmlClient.lib 4.0 and later
  5726. */
  5727. EXTERN_API( ComponentResult )
  5728. GraphicsExportSetInputOffsetAndLimit(
  5729. GraphicsExportComponent ci,
  5730. unsigned long offset,
  5731. unsigned long limit) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0035, 0x7000, 0xA82A);
  5732. /*
  5733. * GraphicsExportGetInputOffsetAndLimit()
  5734. *
  5735. * Availability:
  5736. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5737. * CarbonLib: in CarbonLib 1.0.2 and later
  5738. * Mac OS X: in version 10.0 and later
  5739. * Windows: in qtmlClient.lib 4.0 and later
  5740. */
  5741. EXTERN_API( ComponentResult )
  5742. GraphicsExportGetInputOffsetAndLimit(
  5743. GraphicsExportComponent ci,
  5744. unsigned long * offset,
  5745. unsigned long * limit) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0036, 0x7000, 0xA82A);
  5746. /* Used by format-specific graphics exporters when transcoding: */
  5747. /*
  5748. * GraphicsExportMayExporterReadInputData()
  5749. *
  5750. * Availability:
  5751. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5752. * CarbonLib: in CarbonLib 1.0.2 and later
  5753. * Mac OS X: in version 10.0 and later
  5754. * Windows: in qtmlClient.lib 4.0 and later
  5755. */
  5756. EXTERN_API( ComponentResult )
  5757. GraphicsExportMayExporterReadInputData(
  5758. GraphicsExportComponent ci,
  5759. Boolean * mayReadInputData) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0037, 0x7000, 0xA82A);
  5760. /*
  5761. * GraphicsExportGetInputDataSize()
  5762. *
  5763. * Availability:
  5764. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5765. * CarbonLib: in CarbonLib 1.0.2 and later
  5766. * Mac OS X: in version 10.0 and later
  5767. * Windows: in qtmlClient.lib 4.0 and later
  5768. */
  5769. EXTERN_API( ComponentResult )
  5770. GraphicsExportGetInputDataSize(
  5771. GraphicsExportComponent ci,
  5772. unsigned long * size) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0038, 0x7000, 0xA82A);
  5773. /*
  5774. * GraphicsExportReadInputData()
  5775. *
  5776. * Availability:
  5777. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5778. * CarbonLib: in CarbonLib 1.0.2 and later
  5779. * Mac OS X: in version 10.0 and later
  5780. * Windows: in qtmlClient.lib 4.0 and later
  5781. */
  5782. EXTERN_API( ComponentResult )
  5783. GraphicsExportReadInputData(
  5784. GraphicsExportComponent ci,
  5785. void * dataPtr,
  5786. unsigned long dataOffset,
  5787. unsigned long dataSize) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0039, 0x7000, 0xA82A);
  5788. /* Used by format-specific graphics exporters, especially when doing standalone export: */
  5789. /*
  5790. * GraphicsExportGetInputImageDescription()
  5791. *
  5792. * Availability:
  5793. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5794. * CarbonLib: in CarbonLib 1.0.2 and later
  5795. * Mac OS X: in version 10.0 and later
  5796. * Windows: in qtmlClient.lib 4.0 and later
  5797. */
  5798. EXTERN_API( ComponentResult )
  5799. GraphicsExportGetInputImageDescription(
  5800. GraphicsExportComponent ci,
  5801. ImageDescriptionHandle * desc) FIVEWORDINLINE(0x2F3C, 0x0004, 0x003A, 0x7000, 0xA82A);
  5802. /*
  5803. * GraphicsExportGetInputImageDimensions()
  5804. *
  5805. * Availability:
  5806. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5807. * CarbonLib: in CarbonLib 1.0.2 and later
  5808. * Mac OS X: in version 10.0 and later
  5809. * Windows: in qtmlClient.lib 4.0 and later
  5810. */
  5811. EXTERN_API( ComponentResult )
  5812. GraphicsExportGetInputImageDimensions(
  5813. GraphicsExportComponent ci,
  5814. Rect * dimensions) FIVEWORDINLINE(0x2F3C, 0x0004, 0x003B, 0x7000, 0xA82A);
  5815. /*
  5816. * GraphicsExportGetInputImageDepth()
  5817. *
  5818. * Availability:
  5819. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5820. * CarbonLib: in CarbonLib 1.0.2 and later
  5821. * Mac OS X: in version 10.0 and later
  5822. * Windows: in qtmlClient.lib 4.0 and later
  5823. */
  5824. EXTERN_API( ComponentResult )
  5825. GraphicsExportGetInputImageDepth(
  5826. GraphicsExportComponent ci,
  5827. long * inputDepth) FIVEWORDINLINE(0x2F3C, 0x0004, 0x003C, 0x7000, 0xA82A);
  5828. /*
  5829. * GraphicsExportDrawInputImage()
  5830. *
  5831. * Availability:
  5832. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5833. * CarbonLib: in CarbonLib 1.0.2 and later
  5834. * Mac OS X: in version 10.0 and later
  5835. * Windows: in qtmlClient.lib 4.0 and later
  5836. */
  5837. EXTERN_API( ComponentResult )
  5838. GraphicsExportDrawInputImage(
  5839. GraphicsExportComponent ci,
  5840. CGrafPtr gw,
  5841. GDHandle gd,
  5842. const Rect * srcRect,
  5843. const Rect * dstRect) FIVEWORDINLINE(0x2F3C, 0x0010, 0x003D, 0x7000, 0xA82A);
  5844. /* Destinations for the output image: */
  5845. /*
  5846. * GraphicsExportSetOutputDataReference()
  5847. *
  5848. * Availability:
  5849. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5850. * CarbonLib: in CarbonLib 1.0.2 and later
  5851. * Mac OS X: in version 10.0 and later
  5852. * Windows: in qtmlClient.lib 4.0 and later
  5853. */
  5854. EXTERN_API( ComponentResult )
  5855. GraphicsExportSetOutputDataReference(
  5856. GraphicsExportComponent ci,
  5857. Handle dataRef,
  5858. OSType dataRefType) FIVEWORDINLINE(0x2F3C, 0x0008, 0x003E, 0x7000, 0xA82A);
  5859. /*
  5860. * GraphicsExportGetOutputDataReference()
  5861. *
  5862. * Availability:
  5863. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5864. * CarbonLib: in CarbonLib 1.0.2 and later
  5865. * Mac OS X: in version 10.0 and later
  5866. * Windows: in qtmlClient.lib 4.0 and later
  5867. */
  5868. EXTERN_API( ComponentResult )
  5869. GraphicsExportGetOutputDataReference(
  5870. GraphicsExportComponent ci,
  5871. Handle * dataRef,
  5872. OSType * dataRefType) FIVEWORDINLINE(0x2F3C, 0x0008, 0x003F, 0x7000, 0xA82A);
  5873. /*
  5874. * GraphicsExportSetOutputFile()
  5875. *
  5876. * Availability:
  5877. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5878. * CarbonLib: in CarbonLib 1.0.2 and later
  5879. * Mac OS X: in version 10.0 and later
  5880. * Windows: in qtmlClient.lib 4.0 and later
  5881. */
  5882. EXTERN_API( ComponentResult )
  5883. GraphicsExportSetOutputFile(
  5884. GraphicsExportComponent ci,
  5885. const FSSpec * theFile) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0040, 0x7000, 0xA82A);
  5886. /*
  5887. * GraphicsExportGetOutputFile()
  5888. *
  5889. * Availability:
  5890. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5891. * CarbonLib: in CarbonLib 1.0.2 and later
  5892. * Mac OS X: in version 10.0 and later
  5893. * Windows: in qtmlClient.lib 4.0 and later
  5894. */
  5895. EXTERN_API( ComponentResult )
  5896. GraphicsExportGetOutputFile(
  5897. GraphicsExportComponent ci,
  5898. FSSpec * theFile) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0041, 0x7000, 0xA82A);
  5899. /*
  5900. * GraphicsExportSetOutputHandle()
  5901. *
  5902. * Availability:
  5903. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5904. * CarbonLib: in CarbonLib 1.0.2 and later
  5905. * Mac OS X: in version 10.0 and later
  5906. * Windows: in qtmlClient.lib 4.0 and later
  5907. */
  5908. EXTERN_API( ComponentResult )
  5909. GraphicsExportSetOutputHandle(
  5910. GraphicsExportComponent ci,
  5911. Handle h) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0042, 0x7000, 0xA82A);
  5912. /*
  5913. * GraphicsExportGetOutputHandle()
  5914. *
  5915. * Availability:
  5916. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5917. * CarbonLib: in CarbonLib 1.0.2 and later
  5918. * Mac OS X: in version 10.0 and later
  5919. * Windows: in qtmlClient.lib 4.0 and later
  5920. */
  5921. EXTERN_API( ComponentResult )
  5922. GraphicsExportGetOutputHandle(
  5923. GraphicsExportComponent ci,
  5924. Handle * h) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0043, 0x7000, 0xA82A);
  5925. /*
  5926. * GraphicsExportSetOutputOffsetAndMaxSize()
  5927. *
  5928. * Availability:
  5929. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5930. * CarbonLib: in CarbonLib 1.0.2 and later
  5931. * Mac OS X: in version 10.0 and later
  5932. * Windows: in qtmlClient.lib 4.0 and later
  5933. */
  5934. EXTERN_API( ComponentResult )
  5935. GraphicsExportSetOutputOffsetAndMaxSize(
  5936. GraphicsExportComponent ci,
  5937. unsigned long offset,
  5938. unsigned long maxSize,
  5939. Boolean truncateFile) FIVEWORDINLINE(0x2F3C, 0x000A, 0x0044, 0x7000, 0xA82A);
  5940. /*
  5941. * GraphicsExportGetOutputOffsetAndMaxSize()
  5942. *
  5943. * Availability:
  5944. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5945. * CarbonLib: in CarbonLib 1.0.2 and later
  5946. * Mac OS X: in version 10.0 and later
  5947. * Windows: in qtmlClient.lib 4.0 and later
  5948. */
  5949. EXTERN_API( ComponentResult )
  5950. GraphicsExportGetOutputOffsetAndMaxSize(
  5951. GraphicsExportComponent ci,
  5952. unsigned long * offset,
  5953. unsigned long * maxSize,
  5954. Boolean * truncateFile) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0045, 0x7000, 0xA82A);
  5955. /*
  5956. * GraphicsExportSetOutputFileTypeAndCreator()
  5957. *
  5958. * Availability:
  5959. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5960. * CarbonLib: in CarbonLib 1.0.2 and later
  5961. * Mac OS X: in version 10.0 and later
  5962. * Windows: in qtmlClient.lib 4.0 and later
  5963. */
  5964. EXTERN_API( ComponentResult )
  5965. GraphicsExportSetOutputFileTypeAndCreator(
  5966. GraphicsExportComponent ci,
  5967. OSType fileType,
  5968. OSType fileCreator) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0046, 0x7000, 0xA82A);
  5969. /*
  5970. * GraphicsExportGetOutputFileTypeAndCreator()
  5971. *
  5972. * Availability:
  5973. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5974. * CarbonLib: in CarbonLib 1.0.2 and later
  5975. * Mac OS X: in version 10.0 and later
  5976. * Windows: in qtmlClient.lib 4.0 and later
  5977. */
  5978. EXTERN_API( ComponentResult )
  5979. GraphicsExportGetOutputFileTypeAndCreator(
  5980. GraphicsExportComponent ci,
  5981. OSType * fileType,
  5982. OSType * fileCreator) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0047, 0x7000, 0xA82A);
  5983. /* Used by format-specific graphics exporters: */
  5984. /*
  5985. * GraphicsExportWriteOutputData()
  5986. *
  5987. * Availability:
  5988. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  5989. * CarbonLib: in CarbonLib 1.0.2 and later
  5990. * Mac OS X: in version 10.0 and later
  5991. * Windows: in qtmlClient.lib 4.0 and later
  5992. */
  5993. EXTERN_API( ComponentResult )
  5994. GraphicsExportWriteOutputData(
  5995. GraphicsExportComponent ci,
  5996. const void * dataPtr,
  5997. unsigned long dataSize) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0048, 0x7000, 0xA82A);
  5998. /*
  5999. * GraphicsExportSetOutputMark()
  6000. *
  6001. * Availability:
  6002. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  6003. * CarbonLib: in CarbonLib 1.0.2 and later
  6004. * Mac OS X: in version 10.0 and later
  6005. * Windows: in qtmlClient.lib 4.0 and later
  6006. */
  6007. EXTERN_API( ComponentResult )
  6008. GraphicsExportSetOutputMark(
  6009. GraphicsExportComponent ci,
  6010. unsigned long mark) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0049, 0x7000, 0xA82A);
  6011. /*
  6012. * GraphicsExportGetOutputMark()
  6013. *
  6014. * Availability:
  6015. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  6016. * CarbonLib: in CarbonLib 1.0.2 and later
  6017. * Mac OS X: in version 10.0 and later
  6018. * Windows: in qtmlClient.lib 4.0 and later
  6019. */
  6020. EXTERN_API( ComponentResult )
  6021. GraphicsExportGetOutputMark(
  6022. GraphicsExportComponent ci,
  6023. unsigned long * mark) FIVEWORDINLINE(0x2F3C, 0x0004, 0x004A, 0x7000, 0xA82A);
  6024. /*
  6025. * GraphicsExportReadOutputData()
  6026. *
  6027. * Availability:
  6028. * Non-Carbon CFM: in QuickTimeLib 4.0 and later
  6029. * CarbonLib: in CarbonLib 1.0.2 and later
  6030. * Mac OS X: in version 10.0 and later
  6031. * Windows: in qtmlClient.lib 4.0 and later
  6032. */
  6033. EXTERN_API( ComponentResult )
  6034. GraphicsExportReadOutputData(
  6035. GraphicsExportComponent ci,
  6036. void * dataPtr,
  6037. unsigned long dataOffset,
  6038. unsigned long dataSize) FIVEWORDINLINE(0x2F3C, 0x000C, 0x004B, 0x7000, 0xA82A);
  6039. /* Allows embedded thumbnail creation, if supported. */
  6040. /*
  6041. * GraphicsExportSetThumbnailEnabled()
  6042. *
  6043. * Availability:
  6044. * Non-Carbon CFM: in QuickTimeLib 5.0.2 and later
  6045. * CarbonLib: in CarbonLib 1.4 and later
  6046. * Mac OS X: in version 10.1 and later
  6047. * Windows: in qtmlClient.lib 5.0.2 and later
  6048. */
  6049. EXTERN_API( ComponentResult )
  6050. GraphicsExportSetThumbnailEnabled(
  6051. GraphicsExportComponent ci,
  6052. Boolean enableThumbnail,
  6053. long maxThumbnailWidth,
  6054. long maxThumbnailHeight) FIVEWORDINLINE(0x2F3C, 0x000A, 0x004C, 0x7000, 0xA82A);
  6055. /*
  6056. * GraphicsExportGetThumbnailEnabled()
  6057. *
  6058. * Availability:
  6059. * Non-Carbon CFM: in QuickTimeLib 5.0.2 and later
  6060. * CarbonLib: in CarbonLib 1.4 and later
  6061. * Mac OS X: in version 10.1 and later
  6062. * Windows: in qtmlClient.lib 5.0.2 and later
  6063. */
  6064. EXTERN_API( ComponentResult )
  6065. GraphicsExportGetThumbnailEnabled(
  6066. GraphicsExportComponent ci,
  6067. Boolean * thumbnailEnabled,
  6068. long * maxThumbnailWidth,
  6069. long * maxThumbnailHeight) FIVEWORDINLINE(0x2F3C, 0x000C, 0x004D, 0x7000, 0xA82A);
  6070. /* 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. */
  6071. /*
  6072. * GraphicsExportSetExifEnabled()
  6073. *
  6074. * Availability:
  6075. * Non-Carbon CFM: in QuickTimeLib 5.0.2 and later
  6076. * CarbonLib: in CarbonLib 1.4 and later
  6077. * Mac OS X: in version 10.1 and later
  6078. * Windows: in qtmlClient.lib 5.0.2 and later
  6079. */
  6080. EXTERN_API( ComponentResult )
  6081. GraphicsExportSetExifEnabled(
  6082. GraphicsExportComponent ci,
  6083. Boolean enableExif) FIVEWORDINLINE(0x2F3C, 0x0002, 0x004E, 0x7000, 0xA82A);
  6084. /*
  6085. * GraphicsExportGetExifEnabled()
  6086. *
  6087. * Availability:
  6088. * Non-Carbon CFM: in QuickTimeLib 5.0.2 and later
  6089. * CarbonLib: in CarbonLib 1.4 and later
  6090. * Mac OS X: in version 10.1 and later
  6091. * Windows: in qtmlClient.lib 5.0.2 and later
  6092. */
  6093. EXTERN_API( ComponentResult )
  6094. GraphicsExportGetExifEnabled(
  6095. GraphicsExportComponent ci,
  6096. Boolean * exifEnabled) FIVEWORDINLINE(0x2F3C, 0x0004, 0x004F, 0x7000, 0xA82A);
  6097. #if TARGET_API_MAC_OSX
  6098. /*
  6099. * GraphicsExportSetInputCGImage()
  6100. *
  6101. * Availability:
  6102. * Non-Carbon CFM: not available
  6103. * CarbonLib: not available
  6104. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6105. */
  6106. EXTERN_API( ComponentResult )
  6107. GraphicsExportSetInputCGImage(
  6108. GraphicsExportComponent ci,
  6109. CGImageRef imageRef) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0050, 0x7000, 0xA82A);
  6110. /*
  6111. * GraphicsExportGetInputCGImage()
  6112. *
  6113. * Availability:
  6114. * Non-Carbon CFM: not available
  6115. * CarbonLib: not available
  6116. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6117. */
  6118. EXTERN_API( ComponentResult )
  6119. GraphicsExportGetInputCGImage(
  6120. GraphicsExportComponent ci,
  6121. CGImageRef * imageRefOut) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0051, 0x7000, 0xA82A);
  6122. /*
  6123. * GraphicsExportSetInputCGBitmapContext()
  6124. *
  6125. * Availability:
  6126. * Non-Carbon CFM: not available
  6127. * CarbonLib: not available
  6128. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6129. */
  6130. EXTERN_API( ComponentResult )
  6131. GraphicsExportSetInputCGBitmapContext(
  6132. GraphicsExportComponent ci,
  6133. CGContextRef bitmapContextRef) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0052, 0x7000, 0xA82A);
  6134. /*
  6135. * GraphicsExportGetInputCGBitmapContext()
  6136. *
  6137. * Availability:
  6138. * Non-Carbon CFM: not available
  6139. * CarbonLib: not available
  6140. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6141. */
  6142. EXTERN_API( ComponentResult )
  6143. GraphicsExportGetInputCGBitmapContext(
  6144. GraphicsExportComponent ci,
  6145. CGContextRef * bitmapContextRefOut) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0053, 0x7000, 0xA82A);
  6146. #endif /* TARGET_API_MAC_OSX */
  6147. /*
  6148. * GraphicsExportSetFlags()
  6149. *
  6150. * Availability:
  6151. * Non-Carbon CFM: not available
  6152. * CarbonLib: not available
  6153. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6154. */
  6155. EXTERN_API( ComponentResult )
  6156. GraphicsExportSetFlags(
  6157. GraphicsExportComponent ci,
  6158. UInt32 flags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0054, 0x7000, 0xA82A);
  6159. /*
  6160. * GraphicsExportGetFlags()
  6161. *
  6162. * Availability:
  6163. * Non-Carbon CFM: not available
  6164. * CarbonLib: not available
  6165. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6166. */
  6167. EXTERN_API( ComponentResult )
  6168. GraphicsExportGetFlags(
  6169. GraphicsExportComponent ci,
  6170. UInt32 * flagsOut) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0055, 0x7000, 0xA82A);
  6171. typedef ComponentInstance ImageTranscoderComponent;
  6172. enum {
  6173. ImageTranscodererComponentType = FOUR_CHAR_CODE('imtc')
  6174. };
  6175. /** These are ImageTranscoder procedures **/
  6176. /*
  6177. * ImageTranscoderBeginSequence()
  6178. *
  6179. * Availability:
  6180. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  6181. * CarbonLib: in CarbonLib 1.0 and later
  6182. * Mac OS X: in version 10.0 and later
  6183. * Windows: in qtmlClient.lib 3.0 and later
  6184. */
  6185. EXTERN_API( ComponentResult )
  6186. ImageTranscoderBeginSequence(
  6187. ImageTranscoderComponent itc,
  6188. ImageDescriptionHandle srcDesc,
  6189. ImageDescriptionHandle * dstDesc,
  6190. void * data,
  6191. long dataSize) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0001, 0x7000, 0xA82A);
  6192. /*
  6193. * ImageTranscoderConvert()
  6194. *
  6195. * Availability:
  6196. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  6197. * CarbonLib: in CarbonLib 1.0 and later
  6198. * Mac OS X: in version 10.0 and later
  6199. * Windows: in qtmlClient.lib 3.0 and later
  6200. */
  6201. EXTERN_API( ComponentResult )
  6202. ImageTranscoderConvert(
  6203. ImageTranscoderComponent itc,
  6204. void * srcData,
  6205. long srcDataSize,
  6206. void ** dstData,
  6207. long * dstDataSize) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0002, 0x7000, 0xA82A);
  6208. /*
  6209. * ImageTranscoderDisposeData()
  6210. *
  6211. * Availability:
  6212. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  6213. * CarbonLib: in CarbonLib 1.0 and later
  6214. * Mac OS X: in version 10.0 and later
  6215. * Windows: in qtmlClient.lib 3.0 and later
  6216. */
  6217. EXTERN_API( ComponentResult )
  6218. ImageTranscoderDisposeData(
  6219. ImageTranscoderComponent itc,
  6220. void * dstData) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0003, 0x7000, 0xA82A);
  6221. /*
  6222. * ImageTranscoderEndSequence()
  6223. *
  6224. * Availability:
  6225. * Non-Carbon CFM: in QuickTimeLib 2.5 and later
  6226. * CarbonLib: in CarbonLib 1.0 and later
  6227. * Mac OS X: in version 10.0 and later
  6228. * Windows: in qtmlClient.lib 3.0 and later
  6229. */
  6230. EXTERN_API( ComponentResult )
  6231. ImageTranscoderEndSequence(ImageTranscoderComponent itc) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0004, 0x7000, 0xA82A);
  6232. #if (MAC_OS_X_VERSION_MAX_ALLOWED == MAC_OS_X_VERSION_10_2) || !defined(kComponentPropertyListenerCollectionContextVersion)
  6233. /* MixedMode ProcInfo constants for component property calls */
  6234. enum {
  6235. uppCallComponentGetComponentPropertyInfoProcInfo = 0x0003FFF0,
  6236. uppCallComponentGetComponentPropertyProcInfo = 0x0003FFF0,
  6237. uppCallComponentSetComponentPropertyProcInfo = 0x0000FFF0,
  6238. uppCallComponentAddComponentPropertyListenerProcInfo = 0x0000FFF0,
  6239. uppCallComponentRemoveComponentPropertyListenerProcInfo = 0x0000FFF0
  6240. };
  6241. /* == CallComponentGetComponentPropertyInfo flags == */
  6242. enum {
  6243. kComponentPropertyFlagCanSetLater = (1L << 0),
  6244. kComponentPropertyFlagCanSetNow = (1L << 1),
  6245. kComponentPropertyFlagCanGetLater = (1L << 2),
  6246. kComponentPropertyFlagCanGetNow = (1L << 3),
  6247. kComponentPropertyFlagHasExtendedInfo = (1L << 4),
  6248. kComponentPropertyFlagValueMustBeReleased = (1L << 5),
  6249. kComponentPropertyFlagValueIsCFTypeRef = (1L << 6),
  6250. kComponentPropertyFlagGetBufferMustBeInitialized = (1L << 7),
  6251. kComponentPropertyFlagWillNotifyListeners = (1L << 8)
  6252. };
  6253. typedef OSType ComponentPropertyClass;
  6254. typedef OSType ComponentPropertyID;
  6255. typedef OSType ComponentValueType;
  6256. typedef void * ComponentValuePtr;
  6257. typedef const void * ConstComponentValuePtr;
  6258. /* == standard property class constants == */
  6259. enum {
  6260. kComponentPropertyClassPropertyInfo = FOUR_CHAR_CODE('pnfo'), /* property info class */
  6261. /* property info property IDs */
  6262. kComponentPropertyInfoList = FOUR_CHAR_CODE('list'), /* array of ComponentPropertyInfo (CFData), one for each property */
  6263. kComponentPropertyCacheSeed = FOUR_CHAR_CODE('seed'), /* property cache seed value */
  6264. kComponentPropertyCacheFlags = FOUR_CHAR_CODE('flgs'), /* see kComponentPropertyCache flags */
  6265. kComponentPropertyExtendedInfo = FOUR_CHAR_CODE('meta') /* CFDictionary with extended property information*/
  6266. };
  6267. /* values for kComponentPropertyClassPropertyInfo/kComponentPropertyCacheFlags standard component property */
  6268. enum {
  6269. kComponentPropertyCacheFlagNotPersistent = (1L << 0), /* property metadata should not be saved in persistent cache*/
  6270. kComponentPropertyCacheFlagIsDynamic = (1L << 1) /* property metadata should not cached at all*/
  6271. };
  6272. struct ComponentPropertyInfo {
  6273. ComponentPropertyClass propClass;
  6274. ComponentPropertyID propID;
  6275. ComponentValueType propType;
  6276. ByteCount propSize;
  6277. UInt32 propFlags;
  6278. };
  6279. typedef struct ComponentPropertyInfo ComponentPropertyInfo;
  6280. #endif /* #MAC_OS_X_VERSION_10_3 <= MAC_OS_X_VERSION_MAX_ALLOWED */
  6281. /* == "QT" prefixed Component Property calls == */
  6282. typedef CALLBACK_API( void , QTComponentPropertyListenerProcPtr )(ComponentInstance inComponent, ComponentPropertyClass inPropClass, ComponentPropertyID inPropID, void *inUserData);
  6283. typedef STACK_UPP_TYPE(QTComponentPropertyListenerProcPtr) QTComponentPropertyListenerUPP;
  6284. /*
  6285. * QTGetComponentPropertyInfo()
  6286. *
  6287. * Availability:
  6288. * Non-Carbon CFM: not available
  6289. * CarbonLib: not available
  6290. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6291. */
  6292. EXTERN_API( ComponentResult )
  6293. QTGetComponentPropertyInfo(
  6294. ComponentInstance inComponent,
  6295. ComponentPropertyClass inPropClass,
  6296. ComponentPropertyID inPropID,
  6297. ComponentValueType * outPropType, /* can be NULL */
  6298. ByteCount * outPropValueSize, /* can be NULL */
  6299. UInt32 * outPropertyFlags) /* can be NULL */ FIVEWORDINLINE(0x2F3C, 0x0014, 0xFFF5, 0x7000, 0xA82A);
  6300. /*
  6301. * QTGetComponentProperty()
  6302. *
  6303. * Availability:
  6304. * Non-Carbon CFM: not available
  6305. * CarbonLib: not available
  6306. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6307. */
  6308. EXTERN_API( ComponentResult )
  6309. QTGetComponentProperty(
  6310. ComponentInstance inComponent,
  6311. ComponentPropertyClass inPropClass,
  6312. ComponentPropertyID inPropID,
  6313. ByteCount inPropValueSize,
  6314. ComponentValuePtr outPropValueAddress,
  6315. ByteCount * outPropValueSizeUsed) /* can be NULL */ FIVEWORDINLINE(0x2F3C, 0x0014, 0xFFF4, 0x7000, 0xA82A);
  6316. /*
  6317. * QTSetComponentProperty()
  6318. *
  6319. * Availability:
  6320. * Non-Carbon CFM: not available
  6321. * CarbonLib: not available
  6322. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6323. */
  6324. EXTERN_API( ComponentResult )
  6325. QTSetComponentProperty(
  6326. ComponentInstance inComponent,
  6327. ComponentPropertyClass inPropClass,
  6328. ComponentPropertyID inPropID,
  6329. ByteCount inPropValueSize,
  6330. ConstComponentValuePtr inPropValueAddress) FIVEWORDINLINE(0x2F3C, 0x0010, 0xFFF3, 0x7000, 0xA82A);
  6331. /*
  6332. * QTAddComponentPropertyListener()
  6333. *
  6334. * Availability:
  6335. * Non-Carbon CFM: not available
  6336. * CarbonLib: not available
  6337. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6338. */
  6339. EXTERN_API( ComponentResult )
  6340. QTAddComponentPropertyListener(
  6341. ComponentInstance inComponent,
  6342. ComponentPropertyClass inPropClass,
  6343. ComponentPropertyID inPropID,
  6344. QTComponentPropertyListenerUPP inDispatchProc,
  6345. void * inUserData) /* can be NULL */ FIVEWORDINLINE(0x2F3C, 0x0010, 0xFFF2, 0x7000, 0xA82A);
  6346. /*
  6347. * QTRemoveComponentPropertyListener()
  6348. *
  6349. * Availability:
  6350. * Non-Carbon CFM: not available
  6351. * CarbonLib: not available
  6352. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6353. */
  6354. EXTERN_API( ComponentResult )
  6355. QTRemoveComponentPropertyListener(
  6356. ComponentInstance inComponent,
  6357. ComponentPropertyClass inPropClass,
  6358. ComponentPropertyID inPropID,
  6359. QTComponentPropertyListenerUPP inDispatchProc,
  6360. void * inUserData) /* can be NULL */ FIVEWORDINLINE(0x2F3C, 0x0010, 0xFFF1, 0x7000, 0xA82A);
  6361. /* == "QT" prefixed Component Property Listener helpers == */
  6362. typedef CFTypeRef QTComponentPropertyListenersRef;
  6363. typedef struct QTComponentPropertyListenerCollectionContext QTComponentPropertyListenerCollectionContext;
  6364. typedef CALLBACK_API( Boolean , QTComponentPropertyListenerFilterProcPtr )(QTComponentPropertyListenersRef inCollection, const QTComponentPropertyListenerCollectionContext *inCollectionContext, ComponentInstance inNotifier, ComponentPropertyClass inPropClass, ComponentPropertyID inPropID, QTComponentPropertyListenerUPP inListenerCallbackProc, const void *inListenerProcRefCon, const void *inFilterProcRefCon);
  6365. typedef STACK_UPP_TYPE(QTComponentPropertyListenerFilterProcPtr) QTComponentPropertyListenerFilterUPP;
  6366. #define kQTComponentPropertyListenerCollectionContextVersion 1
  6367. struct QTComponentPropertyListenerCollectionContext {
  6368. UInt32 version; /* struct version */
  6369. QTComponentPropertyListenerFilterUPP filterProcUPP;
  6370. void * filterProcData;
  6371. };
  6372. #if CALL_NOT_IN_CARBON
  6373. /*
  6374. * NewQTComponentPropertyListenerUPP()
  6375. *
  6376. * Availability:
  6377. * Non-Carbon CFM: available as macro/inline
  6378. * CarbonLib: not available
  6379. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6380. */
  6381. EXTERN_API_C( QTComponentPropertyListenerUPP )
  6382. NewQTComponentPropertyListenerUPP(QTComponentPropertyListenerProcPtr userRoutine);
  6383. #if !OPAQUE_UPP_TYPES
  6384. enum { uppQTComponentPropertyListenerProcInfo = 0x00003FC0 }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  6385. #ifdef __cplusplus
  6386. inline DEFINE_API_C(QTComponentPropertyListenerUPP) NewQTComponentPropertyListenerUPP(QTComponentPropertyListenerProcPtr userRoutine) { return (QTComponentPropertyListenerUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTComponentPropertyListenerProcInfo, GetCurrentArchitecture()); }
  6387. #else
  6388. #define NewQTComponentPropertyListenerUPP(userRoutine) (QTComponentPropertyListenerUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTComponentPropertyListenerProcInfo, GetCurrentArchitecture())
  6389. #endif
  6390. #endif
  6391. /*
  6392. * NewQTComponentPropertyListenerFilterUPP()
  6393. *
  6394. * Availability:
  6395. * Non-Carbon CFM: available as macro/inline
  6396. * CarbonLib: not available
  6397. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6398. */
  6399. EXTERN_API_C( QTComponentPropertyListenerFilterUPP )
  6400. NewQTComponentPropertyListenerFilterUPP(QTComponentPropertyListenerFilterProcPtr userRoutine);
  6401. #if !OPAQUE_UPP_TYPES
  6402. enum { uppQTComponentPropertyListenerFilterProcInfo = 0x003FFFD0 }; /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  6403. #ifdef __cplusplus
  6404. inline DEFINE_API_C(QTComponentPropertyListenerFilterUPP) NewQTComponentPropertyListenerFilterUPP(QTComponentPropertyListenerFilterProcPtr userRoutine) { return (QTComponentPropertyListenerFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTComponentPropertyListenerFilterProcInfo, GetCurrentArchitecture()); }
  6405. #else
  6406. #define NewQTComponentPropertyListenerFilterUPP(userRoutine) (QTComponentPropertyListenerFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTComponentPropertyListenerFilterProcInfo, GetCurrentArchitecture())
  6407. #endif
  6408. #endif
  6409. /*
  6410. * DisposeQTComponentPropertyListenerUPP()
  6411. *
  6412. * Availability:
  6413. * Non-Carbon CFM: available as macro/inline
  6414. * CarbonLib: not available
  6415. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6416. */
  6417. EXTERN_API_C( void )
  6418. DisposeQTComponentPropertyListenerUPP(QTComponentPropertyListenerUPP userUPP);
  6419. #if !OPAQUE_UPP_TYPES
  6420. #ifdef __cplusplus
  6421. inline DEFINE_API_C(void) DisposeQTComponentPropertyListenerUPP(QTComponentPropertyListenerUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  6422. #else
  6423. #define DisposeQTComponentPropertyListenerUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  6424. #endif
  6425. #endif
  6426. /*
  6427. * DisposeQTComponentPropertyListenerFilterUPP()
  6428. *
  6429. * Availability:
  6430. * Non-Carbon CFM: available as macro/inline
  6431. * CarbonLib: not available
  6432. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6433. */
  6434. EXTERN_API_C( void )
  6435. DisposeQTComponentPropertyListenerFilterUPP(QTComponentPropertyListenerFilterUPP userUPP);
  6436. #if !OPAQUE_UPP_TYPES
  6437. #ifdef __cplusplus
  6438. inline DEFINE_API_C(void) DisposeQTComponentPropertyListenerFilterUPP(QTComponentPropertyListenerFilterUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  6439. #else
  6440. #define DisposeQTComponentPropertyListenerFilterUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  6441. #endif
  6442. #endif
  6443. /*
  6444. * InvokeQTComponentPropertyListenerUPP()
  6445. *
  6446. * Availability:
  6447. * Non-Carbon CFM: available as macro/inline
  6448. * CarbonLib: not available
  6449. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6450. */
  6451. EXTERN_API_C( void )
  6452. InvokeQTComponentPropertyListenerUPP(
  6453. ComponentInstance inComponent,
  6454. ComponentPropertyClass inPropClass,
  6455. ComponentPropertyID inPropID,
  6456. void * inUserData,
  6457. QTComponentPropertyListenerUPP userUPP);
  6458. #if !OPAQUE_UPP_TYPES
  6459. #ifdef __cplusplus
  6460. 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); }
  6461. #else
  6462. #define InvokeQTComponentPropertyListenerUPP(inComponent, inPropClass, inPropID, inUserData, userUPP) CALL_FOUR_PARAMETER_UPP((userUPP), uppQTComponentPropertyListenerProcInfo, (inComponent), (inPropClass), (inPropID), (inUserData))
  6463. #endif
  6464. #endif
  6465. /*
  6466. * InvokeQTComponentPropertyListenerFilterUPP()
  6467. *
  6468. * Availability:
  6469. * Non-Carbon CFM: available as macro/inline
  6470. * CarbonLib: not available
  6471. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6472. */
  6473. EXTERN_API_C( Boolean )
  6474. InvokeQTComponentPropertyListenerFilterUPP(
  6475. QTComponentPropertyListenersRef inCollection,
  6476. const QTComponentPropertyListenerCollectionContext * inCollectionContext,
  6477. ComponentInstance inNotifier,
  6478. ComponentPropertyClass inPropClass,
  6479. ComponentPropertyID inPropID,
  6480. QTComponentPropertyListenerUPP inListenerCallbackProc,
  6481. const void * inListenerProcRefCon,
  6482. const void * inFilterProcRefCon,
  6483. QTComponentPropertyListenerFilterUPP userUPP);
  6484. #if !OPAQUE_UPP_TYPES
  6485. #ifdef __cplusplus
  6486. 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); }
  6487. #else
  6488. #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))
  6489. #endif
  6490. #endif
  6491. #endif /* CALL_NOT_IN_CARBON */
  6492. #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
  6493. /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
  6494. #define NewQTComponentPropertyListenerProc(userRoutine) NewQTComponentPropertyListenerUPP(userRoutine)
  6495. #define NewQTComponentPropertyListenerFilterProc(userRoutine) NewQTComponentPropertyListenerFilterUPP(userRoutine)
  6496. #define CallQTComponentPropertyListenerProc(userRoutine, inComponent, inPropClass, inPropID, inUserData) InvokeQTComponentPropertyListenerUPP(inComponent, inPropClass, inPropID, inUserData, userRoutine)
  6497. #define CallQTComponentPropertyListenerFilterProc(userRoutine, inCollection, inCollectionContext, inNotifier, inPropClass, inPropID, inListenerCallbackProc, inListenerProcRefCon, inFilterProcRefCon) InvokeQTComponentPropertyListenerFilterUPP(inCollection, inCollectionContext, inNotifier, inPropClass, inPropID, inListenerCallbackProc, inListenerProcRefCon, inFilterProcRefCon, userRoutine)
  6498. #endif /* CALL_NOT_IN_CARBON */
  6499. /*
  6500. * QTComponentPropertyListenerCollectionCreate()
  6501. *
  6502. * Summary:
  6503. * Create a collection to use with the functions
  6504. * ComponentPropertyListenerCollectionAddListener,
  6505. * ComponentPropertyListenerCollectionRemoveListener,
  6506. * ComponentPropertyListenerCollectionNotifyListeners,
  6507. * ComponentPropertyListenerCollectionIsEmpty, and
  6508. * ComponentPropertyListenerCollectionHasListenersForProperty.
  6509. *
  6510. * Parameters:
  6511. *
  6512. * outCollection:
  6513. * Returns the new, empty, listener collection.
  6514. *
  6515. * inAllocator:
  6516. * Allocator used to create the collection and it's contents.
  6517. *
  6518. * inContext:
  6519. * The listener collection context. May be NULL. A copy of the
  6520. * contents of the structure is made, so a pointer to a structure
  6521. * on the stack can be passed.
  6522. *
  6523. * Availability:
  6524. * Non-Carbon CFM: not available
  6525. * CarbonLib: not available
  6526. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6527. */
  6528. EXTERN_API_C( OSStatus )
  6529. QTComponentPropertyListenerCollectionCreate(
  6530. CFAllocatorRef inAllocator, /* can be NULL */
  6531. const QTComponentPropertyListenerCollectionContext * inContext, /* can be NULL */
  6532. QTComponentPropertyListenersRef * outCollection);
  6533. /*
  6534. * QTComponentPropertyListenerCollectionAddListener()
  6535. *
  6536. * Summary:
  6537. * Add a listener callback for the specified property class and ID
  6538. * to a property listener collection.
  6539. *
  6540. * Parameters:
  6541. *
  6542. * inCollection:
  6543. * The property listener collection.
  6544. *
  6545. * inPropClass:
  6546. * The property class.
  6547. *
  6548. * inPropID:
  6549. * The property ID.
  6550. *
  6551. * inListenerProc:
  6552. * The property listener callback function.
  6553. *
  6554. * inListenerProcRefCon:
  6555. * The data parameter to pass to the listener callback function.
  6556. *
  6557. * Availability:
  6558. * Non-Carbon CFM: not available
  6559. * CarbonLib: not available
  6560. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6561. */
  6562. EXTERN_API_C( OSStatus )
  6563. QTComponentPropertyListenerCollectionAddListener(
  6564. QTComponentPropertyListenersRef inCollection,
  6565. ComponentPropertyClass inPropClass,
  6566. ComponentPropertyID inPropID,
  6567. QTComponentPropertyListenerUPP inListenerProc,
  6568. const void * inListenerProcRefCon);
  6569. /*
  6570. * QTComponentPropertyListenerCollectionRemoveListener()
  6571. *
  6572. * Summary:
  6573. * Remove a listener callback for the specified property class and
  6574. * ID from a property listener collection.
  6575. *
  6576. * Parameters:
  6577. *
  6578. * inCollection:
  6579. * The property listener collection.
  6580. *
  6581. * inPropClass:
  6582. * The property class.
  6583. *
  6584. * inPropID:
  6585. * The property ID.
  6586. *
  6587. * inListenerProc:
  6588. * The property listener callback function.
  6589. *
  6590. * inListenerProcRefCon:
  6591. * The data parameter to pass to the listener callback function.
  6592. *
  6593. * Availability:
  6594. * Non-Carbon CFM: not available
  6595. * CarbonLib: not available
  6596. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6597. */
  6598. EXTERN_API_C( OSStatus )
  6599. QTComponentPropertyListenerCollectionRemoveListener(
  6600. QTComponentPropertyListenersRef inCollection,
  6601. ComponentPropertyClass inPropClass,
  6602. ComponentPropertyID inPropID,
  6603. QTComponentPropertyListenerUPP inListenerProc,
  6604. const void * inListenerProcRefCon);
  6605. /*
  6606. * QTComponentPropertyListenerCollectionNotifyListeners()
  6607. *
  6608. * Summary:
  6609. * Call all listener callbacks in the collection registered for the
  6610. * specified property class and ID.
  6611. *
  6612. * Discussion:
  6613. * If the "filterProcUPP" in the collection's context is non-NULL,
  6614. * the filter function will be called before each registered
  6615. * listener that matches the specified property class and ID. If the
  6616. * filter function return false, the listener proc will not be
  6617. * called. This is intended to allow a component to change the
  6618. * calling semantics (call another thread, etc), to use a different
  6619. * listener callback signature, etc.
  6620. *
  6621. * Parameters:
  6622. *
  6623. * inCollection:
  6624. * The property listener collection.
  6625. *
  6626. * inNotifier:
  6627. * The calling ComponentInstance.
  6628. *
  6629. * inPropClass:
  6630. * The property class.
  6631. *
  6632. * inPropID:
  6633. * The property ID.
  6634. *
  6635. * inFilterProcRefCon:
  6636. * The data parameter to pass to the filter function.
  6637. *
  6638. * inFlags:
  6639. * Flags. Must be set to 0.
  6640. *
  6641. * Availability:
  6642. * Non-Carbon CFM: not available
  6643. * CarbonLib: not available
  6644. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6645. */
  6646. EXTERN_API_C( OSStatus )
  6647. QTComponentPropertyListenerCollectionNotifyListeners(
  6648. QTComponentPropertyListenersRef inCollection,
  6649. ComponentInstance inNotifier,
  6650. ComponentPropertyClass inPropClass,
  6651. ComponentPropertyID inPropID,
  6652. const void * inFilterProcRefCon, /* can be NULL */
  6653. UInt32 inFlags);
  6654. /*
  6655. * QTComponentPropertyListenerCollectionIsEmpty()
  6656. *
  6657. * Summary:
  6658. * Return true if the listener collection is empty.
  6659. *
  6660. * Parameters:
  6661. *
  6662. * inCollection:
  6663. * The property listener collection.
  6664. *
  6665. * Availability:
  6666. * Non-Carbon CFM: not available
  6667. * CarbonLib: not available
  6668. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6669. */
  6670. EXTERN_API_C( Boolean )
  6671. QTComponentPropertyListenerCollectionIsEmpty(QTComponentPropertyListenersRef inCollection);
  6672. /*
  6673. * QTComponentPropertyListenerCollectionHasListenersForProperty()
  6674. *
  6675. * Summary:
  6676. * Returns true if there are any listeners registered for the
  6677. * specified property class and ID.
  6678. *
  6679. * Parameters:
  6680. *
  6681. * inCollection:
  6682. * The property listener collection.
  6683. *
  6684. * inPropClass:
  6685. * The property class.
  6686. *
  6687. * inPropID:
  6688. * The property ID.
  6689. *
  6690. * Availability:
  6691. * Non-Carbon CFM: not available
  6692. * CarbonLib: not available
  6693. * Mac OS X: in version 10.3 (or QuickTime 6.4) and later
  6694. */
  6695. EXTERN_API_C( Boolean )
  6696. QTComponentPropertyListenerCollectionHasListenersForProperty(
  6697. QTComponentPropertyListenersRef inCollection,
  6698. ComponentPropertyClass inPropClass,
  6699. ComponentPropertyID inPropID);
  6700. /* DRM properties*/
  6701. enum {
  6702. kQTPropertyClass_DRM = FOUR_CHAR_CODE('drm ')
  6703. };
  6704. enum {
  6705. kQTDRMPropertyID_InteractWithUser = FOUR_CHAR_CODE('shui'), /* Boolean**/
  6706. kQTDRMPropertyID_IsProtected = FOUR_CHAR_CODE('prot'), /* Boolean**/
  6707. kQTDRMPropertyID_IsAuthorized = FOUR_CHAR_CODE('auth') /* Boolean**/
  6708. };
  6709. /* UPP call backs */
  6710. /* selectors for component calls */
  6711. enum {
  6712. kGraphicsImportSetDataReferenceSelect = 0x0001,
  6713. kGraphicsImportGetDataReferenceSelect = 0x0002,
  6714. kGraphicsImportSetDataFileSelect = 0x0003,
  6715. kGraphicsImportGetDataFileSelect = 0x0004,
  6716. kGraphicsImportSetDataHandleSelect = 0x0005,
  6717. kGraphicsImportGetDataHandleSelect = 0x0006,
  6718. kGraphicsImportGetImageDescriptionSelect = 0x0007,
  6719. kGraphicsImportGetDataOffsetAndSizeSelect = 0x0008,
  6720. kGraphicsImportReadDataSelect = 0x0009,
  6721. kGraphicsImportSetClipSelect = 0x000A,
  6722. kGraphicsImportGetClipSelect = 0x000B,
  6723. kGraphicsImportSetSourceRectSelect = 0x000C,
  6724. kGraphicsImportGetSourceRectSelect = 0x000D,
  6725. kGraphicsImportGetNaturalBoundsSelect = 0x000E,
  6726. kGraphicsImportDrawSelect = 0x000F,
  6727. kGraphicsImportSetGWorldSelect = 0x0010,
  6728. kGraphicsImportGetGWorldSelect = 0x0011,
  6729. kGraphicsImportSetMatrixSelect = 0x0012,
  6730. kGraphicsImportGetMatrixSelect = 0x0013,
  6731. kGraphicsImportSetBoundsRectSelect = 0x0014,
  6732. kGraphicsImportGetBoundsRectSelect = 0x0015,
  6733. kGraphicsImportSaveAsPictureSelect = 0x0016,
  6734. kGraphicsImportSetGraphicsModeSelect = 0x0017,
  6735. kGraphicsImportGetGraphicsModeSelect = 0x0018,
  6736. kGraphicsImportSetQualitySelect = 0x0019,
  6737. kGraphicsImportGetQualitySelect = 0x001A,
  6738. kGraphicsImportSaveAsQuickTimeImageFileSelect = 0x001B,
  6739. kGraphicsImportSetDataReferenceOffsetAndLimitSelect = 0x001C,
  6740. kGraphicsImportGetDataReferenceOffsetAndLimitSelect = 0x001D,
  6741. kGraphicsImportGetAliasedDataReferenceSelect = 0x001E,
  6742. kGraphicsImportValidateSelect = 0x001F,
  6743. kGraphicsImportGetMetaDataSelect = 0x0020,
  6744. kGraphicsImportGetMIMETypeListSelect = 0x0021,
  6745. kGraphicsImportDoesDrawAllPixelsSelect = 0x0022,
  6746. kGraphicsImportGetAsPictureSelect = 0x0023,
  6747. kGraphicsImportExportImageFileSelect = 0x0024,
  6748. kGraphicsImportGetExportImageTypeListSelect = 0x0025,
  6749. kGraphicsImportDoExportImageFileDialogSelect = 0x0026,
  6750. kGraphicsImportGetExportSettingsAsAtomContainerSelect = 0x0027,
  6751. kGraphicsImportSetExportSettingsFromAtomContainerSelect = 0x0028,
  6752. kGraphicsImportSetProgressProcSelect = 0x0029,
  6753. kGraphicsImportGetProgressProcSelect = 0x002A,
  6754. kGraphicsImportGetImageCountSelect = 0x002B,
  6755. kGraphicsImportSetImageIndexSelect = 0x002C,
  6756. kGraphicsImportGetImageIndexSelect = 0x002D,
  6757. kGraphicsImportGetDataOffsetAndSize64Select = 0x002E,
  6758. kGraphicsImportReadData64Select = 0x002F,
  6759. kGraphicsImportSetDataReferenceOffsetAndLimit64Select = 0x0030,
  6760. kGraphicsImportGetDataReferenceOffsetAndLimit64Select = 0x0031,
  6761. kGraphicsImportGetDefaultMatrixSelect = 0x0032,
  6762. kGraphicsImportGetDefaultClipSelect = 0x0033,
  6763. kGraphicsImportGetDefaultGraphicsModeSelect = 0x0034,
  6764. kGraphicsImportGetDefaultSourceRectSelect = 0x0035,
  6765. kGraphicsImportGetColorSyncProfileSelect = 0x0036,
  6766. kGraphicsImportSetDestRectSelect = 0x0037,
  6767. kGraphicsImportGetDestRectSelect = 0x0038,
  6768. kGraphicsImportSetFlagsSelect = 0x0039,
  6769. kGraphicsImportGetFlagsSelect = 0x003A,
  6770. kGraphicsImportGetBaseDataOffsetAndSize64Select = 0x003D,
  6771. kGraphicsImportSetImageIndexToThumbnailSelect = 0x003E,
  6772. kGraphicsImportCreateCGImageSelect = 0x003F,
  6773. kGraphicsImportSaveAsPictureToDataRefSelect = 0x0040,
  6774. kGraphicsImportSaveAsQuickTimeImageFileToDataRefSelect = 0x0041,
  6775. kGraphicsImportExportImageFileToDataRefSelect = 0x0042,
  6776. kGraphicsImportDoExportImageFileToDataRefDialogSelect = 0x0043,
  6777. kGraphicsImportSetOverrideSourceColorSyncProfileRefSelect = 0x0044,
  6778. kGraphicsImportGetOverrideSourceColorSyncProfileRefSelect = 0x0045,
  6779. kGraphicsImportSetDestinationColorSyncProfileRefSelect = 0x0046,
  6780. kGraphicsImportGetDestinationColorSyncProfileRefSelect = 0x0047,
  6781. kGraphicsImportWillUseColorMatchingSelect = 0x0048,
  6782. kGraphicsImportGetGenericColorSyncProfileSelect = 0x0049,
  6783. kGraphicsImportSetReturnGenericColorSyncProfileSelect = 0x004A,
  6784. kGraphicsImportGetReturnGenericColorSyncProfileSelect = 0x004B,
  6785. kGraphicsExportDoExportSelect = 0x0001,
  6786. kGraphicsExportCanTranscodeSelect = 0x0002,
  6787. kGraphicsExportDoTranscodeSelect = 0x0003,
  6788. kGraphicsExportCanUseCompressorSelect = 0x0004,
  6789. kGraphicsExportDoUseCompressorSelect = 0x0005,
  6790. kGraphicsExportDoStandaloneExportSelect = 0x0006,
  6791. kGraphicsExportGetDefaultFileTypeAndCreatorSelect = 0x0007,
  6792. kGraphicsExportGetDefaultFileNameExtensionSelect = 0x0008,
  6793. kGraphicsExportGetMIMETypeListSelect = 0x0009,
  6794. kGraphicsExportRequestSettingsSelect = 0x000B,
  6795. kGraphicsExportSetSettingsFromAtomContainerSelect = 0x000C,
  6796. kGraphicsExportGetSettingsAsAtomContainerSelect = 0x000D,
  6797. kGraphicsExportGetSettingsAsTextSelect = 0x000E,
  6798. kGraphicsExportSetDontRecompressSelect = 0x000F,
  6799. kGraphicsExportGetDontRecompressSelect = 0x0010,
  6800. kGraphicsExportSetInterlaceStyleSelect = 0x0011,
  6801. kGraphicsExportGetInterlaceStyleSelect = 0x0012,
  6802. kGraphicsExportSetMetaDataSelect = 0x0013,
  6803. kGraphicsExportGetMetaDataSelect = 0x0014,
  6804. kGraphicsExportSetTargetDataSizeSelect = 0x0015,
  6805. kGraphicsExportGetTargetDataSizeSelect = 0x0016,
  6806. kGraphicsExportSetCompressionMethodSelect = 0x0017,
  6807. kGraphicsExportGetCompressionMethodSelect = 0x0018,
  6808. kGraphicsExportSetCompressionQualitySelect = 0x0019,
  6809. kGraphicsExportGetCompressionQualitySelect = 0x001A,
  6810. kGraphicsExportSetResolutionSelect = 0x001B,
  6811. kGraphicsExportGetResolutionSelect = 0x001C,
  6812. kGraphicsExportSetDepthSelect = 0x001D,
  6813. kGraphicsExportGetDepthSelect = 0x001E,
  6814. kGraphicsExportSetColorSyncProfileSelect = 0x0021,
  6815. kGraphicsExportGetColorSyncProfileSelect = 0x0022,
  6816. kGraphicsExportSetProgressProcSelect = 0x0023,
  6817. kGraphicsExportGetProgressProcSelect = 0x0024,
  6818. kGraphicsExportSetInputDataReferenceSelect = 0x0025,
  6819. kGraphicsExportGetInputDataReferenceSelect = 0x0026,
  6820. kGraphicsExportSetInputFileSelect = 0x0027,
  6821. kGraphicsExportGetInputFileSelect = 0x0028,
  6822. kGraphicsExportSetInputHandleSelect = 0x0029,
  6823. kGraphicsExportGetInputHandleSelect = 0x002A,
  6824. kGraphicsExportSetInputPtrSelect = 0x002B,
  6825. kGraphicsExportGetInputPtrSelect = 0x002C,
  6826. kGraphicsExportSetInputGraphicsImporterSelect = 0x002D,
  6827. kGraphicsExportGetInputGraphicsImporterSelect = 0x002E,
  6828. kGraphicsExportSetInputPictureSelect = 0x002F,
  6829. kGraphicsExportGetInputPictureSelect = 0x0030,
  6830. kGraphicsExportSetInputGWorldSelect = 0x0031,
  6831. kGraphicsExportGetInputGWorldSelect = 0x0032,
  6832. kGraphicsExportSetInputPixmapSelect = 0x0033,
  6833. kGraphicsExportGetInputPixmapSelect = 0x0034,
  6834. kGraphicsExportSetInputOffsetAndLimitSelect = 0x0035,
  6835. kGraphicsExportGetInputOffsetAndLimitSelect = 0x0036,
  6836. kGraphicsExportMayExporterReadInputDataSelect = 0x0037,
  6837. kGraphicsExportGetInputDataSizeSelect = 0x0038,
  6838. kGraphicsExportReadInputDataSelect = 0x0039,
  6839. kGraphicsExportGetInputImageDescriptionSelect = 0x003A,
  6840. kGraphicsExportGetInputImageDimensionsSelect = 0x003B,
  6841. kGraphicsExportGetInputImageDepthSelect = 0x003C,
  6842. kGraphicsExportDrawInputImageSelect = 0x003D,
  6843. kGraphicsExportSetOutputDataReferenceSelect = 0x003E,
  6844. kGraphicsExportGetOutputDataReferenceSelect = 0x003F,
  6845. kGraphicsExportSetOutputFileSelect = 0x0040,
  6846. kGraphicsExportGetOutputFileSelect = 0x0041,
  6847. kGraphicsExportSetOutputHandleSelect = 0x0042,
  6848. kGraphicsExportGetOutputHandleSelect = 0x0043,
  6849. kGraphicsExportSetOutputOffsetAndMaxSizeSelect = 0x0044,
  6850. kGraphicsExportGetOutputOffsetAndMaxSizeSelect = 0x0045,
  6851. kGraphicsExportSetOutputFileTypeAndCreatorSelect = 0x0046,
  6852. kGraphicsExportGetOutputFileTypeAndCreatorSelect = 0x0047,
  6853. kGraphicsExportWriteOutputDataSelect = 0x0048,
  6854. kGraphicsExportSetOutputMarkSelect = 0x0049,
  6855. kGraphicsExportGetOutputMarkSelect = 0x004A,
  6856. kGraphicsExportReadOutputDataSelect = 0x004B,
  6857. kGraphicsExportSetThumbnailEnabledSelect = 0x004C,
  6858. kGraphicsExportGetThumbnailEnabledSelect = 0x004D,
  6859. kGraphicsExportSetExifEnabledSelect = 0x004E,
  6860. kGraphicsExportGetExifEnabledSelect = 0x004F,
  6861. kGraphicsExportSetInputCGImageSelect = 0x0050,
  6862. kGraphicsExportGetInputCGImageSelect = 0x0051,
  6863. kGraphicsExportSetInputCGBitmapContextSelect = 0x0052,
  6864. kGraphicsExportGetInputCGBitmapContextSelect = 0x0053,
  6865. kGraphicsExportSetFlagsSelect = 0x0054,
  6866. kGraphicsExportGetFlagsSelect = 0x0055,
  6867. kImageTranscoderBeginSequenceSelect = 0x0001,
  6868. kImageTranscoderConvertSelect = 0x0002,
  6869. kImageTranscoderDisposeDataSelect = 0x0003,
  6870. kImageTranscoderEndSequenceSelect = 0x0004,
  6871. kQTGetComponentPropertyInfoSelect = -11,
  6872. kQTGetComponentPropertySelect = -12,
  6873. kQTSetComponentPropertySelect = -13,
  6874. kQTAddComponentPropertyListenerSelect = -14,
  6875. kQTRemoveComponentPropertyListenerSelect = -15
  6876. };
  6877. /* Aperture modes */
  6878. /*
  6879. * Summary:
  6880. * Aperture modes
  6881. *
  6882. * Discussion:
  6883. * You can set the aperture mode property on a movie to indicate
  6884. * whether aspect ratio and clean aperture correction should be
  6885. * performed (kQTPropertyClass_Visual /
  6886. * kQTVisualPropertyID_ApertureMode). When a movie is in clean,
  6887. * production or encoded pixels aperture mode, each track's
  6888. * dimensions are overriden by special dimensions for that mode. The
  6889. * original track dimensions are preserved and can be restored by
  6890. * setting the movie into classic aperture mode. Aperture modes are
  6891. * not saved in movies.
  6892. * You can set the aperture mode property on a decompression session
  6893. * options object to indicate whether pixel buffers should be tagged
  6894. * to enable aspect ratio and clean aperture correction
  6895. * (kQTPropertyClass_ICMDecompressionSessionOptions /
  6896. * kICMDecompressionSessionOptionsPropertyID_ApertureMode).
  6897. */
  6898. enum {
  6899. /*
  6900. * An aperture mode which gives compatibility with behavior in
  6901. * QuickTime 7.0.x and earlier.
  6902. * A movie in classic aperture mode uses track dimensions as set in
  6903. * NewMovieTrack and SetTrackDimensions.
  6904. * A decompression session in classic aperture mode does not set the
  6905. * clean aperture or pixel aspect ratio attachments on emitted pixel
  6906. * buffers.
  6907. * Movies default to classic aperture mode. If you call
  6908. * SetTrackDimensions on a track, the movie is automatically switched
  6909. * into classic aperture mode.
  6910. */
  6911. kQTApertureMode_Classic = FOUR_CHAR_CODE('clas'),
  6912. /*
  6913. * An aperture mode for general display.
  6914. * Where possible, video will be displayed at the correct pixel
  6915. * aspect ratio, trimmed to the clean aperture. A movie in clean
  6916. * aperture mode sets each track's dimensions to match its
  6917. * kQTVisualPropertyID_CleanApertureDimensions.
  6918. * A decompression session in clean aperture mode sets the clean
  6919. * aperture and pixel aspect ratio attachments on emitted pixel
  6920. * buffers based on the image description.
  6921. */
  6922. kQTApertureMode_CleanAperture = FOUR_CHAR_CODE('clea'),
  6923. /*
  6924. * An aperture mode for modal use in authoring applications.
  6925. * Where possible, video will be displayed at the correct pixel
  6926. * aspect ratio, but without trimming to the clean aperture so that
  6927. * the edge processing region can be viewed. A movie in production
  6928. * aperture mode sets each track's dimensions to match its
  6929. * kQTVisualPropertyID_ProductionApertureDimensions.
  6930. * A decompression session in production aperture mode sets the pixel
  6931. * aspect ratio attachments on emitted pixel buffers based on the
  6932. * image description.
  6933. */
  6934. kQTApertureMode_ProductionAperture = FOUR_CHAR_CODE('prod'),
  6935. /*
  6936. * An aperture mode for technical use.
  6937. * Displays all encoded pixels with no aspect ratio or clean aperture
  6938. * compensation. A movie in encoded pixels aperture mode sets each
  6939. * track's dimensions to match its
  6940. * kQTVisualPropertyID_EncodedPixelsDimensions.
  6941. * A decompression session in encoded pixels aperture mode does not
  6942. * set the clean aperture or pixel aspect ratio attachments on
  6943. * emitted pixel buffers.
  6944. */
  6945. kQTApertureMode_EncodedPixels = FOUR_CHAR_CODE('enco')
  6946. };
  6947. /* Property interface for Image Descriptions */
  6948. /*
  6949. * Summary:
  6950. * Properties of image descriptions.
  6951. */
  6952. enum {
  6953. /*
  6954. * Class identifier for image description properties.
  6955. */
  6956. kQTPropertyClass_ImageDescription = FOUR_CHAR_CODE('idsc'),
  6957. /*
  6958. * The width of the encoded image. Usually, but not always, this is
  6959. * the ImageDescription's width field.
  6960. */
  6961. kICMImageDescriptionPropertyID_EncodedWidth = FOUR_CHAR_CODE('encw'), /* SInt32, Read/Write */
  6962. /*
  6963. * The height of the encoded image. Usually, but not always, this is
  6964. * the ImageDescription's height field.
  6965. */
  6966. kICMImageDescriptionPropertyID_EncodedHeight = FOUR_CHAR_CODE('ench'), /* SInt32, Read/Write */
  6967. /*
  6968. * Describes the clean aperture of the buffer. If not specified
  6969. * explicitly in the image description, the default clean aperture
  6970. * (full encoded width and height) will be returned.
  6971. */
  6972. kICMImageDescriptionPropertyID_CleanAperture = FOUR_CHAR_CODE('clap'), /* Native-endian CleanApertureImageDescriptionExtension, Read/Write */
  6973. /*
  6974. * Describes the pixel aspect ratio. If not specified explicitly in
  6975. * the image description, a square (1:1) pixel aspect ratio will be
  6976. * returned.
  6977. */
  6978. kICMImageDescriptionPropertyID_PixelAspectRatio = FOUR_CHAR_CODE('pasp'), /* Native-endian PixelAspectRatioImageDescriptionExtension, Read/Write */
  6979. /*
  6980. * Dimensions at which the image could be displayed on a square-pixel
  6981. * display, generally calculated using the clean aperture and pixel
  6982. * aspect ratio.
  6983. * Note that this value is returned as a FixedPoint; the width and
  6984. * height can also be read separately as rounded SInt32s via
  6985. * kICMImageDescriptionPropertyID_CleanApertureDisplayWidth and
  6986. * kICMImageDescriptionPropertyID_CleanApertureDisplayHeight.
  6987. */
  6988. kICMImageDescriptionPropertyID_CleanApertureDisplayDimensions = FOUR_CHAR_CODE('cadi'), /* FixedPoint, Read */
  6989. /*
  6990. * Dimensions at which the image could be displayed on a square-pixel
  6991. * display, disregarding any clean aperture but honoring the pixel
  6992. * aspect ratio. This may be useful for authoring applications that
  6993. * want to expose the edge processing region. For general viewing,
  6994. * use kICMImageDescriptionPropertyID_CleanApertureDimensions
  6995. * instead.
  6996. * Note that this value is returned as a FixedPoint; the width and
  6997. * height can also be read separately as rounded SInt32s via
  6998. * kICMImageDescriptionPropertyID_ProductionApertureDisplayWidth and
  6999. * kICMImageDescriptionPropertyID_ProductionApertureDisplayHeight.
  7000. */
  7001. kICMImageDescriptionPropertyID_ProductionApertureDisplayDimensions = FOUR_CHAR_CODE('prdi'), /* FixedPoint, Read */
  7002. /*
  7003. * Dimensions of the encoded image.
  7004. * Note that this value is returned as a FixedPoint for convenience;
  7005. * the width and height can also be read separately as SInt32s via
  7006. * kICMImageDescriptionPropertyID_EncodedWidth and
  7007. * kICMImageDescriptionPropertyID_EncodedHeight.
  7008. */
  7009. kICMImageDescriptionPropertyID_EncodedPixelsDimensions = FOUR_CHAR_CODE('endi'), /* FixedPoint, Read */
  7010. /*
  7011. * A width at which the image could be displayed on a square-pixel
  7012. * display, possibly calculated using the clean aperture and pixel
  7013. * aspect ratio.
  7014. */
  7015. kICMImageDescriptionPropertyID_CleanApertureDisplayWidth = FOUR_CHAR_CODE('disw'), /* SInt32, Read */
  7016. /*
  7017. * A height at which the image could be displayed on a square-pixel
  7018. * display, possibly calculated using the clean aperture and pixel
  7019. * aspect ratio.
  7020. */
  7021. kICMImageDescriptionPropertyID_CleanApertureDisplayHeight = FOUR_CHAR_CODE('dish'), /* SInt32, Read */
  7022. /*
  7023. * A width at which the image could be displayed on a square-pixel
  7024. * display, disregarding any clean aperture but honoring the pixel
  7025. * aspect ratio. This may be useful for authoring applications that
  7026. * want to expose the edge processing region. For general viewing,
  7027. * use kICMImageDescriptionPropertyID_CleanApertureDisplayWidth
  7028. * instead.
  7029. */
  7030. kICMImageDescriptionPropertyID_ProductionApertureDisplayWidth = FOUR_CHAR_CODE('pdsw'), /* SInt32, Read */
  7031. /*
  7032. * A height at which the image could be displayed on a square-pixel
  7033. * display, disregarding any clean aperture but honoring the pixel
  7034. * aspect ratio. This may be useful for authoring applications that
  7035. * want to expose the edge processing region. For general viewing,
  7036. * use kICMImageDescriptionPropertyID_CleanApertureDisplayHeight
  7037. * instead.
  7038. */
  7039. kICMImageDescriptionPropertyID_ProductionApertureDisplayHeight = FOUR_CHAR_CODE('pdsh'), /* SInt32, Read */
  7040. /*
  7041. * Synonym for
  7042. * kICMImageDescriptionPropertyID_CleanApertureDisplayWidth.
  7043. */
  7044. kICMImageDescriptionPropertyID_DisplayWidth = FOUR_CHAR_CODE('disw'), /* SInt32, Read */
  7045. /*
  7046. * Synonym for
  7047. * kICMImageDescriptionPropertyID_CleanApertureDisplayHeight.
  7048. */
  7049. kICMImageDescriptionPropertyID_DisplayHeight = FOUR_CHAR_CODE('dish'), /* SInt32, Read */
  7050. /*
  7051. * Synonym for
  7052. * kICMImageDescriptionPropertyID_ProductionApertureDisplayWidth.
  7053. */
  7054. kICMImageDescriptionPropertyID_ProductionDisplayWidth = FOUR_CHAR_CODE('pdsw'), /* SInt32, Read */
  7055. /*
  7056. * Synonym for
  7057. * kICMImageDescriptionPropertyID_ProductionApertureDisplayHeight.
  7058. */
  7059. kICMImageDescriptionPropertyID_ProductionDisplayHeight = FOUR_CHAR_CODE('pdsh'), /* SInt32, Read */
  7060. /*
  7061. * Color information, if available in the
  7062. * NCLCColorInfoImageDescriptionExtension format.
  7063. */
  7064. kICMImageDescriptionPropertyID_NCLCColorInfo = FOUR_CHAR_CODE('nclc'), /* Native-endian NCLCColorInfoImageDescriptionExtension, Read/Write */
  7065. /*
  7066. * A CGColorSpaceRef for the colorspace described by the image
  7067. * description, constructed from video color info or ICC Profile.
  7068. * IMPORTANT NOTE: The YCbCr matrix from the video color info is not
  7069. * represented in the CGColorSpaceRef. The caller of GetProperty is
  7070. * responsible for releasing this, eg, by calling
  7071. * CGColorSpaceRelease. Only supported on Mac OS X.
  7072. */
  7073. kICMImageDescriptionPropertyID_CGColorSpace = FOUR_CHAR_CODE('cgcs'), /* CGColorSpaceRef, Read -- caller of GetProperty must call CGColorSpaceRelease */
  7074. /*
  7075. * A CFDataRef containing the serialized ICC profile described by the
  7076. * image description. The caller of GetProperty is responsible for
  7077. * releasing this, eg, by calling CFRelease.
  7078. */
  7079. kICMImageDescriptionPropertyID_ICCProfile = FOUR_CHAR_CODE('iccp'), /* CFDataRef, Read/Write -- caller of GetProperty must call CFRelease */
  7080. /*
  7081. * The gamma level described by the image description.
  7082. */
  7083. kICMImageDescriptionPropertyID_GammaLevel = FOUR_CHAR_CODE('gama'), /* Fixed, Read/Write */
  7084. /*
  7085. * Information about the number and order of fields, if available.
  7086. */
  7087. kICMImageDescriptionPropertyID_FieldInfo = FOUR_CHAR_CODE('fiel'), /* FieldInfoImageDescriptionExtension2, Read/Write */
  7088. /*
  7089. * The offset in bytes from the start of one row to the next. Only
  7090. * valid if the codec type is a chunky pixel format.
  7091. */
  7092. kICMImageDescriptionPropertyID_RowBytes = FOUR_CHAR_CODE('rowb'), /* SInt32, Read/Write */
  7093. /*
  7094. * A track width suitable for passing to NewMovieTrack when creating
  7095. * a new track to hold this image data.
  7096. */
  7097. kICMImageDescriptionPropertyID_ClassicTrackWidth = FOUR_CHAR_CODE('claw'), /* Fixed, Read */
  7098. /*
  7099. * A track height suitable for passing to NewMovieTrack when creating
  7100. * a new track to hold this image data.
  7101. */
  7102. kICMImageDescriptionPropertyID_ClassicTrackHeight = FOUR_CHAR_CODE('clah'), /* Fixed, Read */
  7103. /*
  7104. * Defines a duration for quantizing time. This is applicable for
  7105. * cases where a single media sample generates visual output that
  7106. * varies continuously through its duration. By interpreting this
  7107. * property, such a sample may be considered to have internal "step
  7108. * points" at multiples of the stepping duration. This can be used to
  7109. * throttle frame generation during playback, and when stepping using
  7110. * InterestingTime APIs. Setting a step duration with value zero
  7111. * removes any current step duration.
  7112. */
  7113. kICMImageDescriptionPropertyID_StepDuration = FOUR_CHAR_CODE('step'), /* TimeRecord (base ignored), Read/Write */
  7114. /*
  7115. * The clean aperture as a FixedRect in source coordinates, within
  7116. * the rectangle defined by the image description width and height,
  7117. * suitable for use as a source rectangle in a decompression
  7118. * sequence.
  7119. * For historical reasons, the DVCPROHD codecs store the production
  7120. * aperture display dimensions in the image description width and
  7121. * height; the actual encoded dimensions are smaller. For DVCPROHD,
  7122. * the clip rect will be relative to the image description width and
  7123. * height, not the encoded dimensions.
  7124. */
  7125. kICMImageDescriptionPropertyID_CleanApertureClipRect = FOUR_CHAR_CODE('cacr'), /* FixedRect, Read */
  7126. /*
  7127. * A matrix transforming the clean aperture clip rect to the origin,
  7128. * scaled to the clean aperture display dimensions.
  7129. * For historical reasons, the DVCPROHD codecs store the production
  7130. * aperture display dimensions in the image description width and
  7131. * height; the actual encoded dimensions are smaller. For DVCPROHD,
  7132. * the matrix will be relative to the image description width and
  7133. * height, not the encoded dimensions.
  7134. */
  7135. kICMImageDescriptionPropertyID_CleanApertureMatrix = FOUR_CHAR_CODE('camx'), /* MatrixRecord, Read */
  7136. /*
  7137. * A matrix transforming the image to the origin, scaled to the
  7138. * production aperture display dimensions.
  7139. * For historical reasons, the DVCPROHD codecs store the production
  7140. * aperture display dimensions in the image description width and
  7141. * height; the actual encoded dimensions are smaller. For DVCPROHD,
  7142. * the matrix will be relative to the image description width and
  7143. * height, not the encoded dimensions.
  7144. */
  7145. kICMImageDescriptionPropertyID_ProductionApertureMatrix = FOUR_CHAR_CODE('pamx'), /* MatrixRecord, Read */
  7146. /*
  7147. * A localized, human readable string summarizing the image as a
  7148. * CFString, ie: "Apple DV, 720 x 480 (640 x 480), Millions".
  7149. * The elements are: the codec name, the encoded pixels dimensions,
  7150. * then parenthetically the clean aperture mode dimensions, but only
  7151. * if they are different from the encoded pixels dimensions; then the
  7152. * depth.
  7153. * The codec name shall be from the localized decompressor component
  7154. * name string if exactly one decompressor with the correct cType is
  7155. * available; otherwise the string in the image description shall be
  7156. * used. The caller of GetProperty is responsible for releasing this
  7157. * CFString, eg, by calling CFRelease.
  7158. */
  7159. kICMImageDescriptionPropertyID_SummaryString = FOUR_CHAR_CODE('isum') /* CFStringRef, Read - caller of GetProperty must call CFRelease*/
  7160. };
  7161. /*
  7162. * ICMImageDescriptionGetPropertyInfo()
  7163. *
  7164. * Summary:
  7165. * Gets info about a particular property of a ImageDescription.
  7166. *
  7167. * Parameters:
  7168. *
  7169. * inDesc:
  7170. * ImageDescriptionHandle being interrogated
  7171. *
  7172. * inPropClass:
  7173. * The class of property being requested
  7174. *
  7175. * inPropID:
  7176. * The ID of the property being requested
  7177. *
  7178. * outPropType:
  7179. * The type of property is returned here (can be NULL)
  7180. *
  7181. * outPropValueSize:
  7182. * The size of property is returned here (can be NULL)
  7183. *
  7184. * outPropertyFlags:
  7185. * The property flags are returned here (can be NULL)
  7186. *
  7187. * Availability:
  7188. * Non-Carbon CFM: not available
  7189. * CarbonLib: not available
  7190. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7191. */
  7192. EXTERN_API_C( OSStatus )
  7193. ICMImageDescriptionGetPropertyInfo(
  7194. ImageDescriptionHandle inDesc,
  7195. ComponentPropertyClass inPropClass,
  7196. ComponentPropertyID inPropID,
  7197. ComponentValueType * outPropType, /* can be NULL */
  7198. ByteCount * outPropValueSize, /* can be NULL */
  7199. UInt32 * outPropertyFlags); /* can be NULL */
  7200. /*
  7201. * ICMImageDescriptionGetProperty()
  7202. *
  7203. * Summary:
  7204. * Gets a particular property of a ImageDescriptionHandle.
  7205. *
  7206. * Parameters:
  7207. *
  7208. * inDesc:
  7209. * ImageDescriptionHandle being interrogated
  7210. *
  7211. * inPropClass:
  7212. * The class of property being requested
  7213. *
  7214. * inPropID:
  7215. * The ID of the property being requested
  7216. *
  7217. * inPropValueSize:
  7218. * The size of the property value buffer
  7219. *
  7220. * outPropValueAddress:
  7221. * Points to the buffer to receive the property value
  7222. *
  7223. * outPropValueSizeUsed:
  7224. * Points to a variable to receive the actual size of returned
  7225. * property value (can be NULL)
  7226. *
  7227. * Availability:
  7228. * Non-Carbon CFM: not available
  7229. * CarbonLib: not available
  7230. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7231. */
  7232. EXTERN_API_C( OSStatus )
  7233. ICMImageDescriptionGetProperty(
  7234. ImageDescriptionHandle inDesc,
  7235. ComponentPropertyClass inPropClass,
  7236. ComponentPropertyID inPropID,
  7237. ByteCount inPropValueSize,
  7238. ComponentValuePtr outPropValueAddress,
  7239. ByteCount * outPropValueSizeUsed); /* can be NULL */
  7240. /*
  7241. * ICMImageDescriptionSetProperty()
  7242. *
  7243. * Summary:
  7244. * Sets a particular property of a ImageDescriptionHandle.
  7245. *
  7246. * Parameters:
  7247. *
  7248. * inDesc:
  7249. * ImageDescriptionHandle being modified
  7250. *
  7251. * inPropClass:
  7252. * The class of property being set
  7253. *
  7254. * inPropID:
  7255. * The ID of the property being set
  7256. *
  7257. * inPropValueSize:
  7258. * The size of property value
  7259. *
  7260. * inPropValueAddress:
  7261. * Points to the property value buffer
  7262. *
  7263. * Availability:
  7264. * Non-Carbon CFM: not available
  7265. * CarbonLib: not available
  7266. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7267. */
  7268. EXTERN_API_C( OSStatus )
  7269. ICMImageDescriptionSetProperty(
  7270. ImageDescriptionHandle inDesc,
  7271. ComponentPropertyClass inPropClass,
  7272. ComponentPropertyID inPropID,
  7273. ByteCount inPropValueSize,
  7274. ConstComponentValuePtr inPropValueAddress);
  7275. /*
  7276. * ICMValidTimeFlags
  7277. *
  7278. * Summary:
  7279. * Flags to describe which time values are valid.
  7280. */
  7281. typedef UInt32 ICMValidTimeFlags;
  7282. enum {
  7283. /*
  7284. * Indicates that a display time stamp is valid.
  7285. */
  7286. kICMValidTime_DisplayTimeStampIsValid = 1L << 0,
  7287. /*
  7288. * Indicates that a display duration is valid.
  7289. */
  7290. kICMValidTime_DisplayDurationIsValid = 1L << 1,
  7291. /*
  7292. * Indicates that a decode time stamp is valid.
  7293. */
  7294. kICMValidTime_DecodeTimeStampIsValid = 1L << 2,
  7295. /*
  7296. * Indicates that a decode duration is valid.
  7297. */
  7298. kICMValidTime_DecodeDurationIsValid = 1L << 3,
  7299. /*
  7300. * Indicates that a display offset (the offset from a decode time
  7301. * stamp to a display time stamp) is valid.
  7302. */
  7303. kICMValidTime_DisplayOffsetIsValid = 1L << 4
  7304. };
  7305. /*
  7306. * ICMDecompressionSessionRef
  7307. *
  7308. * Summary:
  7309. * Represents a decompression session that emits CVPixelBufferRefs
  7310. * containing frames, tagged with display times.
  7311. *
  7312. * Discussion:
  7313. * ICMDecompressionSession does not support source extraction,
  7314. * matrix transformations, graphics transfer modes, region-based
  7315. * clipping or data-loading procedures. Note that the pixel buffers
  7316. * may be output out of display order, provided that the client opts
  7317. * in.
  7318. */
  7319. typedef struct OpaqueICMDecompressionSession* ICMDecompressionSessionRef;
  7320. /*
  7321. * QTVisualContextRef
  7322. *
  7323. * Summary:
  7324. * Represents a destination visual rendering environment.
  7325. *
  7326. * Discussion:
  7327. * The QTVisualContextRef type encapsulates a connection to a
  7328. * generic visual destination. A single visual context object may
  7329. * not be associated with more than one movie at a time.
  7330. */
  7331. typedef struct OpaqueQTVisualContext* QTVisualContextRef;
  7332. /*
  7333. * ICMDecompressionSessionOptionsRef
  7334. *
  7335. * Summary:
  7336. * Holds options for a decompression session.
  7337. */
  7338. typedef struct OpaqueICMDecompressionSessionOptions* ICMDecompressionSessionOptionsRef;
  7339. /*
  7340. * ICMDecompressionFrameOptionsRef
  7341. *
  7342. * Summary:
  7343. * Holds options for decompressing an individual frame.
  7344. */
  7345. typedef struct OpaqueICMDecompressionFrameOptions* ICMDecompressionFrameOptionsRef;
  7346. /*
  7347. * ICMDecompressionTrackingFlags
  7348. *
  7349. * Summary:
  7350. * Describes changes in state of a frame queued with an ICM
  7351. * decompression session.
  7352. */
  7353. typedef UInt32 ICMDecompressionTrackingFlags;
  7354. enum {
  7355. /*
  7356. * Indicates that this is the last call for this sourceFrameRefCon.
  7357. */
  7358. kICMDecompressionTracking_LastCall = 1L << 0,
  7359. /*
  7360. * Indicates that the session no longer needs the source data pointer.
  7361. */
  7362. kICMDecompressionTracking_ReleaseSourceData = 1L << 1,
  7363. /*
  7364. * Indicates that a frame is being emitted. The pixelBuffer parameter
  7365. * contains the decompressed frame. If the decompression session is
  7366. * targetting a visual context, the frame has not yet been sent to
  7367. * the visual context but will be after the callback returns.
  7368. */
  7369. kICMDecompressionTracking_EmittingFrame = 1L << 2,
  7370. /*
  7371. * Indicates that this frame was decoded.
  7372. */
  7373. kICMDecompressionTracking_FrameDecoded = 1L << 3,
  7374. /*
  7375. * Indicates that the codec decided to drop this frame.
  7376. */
  7377. kICMDecompressionTracking_FrameDropped = 1L << 4,
  7378. /*
  7379. * Indicates that this frame will not be able to be displayed unless
  7380. * it is queued for redecode (also known as FrameNotDisplayable).
  7381. */
  7382. kICMDecompressionTracking_FrameNeedsRequeueing = 1L << 5
  7383. };
  7384. /*
  7385. * ICMDecompressionTrackingCallback
  7386. *
  7387. * Summary:
  7388. * The callback through which a client of an ICM decompression
  7389. * session receives decoded frames and information about decoding.
  7390. *
  7391. * Discussion:
  7392. * The client may retain the emitted pixel buffers as long as it
  7393. * needs; they will not be reused before the client releases them.
  7394. *
  7395. * Parameters:
  7396. *
  7397. * decompressionTrackingRefCon:
  7398. * The callback's reference value, copied from the
  7399. * decompressionTrackingRefCon field of the
  7400. * ICMDecompressionTrackingCallbackRecord structure.
  7401. *
  7402. * result:
  7403. * Indicates whether there was an error in decompression.
  7404. *
  7405. * decompressionTrackingFlags:
  7406. * One or more flags describing the a frame's state transitions.
  7407. *
  7408. * pixelBuffer:
  7409. * When the kICMDecompressionTracking_EmittingFrame flag is set in
  7410. * decompressionTrackingFlags, a pixel buffer containing the
  7411. * decompressed frame. Otherwise, NULL.
  7412. *
  7413. * displayTime:
  7414. * If kICMValidTime_DisplayTimeStampIsValid is set in
  7415. * validTimeFlags, the display time of the frame.
  7416. *
  7417. * displayDuration:
  7418. * If kICMValidTime_DisplayDurationIsValid is set in
  7419. * validTimeFlags, the display duration of the frame.
  7420. *
  7421. * validTimeFlags:
  7422. * Indicates which of displayTime and displayDuration is valid.
  7423. *
  7424. * reserved:
  7425. * Reserved for future use. Ignore the value of this parameter.
  7426. *
  7427. * sourceFrameRefCon:
  7428. * The frame's reference value, copied from the sourceFrameRefCon
  7429. * parameter to ICMDecompressionSessionDecodeFrame.
  7430. */
  7431. typedef CALLBACK_API_C( void , ICMDecompressionTrackingCallback )(void *decompressionTrackingRefCon, OSStatus result, ICMDecompressionTrackingFlags decompressionTrackingFlags, CVPixelBufferRef pixelBuffer, TimeValue64 displayTime, TimeValue64 displayDuration, ICMValidTimeFlags validTimeFlags, void *reserved, void *sourceFrameRefCon);
  7432. /*
  7433. * ICMDecompressionTrackingCallbackRecord
  7434. *
  7435. * Summary:
  7436. * A tracking callback for an ICM decompression session.
  7437. */
  7438. struct ICMDecompressionTrackingCallbackRecord {
  7439. /*
  7440. * The callback function pointer.
  7441. */
  7442. ICMDecompressionTrackingCallback decompressionTrackingCallback;
  7443. /*
  7444. * The callback's reference value.
  7445. */
  7446. void * decompressionTrackingRefCon;
  7447. };
  7448. typedef struct ICMDecompressionTrackingCallbackRecord ICMDecompressionTrackingCallbackRecord;
  7449. /*
  7450. * ICMDecompressionSessionCreate()
  7451. *
  7452. * Summary:
  7453. * Creates a session for decompressing video frames.
  7454. *
  7455. * Discussion:
  7456. * Frames will be output through calls to trackingCallback.
  7457. *
  7458. * Parameters:
  7459. *
  7460. * allocator:
  7461. * An allocator for the session. Pass NULL to use the default
  7462. * allocator.
  7463. *
  7464. * desc:
  7465. * An image description for the source frames.
  7466. *
  7467. * decompressionOptions:
  7468. * Options for the session. The session will retain this options
  7469. * object. You may change some options during the session by
  7470. * modifying the object.
  7471. *
  7472. * destinationPixelBufferAttributes:
  7473. * Describes requirements for emitted pixel buffers.
  7474. *
  7475. * trackingCallback:
  7476. * The callback to be called with information about queued frames,
  7477. * and pixel buffers containing the decompressed frames.
  7478. *
  7479. * decompressionSessionOut:
  7480. * Points to a variable to receive the new decompression session.
  7481. *
  7482. * Availability:
  7483. * Non-Carbon CFM: not available
  7484. * CarbonLib: not available
  7485. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7486. */
  7487. EXTERN_API_C( OSStatus )
  7488. ICMDecompressionSessionCreate(
  7489. CFAllocatorRef allocator, /* can be NULL */
  7490. ImageDescriptionHandle desc,
  7491. ICMDecompressionSessionOptionsRef decompressionOptions, /* can be NULL */
  7492. CFDictionaryRef destinationPixelBufferAttributes, /* can be NULL */
  7493. ICMDecompressionTrackingCallbackRecord * trackingCallback,
  7494. ICMDecompressionSessionRef * decompressionSessionOut);
  7495. /*
  7496. * ICMDecompressionSessionCreateForVisualContext()
  7497. *
  7498. * Summary:
  7499. * Creates a session for decompressing video frames.
  7500. *
  7501. * Discussion:
  7502. * Frames will be output to a visual context. If desired, the
  7503. * trackingCallback may attach additional data to pixel buffers
  7504. * before they are sent to the visual context.
  7505. *
  7506. * Parameters:
  7507. *
  7508. * allocator:
  7509. * An allocator for the session. Pass NULL to use the default
  7510. * allocator.
  7511. *
  7512. * desc:
  7513. * An image description for the source frames.
  7514. *
  7515. * decompressionOptions:
  7516. * Options for the session. The session will retain this options
  7517. * object. You may change some options during the session by
  7518. * modifying the object.
  7519. *
  7520. * visualContext:
  7521. * The target visual context.
  7522. *
  7523. * trackingCallback:
  7524. * The callback to be called with information about queued frames,
  7525. * and pixel buffers containing the decompressed frames.
  7526. *
  7527. * decompressionSessionOut:
  7528. * Points to a variable to receive the new decompression session.
  7529. *
  7530. * Availability:
  7531. * Non-Carbon CFM: not available
  7532. * CarbonLib: not available
  7533. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7534. */
  7535. EXTERN_API_C( OSStatus )
  7536. ICMDecompressionSessionCreateForVisualContext(
  7537. CFAllocatorRef allocator, /* can be NULL */
  7538. ImageDescriptionHandle desc,
  7539. ICMDecompressionSessionOptionsRef decompressionOptions, /* can be NULL */
  7540. QTVisualContextRef visualContext,
  7541. ICMDecompressionTrackingCallbackRecord * trackingCallback,
  7542. ICMDecompressionSessionRef * decompressionSessionOut);
  7543. /*
  7544. * ICMDecompressionSessionRetain()
  7545. *
  7546. * Summary:
  7547. * Increments the retain count of a decompression session.
  7548. *
  7549. * Discussion:
  7550. * If you pass NULL to this function, nothing happens.
  7551. *
  7552. * Availability:
  7553. * Non-Carbon CFM: not available
  7554. * CarbonLib: not available
  7555. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7556. */
  7557. EXTERN_API_C( ICMDecompressionSessionRef )
  7558. ICMDecompressionSessionRetain(ICMDecompressionSessionRef session);
  7559. /*
  7560. * ICMDecompressionSessionRelease()
  7561. *
  7562. * Summary:
  7563. * Decrements the retain count of a decompression session. If it
  7564. * drops to zero, the session is disposed.
  7565. *
  7566. * Discussion:
  7567. * If you pass NULL to this function, nothing happens.
  7568. *
  7569. * Availability:
  7570. * Non-Carbon CFM: not available
  7571. * CarbonLib: not available
  7572. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7573. */
  7574. EXTERN_API_C( void )
  7575. ICMDecompressionSessionRelease(ICMDecompressionSessionRef session);
  7576. /*
  7577. * ICMDecompressionSessionGetTypeID()
  7578. *
  7579. * Summary:
  7580. * Returns the CFTypeID for decompression sessions.
  7581. *
  7582. * Availability:
  7583. * Non-Carbon CFM: not available
  7584. * CarbonLib: not available
  7585. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7586. */
  7587. EXTERN_API_C( CFTypeID )
  7588. ICMDecompressionSessionGetTypeID(void);
  7589. /*
  7590. * ICMDecompressionSessionDecodeFrame()
  7591. *
  7592. * Summary:
  7593. * Queues a frame for decompression.
  7594. *
  7595. * Parameters:
  7596. *
  7597. * session:
  7598. * The decompression session.
  7599. *
  7600. * data:
  7601. * Points to the compressed data for this frame. The data must
  7602. * remain in this location until the tracking callback is called
  7603. * with the kICMDecompressionTracking_ReleaseSourceData flag set
  7604. * in decompressionTrackingFlags.
  7605. *
  7606. * dataSize:
  7607. * The number of bytes of compressed data. You may not pass zero
  7608. * in this parameter.
  7609. *
  7610. * frameOptions:
  7611. * Options for this frame.
  7612. *
  7613. * frameTime:
  7614. * Points to a structure describing the frame's timing information.
  7615. *
  7616. * sourceFrameRefCon:
  7617. * Your reference value for the frame.
  7618. *
  7619. * Availability:
  7620. * Non-Carbon CFM: not available
  7621. * CarbonLib: not available
  7622. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7623. */
  7624. EXTERN_API_C( OSStatus )
  7625. ICMDecompressionSessionDecodeFrame(
  7626. ICMDecompressionSessionRef session,
  7627. const UInt8 * data,
  7628. ByteCount dataSize,
  7629. ICMDecompressionFrameOptionsRef frameOptions, /* can be NULL */
  7630. const ICMFrameTimeRecord * frameTime,
  7631. void * sourceFrameRefCon);
  7632. /*
  7633. * ICMDecompressionSessionGetPropertyInfo()
  7634. *
  7635. * Summary:
  7636. * Retrieves information about properties of a decompression session.
  7637. *
  7638. * Availability:
  7639. * Non-Carbon CFM: not available
  7640. * CarbonLib: not available
  7641. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7642. */
  7643. EXTERN_API_C( OSStatus )
  7644. ICMDecompressionSessionGetPropertyInfo(
  7645. ICMDecompressionSessionRef session,
  7646. ComponentPropertyClass inPropClass,
  7647. ComponentPropertyID inPropID,
  7648. ComponentValueType * outPropType, /* can be NULL */
  7649. ByteCount * outPropValueSize, /* can be NULL */
  7650. UInt32 * outPropertyFlags); /* can be NULL */
  7651. /*
  7652. * ICMDecompressionSessionGetProperty()
  7653. *
  7654. * Summary:
  7655. * Retrieves the value of a specific property of a decompression
  7656. * session.
  7657. *
  7658. * Availability:
  7659. * Non-Carbon CFM: not available
  7660. * CarbonLib: not available
  7661. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7662. */
  7663. EXTERN_API_C( OSStatus )
  7664. ICMDecompressionSessionGetProperty(
  7665. ICMDecompressionSessionRef session,
  7666. ComponentPropertyClass inPropClass,
  7667. ComponentPropertyID inPropID,
  7668. ByteCount inPropValueSize,
  7669. ComponentValuePtr outPropValueAddress,
  7670. ByteCount * outPropValueSizeUsed); /* can be NULL */
  7671. /*
  7672. * ICMDecompressionSessionSetProperty()
  7673. *
  7674. * Summary:
  7675. * Sets the value of a specific property of a decompression session.
  7676. *
  7677. * Availability:
  7678. * Non-Carbon CFM: not available
  7679. * CarbonLib: not available
  7680. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7681. */
  7682. EXTERN_API_C( OSStatus )
  7683. ICMDecompressionSessionSetProperty(
  7684. ICMDecompressionSessionRef session,
  7685. ComponentPropertyClass inPropClass,
  7686. ComponentPropertyID inPropID,
  7687. ByteCount inPropValueSize,
  7688. ConstComponentValuePtr inPropValueAddress);
  7689. /*
  7690. * ICMNonScheduledDisplayTime
  7691. *
  7692. * Discussion:
  7693. * The display time for a decompression session.
  7694. */
  7695. struct ICMNonScheduledDisplayTime {
  7696. /*
  7697. * A display time. Usually this is the display time of a
  7698. * non-scheduled queued frame.
  7699. */
  7700. TimeValue64 displayTime;
  7701. /*
  7702. * The timescale according to which displayTime should be interpreted.
  7703. */
  7704. TimeScale displayTimeScale;
  7705. /*
  7706. * Reserved, set to zero.
  7707. */
  7708. UInt32 flags;
  7709. };
  7710. typedef struct ICMNonScheduledDisplayTime ICMNonScheduledDisplayTime;
  7711. /*
  7712. * Summary:
  7713. * Properties of decompression sessions.
  7714. */
  7715. enum {
  7716. /*
  7717. * Class identifier for decompression session properties.
  7718. */
  7719. kQTPropertyClass_ICMDecompressionSession = FOUR_CHAR_CODE('icds'),
  7720. /*
  7721. * The non-scheduled display time for a decompression session.
  7722. * Setting this requests display of the non-scheduled queued frame at
  7723. * that display time, if there is one.
  7724. * See ICMDecompressionSessionSetNonScheduledDisplayTime.
  7725. */
  7726. kICMDecompressionSessionPropertyID_NonScheduledDisplayTime = FOUR_CHAR_CODE('nsti'), /* ICMNonScheduledDisplayTime, Read/Write */
  7727. /*
  7728. * The direction for non-scheduled display time.
  7729. * See ICMDecompressionSessionSetNonScheduledDisplayDirection.
  7730. */
  7731. kICMDecompressionSessionPropertyID_NonScheduledDisplayDirection = FOUR_CHAR_CODE('nsdu'), /* Fixed, Read/Write */
  7732. /*
  7733. * The pixel buffer pool from which emitted pixel buffers are
  7734. * allocated. Getting this does not change the retain count of the
  7735. * pool.
  7736. */
  7737. kICMDecompressionSessionPropertyID_PixelBufferPool = FOUR_CHAR_CODE('pool'), /* CVPixelBufferPoolRef, Read */
  7738. /*
  7739. * Indicates whether the a common pixel buffer pool is shared between
  7740. * the decompressor and the session client. This is false if separate
  7741. * pools are used because the decompressor's and the client's pixel
  7742. * buffer attributes were incompatible.
  7743. */
  7744. kICMDecompressionSessionPropertyID_PixelBufferPoolIsShared = FOUR_CHAR_CODE('plsh') /* Boolean, Read */
  7745. };
  7746. /*
  7747. * ICMDecompressionSessionSetNonScheduledDisplayTime()
  7748. *
  7749. * Summary:
  7750. * Sets the display time for a decompression session, and requests
  7751. * display of the non-scheduled queued frame at that display time,
  7752. * if there is one.
  7753. *
  7754. * Discussion:
  7755. * Call ICMDecompressionSessionSetNonScheduledDisplayTime after
  7756. * queueing non-scheduled frames with
  7757. * ICMDecompressionSessionDecodeFrame with the
  7758. * icmFrameTimeIsNonScheduledDisplayTime flag set to request display
  7759. * of the frame at a particular display time.
  7760. * If there is no queued non-scheduled frame with this display time,
  7761. * the frame with the next earlier display time is displayed. (Which
  7762. * of two display times is earlier is determined using the
  7763. * non-scheduled display time direction, which you can set with
  7764. * ICMDecompressionSessionSetNonScheduledDisplayDirection.) If there
  7765. * is no such frame, nothing happens.
  7766. * This has no effect if frames are scheduled against a timebase.
  7767. *
  7768. * Parameters:
  7769. *
  7770. * session:
  7771. * The decompression session.
  7772. *
  7773. * displayTime:
  7774. * A display time. Usually this is the display time of a
  7775. * non-scheduled queued frame.
  7776. *
  7777. * displayTimeScale:
  7778. * The timescale according to which displayTime should be
  7779. * interpreted.
  7780. *
  7781. * flags:
  7782. * Reserved, set to zero.
  7783. *
  7784. * Availability:
  7785. * Non-Carbon CFM: not available
  7786. * CarbonLib: not available
  7787. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7788. */
  7789. EXTERN_API_C( OSStatus )
  7790. ICMDecompressionSessionSetNonScheduledDisplayTime(
  7791. ICMDecompressionSessionRef session,
  7792. TimeValue64 displayTime,
  7793. TimeScale displayTimeScale,
  7794. UInt32 flags);
  7795. /*
  7796. * ICMDecompressionSessionSetNonScheduledDisplayDirection()
  7797. *
  7798. * Summary:
  7799. * Sets the direction for non-scheduled display time.
  7800. *
  7801. * Discussion:
  7802. * If rate is zero or positive, direction is forwards. If negative,
  7803. * direction is backwards.
  7804. * Any frames queued under the opposite direction will be flushed.
  7805. *
  7806. * The non-scheduled display direction defaults to forwards (rate
  7807. * 1.0).
  7808. *
  7809. * Parameters:
  7810. *
  7811. * session:
  7812. * The decompression session.
  7813. *
  7814. * rate:
  7815. * Indicates the direction.
  7816. *
  7817. * Availability:
  7818. * Non-Carbon CFM: not available
  7819. * CarbonLib: not available
  7820. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7821. */
  7822. EXTERN_API_C( OSStatus )
  7823. ICMDecompressionSessionSetNonScheduledDisplayDirection(
  7824. ICMDecompressionSessionRef session,
  7825. Fixed rate);
  7826. /*
  7827. * ICMDecompressionSessionFlush()
  7828. *
  7829. * Summary:
  7830. * Flushes frames queued with a decompression session.
  7831. *
  7832. * Discussion:
  7833. * The tracking callback will be called for each frame with the
  7834. * result -1.
  7835. *
  7836. * Parameters:
  7837. *
  7838. * session:
  7839. * The decompression session.
  7840. *
  7841. * Availability:
  7842. * Non-Carbon CFM: not available
  7843. * CarbonLib: not available
  7844. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7845. */
  7846. EXTERN_API_C( OSStatus )
  7847. ICMDecompressionSessionFlush(ICMDecompressionSessionRef session);
  7848. /*
  7849. * ICMDecompressionSessionOptionsCreate()
  7850. *
  7851. * Summary:
  7852. * Creates a decompression session options object.
  7853. *
  7854. * Availability:
  7855. * Non-Carbon CFM: not available
  7856. * CarbonLib: not available
  7857. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7858. */
  7859. EXTERN_API_C( OSStatus )
  7860. ICMDecompressionSessionOptionsCreate(
  7861. CFAllocatorRef allocator, /* can be NULL */
  7862. ICMDecompressionSessionOptionsRef * options);
  7863. /*
  7864. * ICMDecompressionSessionOptionsCreateCopy()
  7865. *
  7866. * Summary:
  7867. * Copies a decompression session options object.
  7868. *
  7869. * Availability:
  7870. * Non-Carbon CFM: not available
  7871. * CarbonLib: not available
  7872. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7873. */
  7874. EXTERN_API_C( OSStatus )
  7875. ICMDecompressionSessionOptionsCreateCopy(
  7876. CFAllocatorRef allocator, /* can be NULL */
  7877. ICMDecompressionSessionOptionsRef originalOptions,
  7878. ICMDecompressionSessionOptionsRef * copiedOptions);
  7879. /*
  7880. * ICMDecompressionSessionOptionsRetain()
  7881. *
  7882. * Summary:
  7883. * Increments the retain count of a decompression session options
  7884. * object.
  7885. *
  7886. * Discussion:
  7887. * If you pass NULL to this function, nothing happens.
  7888. *
  7889. * Availability:
  7890. * Non-Carbon CFM: not available
  7891. * CarbonLib: not available
  7892. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7893. */
  7894. EXTERN_API_C( ICMDecompressionSessionOptionsRef )
  7895. ICMDecompressionSessionOptionsRetain(ICMDecompressionSessionOptionsRef options);
  7896. /*
  7897. * ICMDecompressionSessionOptionsRelease()
  7898. *
  7899. * Summary:
  7900. * Decrements the retain count of a decompression session options
  7901. * object. If it drops to zero, the object is disposed.
  7902. *
  7903. * Discussion:
  7904. * If you pass NULL to this function, nothing happens.
  7905. *
  7906. * Availability:
  7907. * Non-Carbon CFM: not available
  7908. * CarbonLib: not available
  7909. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7910. */
  7911. EXTERN_API_C( void )
  7912. ICMDecompressionSessionOptionsRelease(ICMDecompressionSessionOptionsRef options);
  7913. /*
  7914. * ICMDecompressionSessionOptionsGetTypeID()
  7915. *
  7916. * Summary:
  7917. * Returns the CFTypeID for decompression session options objects.
  7918. *
  7919. * Availability:
  7920. * Non-Carbon CFM: not available
  7921. * CarbonLib: not available
  7922. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7923. */
  7924. EXTERN_API_C( CFTypeID )
  7925. ICMDecompressionSessionOptionsGetTypeID(void);
  7926. /*
  7927. * ICMDecompressionSessionOptionsGetPropertyInfo()
  7928. *
  7929. * Summary:
  7930. * Retrieves information about properties of a decompression session
  7931. * options object.
  7932. *
  7933. * Availability:
  7934. * Non-Carbon CFM: not available
  7935. * CarbonLib: not available
  7936. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7937. */
  7938. EXTERN_API_C( OSStatus )
  7939. ICMDecompressionSessionOptionsGetPropertyInfo(
  7940. ICMDecompressionSessionOptionsRef options,
  7941. ComponentPropertyClass inPropClass,
  7942. ComponentPropertyID inPropID,
  7943. ComponentValueType * outPropType, /* can be NULL */
  7944. ByteCount * outPropValueSize, /* can be NULL */
  7945. UInt32 * outPropertyFlags); /* can be NULL */
  7946. /*
  7947. * ICMDecompressionSessionOptionsGetProperty()
  7948. *
  7949. * Summary:
  7950. * Retrieves the value of a specific property of a decompression
  7951. * session options object.
  7952. *
  7953. * Availability:
  7954. * Non-Carbon CFM: not available
  7955. * CarbonLib: not available
  7956. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7957. */
  7958. EXTERN_API_C( OSStatus )
  7959. ICMDecompressionSessionOptionsGetProperty(
  7960. ICMDecompressionSessionOptionsRef options,
  7961. ComponentPropertyClass inPropClass,
  7962. ComponentPropertyID inPropID,
  7963. ByteCount inPropValueSize,
  7964. ComponentValuePtr outPropValueAddress,
  7965. ByteCount * outPropValueSizeUsed); /* can be NULL */
  7966. /*
  7967. * ICMDecompressionSessionOptionsSetProperty()
  7968. *
  7969. * Summary:
  7970. * Sets the value of a specific property of a decompression session
  7971. * options object.
  7972. *
  7973. * Availability:
  7974. * Non-Carbon CFM: not available
  7975. * CarbonLib: not available
  7976. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  7977. */
  7978. EXTERN_API_C( OSStatus )
  7979. ICMDecompressionSessionOptionsSetProperty(
  7980. ICMDecompressionSessionOptionsRef options,
  7981. ComponentPropertyClass inPropClass,
  7982. ComponentPropertyID inPropID,
  7983. ByteCount inPropValueSize,
  7984. ConstComponentValuePtr inPropValueAddress);
  7985. /*
  7986. * Summary:
  7987. * Properties of decompression session options objects.
  7988. */
  7989. enum {
  7990. /*
  7991. * Class identifier for decompression session options object
  7992. * properties.
  7993. */
  7994. kQTPropertyClass_ICMDecompressionSessionOptions = FOUR_CHAR_CODE('idso'),
  7995. /*
  7996. * By default, this is true, meaning that frames must be output in
  7997. * display order. Set this to false to allow frames to be output in
  7998. * decode order rather than in display order.
  7999. */
  8000. kICMDecompressionSessionOptionsPropertyID_DisplayOrderRequired = FOUR_CHAR_CODE('dorq'), /* Boolean, Read/Write */
  8001. /*
  8002. * A specific decompressor component or component instance to be
  8003. * used, or one of the wildcards anyCodec, bestSpeedCodec,
  8004. * bestFidelityCodec, or bestCompressionCodec.
  8005. * By default, this is anyCodec.
  8006. */
  8007. kICMDecompressionSessionOptionsPropertyID_DecompressorComponent = FOUR_CHAR_CODE('imdc'), /* DecompressorComponent, Read/Write */
  8008. /*
  8009. * The decompression accuracy.
  8010. * The default accuracy is codecNormalQuality.
  8011. */
  8012. kICMDecompressionSessionOptionsPropertyID_Accuracy = FOUR_CHAR_CODE('acur'), /* CodecQ, Read/Write */
  8013. /*
  8014. * Requests special handling of fields. Not all codecs will obey this
  8015. * request; some codecs will only handle it at certain accuracy
  8016. * levels. Ignored for non-interlaced content.
  8017. */
  8018. kICMDecompressionSessionOptionsPropertyID_FieldMode = FOUR_CHAR_CODE('fiel'), /* ICMFieldMode, Read/Write */
  8019. /*
  8020. * The maximum number of buffers ahead of the current time that
  8021. * should be decompressed. Used in sessions that target visual
  8022. * contexts. By default, the number of buffers will be determined
  8023. * from the visual context.
  8024. */
  8025. kICMDecompressionSessionOptionsPropertyID_MaxBufferCount = FOUR_CHAR_CODE('m#bf'), /* UInt32, Read/Write */
  8026. /*
  8027. * The minimum time ahead of the current time that frames should be
  8028. * decompressed. Used in sessions that target visual contexts. By
  8029. * default, the output-ahead time will be determined from the visual
  8030. * context.
  8031. */
  8032. kICMDecompressionSessionOptionsPropertyID_OutputAheadTime = FOUR_CHAR_CODE('futu'), /* TimeRecord, Read/Write */
  8033. /*
  8034. * You can set the aperture mode property on a decompression session
  8035. * options object to indicate whether pixel buffers should be tagged
  8036. * to enable aspect ratio and clean aperture correction. The default
  8037. * aperture mode for a decompression session is clean aperture mode.
  8038. */
  8039. kICMDecompressionSessionOptionsPropertyID_ApertureMode = FOUR_CHAR_CODE('apmd') /* OSType, Read/Write */
  8040. };
  8041. /*
  8042. * ICMFieldMode
  8043. *
  8044. * Summary:
  8045. * Describes special field handling.
  8046. */
  8047. typedef UInt32 ICMFieldMode;
  8048. enum {
  8049. /*
  8050. * Both fields should be decompressed.
  8051. */
  8052. kICMFieldMode_BothFields = 0,
  8053. /*
  8054. * Only the top field should be decompressed, producing a half-height
  8055. * image.
  8056. */
  8057. kICMFieldMode_TopFieldOnly = 1,
  8058. /*
  8059. * Only the bottom field should be decompressed, producing a
  8060. * half-height image.
  8061. */
  8062. kICMFieldMode_BottomFieldOnly = 2,
  8063. /*
  8064. * Both fields should be decompressed, and then filtered to reduce
  8065. * interlacing artifacts.
  8066. */
  8067. kICMFieldMode_DeinterlaceFields = 3
  8068. };
  8069. /*
  8070. * ICMDecompressionFrameOptionsCreate()
  8071. *
  8072. * Summary:
  8073. * Creates a frame decompression options object.
  8074. *
  8075. * Availability:
  8076. * Non-Carbon CFM: not available
  8077. * CarbonLib: not available
  8078. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8079. */
  8080. EXTERN_API_C( OSStatus )
  8081. ICMDecompressionFrameOptionsCreate(
  8082. CFAllocatorRef allocator, /* can be NULL */
  8083. ICMDecompressionFrameOptionsRef * options);
  8084. /*
  8085. * ICMDecompressionFrameOptionsCreateCopy()
  8086. *
  8087. * Summary:
  8088. * Copies a frame decompression options object.
  8089. *
  8090. * Availability:
  8091. * Non-Carbon CFM: not available
  8092. * CarbonLib: not available
  8093. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8094. */
  8095. EXTERN_API_C( OSStatus )
  8096. ICMDecompressionFrameOptionsCreateCopy(
  8097. CFAllocatorRef allocator, /* can be NULL */
  8098. ICMDecompressionFrameOptionsRef originalOptions,
  8099. ICMDecompressionFrameOptionsRef * copiedOptions);
  8100. /*
  8101. * ICMDecompressionFrameOptionsRetain()
  8102. *
  8103. * Summary:
  8104. * Increments the retain count of a frame decompression options
  8105. * object.
  8106. *
  8107. * Discussion:
  8108. * If you pass NULL to this function, nothing happens.
  8109. *
  8110. * Availability:
  8111. * Non-Carbon CFM: not available
  8112. * CarbonLib: not available
  8113. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8114. */
  8115. EXTERN_API_C( ICMDecompressionFrameOptionsRef )
  8116. ICMDecompressionFrameOptionsRetain(ICMDecompressionFrameOptionsRef options);
  8117. /*
  8118. * ICMDecompressionFrameOptionsRelease()
  8119. *
  8120. * Summary:
  8121. * Decrements the retain count of a frame decompression options
  8122. * object. If it drops to zero, the object is disposed.
  8123. *
  8124. * Discussion:
  8125. * If you pass NULL to this function, nothing happens.
  8126. *
  8127. * Availability:
  8128. * Non-Carbon CFM: not available
  8129. * CarbonLib: not available
  8130. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8131. */
  8132. EXTERN_API_C( void )
  8133. ICMDecompressionFrameOptionsRelease(ICMDecompressionFrameOptionsRef options);
  8134. /*
  8135. * ICMDecompressionFrameOptionsGetTypeID()
  8136. *
  8137. * Summary:
  8138. * Returns the CFTypeID for frame decompression options objects.
  8139. *
  8140. * Availability:
  8141. * Non-Carbon CFM: not available
  8142. * CarbonLib: not available
  8143. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8144. */
  8145. EXTERN_API_C( CFTypeID )
  8146. ICMDecompressionFrameOptionsGetTypeID(void);
  8147. /*
  8148. * ICMDecompressionFrameOptionsGetPropertyInfo()
  8149. *
  8150. * Summary:
  8151. * Retrieves information about properties of a decompression frame
  8152. * options object.
  8153. *
  8154. * Availability:
  8155. * Non-Carbon CFM: not available
  8156. * CarbonLib: not available
  8157. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8158. */
  8159. EXTERN_API_C( OSStatus )
  8160. ICMDecompressionFrameOptionsGetPropertyInfo(
  8161. ICMDecompressionFrameOptionsRef options,
  8162. ComponentPropertyClass inPropClass,
  8163. ComponentPropertyID inPropID,
  8164. ComponentValueType * outPropType, /* can be NULL */
  8165. ByteCount * outPropValueSize, /* can be NULL */
  8166. UInt32 * outPropertyFlags); /* can be NULL */
  8167. /*
  8168. * ICMDecompressionFrameOptionsGetProperty()
  8169. *
  8170. * Summary:
  8171. * Retrieves the value of a specific property of a decompression
  8172. * frame options object.
  8173. *
  8174. * Availability:
  8175. * Non-Carbon CFM: not available
  8176. * CarbonLib: not available
  8177. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8178. */
  8179. EXTERN_API_C( OSStatus )
  8180. ICMDecompressionFrameOptionsGetProperty(
  8181. ICMDecompressionFrameOptionsRef options,
  8182. ComponentPropertyClass inPropClass,
  8183. ComponentPropertyID inPropID,
  8184. ByteCount inPropValueSize,
  8185. ComponentValuePtr outPropValueAddress,
  8186. ByteCount * outPropValueSizeUsed); /* can be NULL */
  8187. /*
  8188. * ICMDecompressionFrameOptionsSetProperty()
  8189. *
  8190. * Summary:
  8191. * Sets the value of a specific property of a decompression frame
  8192. * options object.
  8193. *
  8194. * Availability:
  8195. * Non-Carbon CFM: not available
  8196. * CarbonLib: not available
  8197. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8198. */
  8199. EXTERN_API_C( OSStatus )
  8200. ICMDecompressionFrameOptionsSetProperty(
  8201. ICMDecompressionFrameOptionsRef options,
  8202. ComponentPropertyClass inPropClass,
  8203. ComponentPropertyID inPropID,
  8204. ByteCount inPropValueSize,
  8205. ConstComponentValuePtr inPropValueAddress);
  8206. /*
  8207. * Summary:
  8208. * Properties of decompression frame options objects.
  8209. */
  8210. enum {
  8211. /*
  8212. * Class identifier for decompression frame options object properties.
  8213. */
  8214. kQTPropertyClass_ICMDecompressionFrameOptions = FOUR_CHAR_CODE('idfo'),
  8215. /*
  8216. * A specific pixel buffer that the frame should be decompressed
  8217. * into. Setting this circumvents the pixel buffer pool mechanism. If
  8218. * this buffer is not compatible with the codec's pixel buffer
  8219. * requirements, decompression will fail.
  8220. */
  8221. kICMDecompressionFrameOptionsPropertyID_DestinationPixelBuffer = FOUR_CHAR_CODE('cvpb') /* CVPixelBufferRef, Read/Write */
  8222. };
  8223. /*
  8224. * ICMCompressionSessionRef
  8225. *
  8226. * Summary:
  8227. * Represents a compression session for a sequence of images.
  8228. * B-frame capable.
  8229. */
  8230. typedef struct OpaqueICMCompressionSession* ICMCompressionSessionRef;
  8231. /*
  8232. * ICMEncodedFrameRef
  8233. *
  8234. * Summary:
  8235. * Represents a frame encoded by a compressor component and emitted
  8236. * by a compression session.
  8237. *
  8238. * Discussion:
  8239. * Compressor components have access to the mutable flavor of
  8240. * encoded frame object (ICMMutableEncodedFrameRef); compression
  8241. * session clients receive the read-only flavor
  8242. * (ICMMutableEncodedFrameRef).
  8243. */
  8244. typedef const struct OpaqueICMEncodedFrame* ICMEncodedFrameRef;
  8245. typedef struct OpaqueICMEncodedFrame* ICMMutableEncodedFrameRef;
  8246. /*
  8247. * ICMCompressionSessionOptionsRef
  8248. *
  8249. * Summary:
  8250. * An opaque struct which holds options to configure a compression
  8251. * session.
  8252. */
  8253. typedef struct OpaqueICMCompressionSessionOptions* ICMCompressionSessionOptionsRef;
  8254. /*
  8255. * ICMCompressionFrameOptionsRef
  8256. *
  8257. * Summary:
  8258. * A token which holds options to configure an individual frame
  8259. * during a compression session.
  8260. */
  8261. typedef struct OpaqueICMCompressionFrameOptions* ICMCompressionFrameOptionsRef;
  8262. /*
  8263. * ICMMultiPassStorageRef
  8264. *
  8265. * Summary:
  8266. * A mechanism for storing information for each frame of a multipass
  8267. * compression session.
  8268. *
  8269. * Discussion:
  8270. * The ICM provides default storage mechanisms using temporary
  8271. * files, but clients may override this with custom mechanisms.
  8272. */
  8273. typedef struct OpaqueICMMultiPassStorage* ICMMultiPassStorageRef;
  8274. /*
  8275. * ICMEncodedFrameOutputCallback
  8276. *
  8277. * Summary:
  8278. * The callback through which a client of an ICM compression session
  8279. * receives encoded frames.
  8280. *
  8281. * Discussion:
  8282. * During the encoded frame output callback, the ICM has a reference
  8283. * to the passed ICMEncodedFrame, but the ICM will release that
  8284. * reference afterwards; the callback should retain the encoded
  8285. * frame if the client wants to keep it after the callback returns.
  8286. *
  8287. * Parameters:
  8288. *
  8289. * encodedFrameOutputRefCon:
  8290. * The callback's reference value, copied from the
  8291. * encodedFrameOutputRefCon field of the
  8292. * ICMEncodedFrameOutputRecord.
  8293. *
  8294. * session:
  8295. * The compression session.
  8296. *
  8297. * error:
  8298. * Indicates whether there was an error.
  8299. *
  8300. * frame:
  8301. * The encoded frame.
  8302. *
  8303. * reserved:
  8304. * Reserved for future use. Ignore the value of this parameter.
  8305. *
  8306. * Result:
  8307. * If the callback returns an error, the compressor and ICM will
  8308. * stop emitting frames so that the error can be propogated back to
  8309. * the caller of ICMCompressionSessionEncodeFrame or
  8310. * ICMCompressionSessionCompleteFrames.
  8311. */
  8312. typedef CALLBACK_API_C( OSStatus , ICMEncodedFrameOutputCallback )(void *encodedFrameOutputRefCon, ICMCompressionSessionRef session, OSStatus error, ICMEncodedFrameRef frame, void *reserved);
  8313. /*
  8314. * ICMEncodedFrameOutputRecord
  8315. *
  8316. * Summary:
  8317. * Holds an encoded frame callback and reference value.
  8318. */
  8319. struct ICMEncodedFrameOutputRecord {
  8320. /*
  8321. * An encoded frame callback.
  8322. */
  8323. ICMEncodedFrameOutputCallback encodedFrameOutputCallback;
  8324. /*
  8325. * The reference value for the encoded frame callback.
  8326. */
  8327. void * encodedFrameOutputRefCon;
  8328. /*
  8329. * The allocator for encoded frame data. Pass NULL if you do not need
  8330. * a specific allocator.
  8331. */
  8332. CFAllocatorRef frameDataAllocator;
  8333. };
  8334. typedef struct ICMEncodedFrameOutputRecord ICMEncodedFrameOutputRecord;
  8335. /*
  8336. * ICMSourceTrackingFlags
  8337. *
  8338. */
  8339. typedef UInt32 ICMSourceTrackingFlags;
  8340. enum {
  8341. /*
  8342. * Indicates that this is the last call for this sourceFrameRefCon.
  8343. */
  8344. kICMSourceTracking_LastCall = 1L << 0,
  8345. /*
  8346. * Indicates that the session is done with the source pixel buffer
  8347. * and has released any reference to it that it had.
  8348. */
  8349. kICMSourceTracking_ReleasedPixelBuffer = 1L << 1,
  8350. /*
  8351. * Indicates that this frame was encoded.
  8352. */
  8353. kICMSourceTracking_FrameWasEncoded = 1L << 2,
  8354. /*
  8355. * Indicates that this frame was dropped.
  8356. */
  8357. kICMSourceTracking_FrameWasDropped = 1L << 3,
  8358. /*
  8359. * Indicates that this frame was merged into other frames.
  8360. */
  8361. kICMSourceTracking_FrameWasMerged = 1L << 4,
  8362. /*
  8363. * Indicates that the time stamp of this frame was modified.
  8364. */
  8365. kICMSourceTracking_FrameTimeWasChanged = 1L << 5,
  8366. /*
  8367. * Indicates that the ICM has copied the image from the source pixel
  8368. * buffer into another pixel buffer because the source pixel buffer
  8369. * was not compatible with the compressor's required pixel buffer
  8370. * attributes.
  8371. */
  8372. kICMSourceTracking_CopiedPixelBuffer = 1L << 6
  8373. };
  8374. /*
  8375. * ICMSourceTrackingCallback
  8376. *
  8377. * Summary:
  8378. * A callback which the ICM calls to provide information about the
  8379. * status of a frame that was passed to
  8380. * ICMCompressionSessionEncodeFrame.
  8381. *
  8382. * Discussion:
  8383. * Note that this callback may be called several times.
  8384. *
  8385. * Parameters:
  8386. *
  8387. * sourceTrackingRefCon:
  8388. * The callback's reference value, copied from the
  8389. * sourceTrackingRefCon field of ICMSourceTrackingCallbackRecord.
  8390. *
  8391. * sourceTrackingFlags:
  8392. * Flags describing what has happened to the frame.
  8393. *
  8394. * sourceFrameRefCon:
  8395. * The frame's reference value, copied from the sourceFrameRefCon
  8396. * parameter to ICMCompressionSessionEncodeFrame.
  8397. *
  8398. * reserved:
  8399. * Reserved for future use. Ignore the value of this parameter.
  8400. */
  8401. typedef CALLBACK_API_C( void , ICMSourceTrackingCallback )(void *sourceTrackingRefCon, ICMSourceTrackingFlags sourceTrackingFlags, void *sourceFrameRefCon, void *reserved);
  8402. /*
  8403. * ICMSourceTrackingCallbackRecord
  8404. *
  8405. * Summary:
  8406. * A tracking callback for an ICM compression session.
  8407. */
  8408. struct ICMSourceTrackingCallbackRecord {
  8409. /*
  8410. * The callback function pointer.
  8411. */
  8412. ICMSourceTrackingCallback sourceTrackingCallback;
  8413. /*
  8414. * The callback's reference value.
  8415. */
  8416. void * sourceTrackingRefCon;
  8417. };
  8418. typedef struct ICMSourceTrackingCallbackRecord ICMSourceTrackingCallbackRecord;
  8419. /*
  8420. * ICMFrameType
  8421. *
  8422. * Summary:
  8423. * Informally identifies a type of frame.
  8424. *
  8425. * Discussion:
  8426. * Do not assume that there are no other frame types beyond I, P and
  8427. * B.
  8428. */
  8429. typedef UInt16 ICMFrameType;
  8430. enum {
  8431. kICMFrameType_I = 'I',
  8432. kICMFrameType_P = 'P',
  8433. kICMFrameType_B = 'B',
  8434. kICMFrameType_Unknown = 0
  8435. };
  8436. /* ICMCompressionSessionRef routines */
  8437. /*
  8438. * ICMCompressionSessionCreate()
  8439. *
  8440. * Summary:
  8441. * Creates a compression session for the given codec type.
  8442. *
  8443. * Discussion:
  8444. * Some compressors do not support arbitrary source dimensions, and
  8445. * may override the suggested width and height.
  8446. *
  8447. * Parameters:
  8448. *
  8449. * allocator:
  8450. * An allocator for the session. Pass NULL to use the default
  8451. * allocator.
  8452. *
  8453. * width:
  8454. * The width of frames.
  8455. *
  8456. * height:
  8457. * The height of frames.
  8458. *
  8459. * cType:
  8460. * The codec type.
  8461. *
  8462. * timescale:
  8463. * The timescale to be used for all timestamps and durations used
  8464. * in the session.
  8465. *
  8466. * compressionOptions:
  8467. * Settings configuring the session.
  8468. *
  8469. * sourcePixelBufferAttributes:
  8470. * Required attributes for source pixel buffers, used when
  8471. * creating a pixel buffer pool for source frames. If you do not
  8472. * want the ICM to create one for you, pass NULL. (Using pixel
  8473. * buffers not allocated by the ICM may increase the chance that
  8474. * it will be necessary to copy image data.)
  8475. *
  8476. * encodedFrameOutputRecord:
  8477. * The callback that will receive encoded frames.
  8478. *
  8479. * compressionSessionOut:
  8480. * Points to a variable to receive the created session object.
  8481. *
  8482. * Availability:
  8483. * Non-Carbon CFM: not available
  8484. * CarbonLib: not available
  8485. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8486. */
  8487. EXTERN_API_C( OSStatus )
  8488. ICMCompressionSessionCreate(
  8489. CFAllocatorRef allocator, /* can be NULL */
  8490. int width,
  8491. int height,
  8492. CodecType cType,
  8493. TimeScale timescale,
  8494. ICMCompressionSessionOptionsRef compressionOptions, /* can be NULL */
  8495. CFDictionaryRef sourcePixelBufferAttributes, /* can be NULL */
  8496. ICMEncodedFrameOutputRecord * encodedFrameOutputRecord,
  8497. ICMCompressionSessionRef * compressionSessionOut);
  8498. /*
  8499. * ICMCompressionSessionRetain()
  8500. *
  8501. * Summary:
  8502. * Increments the retain count of a compression session.
  8503. *
  8504. * Discussion:
  8505. * If you pass NULL to this function, nothing happens.
  8506. *
  8507. * Availability:
  8508. * Non-Carbon CFM: not available
  8509. * CarbonLib: not available
  8510. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8511. */
  8512. EXTERN_API_C( ICMCompressionSessionRef )
  8513. ICMCompressionSessionRetain(ICMCompressionSessionRef session);
  8514. /*
  8515. * ICMCompressionSessionRelease()
  8516. *
  8517. * Summary:
  8518. * Decrements the retain count of a compression session. If it
  8519. * drops to zero, the session is disposed.
  8520. *
  8521. * Discussion:
  8522. * If you pass NULL to this function, nothing happens. Remember to
  8523. * call ICMCompressionSessionCompleteFrames first if you want to
  8524. * ensure any pending frames are emitted. If you do not, they will
  8525. * be discarded.
  8526. *
  8527. * Availability:
  8528. * Non-Carbon CFM: not available
  8529. * CarbonLib: not available
  8530. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8531. */
  8532. EXTERN_API_C( void )
  8533. ICMCompressionSessionRelease(ICMCompressionSessionRef session);
  8534. /*
  8535. * ICMCompressionSessionGetTypeID()
  8536. *
  8537. * Summary:
  8538. * Returns the CFTypeID for compression sessions.
  8539. *
  8540. * Availability:
  8541. * Non-Carbon CFM: not available
  8542. * CarbonLib: not available
  8543. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8544. */
  8545. EXTERN_API_C( CFTypeID )
  8546. ICMCompressionSessionGetTypeID(void);
  8547. /*
  8548. * ICMCompressionSessionGetPropertyInfo()
  8549. *
  8550. * Summary:
  8551. * Retrieves information about properties of a compression session.
  8552. *
  8553. * Availability:
  8554. * Non-Carbon CFM: not available
  8555. * CarbonLib: not available
  8556. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8557. */
  8558. EXTERN_API_C( OSStatus )
  8559. ICMCompressionSessionGetPropertyInfo(
  8560. ICMCompressionSessionRef session,
  8561. ComponentPropertyClass inPropClass,
  8562. ComponentPropertyID inPropID,
  8563. ComponentValueType * outPropType, /* can be NULL */
  8564. ByteCount * outPropValueSize, /* can be NULL */
  8565. UInt32 * outPropertyFlags); /* can be NULL */
  8566. /*
  8567. * ICMCompressionSessionGetProperty()
  8568. *
  8569. * Summary:
  8570. * Retrieves the value of a specific property of a compression
  8571. * session.
  8572. *
  8573. * Availability:
  8574. * Non-Carbon CFM: not available
  8575. * CarbonLib: not available
  8576. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8577. */
  8578. EXTERN_API_C( OSStatus )
  8579. ICMCompressionSessionGetProperty(
  8580. ICMCompressionSessionRef session,
  8581. ComponentPropertyClass inPropClass,
  8582. ComponentPropertyID inPropID,
  8583. ByteCount inPropValueSize,
  8584. ComponentValuePtr outPropValueAddress,
  8585. ByteCount * outPropValueSizeUsed); /* can be NULL */
  8586. /*
  8587. * ICMCompressionSessionSetProperty()
  8588. *
  8589. * Summary:
  8590. * Sets the value of a specific property of a compression session.
  8591. *
  8592. * Availability:
  8593. * Non-Carbon CFM: not available
  8594. * CarbonLib: not available
  8595. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8596. */
  8597. EXTERN_API_C( OSStatus )
  8598. ICMCompressionSessionSetProperty(
  8599. ICMCompressionSessionRef session,
  8600. ComponentPropertyClass inPropClass,
  8601. ComponentPropertyID inPropID,
  8602. ByteCount inPropValueSize,
  8603. ConstComponentValuePtr inPropValueAddress);
  8604. /*
  8605. * Summary:
  8606. * Properties of compression sessions.
  8607. */
  8608. enum {
  8609. /*
  8610. * Class identifier for compression session properties.
  8611. */
  8612. kQTPropertyClass_ICMCompressionSession = FOUR_CHAR_CODE('icse'),
  8613. /*
  8614. * The time scale for the compression session.
  8615. */
  8616. kICMCompressionSessionPropertyID_TimeScale = FOUR_CHAR_CODE('tscl'), /* TimeScale, Read */
  8617. /*
  8618. * The compressor's pixel buffer attributes for the compression
  8619. * session. You can use these to create a pixel buffer pool for
  8620. * source pixel buffers. Note that this is not the same as the
  8621. * sourcePixelBufferAttributes passed in to
  8622. * ICMCompressionSessionCreate. Getting this property does not change
  8623. * its retain count.
  8624. */
  8625. kICMCompressionSessionPropertyID_CompressorPixelBufferAttributes = FOUR_CHAR_CODE('batt'), /* CFDictionaryRef, Read */
  8626. /*
  8627. * A pool that can provide ideal source pixel buffers for a
  8628. * compression session. The compression session creates this pixel
  8629. * buffer pool based on the compressor's pixel buffer attributes and
  8630. * any pixel buffer attributes passed in to
  8631. * ICMCompressionSessionCreate. If the source pixel buffer attributes
  8632. * and the compressor pixel buffer attributes can not be reconciled,
  8633. * the pool is based on the source pixel buffer attributes and the
  8634. * ICM converts each CVPixelBuffer internally.
  8635. */
  8636. kICMCompressionSessionPropertyID_PixelBufferPool = FOUR_CHAR_CODE('pool'), /* CVPixelBufferPoolRef, Read */
  8637. /*
  8638. * The image description for the compression session. For some
  8639. * codecs, the image description may not be available before the
  8640. * first frame is compressed. Multiple calls to retrieve this
  8641. * property will return the same handle. The ICM will dispose this
  8642. * handle when the compression session is disposed.
  8643. * IMPORTANT: The caller must NOT dispose this handle.
  8644. */
  8645. kICMCompressionSessionPropertyID_ImageDescription = FOUR_CHAR_CODE('idsc') /* ImageDescriptionHandle, Read */
  8646. };
  8647. /*
  8648. * ICMCompressionSessionGetTimeScale()
  8649. *
  8650. * Summary:
  8651. * Retrieves the time scale for the compression session.
  8652. *
  8653. * Availability:
  8654. * Non-Carbon CFM: not available
  8655. * CarbonLib: not available
  8656. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8657. */
  8658. EXTERN_API_C( TimeScale )
  8659. ICMCompressionSessionGetTimeScale(ICMCompressionSessionRef session);
  8660. /*
  8661. * ICMCompressionSessionGetPixelBufferPool()
  8662. *
  8663. * Summary:
  8664. * Returns a pool that can provide ideal source pixel buffers for a
  8665. * compression session.
  8666. *
  8667. * Discussion:
  8668. * The compression session creates this pixel buffer pool based on
  8669. * the compressor's pixel buffer attributes and any pixel buffer
  8670. * attributes passed in to ICMCompressionSessionCreate. If the
  8671. * source pixel buffer attributes and the compressor pixel buffer
  8672. * attributes can not be reconciled, the pool is based on the source
  8673. * pixel buffer attributes and the ICM converts each CVPixelBuffer
  8674. * internally.
  8675. *
  8676. * Availability:
  8677. * Non-Carbon CFM: not available
  8678. * CarbonLib: not available
  8679. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8680. */
  8681. EXTERN_API_C( CVPixelBufferPoolRef )
  8682. ICMCompressionSessionGetPixelBufferPool(ICMCompressionSessionRef session);
  8683. /*
  8684. * ICMCompressionSessionGetImageDescription()
  8685. *
  8686. * Summary:
  8687. * Retrieves the image description for the compression session.
  8688. *
  8689. * Discussion:
  8690. * For some codecs, this may fail if called before the first frame
  8691. * is compressed. Multiple calls to
  8692. * ICMCompressionSessionGetImageDescription will return the same
  8693. * handle. The ICM will dispose this handle when the compression
  8694. * session is disposed.
  8695. * IMPORTANT: The caller must NOT dispose this handle.
  8696. *
  8697. * Availability:
  8698. * Non-Carbon CFM: not available
  8699. * CarbonLib: not available
  8700. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8701. */
  8702. EXTERN_API_C( OSStatus )
  8703. ICMCompressionSessionGetImageDescription(
  8704. ICMCompressionSessionRef session,
  8705. ImageDescriptionHandle * imageDescOut);
  8706. /* ICMCompressionSessionRef encoding routines */
  8707. /*
  8708. * ICMCompressionSessionEncodeFrame()
  8709. *
  8710. * Summary:
  8711. * Call this function to present frames to the compression session.
  8712. * Encoded frames may or may not be output before the function
  8713. * returns.
  8714. *
  8715. * Discussion:
  8716. * The session will retain the pixel buffer as long as necessary;
  8717. * the client should not modify the pixel data until the session
  8718. * releases it. (The most practical way to deal with this is by
  8719. * allocating pixel buffers from a pool.)
  8720. * The client may fill in both, either or neither of
  8721. * displayTimeStamp and displayDuration, but should set the
  8722. * appropriate flags to indicate which is valid. If the client needs
  8723. * to track the progress of a source frame, it should provide a
  8724. * sourceTrackingCallback.
  8725. * Note: If multipass compression is enabled, calls to
  8726. * ICMCompressionSessionEncodeFrame must be bracketed by
  8727. * ICMCompressionSessionBeginPass ... ICMCompressionSessionEndPass.
  8728. *
  8729. * Parameters:
  8730. *
  8731. * session:
  8732. * Identifies the compression session.
  8733. *
  8734. * pixelBuffer:
  8735. * Contains the source image to be compressed. PixelBuffer must
  8736. * have a nonzero reference count. The session will retain it as
  8737. * long as necessary. The client should not modify pixel buffer's
  8738. * pixels until the pixel buffer release callback is called. In a
  8739. * multipass encoding session pass where the compressor suggested
  8740. * the flag kICMCompressionPassMode_NoSourceFrames, you may pass
  8741. * NULL for pixelBuffer.
  8742. *
  8743. * displayTimeStamp:
  8744. * The display timestamp of the frame, using the timescale passed
  8745. * to ICMCompressionSessionCreate. If you pass a valid value, set
  8746. * the kICMValidTime_DisplayTimeStampIsValid flag in
  8747. * validTimeFlags.
  8748. *
  8749. * displayDuration:
  8750. * The display duration of the frame, using the timescale passed
  8751. * to ICMCompressionSessionCreate. If you pass a valid value, set
  8752. * the kICMValidTime_DisplayDurationIsValid flag in validTimeFlags.
  8753. *
  8754. * validTimeFlags:
  8755. * Flags to indicate which of displayTimeStamp and displayDuration
  8756. * are valid.
  8757. *
  8758. * frameOptions:
  8759. * Options for this frame.
  8760. *
  8761. * sourceTrackingCallback:
  8762. * A callback to be notified about the status of this source
  8763. * frame. Pass NULL if you do not require notification.
  8764. *
  8765. * sourceFrameRefCon:
  8766. * Your reference to the source frame.
  8767. *
  8768. * Availability:
  8769. * Non-Carbon CFM: not available
  8770. * CarbonLib: not available
  8771. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8772. */
  8773. EXTERN_API_C( OSStatus )
  8774. ICMCompressionSessionEncodeFrame(
  8775. ICMCompressionSessionRef session,
  8776. CVPixelBufferRef pixelBuffer,
  8777. TimeValue64 displayTimeStamp,
  8778. TimeValue64 displayDuration,
  8779. ICMValidTimeFlags validTimeFlags,
  8780. ICMCompressionFrameOptionsRef frameOptions, /* can be NULL */
  8781. ICMSourceTrackingCallbackRecord * sourceTrackingCallback, /* can be NULL */
  8782. void * sourceFrameRefCon);
  8783. /*
  8784. * ICMCompressionSessionCompleteFrames()
  8785. *
  8786. * Discussion:
  8787. * Call this function to force the compression session to complete
  8788. * encoding frames. Set completeAllFrames to direct the session to
  8789. * complete all pending frames.
  8790. * If completeAllFrames is false, only frames with display time
  8791. * stamps up to and including completeUntilDisplayTimeStamp.
  8792. * If ICMCompressionSessionOptionsSetDurationsNeeded is true and you
  8793. * are passing valid display timestamps but not display durations to
  8794. * ICMCompressionSessionEncodeFrame, pass the display timestamp of
  8795. * the next frame that would be passed to EncodeFrame in
  8796. * nextDisplayTimeStamp.
  8797. * Note: This function might return before frames are completed if
  8798. * the encoded frame callback returns an error.
  8799. *
  8800. * Parameters:
  8801. *
  8802. * session:
  8803. * Identifies the compression session.
  8804. *
  8805. * completeAllFrames:
  8806. * Set to direct the session to complete all pending frames.
  8807. *
  8808. * completeUntilDisplayTimeStamp:
  8809. * If completeAllFrames is false, the display timestamp to
  8810. * complete frames up to. Ignored if completeAllFrames is true.
  8811. *
  8812. * nextDisplayTimeStamp:
  8813. * See above. Ignored unless
  8814. * ICMCompressionSessionOptionsSetDurationsNeeded set true and
  8815. * kICMValidTime_DisplayDurationIsValid was clear in
  8816. * validTimeFlags in last call to ICMCompressionSessionEncodeFrame.
  8817. *
  8818. * Availability:
  8819. * Non-Carbon CFM: not available
  8820. * CarbonLib: not available
  8821. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8822. */
  8823. EXTERN_API_C( OSStatus )
  8824. ICMCompressionSessionCompleteFrames(
  8825. ICMCompressionSessionRef session,
  8826. Boolean completeAllFrames,
  8827. TimeValue64 completeUntilDisplayTimeStamp,
  8828. TimeValue64 nextDisplayTimeStamp);
  8829. /* ICMCompressionSessionRef multipass support routines */
  8830. /*
  8831. * ICMCompressionPassModeFlags
  8832. *
  8833. * Summary:
  8834. * Flags describing how a compressor should behave in a given pass
  8835. * of multipass encoding.
  8836. */
  8837. typedef UInt32 ICMCompressionPassModeFlags;
  8838. enum {
  8839. /*
  8840. * In this pass the compressor shall output encoded frames.
  8841. */
  8842. kICMCompressionPassMode_OutputEncodedFrames = 1L << 0,
  8843. /*
  8844. * In this pass the client need not provide source frame buffers.
  8845. */
  8846. kICMCompressionPassMode_NoSourceFrames = 1L << 1,
  8847. /*
  8848. * In this pass the compressor may write private data to multipass
  8849. * storage.
  8850. */
  8851. kICMCompressionPassMode_WriteToMultiPassStorage = 1L << 2,
  8852. /*
  8853. * In this pass the compressor may read private data from multipass
  8854. * storage.
  8855. */
  8856. kICMCompressionPassMode_ReadFromMultiPassStorage = 1L << 3,
  8857. /*
  8858. * The compressor will set this flag to indicate that it will not be
  8859. * able to output encoded frames in the coming pass. If this flag is
  8860. * not set, then the client is allowed to set the
  8861. * kICMCompressionPassMode_OutputEncodedFrames flag when calling
  8862. * ICMCompressionSessionBeginPass.
  8863. */
  8864. kICMCompressionPassMode_NotReadyToOutputEncodedFrames = 1L << 4
  8865. };
  8866. /*
  8867. * ICMCompressionSessionSupportsMultiPassEncoding()
  8868. *
  8869. * Summary:
  8870. * Queries whether a compression session supports multipass encoding.
  8871. *
  8872. * Discussion:
  8873. * Even if this function returns false, if you set the
  8874. * kICMCompressionSessionOptionsPropertyID_MultiPassStorage property
  8875. * on the CompressionSessionOptions, you must call
  8876. * ICMCompressionSessionBeginPass and ICMCompressionSessionEndPass.
  8877. *
  8878. * Parameters:
  8879. *
  8880. * session:
  8881. * The compression session.
  8882. *
  8883. * multiPassStyleFlags:
  8884. * Reserved. Set to zero.
  8885. *
  8886. * firstPassModeFlagsOut:
  8887. * Points to a variable to receive the session's requested mode
  8888. * flags for the first pass. The client may modify these flags,
  8889. * but should not set kICMCompressionPassMode_NoSourceFrames. Pass
  8890. * NULL if you do not want this information.
  8891. *
  8892. * Result:
  8893. * true if the session supports multipass encoding, false otherwise.
  8894. * If the session does not support multipass encoding,
  8895. * *firstPassModeFlagsOut will be set to
  8896. * kICMCompressionPassMode_OutputEncodedFrames.
  8897. *
  8898. * Availability:
  8899. * Non-Carbon CFM: not available
  8900. * CarbonLib: not available
  8901. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8902. */
  8903. EXTERN_API_C( Boolean )
  8904. ICMCompressionSessionSupportsMultiPassEncoding(
  8905. ICMCompressionSessionRef session,
  8906. UInt32 multiPassStyleFlags,
  8907. ICMCompressionPassModeFlags * firstPassModeFlagsOut); /* can be NULL */
  8908. /*
  8909. * ICMCompressionSessionBeginPass()
  8910. *
  8911. * Summary:
  8912. * Call to announce the start of a specific compression pass.
  8913. *
  8914. * Discussion:
  8915. * The source frames and frame options for each display timestamp
  8916. * should be the same across passes.
  8917. * During multipass compression, valid displayTimeStamps must be
  8918. * passed to ICMCompressionSessionEncodeFrame since they are used to
  8919. * index the compressor's stored state.
  8920. * During an analysis pass
  8921. * (kICMCompressionPassMode_WriteToMultiPassStorage), the compressor
  8922. * does not output encoded frames, but records compressor-private
  8923. * information for each frame.
  8924. * During repeated analysis passes and the encoding pass
  8925. * (kICMCompressionPassMode_ReadFromMultiPassStorage), the
  8926. * compressor may refer to this information for other frames and use
  8927. * it to improve encoding.
  8928. * During an encoding pass
  8929. * (kICMCompressionPassMode_OutputEncodedFrames), the compressor
  8930. * must output encoded frames.
  8931. * If the compressor set the kICMCompressionPassMode_NoSourceFrames
  8932. * flag for the pass, the client may pass NULL pixel buffers to
  8933. * ICMCompressionSessionEncodeFrame.
  8934. * By default, the ICM provides local storage that lasts only until
  8935. * the compression session is disposed. If the client provides
  8936. * custom multipass storage, pass may be performed at different
  8937. * times or on different machines; segments of each pass may even be
  8938. * distributed.
  8939. *
  8940. * Availability:
  8941. * Non-Carbon CFM: not available
  8942. * CarbonLib: not available
  8943. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8944. */
  8945. EXTERN_API_C( OSStatus )
  8946. ICMCompressionSessionBeginPass(
  8947. ICMCompressionSessionRef session,
  8948. ICMCompressionPassModeFlags passModeFlags,
  8949. UInt32 flags);
  8950. /*
  8951. * ICMCompressionSessionEndPass()
  8952. *
  8953. * Summary:
  8954. * Call to announce the end of a pass.
  8955. *
  8956. * Availability:
  8957. * Non-Carbon CFM: not available
  8958. * CarbonLib: not available
  8959. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  8960. */
  8961. EXTERN_API_C( OSStatus )
  8962. ICMCompressionSessionEndPass(ICMCompressionSessionRef session);
  8963. /*
  8964. * ICMCompressionSessionProcessBetweenPasses()
  8965. *
  8966. * Summary:
  8967. * Lets the compressor perform processing between passes.
  8968. *
  8969. * Discussion:
  8970. * Call this function repeatedly, until the compressor sets
  8971. * *interpassProcessingDoneOut to true to indicate that it is done
  8972. * with this round of interpass processing.
  8973. * When done, the compressor will indicate its preferred mode for
  8974. * the next pass.
  8975. * The client may choose to begin an encoding pass (by ORing in the
  8976. * kICMCompressionPassMode_OutputEncodedFrames flag) regardless of
  8977. * the compressor's request.
  8978. *
  8979. * Parameters:
  8980. *
  8981. * session:
  8982. * The compression session.
  8983. *
  8984. * flags:
  8985. * Reserved. Set to zero.
  8986. *
  8987. * interpassProcessingDoneOut:
  8988. * Points to a Boolean that will be set to false if
  8989. * ICMCompressionSessionProcessBetweenPasses should be called
  8990. * again, true if not
  8991. *
  8992. * requestedNextPassModeFlagsOut:
  8993. * Points to ICMCompressionPassModeFlags that will be set to the
  8994. * codec's recommended mode flags for the next pass.
  8995. * kICMCompressionPassMode_OutputEncodedFrames will only be set if
  8996. * it recommends that the next pass be the final one.
  8997. *
  8998. * Availability:
  8999. * Non-Carbon CFM: not available
  9000. * CarbonLib: not available
  9001. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9002. */
  9003. EXTERN_API_C( OSStatus )
  9004. ICMCompressionSessionProcessBetweenPasses(
  9005. ICMCompressionSessionRef session,
  9006. UInt32 flags,
  9007. Boolean * interpassProcessingDoneOut,
  9008. ICMCompressionPassModeFlags * requestedNextPassModeFlagsOut);
  9009. /* ICMCompressionSessionOptionsRef routines */
  9010. /*
  9011. * ICMCompressionSessionOptionsCreate()
  9012. *
  9013. * Summary:
  9014. * Creates a compression session options object.
  9015. *
  9016. * Availability:
  9017. * Non-Carbon CFM: not available
  9018. * CarbonLib: not available
  9019. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9020. */
  9021. EXTERN_API_C( OSStatus )
  9022. ICMCompressionSessionOptionsCreate(
  9023. CFAllocatorRef allocator, /* can be NULL */
  9024. ICMCompressionSessionOptionsRef * options);
  9025. /*
  9026. * ICMCompressionSessionOptionsCreateCopy()
  9027. *
  9028. * Summary:
  9029. * Copies a compression session options object.
  9030. *
  9031. * Availability:
  9032. * Non-Carbon CFM: not available
  9033. * CarbonLib: not available
  9034. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9035. */
  9036. EXTERN_API_C( OSStatus )
  9037. ICMCompressionSessionOptionsCreateCopy(
  9038. CFAllocatorRef allocator, /* can be NULL */
  9039. ICMCompressionSessionOptionsRef originalOptions,
  9040. ICMCompressionSessionOptionsRef * copiedOptions);
  9041. /*
  9042. * ICMCompressionSessionOptionsRetain()
  9043. *
  9044. * Summary:
  9045. * Increments the retain count of a compression session options
  9046. * object.
  9047. *
  9048. * Discussion:
  9049. * If you pass NULL to this function, nothing happens.
  9050. *
  9051. * Availability:
  9052. * Non-Carbon CFM: not available
  9053. * CarbonLib: not available
  9054. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9055. */
  9056. EXTERN_API_C( ICMCompressionSessionOptionsRef )
  9057. ICMCompressionSessionOptionsRetain(ICMCompressionSessionOptionsRef options);
  9058. /*
  9059. * ICMCompressionSessionOptionsRelease()
  9060. *
  9061. * Summary:
  9062. * Decrements the retain count of a compression session options
  9063. * object. If it drops to zero, the object is disposed.
  9064. *
  9065. * Discussion:
  9066. * If you pass NULL to this function, nothing happens.
  9067. *
  9068. * Availability:
  9069. * Non-Carbon CFM: not available
  9070. * CarbonLib: not available
  9071. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9072. */
  9073. EXTERN_API_C( void )
  9074. ICMCompressionSessionOptionsRelease(ICMCompressionSessionOptionsRef options);
  9075. /*
  9076. * ICMCompressionSessionOptionsGetTypeID()
  9077. *
  9078. * Summary:
  9079. * Returns the CFTypeID for compression session options objects.
  9080. *
  9081. * Availability:
  9082. * Non-Carbon CFM: not available
  9083. * CarbonLib: not available
  9084. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9085. */
  9086. EXTERN_API_C( CFTypeID )
  9087. ICMCompressionSessionOptionsGetTypeID(void);
  9088. /*
  9089. * ICMCompressionSessionOptionsGetPropertyInfo()
  9090. *
  9091. * Summary:
  9092. * Retrieves information about properties of a compression session
  9093. * options object.
  9094. *
  9095. * Availability:
  9096. * Non-Carbon CFM: not available
  9097. * CarbonLib: not available
  9098. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9099. */
  9100. EXTERN_API_C( OSStatus )
  9101. ICMCompressionSessionOptionsGetPropertyInfo(
  9102. ICMCompressionSessionOptionsRef options,
  9103. ComponentPropertyClass inPropClass,
  9104. ComponentPropertyID inPropID,
  9105. ComponentValueType * outPropType, /* can be NULL */
  9106. ByteCount * outPropValueSize, /* can be NULL */
  9107. UInt32 * outPropertyFlags); /* can be NULL */
  9108. /*
  9109. * ICMCompressionSessionOptionsGetProperty()
  9110. *
  9111. * Summary:
  9112. * Retrieves the value of a specific property of a compression
  9113. * session options object.
  9114. *
  9115. * Availability:
  9116. * Non-Carbon CFM: not available
  9117. * CarbonLib: not available
  9118. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9119. */
  9120. EXTERN_API_C( OSStatus )
  9121. ICMCompressionSessionOptionsGetProperty(
  9122. ICMCompressionSessionOptionsRef options,
  9123. ComponentPropertyClass inPropClass,
  9124. ComponentPropertyID inPropID,
  9125. ByteCount inPropValueSize,
  9126. ComponentValuePtr outPropValueAddress,
  9127. ByteCount * outPropValueSizeUsed); /* can be NULL */
  9128. /*
  9129. * ICMCompressionSessionOptionsSetProperty()
  9130. *
  9131. * Summary:
  9132. * Sets the value of a specific property of a compression session
  9133. * options object.
  9134. *
  9135. * Availability:
  9136. * Non-Carbon CFM: not available
  9137. * CarbonLib: not available
  9138. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9139. */
  9140. EXTERN_API_C( OSStatus )
  9141. ICMCompressionSessionOptionsSetProperty(
  9142. ICMCompressionSessionOptionsRef options,
  9143. ComponentPropertyClass inPropClass,
  9144. ComponentPropertyID inPropID,
  9145. ByteCount inPropValueSize,
  9146. ConstComponentValuePtr inPropValueAddress);
  9147. /*
  9148. */
  9149. enum {
  9150. /*
  9151. * Indicates no limit on the number of frames in the compression
  9152. * window.
  9153. */
  9154. kICMUnlimitedFrameDelayCount = -1L,
  9155. /*
  9156. * Indicates no time limit on the number of frames in the compression
  9157. * window.
  9158. */
  9159. kICMUnlimitedFrameDelayTime = -1L,
  9160. /*
  9161. * Indicates no CPU time limit on compression.
  9162. */
  9163. kICMUnlimitedCPUTimeBudget = -1L
  9164. };
  9165. /*
  9166. * ICMDataRateLimit
  9167. *
  9168. * Summary:
  9169. * A hard limit on the data rate.
  9170. *
  9171. * Discussion:
  9172. * A hard limit is described by a data size in bytes and a duration
  9173. * in seconds, and requires that the total size of compressed data
  9174. * for any continuous segment of that duration (in decode time) must
  9175. * not exceed the provided data size.
  9176. */
  9177. struct ICMDataRateLimit {
  9178. /*
  9179. * The number of bytes.
  9180. */
  9181. SInt32 dataSize;
  9182. /*
  9183. * The number of seconds.
  9184. */
  9185. Float32 dataDuration;
  9186. };
  9187. typedef struct ICMDataRateLimit ICMDataRateLimit;
  9188. /*
  9189. * Summary:
  9190. * Scaling modes
  9191. *
  9192. * Discussion:
  9193. * These constants indicate how source frames to a compression
  9194. * session should be scaled if the dimensions and/or display aspect
  9195. * ratio do not match.
  9196. */
  9197. enum {
  9198. /*
  9199. * The full width and height of source frames shall be scaled to the
  9200. * full width and height of the destination. This is the default if
  9201. * no other scaling mode is specified.
  9202. */
  9203. kICMScalingMode_StretchProductionAperture = FOUR_CHAR_CODE('sp2p'),
  9204. /*
  9205. * The clean aperture of the source frames shall be scaled to the
  9206. * clean aperture of the destination.
  9207. */
  9208. kICMScalingMode_StretchCleanAperture = FOUR_CHAR_CODE('sc2c'),
  9209. /*
  9210. * The clean aperture of the source frames shall be scaled to fit
  9211. * inside the clean aperture of the destination, preserving the
  9212. * original display aspect ratio. If the display aspect ratios are
  9213. * different, the source frames will be centered with black bars
  9214. * above and below, or to the left and right.
  9215. */
  9216. kICMScalingMode_Letterbox = FOUR_CHAR_CODE('lett'),
  9217. /*
  9218. * The clean aperture of the source frames shall be scaled to cover
  9219. * the clean aperture of the destination, preserving the original
  9220. * display aspect ratio. If the display aspect ratios are different,
  9221. * the source frames will be centered and cropped.
  9222. */
  9223. kICMScalingMode_Trim = FOUR_CHAR_CODE('trim')
  9224. };
  9225. /*
  9226. * ICMSimpleBoundaryConditions
  9227. *
  9228. * Summary:
  9229. * Indicates whether and how a compression session's frames will be
  9230. * concatenated with other compressed frames to form a longer series.
  9231. *
  9232. * Discussion:
  9233. * Some clients divide a long series of frames into several shorter
  9234. * segments, each of which is then compressed by an independent
  9235. * compression session. Boundary conditions tell the compressor
  9236. * about how each session fits into the greater series: does this
  9237. * session stand alone, or will it be used to encode the first
  9238. * segment, a middle segment, or the last segment in a longer
  9239. * continuum?
  9240. * This information enables compressors to ensure that compressed
  9241. * segments can be concatenated smoothly -- for example, avoiding
  9242. * data rate spikes where segments are joined.
  9243. * By default, a session is assumed to stand alone.
  9244. */
  9245. struct ICMSimpleBoundaryConditions {
  9246. /*
  9247. * True if frames compressed in a separate session will be
  9248. * concatenated before the beginning of this one. False if this is a
  9249. * stand-alone session, or if this session will encode the first
  9250. * segment of a multi-segment compression. By default, false.
  9251. */
  9252. Boolean moreFramesBeforeStart;
  9253. /*
  9254. * True if frames compressed in a separate session will be
  9255. * concatenated following the end of this one. False if this is a
  9256. * stand-alone session, or if this session will encode the last
  9257. * segment of a multi-segment compression. By default, false.
  9258. */
  9259. Boolean moreFramesAfterEnd;
  9260. };
  9261. typedef struct ICMSimpleBoundaryConditions ICMSimpleBoundaryConditions;
  9262. /*
  9263. * Summary:
  9264. * Properties of compression sessions options objects.
  9265. */
  9266. enum {
  9267. /*
  9268. * Class identifier for compression session options object properties.
  9269. */
  9270. kQTPropertyClass_ICMCompressionSessionOptions = FOUR_CHAR_CODE('icso'),
  9271. /*
  9272. * Enables temporal compression. By default, temporal compression is
  9273. * disabled.
  9274. * IMPORTANT: If you want temporal compression (P frames and/or B
  9275. * frames) you must set this to true.
  9276. */
  9277. kICMCompressionSessionOptionsPropertyID_AllowTemporalCompression = FOUR_CHAR_CODE('p ok'), /* Boolean, Read/Write */
  9278. /*
  9279. * Enables frame reordering.
  9280. * In order to encode B frames, a compressor must reorder frames,
  9281. * which means that the order in which they will be emitted and
  9282. * stored (the decode order) is different from the order in which
  9283. * they were presented to the compressor (the display order).
  9284. * By default, frame reordering is disabled.
  9285. * IMPORTANT: In order to encode using B frames, you must enable
  9286. * frame reordering.
  9287. */
  9288. kICMCompressionSessionOptionsPropertyID_AllowFrameReordering = FOUR_CHAR_CODE('b ok'), /* Boolean, Read/Write */
  9289. /*
  9290. * Indicates that durations of emitted frames are needed.
  9291. * If this flag is set and source frames are provided with times but
  9292. * not durations, then frames will be delayed so that durations can
  9293. * be calculated as the difference between one frame's time stamp and
  9294. * the next frame's time stamp.
  9295. * By default, this flag is clear, so frames will not be delayed in
  9296. * order to calculate durations.
  9297. * IMPORTANT: If you will be passing encoded frames to
  9298. * AddMediaSampleFromEncodedFrame, you must set this flag to true.
  9299. */
  9300. kICMCompressionSessionOptionsPropertyID_DurationsNeeded = FOUR_CHAR_CODE('need'), /* Boolean, Read/Write */
  9301. /*
  9302. * The maximum interval between key frames, also known as the key
  9303. * frame rate.
  9304. * Key frames, also known as sync frames, reset inter-frame
  9305. * dependencies; decoding a key frame is sufficient to prepare a
  9306. * decompressor for correctly decoding the difference frames that
  9307. * follow.
  9308. * Compressors are allowed to generate key frames more frequently if
  9309. * this would result in more efficient compression.
  9310. * The default key frame interval is 0, which indicates that the
  9311. * compressor should choose where to place all key frames. A key
  9312. * frame interval of 1 indicates that every frame must be a key
  9313. * frame, 2 indicates that at least every other frame must be a key
  9314. * frame, etc.
  9315. */
  9316. kICMCompressionSessionOptionsPropertyID_MaxKeyFrameInterval = FOUR_CHAR_CODE('kyfr'), /* SInt32, Read/Write */
  9317. /*
  9318. * The requested maximum interval between partial sync frames. If the
  9319. * interval is n, any sequence of n successive frames must include at
  9320. * least one key or partial sync frame.
  9321. * Where supported, partial sync frames perform a partial reset of
  9322. * inter-frame dependencies; decoding two partial sync frames and the
  9323. * non-droppable difference frames between them is sufficient to
  9324. * prepare a decompressor for correctly decoding the difference
  9325. * frames that follow.
  9326. * Compressors are allowed to generate partial sync frames more
  9327. * frequently if this would result in more efficient compression.
  9328. *
  9329. * The default partial sync frame interval is 0, which indicates that
  9330. * the compressor should choose where to place partial sync frames. A
  9331. * partial sync frame interval of 1 means there can be no difference
  9332. * frames, so it is equivalent to a key frame interval of 1. A
  9333. * partial sync frame interval of 2 means that every other frame must
  9334. * be a key frame or a partial sync frame.
  9335. * Compressors that do not support partial sync frames will ignore
  9336. * this setting.
  9337. */
  9338. kICMCompressionSessionOptionsPropertyID_MaxPartialSyncFrameInterval = FOUR_CHAR_CODE('psfr'), /* SInt32, Read/Write */
  9339. /*
  9340. * Enables the compressor to modify frame times.
  9341. * Some compressors are able to identify and coalesce runs of
  9342. * identical frames and output single frames with longer duration, or
  9343. * output frames at a different frame rate from the original. This
  9344. * feature is controlled by the "allow frame time changes" flag. By
  9345. * default, this flag is set to false, which forces compressors to
  9346. * emit one encoded frame for every source frame, and to preserve
  9347. * frame display times.
  9348. * (Note: this feature replaces the practice of having compressors
  9349. * return special high similarity values to indicate that frames
  9350. * could be dropped.)
  9351. * If you want to allow the compressor to modify frame times in order
  9352. * to improve compression performance, enable frame time changes.
  9353. */
  9354. kICMCompressionSessionOptionsPropertyID_AllowFrameTimeChanges = FOUR_CHAR_CODE('+ ok'), /* Boolean, Read/Write */
  9355. /*
  9356. * Enables the compressor to call the encoded-frame callback from a
  9357. * different thread.
  9358. * By default, the flag is false, which means that the compressor
  9359. * must call the encoded-frame callback from the same thread that
  9360. * ICMCompressionSessionEncodeFrame and
  9361. * ICMCompressionSessionCompleteFrames were called on.
  9362. */
  9363. kICMCompressionSessionOptionsPropertyID_AllowAsyncCompletion = FOUR_CHAR_CODE('asok'), /* Boolean, Read/Write */
  9364. /*
  9365. * The maximum frame delay count is the maximum number of frames that
  9366. * a compressor is allowed to hold before it must output a compressed
  9367. * frame. It limits the number of frames that may be held in the
  9368. * "compression window". If the maximum frame delay count is M, then
  9369. * before the call to encode frame N returns, frame N-M must have
  9370. * been emitted.
  9371. * The default is kICMUnlimitedFrameDelayCount, which sets no limit
  9372. * on the compression window.
  9373. */
  9374. kICMCompressionSessionOptionsPropertyID_MaxFrameDelayCount = FOUR_CHAR_CODE('cwin'), /* SInt32, Read/Write */
  9375. /*
  9376. * The maximum frame delay time is the maximum difference between a
  9377. * source frame's display time and the corresponding encoded frame's
  9378. * decode time. It limits the span of display time that may be held
  9379. * in the "compression window". If the maximum frame delay time is
  9380. * TM, then before the call to encode a frame with display time TN
  9381. * returns, all frames with display times up to and including TN-TM
  9382. * must have been emitted.
  9383. * The default is kICMUnlimitedFrameDelayTime, which sets no time
  9384. * limit on the compression window.
  9385. */
  9386. kICMCompressionSessionOptionsPropertyID_MaxFrameDelayTime = FOUR_CHAR_CODE('cwit'), /* TimeValue64, Read/Write */
  9387. /*
  9388. * Sets a specific compressor component or component instance to be
  9389. * used, or one of the wildcards anyCodec, bestSpeedCodec,
  9390. * bestFidelityCodec, or bestCompressionCodec.
  9391. * Use this API to force the Image Compression Manager to use a
  9392. * specific compressor component or compressor component instance.
  9393. * (If you pass in a component instance that you opened, the ICM will
  9394. * not close that instance; you must do so after the compression
  9395. * session is released.) To allow the Image Compression Manager to
  9396. * choose the compressor component, set the compressorComponent to
  9397. * anyCodec (the default), bestSpeedCodec, bestFidelityCodec or
  9398. * bestCompressionCodec.
  9399. */
  9400. kICMCompressionSessionOptionsPropertyID_CompressorComponent = FOUR_CHAR_CODE('imco'), /* CompressorComponent, Read/Write */
  9401. /*
  9402. * A handle containing compressor settings. The compressor will be
  9403. * configured with these settings (by a call to
  9404. * ImageCodecSetSettings) during ICMCompressionSessionCreate.
  9405. */
  9406. kICMCompressionSessionOptionsPropertyID_CompressorSettings = FOUR_CHAR_CODE('cost'), /* Handle, Read/Write */
  9407. /*
  9408. * The depth for compression.
  9409. * If a compressor does not support a specific depth, the closest
  9410. * supported depth will be used (preferring deeper depths to
  9411. * shallower depths). The default depth is k24RGBPixelFormat.
  9412. */
  9413. kICMCompressionSessionOptionsPropertyID_Depth = FOUR_CHAR_CODE('deep'), /* UInt32, Read/Write */
  9414. /*
  9415. * The color table for compression. Used with indexed-color depths.
  9416. *
  9417. * Clients who get this property are responsible for disposing the
  9418. * returned CTabHandle.
  9419. */
  9420. kICMCompressionSessionOptionsPropertyID_ColorTable = FOUR_CHAR_CODE('clut'), /* CTabHandle, Read/Write*/
  9421. /*
  9422. * The compression quality.
  9423. * This value is always used to set the spatialQuality; if temporal
  9424. * compression is enabled, it is also used to set temporalQuality.
  9425. * <BR> The default quality is codecNormalQuality.
  9426. */
  9427. kICMCompressionSessionOptionsPropertyID_Quality = FOUR_CHAR_CODE('qual'), /* CodecQ, Read/Write */
  9428. /*
  9429. * The long-term desired average data rate in bytes per second.
  9430. * This is not a hard limit.
  9431. * The default data rate is zero, which indicates that the quality
  9432. * setting should determine the size of compressed data.
  9433. * Note that data rate settings only have an effect when timing
  9434. * information is provided for source frames, and that some codecs do
  9435. * not support limiting to specified data rates.
  9436. */
  9437. kICMCompressionSessionOptionsPropertyID_AverageDataRate = FOUR_CHAR_CODE('aver'), /* SInt32, Read/Write */
  9438. /*
  9439. * Zero, one or two hard limits on data rate.
  9440. * Each hard limit is described by a data size in bytes and a
  9441. * duration in seconds, and requires that the total size of
  9442. * compressed data for any contiguous segment of that duration (in
  9443. * decode time) must not exceed the data size.
  9444. * By default, no data rate limits are set.
  9445. * When setting this property, the inPropValueSize parameter should
  9446. * be the number of data rate limits multiplied by
  9447. * sizeof(ICMDataRateLimit).
  9448. * Note that data rate settings only have an effect when timing
  9449. * information is provided for source frames, and that some codecs do
  9450. * not support limiting to specified data rates.
  9451. */
  9452. kICMCompressionSessionOptionsPropertyID_DataRateLimits = FOUR_CHAR_CODE('hard'), /* C array of ICMDataRateLimit struct, Read/Write */
  9453. /*
  9454. * The current number of data rate limits.
  9455. */
  9456. kICMCompressionSessionOptionsPropertyID_DataRateLimitCount = FOUR_CHAR_CODE('har#'), /* UInt32, Read */
  9457. /*
  9458. * The maximum allowed number of data rate limits. (Currently 2.)
  9459. */
  9460. kICMCompressionSessionOptionsPropertyID_MaxDataRateLimits = FOUR_CHAR_CODE('mhar'), /* UInt32, Read */
  9461. /*
  9462. * Indicates that the source was previously compressed.
  9463. * This property is purely an optional, informational hint to the
  9464. * compressor; by default it is false.
  9465. */
  9466. kICMCompressionSessionOptionsPropertyID_WasCompressed = FOUR_CHAR_CODE('wasc'), /* Boolean, Read/Write */
  9467. /*
  9468. * Recommends a CPU time budget for the compressor in microseconds
  9469. * per frame.
  9470. * Zero means to go as fast as possible.
  9471. * By default, this is set to kICMUnlimitedCPUTimeBudget, which sets
  9472. * no limit.
  9473. * This is an advisory hint to the compressor, and some compressors
  9474. * may ignore it. Multithreaded compressors may use this amount of
  9475. * CPU time on each processor.
  9476. * Compressors should not feel compelled to use the full time budget
  9477. * if they complete ahead of time!
  9478. */
  9479. kICMCompressionSessionOptionsPropertyID_CPUTimeBudget = FOUR_CHAR_CODE('cput'), /* UInt32, Read/Write */
  9480. /*
  9481. * Storage for multi-pass compression.
  9482. * To enable multipass compression, the client must provide a storage
  9483. * location for multipass data. Use
  9484. * ICMMultiPassStorageCreateWithTemporaryFile to have the ICM store
  9485. * it in a temporary file. Use
  9486. * ICMMultiPassStorageCreateWithCallbacks to manage the storage
  9487. * yourself.
  9488. * Note that the amount of multipass data to be stored can be
  9489. * substantial; it could be greater than the size of the output movie
  9490. * file.
  9491. * If this property is not NULL, the client must call
  9492. * ICMCompressionSessionBeginPass and ICMCompressionSessionEndPass
  9493. * around groups of calls to ICMCompressionSessionEncodeFrame.
  9494. * By default, this property is NULL and multipass compression is
  9495. * not enabled. The compression session options object retains the
  9496. * multipass storage object, when one is set.
  9497. */
  9498. kICMCompressionSessionOptionsPropertyID_MultiPassStorage = FOUR_CHAR_CODE('imps'), /* ICMMultiPassStorageRef, Read/Write */
  9499. /*
  9500. * Indicates the number of source frames, if known. If nonzero, this
  9501. * should be the exact number of times that the client calls
  9502. * ICMCompressionSessionEncodeFrame in each pass.
  9503. * The default is 0, which indicates that the number of source frames
  9504. * is not known.
  9505. */
  9506. kICMCompressionSessionOptionsPropertyID_SourceFrameCount = FOUR_CHAR_CODE('frco'), /* UInt64, Read/Write */
  9507. /*
  9508. * Indicates the expected frame rate, if known. The frame rate is
  9509. * measured in frames per second. This is not used to control the
  9510. * frame rate; it is provided as a hint to the compressor so that it
  9511. * can set up internal configuration before compression begins. The
  9512. * actual frame rate will depend on frame durations and may vary. By
  9513. * default, this is zero, indicating "unknown".
  9514. */
  9515. kICMCompressionSessionOptionsPropertyID_ExpectedFrameRate = FOUR_CHAR_CODE('fran'), /* Fixed, Read/Write */
  9516. /*
  9517. * Indicates how source frames to a compression session should be
  9518. * scaled if the dimensions and/or display aspect ratio do not match.
  9519. */
  9520. kICMCompressionSessionOptionsPropertyID_ScalingMode = FOUR_CHAR_CODE('scam'), /* OSType, Read/Write */
  9521. /*
  9522. * Describes the clean aperture for compressed frames. Note that if
  9523. * the compressor enforces a clean aperture, it will override this
  9524. * setting. The clean aperture will be set on the output image
  9525. * description and may affect scaling in some scaling modes. By
  9526. * default, this is all zeros, meaning unset.
  9527. */
  9528. kICMCompressionSessionOptionsPropertyID_CleanAperture = FOUR_CHAR_CODE('clap'), /* Native-endian CleanApertureImageDescriptionExtension, Read/Write */
  9529. /*
  9530. * Describes the pixel aspect ratio for compressed frames. Note that
  9531. * if the compressor enforces a pixel aspect ratio, it will override
  9532. * this setting. The pixel aspect ratio will be set on the output
  9533. * image description and may affect scaling in some scaling modes. By
  9534. * default, this is all zeros, meaning unset.
  9535. */
  9536. kICMCompressionSessionOptionsPropertyID_PixelAspectRatio = FOUR_CHAR_CODE('pasp'), /* Native-endian PixelAspectRatioImageDescriptionExtension, Read/Write */
  9537. /*
  9538. * Describes the number and order of fields for compressed frames.
  9539. * Note that if the compressor enforces field info, it will override
  9540. * this setting. The field info will be set on the output image
  9541. * description and may affect scaling in some scaling modes. By
  9542. * default, this is all zeros, meaning unset.
  9543. */
  9544. kICMCompressionSessionOptionsPropertyID_FieldInfo = FOUR_CHAR_CODE('fiel'), /* FieldInfoImageDescriptionExtension2, Read/Write */
  9545. /*
  9546. * Indicates whether and how a compression session's frames will be
  9547. * concatenated with other compressed frames to form a longer series.
  9548. */
  9549. kICMCompressionSessionOptionsPropertyID_SimpleBoundaryConditions = FOUR_CHAR_CODE('ends'), /* ICMSimpleBoundaryConditions struct, Read/Write */
  9550. /*
  9551. * Requests additional distortion to be applied to the aspect ratio
  9552. * in the kICMScalingMode_Letterbox and kICMScalingMode_Trim scaling
  9553. * modes. Values greater than fixed1 mean wider, values less than
  9554. * fixed1 mean narrower. For example, a value of X2Fix(2.0) would
  9555. * make the picture aspect ratio twice as wide.
  9556. */
  9557. kICMCompressionSessionOptionsPropertyID_ExtraAspectRatioStretchFactor = FOUR_CHAR_CODE('exsf') /* Fixed, Default fixed1, Read/Write */
  9558. };
  9559. /*
  9560. * ICMCompressionSessionOptionsSetAllowTemporalCompression()
  9561. *
  9562. * Summary:
  9563. * Enables temporal compression.
  9564. *
  9565. * Discussion:
  9566. * By default, temporal compression is disabled.
  9567. * IMPORTANT: If you want temporal compression (P frames and/or B
  9568. * frames) you must set this to true.
  9569. *
  9570. * Availability:
  9571. * Non-Carbon CFM: not available
  9572. * CarbonLib: not available
  9573. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9574. */
  9575. EXTERN_API_C( OSStatus )
  9576. ICMCompressionSessionOptionsSetAllowTemporalCompression(
  9577. ICMCompressionSessionOptionsRef options,
  9578. Boolean allowTemporalCompression);
  9579. /*
  9580. * ICMCompressionSessionOptionsGetAllowTemporalCompression()
  9581. *
  9582. * Summary:
  9583. * Retrieves the allow temporal compression flag.
  9584. *
  9585. * Availability:
  9586. * Non-Carbon CFM: not available
  9587. * CarbonLib: not available
  9588. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9589. */
  9590. EXTERN_API_C( Boolean )
  9591. ICMCompressionSessionOptionsGetAllowTemporalCompression(ICMCompressionSessionOptionsRef options);
  9592. /*
  9593. * ICMCompressionSessionOptionsSetAllowFrameReordering()
  9594. *
  9595. * Summary:
  9596. * Enables frame reordering.
  9597. *
  9598. * Discussion:
  9599. * In order to encode B frames, a compressor must reorder frames,
  9600. * which means that the order in which they will be emitted and
  9601. * stored (the decode order) is different from the order in which
  9602. * they were presented to the compressor (the display order).
  9603. * By default, frame reordering is disabled.
  9604. * IMPORTANT: In order to encode using B frames, you must enable
  9605. * frame reordering.
  9606. *
  9607. * Availability:
  9608. * Non-Carbon CFM: not available
  9609. * CarbonLib: not available
  9610. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9611. */
  9612. EXTERN_API_C( OSStatus )
  9613. ICMCompressionSessionOptionsSetAllowFrameReordering(
  9614. ICMCompressionSessionOptionsRef options,
  9615. Boolean allowFrameReordering);
  9616. /*
  9617. * ICMCompressionSessionOptionsGetAllowFrameReordering()
  9618. *
  9619. * Summary:
  9620. * Retrieves the allow frame reordering flag.
  9621. *
  9622. * Availability:
  9623. * Non-Carbon CFM: not available
  9624. * CarbonLib: not available
  9625. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9626. */
  9627. EXTERN_API_C( Boolean )
  9628. ICMCompressionSessionOptionsGetAllowFrameReordering(ICMCompressionSessionOptionsRef options);
  9629. /*
  9630. * ICMCompressionSessionOptionsSetDurationsNeeded()
  9631. *
  9632. * Summary:
  9633. * Indicates that durations of emitted frames are needed.
  9634. *
  9635. * Discussion:
  9636. * If this flag is set and source frames are provided with times but
  9637. * not durations, then frames will be delayed so that durations can
  9638. * be calculated as the difference between one frame's time stamp
  9639. * and the next frame's time stamp.
  9640. * By default, this flag is clear, so frames will not be delayed in
  9641. * order to calculate durations.
  9642. * IMPORTANT: If you will be passing encoded frames to
  9643. * AddMediaSampleFromEncodedFrame, you must set this flag to true.
  9644. *
  9645. * Availability:
  9646. * Non-Carbon CFM: not available
  9647. * CarbonLib: not available
  9648. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9649. */
  9650. EXTERN_API_C( OSStatus )
  9651. ICMCompressionSessionOptionsSetDurationsNeeded(
  9652. ICMCompressionSessionOptionsRef options,
  9653. Boolean decodeDurationsNeeded);
  9654. /*
  9655. * ICMCompressionSessionOptionsGetDurationsNeeded()
  9656. *
  9657. * Summary:
  9658. * Retrieves the "durations needed" flag.
  9659. *
  9660. * Availability:
  9661. * Non-Carbon CFM: not available
  9662. * CarbonLib: not available
  9663. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9664. */
  9665. EXTERN_API_C( Boolean )
  9666. ICMCompressionSessionOptionsGetDurationsNeeded(ICMCompressionSessionOptionsRef options);
  9667. /*
  9668. * ICMCompressionSessionOptionsSetMaxKeyFrameInterval()
  9669. *
  9670. * Summary:
  9671. * Sets the maximum interval between key frames (also known as the
  9672. * key frame rate).
  9673. *
  9674. * Discussion:
  9675. * Compressors are allowed to generate key frames more frequently if
  9676. * this would result in more efficient compression.
  9677. * The default key frame interval is 0, which indicates that the
  9678. * compressor should choose where to place all key frames.
  9679. * (Note: this is a break with previous practice, which used a key
  9680. * frame rate of zero to disable temporal compression.)
  9681. *
  9682. * Availability:
  9683. * Non-Carbon CFM: not available
  9684. * CarbonLib: not available
  9685. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9686. */
  9687. EXTERN_API_C( OSStatus )
  9688. ICMCompressionSessionOptionsSetMaxKeyFrameInterval(
  9689. ICMCompressionSessionOptionsRef options,
  9690. SInt32 maxKeyFrameInterval);
  9691. /*
  9692. * ICMCompressionSessionOptionsGetMaxKeyFrameInterval()
  9693. *
  9694. * Summary:
  9695. * Retrieves the maximum key frame interval.
  9696. *
  9697. * Availability:
  9698. * Non-Carbon CFM: not available
  9699. * CarbonLib: not available
  9700. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9701. */
  9702. EXTERN_API_C( SInt32 )
  9703. ICMCompressionSessionOptionsGetMaxKeyFrameInterval(ICMCompressionSessionOptionsRef options);
  9704. /*
  9705. * ICMCompressionSessionOptionsSetAllowFrameTimeChanges()
  9706. *
  9707. * Summary:
  9708. * Enables the compressor to modify frame times.
  9709. *
  9710. * Discussion:
  9711. * Some compressors are able to identify and coalesce runs of
  9712. * identical frames and output single frames with longer duration,
  9713. * or output frames at a different frame rate from the original.
  9714. * This feature is controlled by the "allow frame time changes"
  9715. * flag. By default, this flag is set to false, which forces
  9716. * compressors to emit one encoded frame for every source frame, and
  9717. * to preserve frame display times.
  9718. * (Note: this feature replaces the practice of having compressors
  9719. * return special high similarity values to indicate that frames
  9720. * could be dropped.)
  9721. * If you want to allow the compressor to modify frame times in
  9722. * order to improve compression performance, enable frame time
  9723. * changes.
  9724. *
  9725. * Availability:
  9726. * Non-Carbon CFM: not available
  9727. * CarbonLib: not available
  9728. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9729. */
  9730. EXTERN_API_C( OSStatus )
  9731. ICMCompressionSessionOptionsSetAllowFrameTimeChanges(
  9732. ICMCompressionSessionOptionsRef options,
  9733. Boolean allowFrameTimeChanges);
  9734. /*
  9735. * ICMCompressionSessionOptionsGetAllowFrameTimeChanges()
  9736. *
  9737. * Summary:
  9738. * Retrieves the allow frame time changes flag.
  9739. *
  9740. * Availability:
  9741. * Non-Carbon CFM: not available
  9742. * CarbonLib: not available
  9743. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9744. */
  9745. EXTERN_API_C( Boolean )
  9746. ICMCompressionSessionOptionsGetAllowFrameTimeChanges(ICMCompressionSessionOptionsRef options);
  9747. /* ICMMultiPassStorageRef routines */
  9748. /*
  9749. * ICMMultiPassStorageCreationFlags
  9750. *
  9751. */
  9752. typedef UInt32 ICMMultiPassStorageCreationFlags;
  9753. enum {
  9754. /*
  9755. * Indicates that the temporary file should not be deleted when the
  9756. * multipass storage is released.
  9757. */
  9758. kICMMultiPassStorage_DoNotDeleteWhenDone = 1L << 0
  9759. };
  9760. /*
  9761. * ICMMultiPassStorageCreateWithTemporaryFile()
  9762. *
  9763. * Summary:
  9764. * Creates a multipass storage using a temporary file.
  9765. *
  9766. * Discussion:
  9767. * If you pass NULL for directoryRef, the ICM will use the user's
  9768. * temporary items folder.
  9769. * If you pass NULL for fileName, the ICM will pick a unique name.
  9770. *
  9771. * The file will be deleted when the multipass storage is released,
  9772. * unless you set the kICMMultiPassStorage_DoNotDeleteWhenDone flag.
  9773. *
  9774. * Availability:
  9775. * Non-Carbon CFM: not available
  9776. * CarbonLib: not available
  9777. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9778. */
  9779. EXTERN_API_C( OSStatus )
  9780. ICMMultiPassStorageCreateWithTemporaryFile(
  9781. CFAllocatorRef allocator, /* can be NULL */
  9782. FSRef * directoryRef, /* can be NULL */
  9783. CFStringRef fileName, /* can be NULL */
  9784. ICMMultiPassStorageCreationFlags flags,
  9785. ICMMultiPassStorageRef * multiPassStorageOut);
  9786. /*
  9787. * ICMMultiPassStorageStep
  9788. *
  9789. * Summary:
  9790. * Indicates a jump in time stamps used to index multipass storage.
  9791. */
  9792. typedef UInt32 ICMMultiPassStorageStep;
  9793. enum {
  9794. /*
  9795. * Requests the first time stamp at which a value is stored.
  9796. */
  9797. kICMMultiPassStorage_GetFirstTimeStamp = 1,
  9798. /*
  9799. * Requests the previous time stamp before the given time stamp at
  9800. * which a value is stored.
  9801. */
  9802. kICMMultiPassStorage_GetPreviousTimeStamp = 2,
  9803. /*
  9804. * Requests the next time stamp after the given time stamp at which a
  9805. * value is stored.
  9806. */
  9807. kICMMultiPassStorage_GetNextTimeStamp = 3,
  9808. /*
  9809. * Requests the last time stamp at which a value is stored.
  9810. */
  9811. kICMMultiPassStorage_GetLastTimeStamp = 4
  9812. };
  9813. /*
  9814. * ICMMultiPassSetDataAtTimeStampCallback
  9815. *
  9816. * Summary:
  9817. * Stores a value at a given time stamp.
  9818. *
  9819. * Discussion:
  9820. * The new data should replace any previous data held at that
  9821. * timestamp with that index.
  9822. *
  9823. * Parameters:
  9824. *
  9825. * storageRefCon:
  9826. * The callbacks' reference value.
  9827. *
  9828. * timeStamp:
  9829. * The time stamp at which the value should be stored.
  9830. *
  9831. * index:
  9832. * An index by which multiple values may be stored at a time
  9833. * stamp. The meaning of individual indexes is private to the
  9834. * compressor.
  9835. *
  9836. * data:
  9837. * The data to be stored, or NULL to delete the value. The
  9838. * contents are private to the compressor component.
  9839. */
  9840. typedef CALLBACK_API_C( OSStatus , ICMMultiPassSetDataAtTimeStampCallback )(void *storageRefCon, TimeValue64 timeStamp, long index, CFDataRef data);
  9841. /*
  9842. * ICMMultiPassGetTimeStampCallback
  9843. *
  9844. * Summary:
  9845. * Retrieves a time stamp for which a value is stored.
  9846. *
  9847. * Parameters:
  9848. *
  9849. * storageRefCon:
  9850. * The callbacks' reference value.
  9851. *
  9852. * fromTimeStamp:
  9853. * The initial time stamp. Ignored for some values of step.
  9854. *
  9855. * step:
  9856. * Indicates the kind of time stamp search to perform.
  9857. *
  9858. * timeStampOut:
  9859. * Points to a TimeValue64 to receive the found time stamp. Set to
  9860. * -1 if no time stamp is found.
  9861. */
  9862. typedef CALLBACK_API_C( OSStatus , ICMMultiPassGetTimeStampCallback )(void *storageRefCon, TimeValue64 fromTimeStamp, ICMMultiPassStorageStep step, TimeValue64 *timeStampOut);
  9863. /*
  9864. * ICMMultiPassCopyDataAtTimeStampCallback
  9865. *
  9866. * Summary:
  9867. * Retrieves a value at a given time stamp and index.
  9868. *
  9869. * Parameters:
  9870. *
  9871. * storageRefCon:
  9872. * The callbacks' reference value.
  9873. *
  9874. * timeStamp:
  9875. * The time stamp at which the value should be retrieved.
  9876. *
  9877. * index:
  9878. * An index by which multiple values may be stored at a time
  9879. * stamp. The meaning of individual indexes is private to the
  9880. * compressor.
  9881. *
  9882. * dataOut:
  9883. * Points to a variable to receive the value. Set to a
  9884. * newly-created CFMutableData containing the value for the given
  9885. * time stamp and index, or set to NULL if no value is at that
  9886. * time stamp and index. It will be the callers responsibility to
  9887. * release the CFMutableData.
  9888. */
  9889. typedef CALLBACK_API_C( OSStatus , ICMMultiPassCopyDataAtTimeStampCallback )(void *storageRefCon, TimeValue64 timeStamp, long index, CFMutableDataRef *dataOut);
  9890. /*
  9891. * ICMMultiPassReleaseCallback
  9892. *
  9893. * Summary:
  9894. * Called when the multipass storage's retain count drops to zero.
  9895. *
  9896. * Parameters:
  9897. *
  9898. * storageRefCon:
  9899. * The callbacks' reference value.
  9900. */
  9901. typedef CALLBACK_API_C( OSStatus , ICMMultiPassReleaseCallback )(void * storageRefCon);
  9902. /*
  9903. * ICMMultiPassStorageCallbacks
  9904. *
  9905. * Summary:
  9906. * A collection of callbacks for creating a custom multipass storage
  9907. * object.
  9908. */
  9909. struct ICMMultiPassStorageCallbacks {
  9910. /*
  9911. * The version of the struct. Set to
  9912. * kICMMultiPassStorageCallbacksVersionOne.
  9913. */
  9914. UInt32 version;
  9915. /*
  9916. * The callbacks' reference value.
  9917. */
  9918. void * storageRefCon;
  9919. /*
  9920. * The callback for storing values.
  9921. */
  9922. ICMMultiPassSetDataAtTimeStampCallback setDataAtTimeStampCallback;
  9923. /*
  9924. * The callback for finding time stamps.
  9925. */
  9926. ICMMultiPassGetTimeStampCallback getTimeStampCallback;
  9927. /*
  9928. * The callback for retrieving values.
  9929. */
  9930. ICMMultiPassCopyDataAtTimeStampCallback copyDataAtTimeStampCallback;
  9931. /*
  9932. * The callback for disposing the callback's state when done.
  9933. */
  9934. ICMMultiPassReleaseCallback releaseCallback;
  9935. };
  9936. typedef struct ICMMultiPassStorageCallbacks ICMMultiPassStorageCallbacks;
  9937. enum {
  9938. kICMMultiPassStorageCallbacksVersionOne = 1
  9939. };
  9940. /*
  9941. * ICMMultiPassStorageCreateWithCallbacks()
  9942. *
  9943. * Summary:
  9944. * Assembles a multipass storage mechanism from callbacks.
  9945. *
  9946. * Availability:
  9947. * Non-Carbon CFM: not available
  9948. * CarbonLib: not available
  9949. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9950. */
  9951. EXTERN_API_C( OSStatus )
  9952. ICMMultiPassStorageCreateWithCallbacks(
  9953. CFAllocatorRef allocator, /* can be NULL */
  9954. ICMMultiPassStorageCallbacks * callbacks,
  9955. ICMMultiPassStorageRef * multiPassStorageOut);
  9956. /*
  9957. * ICMMultiPassStorageRetain()
  9958. *
  9959. * Summary:
  9960. * Increments the retain count of a multipass storage object.
  9961. *
  9962. * Discussion:
  9963. * If you pass NULL to this function, nothing happens.
  9964. *
  9965. * Availability:
  9966. * Non-Carbon CFM: not available
  9967. * CarbonLib: not available
  9968. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9969. */
  9970. EXTERN_API_C( ICMMultiPassStorageRef )
  9971. ICMMultiPassStorageRetain(ICMMultiPassStorageRef multiPassStorage);
  9972. /*
  9973. * ICMMultiPassStorageRelease()
  9974. *
  9975. * Summary:
  9976. * Decrements the retain count of a multipass storage object. If it
  9977. * drops to zero, the object is disposed.
  9978. *
  9979. * Discussion:
  9980. * If you pass NULL to this function, nothing happens.
  9981. *
  9982. * Availability:
  9983. * Non-Carbon CFM: not available
  9984. * CarbonLib: not available
  9985. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9986. */
  9987. EXTERN_API_C( void )
  9988. ICMMultiPassStorageRelease(ICMMultiPassStorageRef multiPassStorage);
  9989. /*
  9990. * ICMMultiPassStorageGetTypeID()
  9991. *
  9992. * Summary:
  9993. * Returns the CFTypeID for multipass storage objects.
  9994. *
  9995. * Availability:
  9996. * Non-Carbon CFM: not available
  9997. * CarbonLib: not available
  9998. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  9999. */
  10000. EXTERN_API_C( CFTypeID )
  10001. ICMMultiPassStorageGetTypeID(void);
  10002. /* ICMCompressionFrameOptionsRef routines */
  10003. /*
  10004. * ICMCompressionFrameOptionsCreate()
  10005. *
  10006. * Summary:
  10007. * Creates a frame compression options object.
  10008. *
  10009. * Availability:
  10010. * Non-Carbon CFM: not available
  10011. * CarbonLib: not available
  10012. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10013. */
  10014. EXTERN_API_C( OSStatus )
  10015. ICMCompressionFrameOptionsCreate(
  10016. CFAllocatorRef allocator, /* can be NULL */
  10017. ICMCompressionSessionRef session,
  10018. ICMCompressionFrameOptionsRef * options);
  10019. /*
  10020. * ICMCompressionFrameOptionsCreateCopy()
  10021. *
  10022. * Summary:
  10023. * Copies a frame compression options object.
  10024. *
  10025. * Availability:
  10026. * Non-Carbon CFM: not available
  10027. * CarbonLib: not available
  10028. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10029. */
  10030. EXTERN_API_C( OSStatus )
  10031. ICMCompressionFrameOptionsCreateCopy(
  10032. CFAllocatorRef allocator, /* can be NULL */
  10033. ICMCompressionFrameOptionsRef originalOptions,
  10034. ICMCompressionFrameOptionsRef * copiedOptions);
  10035. /*
  10036. * ICMCompressionFrameOptionsRetain()
  10037. *
  10038. * Summary:
  10039. * Increments the retain count of a frame compression options object.
  10040. *
  10041. * Discussion:
  10042. * If you pass NULL to this function, nothing happens.
  10043. *
  10044. * Availability:
  10045. * Non-Carbon CFM: not available
  10046. * CarbonLib: not available
  10047. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10048. */
  10049. EXTERN_API_C( ICMCompressionFrameOptionsRef )
  10050. ICMCompressionFrameOptionsRetain(ICMCompressionFrameOptionsRef options);
  10051. /*
  10052. * ICMCompressionFrameOptionsRelease()
  10053. *
  10054. * Summary:
  10055. * Decrements the retain count of a frame compression options
  10056. * object. If it drops to zero, the object is disposed.
  10057. *
  10058. * Discussion:
  10059. * If you pass NULL to this function, nothing happens.
  10060. *
  10061. * Availability:
  10062. * Non-Carbon CFM: not available
  10063. * CarbonLib: not available
  10064. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10065. */
  10066. EXTERN_API_C( void )
  10067. ICMCompressionFrameOptionsRelease(ICMCompressionFrameOptionsRef options);
  10068. /*
  10069. * ICMCompressionFrameOptionsGetTypeID()
  10070. *
  10071. * Summary:
  10072. * Returns the CFTypeID for frame compression options objects.
  10073. *
  10074. * Availability:
  10075. * Non-Carbon CFM: not available
  10076. * CarbonLib: not available
  10077. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10078. */
  10079. EXTERN_API_C( CFTypeID )
  10080. ICMCompressionFrameOptionsGetTypeID(void);
  10081. /*
  10082. * ICMCompressionFrameOptionsGetPropertyInfo()
  10083. *
  10084. * Summary:
  10085. * Retrieves information about properties of a compression frame
  10086. * options object.
  10087. *
  10088. * Availability:
  10089. * Non-Carbon CFM: not available
  10090. * CarbonLib: not available
  10091. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10092. */
  10093. EXTERN_API_C( OSStatus )
  10094. ICMCompressionFrameOptionsGetPropertyInfo(
  10095. ICMCompressionFrameOptionsRef options,
  10096. ComponentPropertyClass inPropClass,
  10097. ComponentPropertyID inPropID,
  10098. ComponentValueType * outPropType, /* can be NULL */
  10099. ByteCount * outPropValueSize, /* can be NULL */
  10100. UInt32 * outPropertyFlags); /* can be NULL */
  10101. /*
  10102. * ICMCompressionFrameOptionsGetProperty()
  10103. *
  10104. * Summary:
  10105. * Retrieves the value of a specific property of a compression frame
  10106. * options object.
  10107. *
  10108. * Availability:
  10109. * Non-Carbon CFM: not available
  10110. * CarbonLib: not available
  10111. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10112. */
  10113. EXTERN_API_C( OSStatus )
  10114. ICMCompressionFrameOptionsGetProperty(
  10115. ICMCompressionFrameOptionsRef options,
  10116. ComponentPropertyClass inPropClass,
  10117. ComponentPropertyID inPropID,
  10118. ByteCount inPropValueSize,
  10119. ComponentValuePtr outPropValueAddress,
  10120. ByteCount * outPropValueSizeUsed); /* can be NULL */
  10121. /*
  10122. * ICMCompressionFrameOptionsSetProperty()
  10123. *
  10124. * Summary:
  10125. * Sets the value of a specific property of a compression frame
  10126. * options object.
  10127. *
  10128. * Availability:
  10129. * Non-Carbon CFM: not available
  10130. * CarbonLib: not available
  10131. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10132. */
  10133. EXTERN_API_C( OSStatus )
  10134. ICMCompressionFrameOptionsSetProperty(
  10135. ICMCompressionFrameOptionsRef options,
  10136. ComponentPropertyClass inPropClass,
  10137. ComponentPropertyID inPropID,
  10138. ByteCount inPropValueSize,
  10139. ConstComponentValuePtr inPropValueAddress);
  10140. /*
  10141. * Summary:
  10142. * Properties of compression frame options objects.
  10143. */
  10144. enum {
  10145. /*
  10146. * Class identifier for compression frame options object properties.
  10147. */
  10148. kQTPropertyClass_ICMCompressionFrameOptions = FOUR_CHAR_CODE('icfo'),
  10149. /*
  10150. * Forces frames to be compressed as key frames.
  10151. * The compressor must obey the "force key frame" flag if set. By
  10152. * default this property is false.
  10153. */
  10154. kICMCompressionFrameOptionsPropertyID_ForceKeyFrame = FOUR_CHAR_CODE('keyf'), /* Boolean, Read/Write */
  10155. /*
  10156. * Requests a frame be compressed as a particular frame type.
  10157. * The frame type setting may be ignored by the compressor if not
  10158. * appropriate.
  10159. * By default this is set to kICMFrameType_Unknown.
  10160. * Do not assume that kICMFrameType_I means a key frame; if you need
  10161. * a key frame, set the "force key frame" property.
  10162. */
  10163. kICMCompressionFrameOptionsPropertyID_FrameType = FOUR_CHAR_CODE('frty') /* ICMFrameType, Read/Write */
  10164. };
  10165. /*
  10166. * ICMCompressionFrameOptionsSetForceKeyFrame()
  10167. *
  10168. * Summary:
  10169. * Forces frames to be compressed as key frames.
  10170. *
  10171. * Discussion:
  10172. * The compressor must obey the "force key frame" flag if set. By
  10173. * default this is set false.
  10174. *
  10175. * Availability:
  10176. * Non-Carbon CFM: not available
  10177. * CarbonLib: not available
  10178. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10179. */
  10180. EXTERN_API_C( OSStatus )
  10181. ICMCompressionFrameOptionsSetForceKeyFrame(
  10182. ICMCompressionFrameOptionsRef options,
  10183. Boolean forceKeyFrame);
  10184. /*
  10185. * ICMCompressionFrameOptionsGetForceKeyFrame()
  10186. *
  10187. * Summary:
  10188. * Retrieves the "force key frame" flag.
  10189. *
  10190. * Availability:
  10191. * Non-Carbon CFM: not available
  10192. * CarbonLib: not available
  10193. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10194. */
  10195. EXTERN_API_C( Boolean )
  10196. ICMCompressionFrameOptionsGetForceKeyFrame(ICMCompressionFrameOptionsRef options);
  10197. /*
  10198. * ICMCompressionFrameOptionsSetFrameType()
  10199. *
  10200. * Summary:
  10201. * Requests a frame be compressed as a particular frame type.
  10202. *
  10203. * Discussion:
  10204. * The frame type setting may be ignored by the compressor if not
  10205. * appropriate.
  10206. * By default this is set to kICMFrameType_Unknown.
  10207. * Do not assume that kICMFrameType_I means a key frame; if you need
  10208. * a key frame, set forceKeyFrame.
  10209. *
  10210. * Availability:
  10211. * Non-Carbon CFM: not available
  10212. * CarbonLib: not available
  10213. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10214. */
  10215. EXTERN_API_C( OSStatus )
  10216. ICMCompressionFrameOptionsSetFrameType(
  10217. ICMCompressionFrameOptionsRef options,
  10218. ICMFrameType frameType);
  10219. /*
  10220. * ICMCompressionFrameOptionsGetFrameType()
  10221. *
  10222. * Summary:
  10223. * Retrieves the frame type setting.
  10224. *
  10225. * Availability:
  10226. * Non-Carbon CFM: not available
  10227. * CarbonLib: not available
  10228. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10229. */
  10230. EXTERN_API_C( ICMFrameType )
  10231. ICMCompressionFrameOptionsGetFrameType(ICMCompressionFrameOptionsRef options);
  10232. /* ICMEncodedFrameRef routines */
  10233. /*
  10234. * ICMEncodedFrameRetain()
  10235. *
  10236. * Summary:
  10237. * Increments the retain count of an encoded frame object.
  10238. *
  10239. * Discussion:
  10240. * If you pass NULL to this function, nothing happens.
  10241. *
  10242. * Availability:
  10243. * Non-Carbon CFM: not available
  10244. * CarbonLib: not available
  10245. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10246. */
  10247. EXTERN_API_C( ICMEncodedFrameRef )
  10248. ICMEncodedFrameRetain(ICMEncodedFrameRef frame);
  10249. /*
  10250. * ICMEncodedFrameRelease()
  10251. *
  10252. * Summary:
  10253. * Decrements the retain count of an encoded frame object. If it
  10254. * drops to zero, the object is disposed.
  10255. *
  10256. * Discussion:
  10257. * If you pass NULL to this function, nothing happens.
  10258. *
  10259. * Availability:
  10260. * Non-Carbon CFM: not available
  10261. * CarbonLib: not available
  10262. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10263. */
  10264. EXTERN_API_C( void )
  10265. ICMEncodedFrameRelease(ICMEncodedFrameRef frame);
  10266. /*
  10267. * ICMEncodedFrameGetTypeID()
  10268. *
  10269. * Summary:
  10270. * Returns the CFTypeID for encoded frame objects.
  10271. *
  10272. * Availability:
  10273. * Non-Carbon CFM: not available
  10274. * CarbonLib: not available
  10275. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10276. */
  10277. EXTERN_API_C( CFTypeID )
  10278. ICMEncodedFrameGetTypeID(void);
  10279. /*
  10280. * ICMEncodedFrameGetDataPtr()
  10281. *
  10282. * Summary:
  10283. * Gets the data buffer.
  10284. *
  10285. * Availability:
  10286. * Non-Carbon CFM: not available
  10287. * CarbonLib: not available
  10288. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10289. */
  10290. EXTERN_API_C( UInt8 * )
  10291. ICMEncodedFrameGetDataPtr(ICMEncodedFrameRef frame);
  10292. /*
  10293. * ICMEncodedFrameGetBufferSize()
  10294. *
  10295. * Summary:
  10296. * Gets the size of the data buffer.
  10297. *
  10298. * Discussion:
  10299. * This is the physical size of the buffer.
  10300. *
  10301. * Availability:
  10302. * Non-Carbon CFM: not available
  10303. * CarbonLib: not available
  10304. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10305. */
  10306. EXTERN_API_C( ByteCount )
  10307. ICMEncodedFrameGetBufferSize(ICMEncodedFrameRef frame);
  10308. /*
  10309. * ICMEncodedFrameGetDataSize()
  10310. *
  10311. * Summary:
  10312. * Gets the data size of the compressed frame in the buffer.
  10313. *
  10314. * Discussion:
  10315. * This is the logical size of the frame data. It may be less than
  10316. * the physical size of the buffer.
  10317. *
  10318. * Availability:
  10319. * Non-Carbon CFM: not available
  10320. * CarbonLib: not available
  10321. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10322. */
  10323. EXTERN_API_C( ByteCount )
  10324. ICMEncodedFrameGetDataSize(ICMEncodedFrameRef frame);
  10325. /*
  10326. * ICMEncodedFrameSetDataSize()
  10327. *
  10328. * Summary:
  10329. * Sets the data size of the compressed frame in the buffer.
  10330. *
  10331. * Availability:
  10332. * Non-Carbon CFM: not available
  10333. * CarbonLib: not available
  10334. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10335. */
  10336. EXTERN_API_C( OSStatus )
  10337. ICMEncodedFrameSetDataSize(
  10338. ICMMutableEncodedFrameRef frame,
  10339. ByteCount dataSize);
  10340. /*
  10341. * ICMEncodedFrameGetDecodeNumber()
  10342. *
  10343. * Summary:
  10344. * Retrieves the decode number.
  10345. *
  10346. * Discussion:
  10347. * The ICM automatically stamps ascending decode numbers on frames
  10348. * after the compressor emits them. The first decode number in a
  10349. * session is 1.
  10350. * Note: Compressors should not call this function.
  10351. *
  10352. * Availability:
  10353. * Non-Carbon CFM: not available
  10354. * CarbonLib: not available
  10355. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10356. */
  10357. EXTERN_API_C( UInt32 )
  10358. ICMEncodedFrameGetDecodeNumber(ICMEncodedFrameRef frame);
  10359. /*
  10360. * ICMEncodedFrameGetTimeScale()
  10361. *
  10362. * Summary:
  10363. * Retrieves the timescale.
  10364. *
  10365. * Discussion:
  10366. * This is always the same as the timescale of the compression
  10367. * session.
  10368. *
  10369. * Availability:
  10370. * Non-Carbon CFM: not available
  10371. * CarbonLib: not available
  10372. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10373. */
  10374. EXTERN_API_C( TimeScale )
  10375. ICMEncodedFrameGetTimeScale(ICMEncodedFrameRef frame);
  10376. /*
  10377. * ICMEncodedFrameGetImageDescription()
  10378. *
  10379. * Summary:
  10380. * Retrieves the image description.
  10381. *
  10382. * Discussion:
  10383. * Returns the same image description handle as
  10384. * ICMCompressionSessionGetImageDescription.
  10385. * IMPORTANT: The caller should NOT dispose this handle.
  10386. *
  10387. * Availability:
  10388. * Non-Carbon CFM: not available
  10389. * CarbonLib: not available
  10390. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10391. */
  10392. EXTERN_API_C( OSStatus )
  10393. ICMEncodedFrameGetImageDescription(
  10394. ICMEncodedFrameRef frame,
  10395. ImageDescriptionHandle * imageDescOut);
  10396. /*
  10397. * ICMEncodedFrameGetValidTimeFlags()
  10398. *
  10399. * Summary:
  10400. * Retrieves flags indicating which of the time stamps and durations
  10401. * are valid.
  10402. *
  10403. * Availability:
  10404. * Non-Carbon CFM: not available
  10405. * CarbonLib: not available
  10406. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10407. */
  10408. EXTERN_API_C( ICMValidTimeFlags )
  10409. ICMEncodedFrameGetValidTimeFlags(ICMEncodedFrameRef frame);
  10410. /*
  10411. * ICMEncodedFrameGetDecodeTimeStamp()
  10412. *
  10413. * Summary:
  10414. * Retrieves the frame's decode time stamp.
  10415. *
  10416. * Availability:
  10417. * Non-Carbon CFM: not available
  10418. * CarbonLib: not available
  10419. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10420. */
  10421. EXTERN_API_C( TimeValue64 )
  10422. ICMEncodedFrameGetDecodeTimeStamp(ICMEncodedFrameRef frame);
  10423. /*
  10424. * ICMEncodedFrameGetDisplayTimeStamp()
  10425. *
  10426. * Summary:
  10427. * Retrieves the frame's display time stamp.
  10428. *
  10429. * Availability:
  10430. * Non-Carbon CFM: not available
  10431. * CarbonLib: not available
  10432. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10433. */
  10434. EXTERN_API_C( TimeValue64 )
  10435. ICMEncodedFrameGetDisplayTimeStamp(ICMEncodedFrameRef frame);
  10436. /*
  10437. * ICMEncodedFrameGetDisplayOffset()
  10438. *
  10439. * Summary:
  10440. * Retrieves the frame's display offset, which is the offset from
  10441. * decode time stamp to display time stamp.
  10442. *
  10443. * Availability:
  10444. * Non-Carbon CFM: not available
  10445. * CarbonLib: not available
  10446. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10447. */
  10448. EXTERN_API_C( TimeValue64 )
  10449. ICMEncodedFrameGetDisplayOffset(ICMEncodedFrameRef frame);
  10450. /*
  10451. * ICMEncodedFrameGetDecodeDuration()
  10452. *
  10453. * Summary:
  10454. * Retrieves the frame's decode duration.
  10455. *
  10456. * Availability:
  10457. * Non-Carbon CFM: not available
  10458. * CarbonLib: not available
  10459. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10460. */
  10461. EXTERN_API_C( TimeValue64 )
  10462. ICMEncodedFrameGetDecodeDuration(ICMEncodedFrameRef frame);
  10463. /*
  10464. * ICMEncodedFrameGetDisplayDuration()
  10465. *
  10466. * Summary:
  10467. * Retrieves the frame's display duration.
  10468. *
  10469. * Availability:
  10470. * Non-Carbon CFM: not available
  10471. * CarbonLib: not available
  10472. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10473. */
  10474. EXTERN_API_C( TimeValue64 )
  10475. ICMEncodedFrameGetDisplayDuration(ICMEncodedFrameRef frame);
  10476. /*
  10477. * ICMEncodedFrameSetValidTimeFlags()
  10478. *
  10479. * Summary:
  10480. * Sets flags that indicate which of the time stamps and durations
  10481. * are valid.
  10482. *
  10483. * Discussion:
  10484. * Note that setting the (decode/display) (timestamp/duration)
  10485. * automatically sets the corresponding valid time flags. For
  10486. * example, calling ICMEncodedFrameSetDecodeTimeStamp sets
  10487. * kICMValidTime_DisplayTimeStampIsValid. If both decode timestamp
  10488. * and display timestamp are valid,
  10489. * kICMValidTime_DisplayOffsetIsValid is automatically set.
  10490. *
  10491. * Availability:
  10492. * Non-Carbon CFM: not available
  10493. * CarbonLib: not available
  10494. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10495. */
  10496. EXTERN_API_C( OSStatus )
  10497. ICMEncodedFrameSetValidTimeFlags(
  10498. ICMMutableEncodedFrameRef frame,
  10499. ICMValidTimeFlags validTimeFlags);
  10500. /*
  10501. * ICMEncodedFrameSetDecodeTimeStamp()
  10502. *
  10503. * Summary:
  10504. * Sets the decode time stamp.
  10505. *
  10506. * Discussion:
  10507. * This automatically sets the kICMValidTime_DecodeTimeStampIsValid
  10508. * flag. If the display timestamp is valid, it also sets the
  10509. * kICMValidTime_DisplayOffsetIsValid flag.
  10510. *
  10511. * Availability:
  10512. * Non-Carbon CFM: not available
  10513. * CarbonLib: not available
  10514. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10515. */
  10516. EXTERN_API_C( OSStatus )
  10517. ICMEncodedFrameSetDecodeTimeStamp(
  10518. ICMMutableEncodedFrameRef frame,
  10519. TimeValue64 decodeTimeStamp);
  10520. /*
  10521. * ICMEncodedFrameSetDisplayTimeStamp()
  10522. *
  10523. * Summary:
  10524. * Sets the display time stamp.
  10525. *
  10526. * Discussion:
  10527. * This automatically sets the kICMValidTime_DisplayTimeStampIsValid
  10528. * flag. If the decode timestamp is valid, it also sets the
  10529. * kICMValidTime_DisplayOffsetIsValid flag.
  10530. *
  10531. * Availability:
  10532. * Non-Carbon CFM: not available
  10533. * CarbonLib: not available
  10534. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10535. */
  10536. EXTERN_API_C( OSStatus )
  10537. ICMEncodedFrameSetDisplayTimeStamp(
  10538. ICMMutableEncodedFrameRef frame,
  10539. TimeValue64 displayTimeStamp);
  10540. /*
  10541. * ICMEncodedFrameSetDecodeDuration()
  10542. *
  10543. * Summary:
  10544. * Sets the decode duration.
  10545. *
  10546. * Discussion:
  10547. * This automatically sets the kICMValidTime_DecodeDurationIsValid
  10548. * flag.
  10549. *
  10550. * Availability:
  10551. * Non-Carbon CFM: not available
  10552. * CarbonLib: not available
  10553. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10554. */
  10555. EXTERN_API_C( OSStatus )
  10556. ICMEncodedFrameSetDecodeDuration(
  10557. ICMMutableEncodedFrameRef frame,
  10558. TimeValue64 decodeDuration);
  10559. /*
  10560. * ICMEncodedFrameSetDisplayDuration()
  10561. *
  10562. * Summary:
  10563. * Sets the display duration.
  10564. *
  10565. * Discussion:
  10566. * This automatically sets the kICMValidTime_DisplayDurationIsValid
  10567. * flag.
  10568. *
  10569. * Availability:
  10570. * Non-Carbon CFM: not available
  10571. * CarbonLib: not available
  10572. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10573. */
  10574. EXTERN_API_C( OSStatus )
  10575. ICMEncodedFrameSetDisplayDuration(
  10576. ICMMutableEncodedFrameRef frame,
  10577. TimeValue64 displayDuration);
  10578. /*
  10579. * ICMEncodedFrameGetMediaSampleFlags()
  10580. *
  10581. * Summary:
  10582. * Retrieves the media sample flags for an encoded frame.
  10583. *
  10584. * Availability:
  10585. * Non-Carbon CFM: not available
  10586. * CarbonLib: not available
  10587. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10588. */
  10589. EXTERN_API_C( MediaSampleFlags )
  10590. ICMEncodedFrameGetMediaSampleFlags(ICMEncodedFrameRef frame);
  10591. /*
  10592. * ICMEncodedFrameSetMediaSampleFlags()
  10593. *
  10594. * Summary:
  10595. * Sets the media sample flags for an encoded frame.
  10596. *
  10597. * Availability:
  10598. * Non-Carbon CFM: not available
  10599. * CarbonLib: not available
  10600. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10601. */
  10602. EXTERN_API_C( OSStatus )
  10603. ICMEncodedFrameSetMediaSampleFlags(
  10604. ICMMutableEncodedFrameRef frame,
  10605. MediaSampleFlags mediaSampleFlags);
  10606. /*
  10607. * ICMEncodedFrameGetFrameType()
  10608. *
  10609. * Summary:
  10610. * Retrieves the frame type for an encoded frame.
  10611. *
  10612. * Availability:
  10613. * Non-Carbon CFM: not available
  10614. * CarbonLib: not available
  10615. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10616. */
  10617. EXTERN_API_C( ICMFrameType )
  10618. ICMEncodedFrameGetFrameType(ICMEncodedFrameRef frame);
  10619. /*
  10620. * ICMEncodedFrameSetFrameType()
  10621. *
  10622. * Summary:
  10623. * Sets the frame type for an encoded frame.
  10624. *
  10625. * Availability:
  10626. * Non-Carbon CFM: not available
  10627. * CarbonLib: not available
  10628. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10629. */
  10630. EXTERN_API_C( OSStatus )
  10631. ICMEncodedFrameSetFrameType(
  10632. ICMMutableEncodedFrameRef frame,
  10633. ICMFrameType frameType);
  10634. /*
  10635. * ICMEncodedFrameGetSimilarity()
  10636. *
  10637. * Summary:
  10638. * Retrieves the similarity for an encoded frame.
  10639. *
  10640. * Discussion:
  10641. * 1.0 means identical. 0.0 means not at all alike. By default,
  10642. * this is set to -1.0, which means unknown.
  10643. *
  10644. * Availability:
  10645. * Non-Carbon CFM: not available
  10646. * CarbonLib: not available
  10647. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10648. */
  10649. EXTERN_API_C( Float32 )
  10650. ICMEncodedFrameGetSimilarity(ICMEncodedFrameRef frame);
  10651. /*
  10652. * ICMEncodedFrameSetSimilarity()
  10653. *
  10654. * Summary:
  10655. * Sets the similarity for an encoded frame.
  10656. *
  10657. * Discussion:
  10658. * 1.0 means identical. 0.0 means not at all alike.
  10659. *
  10660. * Availability:
  10661. * Non-Carbon CFM: not available
  10662. * CarbonLib: not available
  10663. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10664. */
  10665. EXTERN_API_C( OSStatus )
  10666. ICMEncodedFrameSetSimilarity(
  10667. ICMMutableEncodedFrameRef frame,
  10668. Float32 similarity);
  10669. /*
  10670. * ICMEncodedFrameGetSourceFrameRefCon()
  10671. *
  10672. * Summary:
  10673. * Retrieves the source frame reference value.
  10674. *
  10675. * Discussion:
  10676. * This is copied from the sourceFrameRefCon parameter to
  10677. * ICMCompressionSessionEncodeFrame.
  10678. *
  10679. * Availability:
  10680. * Non-Carbon CFM: not available
  10681. * CarbonLib: not available
  10682. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10683. */
  10684. EXTERN_API_C( void * )
  10685. ICMEncodedFrameGetSourceFrameRefCon(ICMEncodedFrameRef frame);
  10686. /* ICMCompressorSession interface for compressor components */
  10687. /*
  10688. * ICMCompressorSessionRef
  10689. *
  10690. * Summary:
  10691. * Represents the session between the ICM and an image compressor
  10692. * component.
  10693. *
  10694. * Discussion:
  10695. * (Do not confuse this with ICMCompressionSessionRef, which is the
  10696. * session between the client and the ICM.) Note: compressors do not
  10697. * need to make any retain or release calls on this token.
  10698. */
  10699. typedef struct OpaqueICMCompressorSession* ICMCompressorSessionRef;
  10700. /*
  10701. * ICMCompressorSourceFrameRef
  10702. *
  10703. * Summary:
  10704. * An opaque token that represents a frame that has been passed to
  10705. * ICMCompressionSessionEncodeFrame.
  10706. *
  10707. * Discussion:
  10708. * Such tokens are passed to the compressor component, which may
  10709. * retain a window of them in order to perform out-of-order encoding.
  10710. */
  10711. typedef struct OpaqueICMCompressorSourceFrame* ICMCompressorSourceFrameRef;
  10712. /*
  10713. * ICMCompressorSourceFrameRetain()
  10714. *
  10715. * Summary:
  10716. * Increments the retain count of a source frame object.
  10717. *
  10718. * Discussion:
  10719. * If you pass NULL to this function, nothing happens.
  10720. *
  10721. * Availability:
  10722. * Non-Carbon CFM: not available
  10723. * CarbonLib: not available
  10724. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10725. */
  10726. EXTERN_API_C( ICMCompressorSourceFrameRef )
  10727. ICMCompressorSourceFrameRetain(ICMCompressorSourceFrameRef sourceFrame);
  10728. /*
  10729. * ICMCompressorSourceFrameRelease()
  10730. *
  10731. * Summary:
  10732. * Decrements the retain count of a source frame object. If it
  10733. * drops to zero, the object is disposed.
  10734. *
  10735. * Discussion:
  10736. * If you pass NULL to this function, nothing happens.
  10737. *
  10738. * Availability:
  10739. * Non-Carbon CFM: not available
  10740. * CarbonLib: not available
  10741. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10742. */
  10743. EXTERN_API_C( void )
  10744. ICMCompressorSourceFrameRelease(ICMCompressorSourceFrameRef sourceFrame);
  10745. /*
  10746. * ICMCompressorSourceFrameGetTypeID()
  10747. *
  10748. * Summary:
  10749. * Returns the CFTypeID for source frame objects.
  10750. *
  10751. * Availability:
  10752. * Non-Carbon CFM: not available
  10753. * CarbonLib: not available
  10754. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10755. */
  10756. EXTERN_API_C( CFTypeID )
  10757. ICMCompressorSourceFrameGetTypeID(void);
  10758. /*
  10759. * ICMCompressorSourceFrameGetPixelBuffer()
  10760. *
  10761. * Summary:
  10762. * Retrieves a source frame's pixel buffer.
  10763. *
  10764. * Availability:
  10765. * Non-Carbon CFM: not available
  10766. * CarbonLib: not available
  10767. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10768. */
  10769. EXTERN_API_C( CVPixelBufferRef )
  10770. ICMCompressorSourceFrameGetPixelBuffer(ICMCompressorSourceFrameRef sourceFrame);
  10771. /*
  10772. * ICMCompressorSourceFrameGetDisplayNumber()
  10773. *
  10774. * Summary:
  10775. * Retrieves a source frame's display number.
  10776. *
  10777. * Discussion:
  10778. * The ICM tags source frames with display numbers in the order they
  10779. * are passed to ICMCompressionSessionEncodeFrame; the first display
  10780. * number is 1. Compressors may compare these numbers to work out
  10781. * whether prediction is forward or backward even when display times
  10782. * are not provided.
  10783. *
  10784. * Availability:
  10785. * Non-Carbon CFM: not available
  10786. * CarbonLib: not available
  10787. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10788. */
  10789. EXTERN_API_C( long )
  10790. ICMCompressorSourceFrameGetDisplayNumber(ICMCompressorSourceFrameRef sourceFrame);
  10791. /*
  10792. * ICMCompressorSourceFrameGetDisplayTimeStampAndDuration()
  10793. *
  10794. * Summary:
  10795. * Retrieves the display time stamp and duration of a source frame.
  10796. *
  10797. * Availability:
  10798. * Non-Carbon CFM: not available
  10799. * CarbonLib: not available
  10800. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10801. */
  10802. EXTERN_API_C( OSStatus )
  10803. ICMCompressorSourceFrameGetDisplayTimeStampAndDuration(
  10804. ICMCompressorSourceFrameRef sourceFrame,
  10805. TimeValue64 * displayTimeStampOut, /* can be NULL */
  10806. TimeValue64 * displayDurationOut, /* can be NULL */
  10807. TimeScale * timeScaleOut, /* can be NULL */
  10808. ICMValidTimeFlags * validTimeFlagsOut); /* can be NULL */
  10809. /*
  10810. * ICMCompressorSourceFrameGetFrameOptions()
  10811. *
  10812. * Summary:
  10813. * Retrieves the frame compression options for a source frame.
  10814. *
  10815. * Availability:
  10816. * Non-Carbon CFM: not available
  10817. * CarbonLib: not available
  10818. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10819. */
  10820. EXTERN_API_C( ICMCompressionFrameOptionsRef )
  10821. ICMCompressorSourceFrameGetFrameOptions(ICMCompressorSourceFrameRef sourceFrame);
  10822. /*
  10823. * ICMCompressorSourceFrameDetachPixelBuffer()
  10824. *
  10825. * Summary:
  10826. * Disconnects the pixel buffer from the source frame and allows it
  10827. * to be released.
  10828. *
  10829. * Discussion:
  10830. * Compressor components often need to hold onto
  10831. * ICMCompressorSourceFrameRefs for some time after they are done
  10832. * with the pixel buffers. In order to allow pixel buffer memory to
  10833. * be released earlier, they may call
  10834. * ICMCompressorSourceFrameDetachPixelBuffer to declare that they
  10835. * have no further need for the source frame's pixel buffer. After
  10836. * calling this, ICMCompressorSourceFrameGetPixelBuffer will return
  10837. * NULL.
  10838. *
  10839. * Availability:
  10840. * Non-Carbon CFM: not available
  10841. * CarbonLib: not available
  10842. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10843. */
  10844. EXTERN_API_C( OSStatus )
  10845. ICMCompressorSourceFrameDetachPixelBuffer(ICMCompressorSourceFrameRef sourceFrame);
  10846. /*
  10847. * ICMCompressorSessionDropFrame()
  10848. *
  10849. * Summary:
  10850. * Called by a compressor to indicate that sourceFrame has been
  10851. * dropped and will not contribute to any encoded frames.
  10852. *
  10853. * Discussion:
  10854. * Calling this function does not automatically release the source
  10855. * frame; if the compressor called ICMCompressorSourceFrameRetain it
  10856. * should still call ICMCompressorSourceFrameRelease.
  10857. *
  10858. * Availability:
  10859. * Non-Carbon CFM: not available
  10860. * CarbonLib: not available
  10861. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10862. */
  10863. EXTERN_API_C( OSStatus )
  10864. ICMCompressorSessionDropFrame(
  10865. ICMCompressorSessionRef session,
  10866. ICMCompressorSourceFrameRef sourceFrame);
  10867. /*
  10868. * ICMCompressorSessionEmitEncodedFrame()
  10869. *
  10870. * Summary:
  10871. * Called by a compressor to output an encoded frame corresponding
  10872. * to one (or more) source frames.
  10873. *
  10874. * Discussion:
  10875. * (Encoded frames may only correspond to more than one source frame
  10876. * if allowFrameTimeChanges is set in the
  10877. * compressionSessionOptions.)
  10878. * After calling this, the compressor should release the encoded
  10879. * frame by calling ICMEncodedFrameRelease.
  10880. * Calling this function does not automatically release the source
  10881. * frames; if the compressor called ICMCompressorSourceFrameRetain
  10882. * it should still call ICMCompressorSourceFrameRelease.
  10883. *
  10884. * Availability:
  10885. * Non-Carbon CFM: not available
  10886. * CarbonLib: not available
  10887. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10888. */
  10889. EXTERN_API_C( OSStatus )
  10890. ICMCompressorSessionEmitEncodedFrame(
  10891. ICMCompressorSessionRef session,
  10892. ICMMutableEncodedFrameRef encodedFrame,
  10893. long numberOfSourceFrames,
  10894. ICMCompressorSourceFrameRef sourceFrames[]);
  10895. /*
  10896. * ICMEncodedFrameCreateMutable()
  10897. *
  10898. * Summary:
  10899. * Called by a compressor to create an encoded-frame token
  10900. * corresponding to a given source frame.
  10901. *
  10902. * Discussion:
  10903. * The encoded frame will initially have zero mediaSampleFlags; if
  10904. * the frame is not a key frame, the compressor must call
  10905. * ICMEncodedFrameSetMediaSampleFlags to set mediaSampleNotSync. If
  10906. * the frame is droppable, the compressor should set
  10907. * mediaSampleDroppable. If the frame is a partial key frame, the
  10908. * compressor should set mediaSamplePartialSync.
  10909. * The encoded frame will initially have undefined decodeTimeStamp
  10910. * and decodeDuration. The compressor may set these directly by
  10911. * calling ICMEncodedFrameSetDecodeTimeStamp and/or
  10912. * ICMEncodedFrameSetDecodeDuration. If these are not set by the
  10913. * compressor, the ICM will attempt to derive them.
  10914. *
  10915. * Availability:
  10916. * Non-Carbon CFM: not available
  10917. * CarbonLib: not available
  10918. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10919. */
  10920. EXTERN_API_C( OSStatus )
  10921. ICMEncodedFrameCreateMutable(
  10922. ICMCompressorSessionRef session,
  10923. ICMCompressorSourceFrameRef sourceFrame,
  10924. ByteCount bufferSize,
  10925. ICMMutableEncodedFrameRef * frameOut);
  10926. /* Multi-pass storage access routines for compressor components */
  10927. /*
  10928. * ICMMultiPassStorageSetDataAtTimeStamp()
  10929. *
  10930. * Summary:
  10931. * Called by a multipass-capable compressor to store data at a given
  10932. * timestamp.
  10933. *
  10934. * Discussion:
  10935. * The new data replaces any previous data held at that timestamp.
  10936. * If data is NULL, the data for that timestamp is deleted. The
  10937. * format of the data is private to the compressor.
  10938. *
  10939. * Parameters:
  10940. *
  10941. * multiPassStorage:
  10942. * The multipass storage object.
  10943. *
  10944. * timeStamp:
  10945. * The time stamp at which the value should be stored.
  10946. *
  10947. * index:
  10948. * An index by which multiple values may be stored at a time
  10949. * stamp. The meaning of individual indexes is private to the
  10950. * compressor.
  10951. *
  10952. * data:
  10953. * The data to be stored, or NULL to delete the value.
  10954. *
  10955. * Availability:
  10956. * Non-Carbon CFM: not available
  10957. * CarbonLib: not available
  10958. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10959. */
  10960. EXTERN_API_C( OSStatus )
  10961. ICMMultiPassStorageSetDataAtTimeStamp(
  10962. ICMMultiPassStorageRef multiPassStorage,
  10963. TimeValue64 timeStamp,
  10964. long index,
  10965. CFDataRef data);
  10966. /*
  10967. * ICMMultiPassStorageGetTimeStamp()
  10968. *
  10969. * Summary:
  10970. * Called by a multipass-capable compressor to retrieve a time stamp
  10971. * for which a value is stored.
  10972. *
  10973. * Parameters:
  10974. *
  10975. * multiPassStorage:
  10976. * The multipass storage object.
  10977. *
  10978. * fromTimeStamp:
  10979. * The initial time stamp. Ignored for some values of step.
  10980. *
  10981. * step:
  10982. * Indicates the kind of time stamp search to perform.
  10983. *
  10984. * timeStampOut:
  10985. * Points to a TimeValue64 to receive the found time stamp. It
  10986. * will be set to -1 if no time stamp is found.
  10987. *
  10988. * Availability:
  10989. * Non-Carbon CFM: not available
  10990. * CarbonLib: not available
  10991. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  10992. */
  10993. EXTERN_API_C( OSStatus )
  10994. ICMMultiPassStorageGetTimeStamp(
  10995. ICMMultiPassStorageRef multiPassStorage,
  10996. TimeValue64 fromTimeStamp,
  10997. ICMMultiPassStorageStep step,
  10998. TimeValue64 * timeStampOut);
  10999. /*
  11000. * ICMMultiPassStorageCopyDataAtTimeStamp()
  11001. *
  11002. * Summary:
  11003. * Called by a multipass-capable compressor to retrieve data at a
  11004. * given timestamp.
  11005. *
  11006. * Parameters:
  11007. *
  11008. * multiPassStorage:
  11009. * The multipass storage object.
  11010. *
  11011. * timeStamp:
  11012. * The time stamp at which the value should be retrieved.
  11013. *
  11014. * index:
  11015. * An index by which multiple values may be stored at a time
  11016. * stamp. The meaning of individual indexes is private to the
  11017. * compressor.
  11018. *
  11019. * dataOut:
  11020. * Points to a CFMutableDataRef to receive the value. It will be
  11021. * set to a newly-created CFMutableData containing the value for
  11022. * the given time stamp and index, or set to NULL if no value is
  11023. * at that time stamp and index. It is the caller's responsibility
  11024. * to release the CFMutableData.
  11025. *
  11026. * Availability:
  11027. * Non-Carbon CFM: not available
  11028. * CarbonLib: not available
  11029. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11030. */
  11031. EXTERN_API_C( OSStatus )
  11032. ICMMultiPassStorageCopyDataAtTimeStamp(
  11033. ICMMultiPassStorageRef multiPassStorage,
  11034. TimeValue64 timeStamp,
  11035. long index,
  11036. CFMutableDataRef * dataOut);
  11037. #if TARGET_OS_MAC
  11038. /*
  11039. * kQTVisualContextTypeKey
  11040. *
  11041. * Summary:
  11042. * Read-only CFStringRef: Type of the visual context.
  11043. *
  11044. * Availability:
  11045. * Non-Carbon CFM: not available
  11046. * CarbonLib: not available
  11047. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11048. */
  11049. extern const CFStringRef kQTVisualContextTypeKey;
  11050. /*
  11051. * kQTVisualContextType_PixelBuffer
  11052. *
  11053. * Summary:
  11054. * Value for kQTVisualContextTypeKey for pixel buffer visual
  11055. * contexts.
  11056. *
  11057. * Availability:
  11058. * Non-Carbon CFM: not available
  11059. * CarbonLib: not available
  11060. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11061. */
  11062. extern const CFStringRef kQTVisualContextType_PixelBuffer;
  11063. /*
  11064. * kQTVisualContextType_OpenGLTexture
  11065. *
  11066. * Summary:
  11067. * Value for kQTVisualContextTypeKey for OpenGL texture visual
  11068. * contexts.
  11069. *
  11070. * Availability:
  11071. * Non-Carbon CFM: not available
  11072. * CarbonLib: not available
  11073. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11074. */
  11075. extern const CFStringRef kQTVisualContextType_OpenGLTexture;
  11076. /*
  11077. * kQTVisualContextWorkingColorSpaceKey
  11078. *
  11079. * Summary:
  11080. * CGColorSpaceRef: Color space in which QuickTime will perform
  11081. * image processing. If this attribute is not set, images will be
  11082. * processed in the output color space.
  11083. *
  11084. * Availability:
  11085. * Non-Carbon CFM: not available
  11086. * CarbonLib: not available
  11087. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11088. */
  11089. extern const CFStringRef kQTVisualContextWorkingColorSpaceKey;
  11090. /*
  11091. * kQTVisualContextOutputColorSpaceKey
  11092. *
  11093. * Summary:
  11094. * CGColorSpaceRef: Color space of images produced by this visual
  11095. * context. If this attribute is not set, images may be in any color
  11096. * space.
  11097. *
  11098. * Availability:
  11099. * Non-Carbon CFM: not available
  11100. * CarbonLib: not available
  11101. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11102. */
  11103. extern const CFStringRef kQTVisualContextOutputColorSpaceKey;
  11104. /*
  11105. * kQTVisualContextExpectedReadAheadKey
  11106. *
  11107. * Summary:
  11108. * CFNumberRef: Number of seconds ahead of real-time that the client
  11109. * expects to pull images out of the visual context. Applications
  11110. * using the CoreVideo display link should set this attribute
  11111. * according to value returned from
  11112. * CVDisplayLinkGetOutputVideoLatency().
  11113. *
  11114. * Availability:
  11115. * Non-Carbon CFM: not available
  11116. * CarbonLib: not available
  11117. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11118. */
  11119. extern const CFStringRef kQTVisualContextExpectedReadAheadKey;
  11120. /*
  11121. * kQTVisualContextPixelBufferAttributesKey
  11122. *
  11123. * Summary:
  11124. * CFDictionaryRef: Dictionary containing pixel buffer attributes as
  11125. * described for the CoreVideo pixel buffer pool.
  11126. *
  11127. * Availability:
  11128. * Non-Carbon CFM: not available
  11129. * CarbonLib: not available
  11130. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11131. */
  11132. extern const CFStringRef kQTVisualContextPixelBufferAttributesKey;
  11133. /*
  11134. * kQTVisualContextTargetDimensionsKey
  11135. *
  11136. * Summary:
  11137. * CFDictionaryRef: Dictionary containing
  11138. * kQTVisualContextTargetDimensions_WidthKey and
  11139. * kQTVisualContextTargetDimensions_HeightKey. This is only a hint
  11140. * to optimize certain media types, such as text, that can render at
  11141. * any resolution. If this attribute is not set, the movie will
  11142. * render at its native resolution.
  11143. *
  11144. * Availability:
  11145. * Non-Carbon CFM: not available
  11146. * CarbonLib: not available
  11147. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11148. */
  11149. extern const CFStringRef kQTVisualContextTargetDimensionsKey;
  11150. /*
  11151. * kQTVisualContextTargetDimensions_WidthKey
  11152. *
  11153. * Summary:
  11154. * CFNumberRef: Width, in pixels, of the rendering target.
  11155. *
  11156. * Availability:
  11157. * Non-Carbon CFM: not available
  11158. * CarbonLib: not available
  11159. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11160. */
  11161. extern const CFStringRef kQTVisualContextTargetDimensions_WidthKey;
  11162. /*
  11163. * kQTVisualContextTargetDimensions_HeightKey
  11164. *
  11165. * Summary:
  11166. * CFNumberRef: Height, in pixels, of the rendering target.
  11167. *
  11168. * Availability:
  11169. * Non-Carbon CFM: not available
  11170. * CarbonLib: not available
  11171. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11172. */
  11173. extern const CFStringRef kQTVisualContextTargetDimensions_HeightKey;
  11174. #else
  11175. #define kQTVisualContextTypeKey CFSTR("Type")
  11176. #define kQTVisualContextType_PixelBuffer CFSTR("PixelBuffer")
  11177. #define kQTVisualContextType_OpenGLTexture CFSTR("OpenGLTexture")
  11178. #define kQTVisualContextType_Direct3DTexture CFSTR("Direct3DTexture")
  11179. #define kQTVisualContextWorkingColorSpaceKey CFSTR("WorkingColorSpace")
  11180. #define kQTVisualContextOutputColorSpaceKey CFSTR("OutputColorSpace")
  11181. #define kQTVisualContextExpectedReadAheadKey CFSTR("ExpectedReadAhead")
  11182. #define kQTVisualContextPixelBufferAttributesKey CFSTR("PixelBufferAttributes")
  11183. #define kQTVisualContextTargetDimensionsKey CFSTR("TargetDimensions")
  11184. #define kQTVisualContextTargetDimensions_WidthKey CFSTR("Width")
  11185. #define kQTVisualContextTargetDimensions_HeightKey CFSTR("Height")
  11186. #endif /* TARGET_OS_MAC */
  11187. /*
  11188. * QTVisualContextRetain()
  11189. *
  11190. * Summary:
  11191. * Increments the visual context's reference count.
  11192. *
  11193. * Discussion:
  11194. * The same visual context is returned for convenience. If
  11195. * visualContext is NULL, nothing happens.
  11196. *
  11197. * Parameters:
  11198. *
  11199. * visualContext:
  11200. * [in] The visual context to retain.
  11201. *
  11202. * Availability:
  11203. * Non-Carbon CFM: not available
  11204. * CarbonLib: not available
  11205. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11206. */
  11207. EXTERN_API_C( QTVisualContextRef )
  11208. QTVisualContextRetain(QTVisualContextRef visualContext);
  11209. /*
  11210. * QTVisualContextRelease()
  11211. *
  11212. * Summary:
  11213. * Decrements the visual context's reference count.
  11214. *
  11215. * Discussion:
  11216. * If the retain count decreases to zero, the visual context is
  11217. * disposed. If visualContext is NULL, nothing happens.
  11218. *
  11219. * Parameters:
  11220. *
  11221. * visualContext:
  11222. * [in] The visual context to release.
  11223. *
  11224. * Availability:
  11225. * Non-Carbon CFM: not available
  11226. * CarbonLib: not available
  11227. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11228. */
  11229. EXTERN_API_C( void )
  11230. QTVisualContextRelease(QTVisualContextRef visualContext);
  11231. /*
  11232. * QTVisualContextGetTypeID()
  11233. *
  11234. * Summary:
  11235. * Returns the CFTypeID for QTVisualContextRef.
  11236. *
  11237. * Discussion:
  11238. * You could use this to test whether a CFTypeRef that extracted
  11239. * from a CF container such as a CFArray was a QTVisualContextRef.
  11240. * All visual contexts have the same CFTypeID. If you need to
  11241. * distinguish between different types of visual contexts (eg.
  11242. * PixelBuffer vs. OpenGLTexture), query for kQTVisualContextTypeKey
  11243. * with QTVisualContextGetAttribute().
  11244. *
  11245. * Availability:
  11246. * Non-Carbon CFM: not available
  11247. * CarbonLib: not available
  11248. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11249. */
  11250. EXTERN_API_C( CFTypeID )
  11251. QTVisualContextGetTypeID(void);
  11252. /*
  11253. * QTVisualContextSetAttribute()
  11254. *
  11255. * Summary:
  11256. * Sets a visual context attribute.
  11257. *
  11258. * Parameters:
  11259. *
  11260. * visualContext:
  11261. * [in] The visual context.
  11262. *
  11263. * attributeKey:
  11264. * [in] Identifier of attribute to set.
  11265. *
  11266. * attributeValue:
  11267. * [in] Value of attribute to set, or NULL to remove a value.
  11268. *
  11269. * Availability:
  11270. * Non-Carbon CFM: not available
  11271. * CarbonLib: not available
  11272. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11273. */
  11274. EXTERN_API_C( OSStatus )
  11275. QTVisualContextSetAttribute(
  11276. QTVisualContextRef visualContext,
  11277. CFStringRef attributeKey,
  11278. CFTypeRef attributeValue); /* can be NULL */
  11279. /*
  11280. * QTVisualContextGetAttribute()
  11281. *
  11282. * Summary:
  11283. * Gets a visual context attribute.
  11284. *
  11285. * Parameters:
  11286. *
  11287. * visualContext:
  11288. * [in] The visual context.
  11289. *
  11290. * attributeKey:
  11291. * [in] Identifier of attribute to get.
  11292. *
  11293. * attributeValueOut:
  11294. * [out] Pointer to variable that will receive the attribute
  11295. * value, or NULL if the attribute is not set.
  11296. *
  11297. * Availability:
  11298. * Non-Carbon CFM: not available
  11299. * CarbonLib: not available
  11300. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11301. */
  11302. EXTERN_API_C( OSStatus )
  11303. QTVisualContextGetAttribute(
  11304. QTVisualContextRef visualContext,
  11305. CFStringRef attributeKey,
  11306. CFTypeRef * attributeValueOut);
  11307. /*
  11308. * QTVisualContextImageAvailableCallback
  11309. *
  11310. * Summary:
  11311. * User-defined callback function to recieve notifications when a
  11312. * new image becomes available.
  11313. *
  11314. * Discussion:
  11315. * Due to unpredictible activity, such as user seeks or the arrival
  11316. * of streaming video packets from a network, new images may become
  11317. * available for times supposedly occupied by previous images.
  11318. * Applications using the CoreVideo display link to drive rendering
  11319. * probably do not need to install a callback of this type since
  11320. * they will already be checking for new images at a sufficient rate.
  11321. *
  11322. * Parameters:
  11323. *
  11324. * visualContext:
  11325. * [in] The visual context invoking the callback.
  11326. *
  11327. * timeStamp:
  11328. * [in] Time for which a new image has become available.
  11329. *
  11330. * refCon:
  11331. * [in] User-defined value passed to
  11332. * QTVisualContextSetImageAvailableCallback.
  11333. */
  11334. typedef CALLBACK_API_C( void , QTVisualContextImageAvailableCallback )(QTVisualContextRef visualContext, const CVTimeStamp *timeStamp, void *refCon);
  11335. /*
  11336. * QTVisualContextSetImageAvailableCallback()
  11337. *
  11338. * Summary:
  11339. * Installs user-defined callback to be notified when new images
  11340. * become available.
  11341. *
  11342. * Discussion:
  11343. * This routine installs the user defined
  11344. * QTVisualContextImageAvailableCallback callback. There can only be
  11345. * one callback associated with a QTVisualContext at a given time.
  11346. *
  11347. * Parameters:
  11348. *
  11349. * visualContext:
  11350. * [in] The visual context.
  11351. *
  11352. * imageAvailableCallback:
  11353. * [in] User-defined callback function to recieve notifications.
  11354. * Pass NULL to remove any existing callback.
  11355. *
  11356. * refCon:
  11357. * [in] User-defined value to pass to
  11358. * QTVisualContextImageAvailableCallback.
  11359. *
  11360. * Availability:
  11361. * Non-Carbon CFM: not available
  11362. * CarbonLib: not available
  11363. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11364. */
  11365. EXTERN_API_C( OSStatus )
  11366. QTVisualContextSetImageAvailableCallback(
  11367. QTVisualContextRef visualContext,
  11368. QTVisualContextImageAvailableCallback imageAvailableCallback, /* can be NULL */
  11369. void * refCon); /* can be NULL */
  11370. /*
  11371. * QTVisualContextIsNewImageAvailable()
  11372. *
  11373. * Summary:
  11374. * Queries whether a new image is available for a given time.
  11375. *
  11376. * Discussion:
  11377. * This function returns true if there is a image available for the
  11378. * specified time that is different from the last image retrieved
  11379. * from QTVisualContextCopyImageForTime. See
  11380. * QTVisualContextCopyImageForTime for restrictions on time-stamps.
  11381. *
  11382. * Parameters:
  11383. *
  11384. * visualContext:
  11385. * [in] The visual context.
  11386. *
  11387. * timeStamp:
  11388. * [in] Time in question. Pass NULL to request the image at the
  11389. * current time.
  11390. *
  11391. * Availability:
  11392. * Non-Carbon CFM: not available
  11393. * CarbonLib: not available
  11394. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11395. */
  11396. EXTERN_API_C( Boolean )
  11397. QTVisualContextIsNewImageAvailable(
  11398. QTVisualContextRef visualContext,
  11399. const CVTimeStamp * timeStamp); /* can be NULL */
  11400. /*
  11401. * QTVisualContextCopyImageForTime()
  11402. *
  11403. * Summary:
  11404. * Retrieves an image buffer from the visual context, indexed by the
  11405. * provided timestamp.
  11406. *
  11407. * Discussion:
  11408. * You should not request image buffers further ahead of the current
  11409. * time than the read-ahead time specified with the
  11410. * kQTVisualContextExpectedReadAheadKey attribute. You may skip
  11411. * images by passing later times, but you may not pass an earlier
  11412. * time than passed to a previous call to this function.
  11413. *
  11414. * Parameters:
  11415. *
  11416. * visualContext:
  11417. * [in] The visual context.
  11418. *
  11419. * allocator:
  11420. * [in] Allocator used to create new CVImageBufferRef.
  11421. *
  11422. * timeStamp:
  11423. * [in] Time in question. Pass NULL to request the image at the
  11424. * current time.
  11425. *
  11426. * newImage:
  11427. * [out] Points to variable to receive new image. If there is no
  11428. * video at the requested time, this variable will be set to NULL.
  11429. *
  11430. * Availability:
  11431. * Non-Carbon CFM: not available
  11432. * CarbonLib: not available
  11433. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11434. */
  11435. EXTERN_API_C( OSStatus )
  11436. QTVisualContextCopyImageForTime(
  11437. QTVisualContextRef visualContext,
  11438. CFAllocatorRef allocator, /* can be NULL */
  11439. const CVTimeStamp * timeStamp, /* can be NULL */
  11440. CVImageBufferRef * newImage);
  11441. /*
  11442. * QTVisualContextTask()
  11443. *
  11444. * Summary:
  11445. * Causes visual context to release internally held resources for
  11446. * later re-use.
  11447. *
  11448. * Discussion:
  11449. * For optimal resource management, this function should be called
  11450. * in every rendering pass, after old images have been released, new
  11451. * images have been used and all rendering has been flushed to the
  11452. * screen. This call is not mandatory.
  11453. *
  11454. * Parameters:
  11455. *
  11456. * visualContext:
  11457. * [in] The visual context.
  11458. *
  11459. * Availability:
  11460. * Non-Carbon CFM: not available
  11461. * CarbonLib: not available
  11462. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11463. */
  11464. EXTERN_API_C( void )
  11465. QTVisualContextTask(QTVisualContextRef visualContext);
  11466. #if TARGET_OS_MAC
  11467. /*
  11468. * QTOpenGLTextureContextCreate()
  11469. *
  11470. * Summary:
  11471. * Creates a new OpenGL texture context for the given OpenGL context
  11472. * and pixel format.
  11473. *
  11474. * Discussion:
  11475. * This function will fail if the graphics hardware is insufficient.
  11476. *
  11477. * Parameters:
  11478. *
  11479. * allocator:
  11480. * [in] Allocator used to create the texture context.
  11481. *
  11482. * cglContext:
  11483. * [in] OpenGL context used to create textures.
  11484. *
  11485. * cglPixelFormat:
  11486. * [in] OpenGL pixel format used to create the OpenGL context.
  11487. *
  11488. * attributes:
  11489. * [in] Dictionary of attributes.
  11490. *
  11491. * newTextureContext:
  11492. * [out] Points to a variable to recieve the new OpenGL texture
  11493. * context.
  11494. *
  11495. * Availability:
  11496. * Non-Carbon CFM: not available
  11497. * CarbonLib: not available
  11498. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11499. */
  11500. EXTERN_API_C( OSStatus )
  11501. QTOpenGLTextureContextCreate(
  11502. CFAllocatorRef allocator, /* can be NULL */
  11503. CGLContextObj cglContext,
  11504. CGLPixelFormatObj cglPixelFormat,
  11505. CFDictionaryRef attributes, /* can be NULL */
  11506. QTVisualContextRef * newTextureContext);
  11507. /*
  11508. * QTPixelBufferContextCreate()
  11509. *
  11510. * Summary:
  11511. * Creates a new pixel buffer context with the given attributes.
  11512. *
  11513. * Discussion:
  11514. * This function will fail if the graphics hardware is insufficient.
  11515. *
  11516. * Parameters:
  11517. *
  11518. * allocator:
  11519. * [in] Allocator used to create the pixel buffer context.
  11520. *
  11521. * attributes:
  11522. * [in] Dictionary of attributes.
  11523. *
  11524. * newPixelBufferContext:
  11525. * [out] Points to a variable to recieve the new pixel buffer
  11526. * context.
  11527. *
  11528. * Availability:
  11529. * Non-Carbon CFM: not available
  11530. * CarbonLib: not available
  11531. * Mac OS X: in version 10.4 (or QuickTime 7.0) and later
  11532. */
  11533. EXTERN_API_C( OSStatus )
  11534. QTPixelBufferContextCreate(
  11535. CFAllocatorRef allocator, /* can be NULL */
  11536. CFDictionaryRef attributes, /* can be NULL */
  11537. QTVisualContextRef * newPixelBufferContext);
  11538. #endif /* TARGET_OS_MAC */
  11539. #if TARGET_OS_WIN32
  11540. #if CALL_NOT_IN_CARBON
  11541. /*
  11542. * QTDirect3DTextureContextCreate()
  11543. *
  11544. * Summary:
  11545. * Creates a new Direct3D texture context for the given Direct3D
  11546. * device and pixel format.
  11547. *
  11548. * Discussion:
  11549. * This function will fail if the graphics hardware is insufficient.
  11550. *
  11551. * Parameters:
  11552. *
  11553. * allocator:
  11554. * [in] Allocator used to create the texture context.
  11555. *
  11556. * d3dDevice:
  11557. * [in] Direct3D device used to create textures.
  11558. *
  11559. * d3dPixelFormat:
  11560. * [in] Direct3D pixel format used to create the Direct3D device.
  11561. *
  11562. * attributes:
  11563. * [in] Dictionary of attributes.
  11564. *
  11565. * newTextureContext:
  11566. * [out] Points to a variable to recieve the new Direct3D texture
  11567. * context.
  11568. *
  11569. * Availability:
  11570. * Non-Carbon CFM: not available
  11571. * CarbonLib: not available
  11572. * Mac OS X: not available
  11573. * Windows: in qtmlClient.lib 6.6 and later
  11574. */
  11575. EXTERN_API_C( OSStatus )
  11576. QTDirect3DTextureContextCreate(
  11577. CFAllocatorRef allocator, /* can be NULL */
  11578. void * d3dDevice,
  11579. UInt32 d3dPixelFormat,
  11580. CFDictionaryRef attributes, /* can be NULL */
  11581. QTVisualContextRef * newTextureContext);
  11582. #endif /* CALL_NOT_IN_CARBON */
  11583. #endif /* TARGET_OS_WIN32 */
  11584. #endif // !__LP64__
  11585. #if PRAGMA_STRUCT_ALIGN
  11586. #pragma options align=reset
  11587. #elif PRAGMA_STRUCT_PACKPUSH
  11588. #pragma pack(pop)
  11589. #elif PRAGMA_STRUCT_PACK
  11590. #pragma pack()
  11591. #endif
  11592. #ifdef PRAGMA_IMPORT_OFF
  11593. #pragma import off
  11594. #elif PRAGMA_IMPORT
  11595. #pragma import reset
  11596. #endif
  11597. #ifdef __cplusplus
  11598. }
  11599. #endif
  11600. #endif /* __IMAGECOMPRESSION__ */