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.

2606 lines
86 KiB

  1. /*
  2. File: QTStreamingComponents.h
  3. Contains: QuickTime 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 __QTSTREAMINGCOMPONENTS__
  11. #define __QTSTREAMINGCOMPONENTS__
  12. #ifndef __COMPONENTS__
  13. #include <Components.h>
  14. #endif
  15. #ifndef __MOVIES__
  16. #include <Movies.h>
  17. #endif
  18. #ifndef __QUICKTIMESTREAMING__
  19. #include <QuickTimeStreaming.h>
  20. #endif
  21. #if PRAGMA_ONCE
  22. #pragma once
  23. #endif
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. #if PRAGMA_IMPORT
  28. #pragma import on
  29. #endif
  30. #if PRAGMA_STRUCT_ALIGN
  31. #pragma options align=mac68k
  32. #elif PRAGMA_STRUCT_PACKPUSH
  33. #pragma pack(push, 2)
  34. #elif PRAGMA_STRUCT_PACK
  35. #pragma pack(2)
  36. #endif
  37. /* QuickTime is not available to 64-bit clients */
  38. #if !__LP64__
  39. /*============================================================================
  40. Stream Sourcer
  41. ============================================================================*/
  42. enum {
  43. kQTSSourcerType = FOUR_CHAR_CODE('srcr')
  44. };
  45. typedef ComponentInstance QTSSourcer;
  46. enum {
  47. kQTSSGChannelSourcerType = FOUR_CHAR_CODE('sgch'),
  48. kQTSMovieTrackSourcerType = FOUR_CHAR_CODE('trak'),
  49. kQTSPushDataSourcerType = FOUR_CHAR_CODE('push')
  50. };
  51. /* flags for sourcer data */
  52. enum {
  53. kQTSSourcerDataFlag_SyncSample = 0x00000001,
  54. kQTSPushDataSourcerFlag_SampleTimeIsValid = (long)0x80000000
  55. };
  56. enum {
  57. kQTSSourcerInitParamsVersion1 = 1
  58. };
  59. struct QTSSourcerInitParams {
  60. SInt32 version;
  61. SInt32 flags;
  62. OSType dataType;
  63. void * data;
  64. UInt32 dataLength;
  65. };
  66. typedef struct QTSSourcerInitParams QTSSourcerInitParams;
  67. /*
  68. * QTSNewSourcer()
  69. *
  70. * Availability:
  71. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  72. * CarbonLib: in CarbonLib 1.3 and later
  73. * Mac OS X: in version 10.0 and later
  74. */
  75. EXTERN_API_C( OSErr )
  76. QTSNewSourcer(
  77. void * params,
  78. const QTSSourcerInitParams * inInitParams,
  79. SInt32 inFlags,
  80. ComponentInstance * outSourcer);
  81. /* info selectors for sourcers - get and set */
  82. enum {
  83. kQTSInfo_Track = FOUR_CHAR_CODE('trak'), /* QTSTrackParams* */
  84. kQTSInfo_Loop = FOUR_CHAR_CODE('loop'), /* QTSLoopParams* */
  85. kQTSInfo_SourcerTiming = FOUR_CHAR_CODE('stim'), /* QTSSourcerTimingParams* */
  86. kQTSInfo_TargetFrameRate = FOUR_CHAR_CODE('tfps'), /* Fixed * in frames per second */
  87. kQTSInfo_PushData = FOUR_CHAR_CODE('push'), /* QTSPushDataParams* */
  88. kQTSInfo_SourcerCallbackProc = FOUR_CHAR_CODE('scbp'), /* QTSSourcerCallbackProcParams* */
  89. kQTSInfo_TargetDataRate = FOUR_CHAR_CODE('tdrt'), /* UInt32 * in bytes per second */
  90. kQTSInfo_AudioAutoGainOnOff = FOUR_CHAR_CODE('agc '), /* Boolean* - error if unavailable*/
  91. kQTSInfo_AudioGain = FOUR_CHAR_CODE('gain'), /* Fixed* kFixed1 is unity gain */
  92. kQTSInfo_CroppedInputRect = FOUR_CHAR_CODE('crpr'), /* Rect* - defined relative to kQTSInfo_FullInputRect below */
  93. kQTSInfo_SpatialSettings = FOUR_CHAR_CODE('sptl'), /* pointer to SCSpatialSettings struct*/
  94. kQTSInfo_TemporalSettings = FOUR_CHAR_CODE('tprl'), /* pointer to SCTemporalSettings struct*/
  95. kQTSInfo_DataRateSettings = FOUR_CHAR_CODE('drat'), /* pointer to SCDataRateSettings struct*/
  96. kQTSInfo_CodecFlags = FOUR_CHAR_CODE('cflg'), /* pointer to CodecFlags*/
  97. kQTSInfo_CodecSettings = FOUR_CHAR_CODE('cdec'), /* pointer to Handle*/
  98. kQTSInfo_ForceKeyValue = FOUR_CHAR_CODE('ksim'), /* pointer to long*/
  99. kQTSInfo_SoundSampleRate = FOUR_CHAR_CODE('ssrt'), /* pointer to UnsignedFixed*/
  100. kQTSInfo_SoundSampleSize = FOUR_CHAR_CODE('ssss'), /* pointer to short*/
  101. kQTSInfo_SoundChannelCount = FOUR_CHAR_CODE('sscc'), /* pointer to short*/
  102. kQTSInfo_SoundCompression = FOUR_CHAR_CODE('ssct'), /* pointer to OSType*/
  103. kQTSInfo_CompressionList = FOUR_CHAR_CODE('ctyl'), /* pointer to OSType Handle*/
  104. kQTSInfo_VideoHue = FOUR_CHAR_CODE('hue '), /* UInt16* */
  105. kQTSInfo_VideoSaturation = FOUR_CHAR_CODE('satr'), /* UInt16* */
  106. kQTSInfo_VideoContrast = FOUR_CHAR_CODE('trst'), /* UInt16* */
  107. kQTSInfo_VideoBrightness = FOUR_CHAR_CODE('brit'), /* UInt16* */
  108. kQTSInfo_VideoSharpness = FOUR_CHAR_CODE('shrp'), /* UInt16* */
  109. kQTSInfo_TimeScale = FOUR_CHAR_CODE('scal'), /* UInt32* */
  110. kQTSInfo_SGChannelDeviceName = FOUR_CHAR_CODE('innm'), /* Handle* */
  111. kQTSInfo_SGChannelDeviceList = FOUR_CHAR_CODE('srdl'), /* SGDeviceList* */
  112. kQTSInfo_SGChannelDeviceInput = FOUR_CHAR_CODE('sdii'), /* short* */
  113. kQTSInfo_SGChannelSettings = FOUR_CHAR_CODE('sesg'), /* QTSSGChannelSettingsParams */
  114. kQTSInfo_PreviewWhileRecordingMode = FOUR_CHAR_CODE('srpr'), /* Boolean* */
  115. kQTSInfo_CompressionParams = FOUR_CHAR_CODE('sccp') /* QTAtomContainer* */
  116. };
  117. /* info selectors for sourcers - get only*/
  118. enum {
  119. kQTSInfo_SGChannel = FOUR_CHAR_CODE('sgch'), /* SGChannel* */
  120. kQTSInfo_SGChannelInputName = FOUR_CHAR_CODE('srnm'), /* Handle* */
  121. kQTSInfo_FullInputRect = FOUR_CHAR_CODE('fulr') /* Rect* */
  122. };
  123. /* loop flags */
  124. enum {
  125. kQTSLoopFlag_Loop = 0x00000001
  126. };
  127. enum {
  128. kQTSLoopParamsVersion1 = 1
  129. };
  130. struct QTSLoopParams {
  131. SInt32 version;
  132. SInt32 flags;
  133. SInt32 loopFlags;
  134. SInt32 flagsMask;
  135. SInt32 numLoops;
  136. };
  137. typedef struct QTSLoopParams QTSLoopParams;
  138. enum {
  139. kQTSTrackParamsVersion1 = 1
  140. };
  141. struct QTSTrackParams {
  142. SInt32 version;
  143. SInt32 flags;
  144. Track track;
  145. TimeValue64 trackStartOffset; /* to start other than at the beginning otherwise set to 0*/
  146. TimeValue64 duration; /* to limit the duration otherwise set to 0*/
  147. QTSLoopParams * loopParams; /* set to NULL if not using; default is no looping */
  148. };
  149. typedef struct QTSTrackParams QTSTrackParams;
  150. enum {
  151. kQTSSourcerTimingParamsVersion1 = 1
  152. };
  153. struct QTSSourcerTimingParams {
  154. SInt32 version;
  155. SInt32 flags;
  156. TimeScale timeScale;
  157. TimeValue64 presentationStartTime;
  158. TimeValue64 presentationEndTime;
  159. TimeValue64 presentationCurrentTime;
  160. TimeValue64 localStartTime;
  161. TimeValue64 localEndTime;
  162. TimeValue64 localCurrentTime;
  163. };
  164. typedef struct QTSSourcerTimingParams QTSSourcerTimingParams;
  165. enum {
  166. kQTSPushDataParamsVersion1 = 1
  167. };
  168. enum {
  169. kQTSPushDataFlag_SampleTimeIsValid = 0x00000001,
  170. kQTSPushDataFlag_DurationIsValid = 0x00000002
  171. };
  172. struct QTSPushDataParams {
  173. SInt32 version;
  174. SInt32 flags;
  175. SampleDescriptionHandle sampleDescription; /* caller owns the handle */
  176. UInt32 sampleDescSeed;
  177. TimeValue64 sampleTime; /* also set flag if you set this */
  178. TimeValue64 duration; /* also set flag if you set this */
  179. UInt32 dataLength;
  180. void * dataPtr; /* this does not have to be a real macintosh Ptr */
  181. };
  182. typedef struct QTSPushDataParams QTSPushDataParams;
  183. enum {
  184. kQTSSourcerCallbackProcParamsVersion1 = 1
  185. };
  186. struct QTSSourcerCallbackProcParams {
  187. SInt32 version;
  188. SInt32 flags;
  189. QTSNotificationUPP proc;
  190. void * refCon;
  191. };
  192. typedef struct QTSSourcerCallbackProcParams QTSSourcerCallbackProcParams;
  193. /* track sourcer callback selectors*/
  194. enum {
  195. kQTSSourcerCallback_Done = FOUR_CHAR_CODE('done') /* QTSSourcerDoneParams* */
  196. };
  197. /* push data sourcer callback selectors*/
  198. enum {
  199. kQTSPushDataSourcerCallback_HasCharacteristic = 0x050D, /* QTSPushDataHasCharacteristicParams* */
  200. kQTSPushDataSourcerCallback_SetInfo = 0x0507, /* QTSPushDataInfoParams* */
  201. kQTSPushDataSourcerCallback_GetInfo = 0x0508 /* QTSPushDataInfoParams* */
  202. };
  203. struct QTSPushDataHasCharacteristicParams {
  204. SInt32 version;
  205. SInt32 flags;
  206. OSType characteristic;
  207. Boolean returnedHasIt;
  208. char reserved1;
  209. char reserved2;
  210. char reserved3;
  211. };
  212. typedef struct QTSPushDataHasCharacteristicParams QTSPushDataHasCharacteristicParams;
  213. struct QTSPushDataInfoParams {
  214. SInt32 version;
  215. SInt32 flags;
  216. OSType selector;
  217. void * ioParams;
  218. };
  219. typedef struct QTSPushDataInfoParams QTSPushDataInfoParams;
  220. enum {
  221. kQTSSourcerDoneParamsVersion1 = 1
  222. };
  223. struct QTSSourcerDoneParams {
  224. SInt32 version;
  225. SInt32 flags;
  226. ComponentInstance sourcer;
  227. };
  228. typedef struct QTSSourcerDoneParams QTSSourcerDoneParams;
  229. struct QTSSGChannelSettingsParams {
  230. UserData settings;
  231. SInt32 flags;
  232. };
  233. typedef struct QTSSGChannelSettingsParams QTSSGChannelSettingsParams;
  234. /*-----------------------------------------
  235. Stream Sourcer Selectors
  236. -----------------------------------------*/
  237. enum {
  238. kQTSSourcerInitializeSelect = 0x0500,
  239. kQTSSourcerSetEnableSelect = 0x0503,
  240. kQTSSourcerGetEnableSelect = 0x0504,
  241. kQTSSourcerSetInfoSelect = 0x0507,
  242. kQTSSourcerGetInfoSelect = 0x0508,
  243. kQTSSourcerSetTimeScaleSelect = 0x050E,
  244. kQTSSourcerGetTimeScaleSelect = 0x050F,
  245. kQTSSourcerIdleSelect = 0x0516
  246. };
  247. /*-----------------------------------------
  248. Stream Sourcer Prototypes
  249. -----------------------------------------*/
  250. /*
  251. * QTSSourcerInitialize()
  252. *
  253. * Availability:
  254. * Non-Carbon CFM: in QTStreamLib 5.0.1 and later
  255. * CarbonLib: in CarbonLib 1.6 and later
  256. * Mac OS X: in version 10.1 and later
  257. */
  258. EXTERN_API( ComponentResult )
  259. QTSSourcerInitialize(
  260. QTSSourcer inSourcer,
  261. const QTSSourcerInitParams * inInitParams) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0500, 0x7000, 0xA82A);
  262. /*
  263. * QTSSourcerIdle()
  264. *
  265. * Availability:
  266. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  267. * CarbonLib: in CarbonLib 1.3 and later
  268. * Mac OS X: in version 10.0 and later
  269. */
  270. EXTERN_API( ComponentResult )
  271. QTSSourcerIdle(
  272. QTSSourcer inSourcer,
  273. const TimeValue64 * inTime,
  274. SInt32 inFlags,
  275. SInt32 * outFlags) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0516, 0x7000, 0xA82A);
  276. /*
  277. * QTSSourcerSetEnable()
  278. *
  279. * Availability:
  280. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  281. * CarbonLib: in CarbonLib 1.3 and later
  282. * Mac OS X: in version 10.0 and later
  283. */
  284. EXTERN_API( ComponentResult )
  285. QTSSourcerSetEnable(
  286. QTSSourcer inSourcer,
  287. Boolean inEnableMode,
  288. SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0006, 0x0503, 0x7000, 0xA82A);
  289. /*
  290. * QTSSourcerGetEnable()
  291. *
  292. * Availability:
  293. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  294. * CarbonLib: in CarbonLib 1.3 and later
  295. * Mac OS X: in version 10.0 and later
  296. */
  297. EXTERN_API( ComponentResult )
  298. QTSSourcerGetEnable(
  299. QTSSourcer inSourcer,
  300. Boolean * outEnableMode,
  301. SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0504, 0x7000, 0xA82A);
  302. /*
  303. * QTSSourcerSetTimeScale()
  304. *
  305. * Availability:
  306. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  307. * CarbonLib: in CarbonLib 1.3 and later
  308. * Mac OS X: in version 10.0 and later
  309. */
  310. EXTERN_API( ComponentResult )
  311. QTSSourcerSetTimeScale(
  312. QTSSourcer inSourcer,
  313. TimeScale inTimeScale) FIVEWORDINLINE(0x2F3C, 0x0004, 0x050E, 0x7000, 0xA82A);
  314. /*
  315. * QTSSourcerGetTimeScale()
  316. *
  317. * Availability:
  318. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  319. * CarbonLib: in CarbonLib 1.3 and later
  320. * Mac OS X: in version 10.0 and later
  321. */
  322. EXTERN_API( ComponentResult )
  323. QTSSourcerGetTimeScale(
  324. QTSSourcer inSourcer,
  325. TimeScale * outTimeScale) FIVEWORDINLINE(0x2F3C, 0x0004, 0x050F, 0x7000, 0xA82A);
  326. /*
  327. * QTSSourcerSetInfo()
  328. *
  329. * Availability:
  330. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  331. * CarbonLib: in CarbonLib 1.3 and later
  332. * Mac OS X: in version 10.0 and later
  333. */
  334. EXTERN_API( ComponentResult )
  335. QTSSourcerSetInfo(
  336. QTSSourcer inSourcer,
  337. OSType inSelector,
  338. void * ioParams) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0507, 0x7000, 0xA82A);
  339. /*
  340. * QTSSourcerGetInfo()
  341. *
  342. * Availability:
  343. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  344. * CarbonLib: in CarbonLib 1.3 and later
  345. * Mac OS X: in version 10.0 and later
  346. */
  347. EXTERN_API( ComponentResult )
  348. QTSSourcerGetInfo(
  349. QTSSourcer inSourcer,
  350. OSType inSelector,
  351. void * ioParams) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0508, 0x7000, 0xA82A);
  352. enum {
  353. kQTSInfo_InputDeviceName = FOUR_CHAR_CODE('innm'), /* Handle* */
  354. kQTSInfo_InputSourceName = FOUR_CHAR_CODE('srnm') /* Handle* */
  355. };
  356. /*============================================================================
  357. Stream Handler
  358. ============================================================================*/
  359. /*
  360. Server edits are only valid for the current chunk
  361. */
  362. struct SHServerEditParameters {
  363. UInt32 version;
  364. Fixed editRate;
  365. TimeValue64 dataStartTime_mediaAxis;
  366. TimeValue64 dataEndTime_mediaAxis;
  367. };
  368. typedef struct SHServerEditParameters SHServerEditParameters;
  369. enum {
  370. kSHNoChunkDispatchFlags = 0,
  371. kSHChunkFlagSyncSample = 1 << 2,
  372. kSHChunkFlagDataLoss = 1 << 4,
  373. kSHChunkFlagExtended = 1 << 5
  374. };
  375. struct SHChunkRecord {
  376. UInt32 version;
  377. long reserved1;
  378. SInt32 flags;
  379. UInt32 dataSize;
  380. UInt8 * dataPtr;
  381. long reserved2;
  382. long reserved3;
  383. TimeValue64 presentationTime;
  384. long reserved4;
  385. long reserved5;
  386. const SHServerEditParameters * serverEditParameters;
  387. long reserved6;
  388. long reserved7;
  389. };
  390. typedef struct SHChunkRecord SHChunkRecord;
  391. enum {
  392. kSHNumExtendedDataLongs = 10
  393. };
  394. enum {
  395. kSHExtendedChunkFlag_HasSampleCount = 1 << 0,
  396. kSHExtendedChunkFlag_HasFrameLengths = 1 << 1
  397. };
  398. struct SHExtendedChunkRecord {
  399. SHChunkRecord chunk;
  400. SInt32 extendedFlags;
  401. SInt32 extendedData[10];
  402. };
  403. typedef struct SHExtendedChunkRecord SHExtendedChunkRecord;
  404. /*============================================================================
  405. RTP Components
  406. ============================================================================*/
  407. typedef UInt32 RTPSSRC;
  408. enum {
  409. kRTPInvalidSSRC = 0
  410. };
  411. /* RTP standard content encodings for audio */
  412. enum {
  413. kRTPPayload_PCMU = 0, /* 8kHz PCM mu-law mono */
  414. kRTPPayload_1016 = 1, /* 8kHz CELP (Fed Std 1016) mono */
  415. kRTPPayload_G721 = 2, /* 8kHz G.721 ADPCM mono */
  416. kRTPPayload_GSM = 3, /* 8kHz GSM mono */
  417. kRTPPayload_G723 = 4, /* 8kHz G.723 ADPCM mono */
  418. kRTPPayload_DVI_8 = 5, /* 8kHz Intel DVI ADPCM mono */
  419. kRTPPayload_DVI_16 = 6, /* 16kHz Intel DVI ADPCM mono */
  420. kRTPPayload_LPC = 7, /* 8kHz LPC */
  421. kRTPPayload_PCMA = 8, /* 8kHz PCM a-law mono */
  422. kRTPPayload_L16_44_2 = 10, /* 44.1kHz 16-bit linear stereo */
  423. kRTPPayload_L16_44_1 = 11, /* 44.1kHz 16-bit linear mono */
  424. kRTPPayload_PureVoice = 12, /* 8kHz PureVoice mono (QCELP) */
  425. kRTPPayload_MPEGAUDIO = 14, /* MPEG I and II audio */
  426. kRTPPayload_DVI_11 = 16, /* 11kHz Intel DVI ADPCM mono */
  427. kRTPPayload_DVI_22 = 17 /* 22kHz Intel DVI ADPCM mono */
  428. };
  429. /* RTP standard content encodings for video */
  430. enum {
  431. kRTPPayload_CELLB = 25, /* Sun CellB */
  432. kRTPPayload_JPEG = 26, /* JPEG */
  433. kRTPPayload_CUSEEME = 27, /* Cornell CU-SeeMe */
  434. kRTPPayload_NV = 28, /* Xerox PARC nv */
  435. kRTPPayload_PICWIN = 29, /* BBN Picture Window */
  436. kRTPPayload_CPV = 30, /* Bolter CPV */
  437. kRTPPayload_H261 = 31, /* CCITT H.261 */
  438. kRTPPayload_MPEGVIDEO = 32, /* MPEG I and II video */
  439. kRTPPayload_H263 = 34 /* CCITT H.263 */
  440. };
  441. /* Other RTP standard content encodings */
  442. enum {
  443. kRTPPayload_MPEG2T = 33 /* MPEG 2 Transport */
  444. };
  445. /* Dynamic encodings */
  446. enum {
  447. kRTPPayload_FirstDynamic = 96,
  448. kRTPPayload_LastDynamic = 127,
  449. kRTPPayload_Unknown = 0xFF
  450. };
  451. /*
  452. -----------------------------------------
  453. RTP Info selectors
  454. -----------------------------------------
  455. */
  456. /* ----- these are get and set ----- */
  457. enum {
  458. kRTPInfo_SSRC = FOUR_CHAR_CODE('ssrc'), /* UInt32* */
  459. kRTPInfo_NextSeqNum = FOUR_CHAR_CODE('rnsn') /* UInt16* */
  460. };
  461. /*-----------------------------------------
  462. RTP Statistics
  463. -----------------------------------------*/
  464. enum {
  465. kRTPTotalReceivedPktsStat = FOUR_CHAR_CODE('trcp'),
  466. kRTPTotalLostPktsStat = FOUR_CHAR_CODE('tlsp'),
  467. kRTPTotalProcessedPktsStat = FOUR_CHAR_CODE('tprp'),
  468. kRTPTotalDroppedPktsStat = FOUR_CHAR_CODE('tdrp'),
  469. kRTPBadHeaderDroppedPktsStat = FOUR_CHAR_CODE('bhdp'),
  470. kRTPOurHeaderDroppedPktsStat = FOUR_CHAR_CODE('ohdp'),
  471. kRTPNotReceivingSenderDroppedPktsStat = FOUR_CHAR_CODE('nsdp'),
  472. kRTPNotProcessingDroppedPktsStat = FOUR_CHAR_CODE('npdp'),
  473. kRTPBadSeqDroppedPktsStat = FOUR_CHAR_CODE('bsdp'),
  474. kRTPArriveTooLatePktsStat = FOUR_CHAR_CODE('artl'),
  475. kRTPWaitForSeqDroppedPktsStat = FOUR_CHAR_CODE('wsdp'),
  476. kRTPBadStateDroppedPktsStat = FOUR_CHAR_CODE('stdp'),
  477. kRTPBadPayloadDroppedPktsStat = FOUR_CHAR_CODE('bpdp'),
  478. kRTPNoTimeScaleDroppedPktsStat = FOUR_CHAR_CODE('ntdp'),
  479. kRTPDupSeqNumDroppedPktsStat = FOUR_CHAR_CODE('dsdp'),
  480. kRTPLostPktsPercentStat = FOUR_CHAR_CODE('lspp'),
  481. kRTPDroppedPktsPercentStat = FOUR_CHAR_CODE('dppp'),
  482. kRTPTotalUnprocessedPktsPercentStat = FOUR_CHAR_CODE('tupp'),
  483. kRTPRTCPDataRateStat = FOUR_CHAR_CODE('rrcd'),
  484. kRTPPayloadIDStat = FOUR_CHAR_CODE('rpid'),
  485. kRTPPayloadNameStat = FOUR_CHAR_CODE('rpnm'),
  486. kRTPNumPktsInQueueStat = FOUR_CHAR_CODE('rnpq'),
  487. kRTPTotalPktsInQueueStat = FOUR_CHAR_CODE('rtpq'),
  488. kRTPTotalOutOfOrderPktsStat = FOUR_CHAR_CODE('rtoo'),
  489. kRTPRetransmissionStat = FOUR_CHAR_CODE('rrtx')
  490. };
  491. /*-----------------------------------------
  492. Payload Info
  493. -----------------------------------------*/
  494. enum {
  495. kRTPPayloadSpeedTag = FOUR_CHAR_CODE('sped'), /* 0-255, 255 is fastest*/
  496. kRTPPayloadLossRecoveryTag = FOUR_CHAR_CODE('loss'), /* 0-255, 0 can't handle any loss, 128 can handle 50% packet loss*/
  497. kRTPPayloadConformanceTag = FOUR_CHAR_CODE('conf') /* more than one of these can be present*/
  498. };
  499. struct RTPPayloadCharacteristic {
  500. OSType tag;
  501. long value;
  502. };
  503. typedef struct RTPPayloadCharacteristic RTPPayloadCharacteristic;
  504. /*
  505. pass RTPPayloadSortRequest to QTSFindMediaPacketizer or QTSFindMediaPacketizerForTrack.
  506. define the characteristics to sort by. tag is key to sort on. value is positive for ascending
  507. sort (low value first), negative for descending sort (high value first).
  508. */
  509. struct RTPPayloadSortRequest {
  510. long characteristicCount;
  511. RTPPayloadCharacteristic characteristic[1]; /* tag is key to sort on, value is + for ascending, - for descending*/
  512. };
  513. typedef struct RTPPayloadSortRequest RTPPayloadSortRequest;
  514. typedef RTPPayloadSortRequest * RTPPayloadSortRequestPtr;
  515. /* flags for RTPPayloadInfo */
  516. enum {
  517. kRTPPayloadTypeStaticFlag = 0x00000001,
  518. kRTPPayloadTypeDynamicFlag = 0x00000002
  519. };
  520. struct RTPPayloadInfo {
  521. long payloadFlags;
  522. UInt8 payloadID;
  523. char reserved1;
  524. char reserved2;
  525. char reserved3;
  526. char payloadName[1];
  527. };
  528. typedef struct RTPPayloadInfo RTPPayloadInfo;
  529. typedef RTPPayloadInfo * RTPPayloadInfoPtr;
  530. typedef RTPPayloadInfoPtr * RTPPayloadInfoHandle;
  531. /*============================================================================
  532. RTP Reassembler
  533. ============================================================================*/
  534. typedef ComponentInstance RTPReassembler;
  535. enum {
  536. kRTPReassemblerType = FOUR_CHAR_CODE('rtpr')
  537. };
  538. enum {
  539. kRTPBaseReassemblerType = FOUR_CHAR_CODE('gnrc'),
  540. kRTP261ReassemblerType = FOUR_CHAR_CODE('h261'),
  541. kRTP263ReassemblerType = FOUR_CHAR_CODE('h263'),
  542. kRTP263PlusReassemblerType = FOUR_CHAR_CODE('263+'),
  543. kRTPAudioReassemblerType = FOUR_CHAR_CODE('soun'),
  544. kRTPQTReassemblerType = FOUR_CHAR_CODE('qtim'),
  545. kRTPPureVoiceReassemblerType = FOUR_CHAR_CODE('Qclp'),
  546. kRTPJPEGReassemblerType = FOUR_CHAR_CODE('jpeg'),
  547. kRTPQDesign2ReassemblerType = FOUR_CHAR_CODE('QDM2'),
  548. kRTPSorensonReassemblerType = FOUR_CHAR_CODE('SVQ1'),
  549. kRTPMP3ReassemblerType = FOUR_CHAR_CODE('mp3 '),
  550. kRTPMPEG4AudioReassemblerType = FOUR_CHAR_CODE('mp4a'),
  551. kRTPMPEG4VideoReassemblerType = FOUR_CHAR_CODE('mp4v'),
  552. kRTPAMRReassemblerType = FOUR_CHAR_CODE('amr ')
  553. };
  554. struct RTPRssmInitParams {
  555. RTPSSRC ssrc;
  556. UInt8 payloadType;
  557. UInt8 reserved1;
  558. UInt8 reserved2;
  559. UInt8 reserved3;
  560. TimeBase timeBase;
  561. TimeScale timeScale;
  562. };
  563. typedef struct RTPRssmInitParams RTPRssmInitParams;
  564. struct RTPDescParams {
  565. QTAtomContainer container;
  566. QTAtom presentationParentAtom;
  567. QTAtom streamParentAtom;
  568. };
  569. typedef struct RTPDescParams RTPDescParams;
  570. struct RTPRssmMoreInitParams {
  571. RTPRssmInitParams initParams;
  572. SInt32 version;
  573. RTPDescParams desc;
  574. };
  575. typedef struct RTPRssmMoreInitParams RTPRssmMoreInitParams;
  576. enum {
  577. kRTPRssmMoreInitParamsVersion1 = 1
  578. };
  579. /* get/set info selectors*/
  580. enum {
  581. kRTPRssmInfo_MoreInitParams = FOUR_CHAR_CODE('rrmi')
  582. };
  583. struct RTPRssmPacket {
  584. struct RTPRssmPacket * next;
  585. struct RTPRssmPacket * prev;
  586. QTSStreamBuffer * streamBuffer;
  587. Boolean paramsFilledIn;
  588. UInt8 reserved;
  589. UInt16 sequenceNum;
  590. UInt32 transportHeaderLength; /* filled in by base*/
  591. UInt32 payloadHeaderLength; /* derived adjusts this */
  592. UInt32 dataLength;
  593. SHServerEditParameters serverEditParams;
  594. TimeValue64 timeStamp; /* lower 32 bits is original rtp timestamp*/
  595. SInt32 chunkFlags; /* these are or'd together*/
  596. SInt32 flags;
  597. };
  598. typedef struct RTPRssmPacket RTPRssmPacket;
  599. /* flags for RTPRssmPacket struct*/
  600. enum {
  601. kRTPRssmPacketHasMarkerBitSet = 0x00000001,
  602. kRTPRssmPacketHasServerEditFlag = 0x00010000
  603. };
  604. /* flags for RTPRssmSendStreamBufferRange*/
  605. enum {
  606. kRTPRssmCanRefStreamBuffer = 0x00000001
  607. };
  608. /* flags for RTPRssmSendPacketList*/
  609. enum {
  610. kRTPRssmLostSomePackets = 0x00000001
  611. };
  612. /* flags for RTPRssmSetFlags*/
  613. enum {
  614. kRTPRssmEveryPacketAChunkFlag = 0x00000001,
  615. kRTPRssmQueueAndUseMarkerBitFlag = 0x00000002,
  616. kRTPRssmTrackLostPacketsFlag = 0x00010000,
  617. kRTPRssmNoReorderingRequiredFlag = 0x00020000
  618. };
  619. struct RTPSendStreamBufferRangeParams {
  620. QTSStreamBuffer * streamBuffer;
  621. TimeValue64 presentationTime;
  622. UInt32 chunkStartPosition;
  623. UInt32 numDataBytes;
  624. SInt32 chunkFlags;
  625. SInt32 flags;
  626. const SHServerEditParameters * serverEditParams; /* NULL if no edit*/
  627. };
  628. typedef struct RTPSendStreamBufferRangeParams RTPSendStreamBufferRangeParams;
  629. /* characteristics*/
  630. enum {
  631. kRTPCharacteristic_RequiresOrderedPackets = FOUR_CHAR_CODE('rrop'),
  632. kRTPCharacteristic_TimeStampsNotMonoIncreasing = FOUR_CHAR_CODE('tsmi')
  633. };
  634. enum {
  635. kRTPReassemblerInfoResType = FOUR_CHAR_CODE('rsmi')
  636. };
  637. struct RTPReassemblerInfo {
  638. long characteristicCount;
  639. RTPPayloadCharacteristic characteristic[1];
  640. /* after the last characteristic, the payload name (defined by the MediaPacketizerPayloadInfo*/
  641. /* structure) is present. */
  642. };
  643. typedef struct RTPReassemblerInfo RTPReassemblerInfo;
  644. typedef RTPReassemblerInfo * RTPReassemblerInfoPtr;
  645. typedef RTPReassemblerInfoPtr * RTPReassemblerInfoHandle;
  646. #define RTPReassemblerInfoToPayloadInfo(_rsmi) ((RTPPayloadInfoPtr)(&((_rsmi)->characteristic[(_rsmi)->characteristicCount])))
  647. /* RTPReassemblerInfoElement structs are padded to 32 bits */
  648. enum {
  649. kRTPReassemblerInfoPadUpToBytes = 4
  650. };
  651. /*
  652. * QTSFindReassemblerForPayloadID()
  653. *
  654. * Availability:
  655. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  656. * CarbonLib: in CarbonLib 1.1 and later
  657. * Mac OS X: in version 10.0 and later
  658. * Windows: in QTSClient.lib 4.0 and later
  659. */
  660. EXTERN_API_C( OSErr )
  661. QTSFindReassemblerForPayloadID(
  662. UInt8 inPayloadID,
  663. RTPPayloadSortRequest * inSortInfo,
  664. QTAtomContainer * outReassemblerList);
  665. /*
  666. * QTSFindReassemblerForPayloadName()
  667. *
  668. * Availability:
  669. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  670. * CarbonLib: in CarbonLib 1.1 and later
  671. * Mac OS X: in version 10.0 and later
  672. * Windows: in QTSClient.lib 4.0 and later
  673. */
  674. EXTERN_API_C( OSErr )
  675. QTSFindReassemblerForPayloadName(
  676. const char * inPayloadName,
  677. RTPPayloadSortRequest * inSortInfo,
  678. QTAtomContainer * outReassemblerList);
  679. /*-----------------------------------------
  680. RTP Reassembler Selectors
  681. -----------------------------------------*/
  682. enum {
  683. kRTPRssmSetCapabilitiesSelect = 0x0100,
  684. kRTPRssmGetCapabilitiesSelect = 0x0101,
  685. kRTPRssmSetPayloadHeaderLengthSelect = 0x0102,
  686. kRTPRssmGetPayloadHeaderLengthSelect = 0x0103,
  687. kRTPRssmSetTimeScaleSelect = 0x0104,
  688. kRTPRssmGetTimeScaleSelect = 0x0105,
  689. kRTPRssmNewStreamHandlerSelect = 0x0106,
  690. kRTPRssmSetStreamHandlerSelect = 0x0107,
  691. kRTPRssmGetStreamHandlerSelect = 0x0108,
  692. kRTPRssmSendStreamHandlerChangedSelect = 0x0109,
  693. kRTPRssmSetSampleDescriptionSelect = 0x010A,
  694. kRTPRssmGetChunkAndIncrRefCountSelect = 0x010D,
  695. kRTPRssmSendChunkAndDecrRefCountSelect = 0x010E,
  696. kRTPRssmSendLostChunkSelect = 0x010F,
  697. kRTPRssmSendStreamBufferRangeSelect = 0x0110,
  698. kRTPRssmClearCachedPackets = 0x0111,
  699. kRTPRssmFillPacketListParamsSelect = 0x0113,
  700. kRTPRssmReleasePacketListSelect = 0x0114,
  701. kRTPRssmIncrChunkRefCountSelect = 0x0115,
  702. kRTPRssmDecrChunkRefCountSelect = 0x0116,
  703. kRTPRssmGetExtChunkAndIncrRefCountSelect = 0x0117,
  704. kRTPRssmInitializeSelect = 0x0500,
  705. kRTPRssmHandleNewPacketSelect = 0x0501,
  706. kRTPRssmComputeChunkSizeSelect = 0x0502,
  707. kRTPRssmAdjustPacketParamsSelect = 0x0503,
  708. kRTPRssmCopyDataToChunkSelect = 0x0504,
  709. kRTPRssmSendPacketListSelect = 0x0505,
  710. kRTPRssmGetTimeScaleFromPacketSelect = 0x0506,
  711. kRTPRssmSetInfoSelect = 0x0509,
  712. kRTPRssmGetInfoSelect = 0x050A,
  713. kRTPRssmHasCharacteristicSelect = 0x050B,
  714. kRTPRssmResetSelect = 0x050C
  715. };
  716. /*-----------------------------------------
  717. RTP Reassembler functions - base to derived
  718. -----------------------------------------*/
  719. /*
  720. * RTPRssmInitialize()
  721. *
  722. * Availability:
  723. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  724. * CarbonLib: in CarbonLib 1.1 and later
  725. * Mac OS X: in version 10.0 and later
  726. * Windows: in QTSClient.lib 4.0 and later
  727. */
  728. EXTERN_API( ComponentResult )
  729. RTPRssmInitialize(
  730. RTPReassembler rtpr,
  731. RTPRssmInitParams * inInitParams) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0500, 0x7000, 0xA82A);
  732. /*
  733. * RTPRssmHandleNewPacket()
  734. *
  735. * Availability:
  736. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  737. * CarbonLib: in CarbonLib 1.1 and later
  738. * Mac OS X: in version 10.0 and later
  739. * Windows: in QTSClient.lib 4.0 and later
  740. */
  741. EXTERN_API( ComponentResult )
  742. RTPRssmHandleNewPacket(
  743. RTPReassembler rtpr,
  744. QTSStreamBuffer * inStreamBuffer,
  745. SInt32 inNumWraparounds) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0501, 0x7000, 0xA82A);
  746. /*
  747. * RTPRssmComputeChunkSize()
  748. *
  749. * Availability:
  750. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  751. * CarbonLib: in CarbonLib 1.1 and later
  752. * Mac OS X: in version 10.0 and later
  753. * Windows: in QTSClient.lib 4.0 and later
  754. */
  755. EXTERN_API( ComponentResult )
  756. RTPRssmComputeChunkSize(
  757. RTPReassembler rtpr,
  758. RTPRssmPacket * inPacketListHead,
  759. SInt32 inFlags,
  760. UInt32 * outChunkDataSize) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0502, 0x7000, 0xA82A);
  761. /*
  762. * RTPRssmAdjustPacketParams()
  763. *
  764. * Availability:
  765. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  766. * CarbonLib: in CarbonLib 1.1 and later
  767. * Mac OS X: in version 10.0 and later
  768. * Windows: in QTSClient.lib 4.0 and later
  769. */
  770. EXTERN_API( ComponentResult )
  771. RTPRssmAdjustPacketParams(
  772. RTPReassembler rtpr,
  773. RTPRssmPacket * inPacket,
  774. SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0503, 0x7000, 0xA82A);
  775. /*
  776. * RTPRssmCopyDataToChunk()
  777. *
  778. * Availability:
  779. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  780. * CarbonLib: in CarbonLib 1.1 and later
  781. * Mac OS X: in version 10.0 and later
  782. * Windows: in QTSClient.lib 4.0 and later
  783. */
  784. EXTERN_API( ComponentResult )
  785. RTPRssmCopyDataToChunk(
  786. RTPReassembler rtpr,
  787. RTPRssmPacket * inPacketListHead,
  788. UInt32 inMaxChunkDataSize,
  789. SHChunkRecord * inChunk,
  790. SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0504, 0x7000, 0xA82A);
  791. /*
  792. * RTPRssmSendPacketList()
  793. *
  794. * Availability:
  795. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  796. * CarbonLib: in CarbonLib 1.1 and later
  797. * Mac OS X: in version 10.0 and later
  798. * Windows: in QTSClient.lib 4.0 and later
  799. */
  800. EXTERN_API( ComponentResult )
  801. RTPRssmSendPacketList(
  802. RTPReassembler rtpr,
  803. RTPRssmPacket * inPacketListHead,
  804. const TimeValue64 * inLastChunkPresentationTime,
  805. SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0505, 0x7000, 0xA82A);
  806. /*
  807. * RTPRssmGetTimeScaleFromPacket()
  808. *
  809. * Availability:
  810. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  811. * CarbonLib: in CarbonLib 1.1 and later
  812. * Mac OS X: in version 10.0 and later
  813. * Windows: in QTSClient.lib 4.0 and later
  814. */
  815. EXTERN_API( ComponentResult )
  816. RTPRssmGetTimeScaleFromPacket(
  817. RTPReassembler rtpr,
  818. QTSStreamBuffer * inStreamBuffer,
  819. TimeScale * outTimeScale) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0506, 0x7000, 0xA82A);
  820. /*
  821. * RTPRssmSetInfo()
  822. *
  823. * Availability:
  824. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  825. * CarbonLib: in CarbonLib 1.1 and later
  826. * Mac OS X: in version 10.0 and later
  827. * Windows: in QTSClient.lib 4.0 and later
  828. */
  829. EXTERN_API( ComponentResult )
  830. RTPRssmSetInfo(
  831. RTPReassembler rtpr,
  832. OSType inSelector,
  833. void * ioParams) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0509, 0x7000, 0xA82A);
  834. /*
  835. * RTPRssmGetInfo()
  836. *
  837. * Availability:
  838. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  839. * CarbonLib: in CarbonLib 1.1 and later
  840. * Mac OS X: in version 10.0 and later
  841. * Windows: in QTSClient.lib 4.0 and later
  842. */
  843. EXTERN_API( ComponentResult )
  844. RTPRssmGetInfo(
  845. RTPReassembler rtpr,
  846. OSType inSelector,
  847. void * ioParams) FIVEWORDINLINE(0x2F3C, 0x0008, 0x050A, 0x7000, 0xA82A);
  848. /*
  849. * RTPRssmHasCharacteristic()
  850. *
  851. * Availability:
  852. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  853. * CarbonLib: in CarbonLib 1.1 and later
  854. * Mac OS X: in version 10.0 and later
  855. * Windows: in QTSClient.lib 4.0 and later
  856. */
  857. EXTERN_API( ComponentResult )
  858. RTPRssmHasCharacteristic(
  859. RTPReassembler rtpr,
  860. OSType inCharacteristic,
  861. Boolean * outHasIt) FIVEWORDINLINE(0x2F3C, 0x0008, 0x050B, 0x7000, 0xA82A);
  862. /*
  863. * RTPRssmReset()
  864. *
  865. * Availability:
  866. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  867. * CarbonLib: in CarbonLib 1.1 and later
  868. * Mac OS X: in version 10.0 and later
  869. * Windows: in QTSClient.lib 4.0 and later
  870. */
  871. EXTERN_API( ComponentResult )
  872. RTPRssmReset(
  873. RTPReassembler rtpr,
  874. SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x050C, 0x7000, 0xA82A);
  875. /*-----------------------------------------
  876. RTP Reassembler functions - derived to base
  877. -----------------------------------------*/
  878. /* ----- setup*/
  879. /*
  880. * RTPRssmSetCapabilities()
  881. *
  882. * Availability:
  883. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  884. * CarbonLib: in CarbonLib 1.1 and later
  885. * Mac OS X: in version 10.0 and later
  886. * Windows: in QTSClient.lib 4.0 and later
  887. */
  888. EXTERN_API( ComponentResult )
  889. RTPRssmSetCapabilities(
  890. RTPReassembler rtpr,
  891. SInt32 inFlags,
  892. SInt32 inFlagsMask) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0100, 0x7000, 0xA82A);
  893. /*
  894. * RTPRssmGetCapabilities()
  895. *
  896. * Availability:
  897. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  898. * CarbonLib: in CarbonLib 1.1 and later
  899. * Mac OS X: in version 10.0 and later
  900. * Windows: in QTSClient.lib 4.0 and later
  901. */
  902. EXTERN_API( ComponentResult )
  903. RTPRssmGetCapabilities(
  904. RTPReassembler rtpr,
  905. SInt32 * outFlags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0101, 0x7000, 0xA82A);
  906. /*
  907. * RTPRssmSetPayloadHeaderLength()
  908. *
  909. * Availability:
  910. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  911. * CarbonLib: in CarbonLib 1.1 and later
  912. * Mac OS X: in version 10.0 and later
  913. * Windows: in QTSClient.lib 4.0 and later
  914. */
  915. EXTERN_API( ComponentResult )
  916. RTPRssmSetPayloadHeaderLength(
  917. RTPReassembler rtpr,
  918. UInt32 inPayloadHeaderLength) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0102, 0x7000, 0xA82A);
  919. /*
  920. * RTPRssmGetPayloadHeaderLength()
  921. *
  922. * Availability:
  923. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  924. * CarbonLib: in CarbonLib 1.1 and later
  925. * Mac OS X: in version 10.0 and later
  926. * Windows: in QTSClient.lib 4.0 and later
  927. */
  928. EXTERN_API( ComponentResult )
  929. RTPRssmGetPayloadHeaderLength(
  930. RTPReassembler rtpr,
  931. UInt32 * outPayloadHeaderLength) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0103, 0x7000, 0xA82A);
  932. /*
  933. * RTPRssmSetTimeScale()
  934. *
  935. * Availability:
  936. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  937. * CarbonLib: in CarbonLib 1.1 and later
  938. * Mac OS X: in version 10.0 and later
  939. * Windows: in QTSClient.lib 4.0 and later
  940. */
  941. EXTERN_API( ComponentResult )
  942. RTPRssmSetTimeScale(
  943. RTPReassembler rtpr,
  944. TimeScale inSHTimeScale) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0104, 0x7000, 0xA82A);
  945. /*
  946. * RTPRssmGetTimeScale()
  947. *
  948. * Availability:
  949. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  950. * CarbonLib: in CarbonLib 1.1 and later
  951. * Mac OS X: in version 10.0 and later
  952. * Windows: in QTSClient.lib 4.0 and later
  953. */
  954. EXTERN_API( ComponentResult )
  955. RTPRssmGetTimeScale(
  956. RTPReassembler rtpr,
  957. TimeScale * outSHTimeScale) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0105, 0x7000, 0xA82A);
  958. /*
  959. * RTPRssmNewStreamHandler()
  960. *
  961. * Availability:
  962. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  963. * CarbonLib: in CarbonLib 1.1 and later
  964. * Mac OS X: in version 10.0 and later
  965. * Windows: in QTSClient.lib 4.0 and later
  966. */
  967. EXTERN_API( ComponentResult )
  968. RTPRssmNewStreamHandler(
  969. RTPReassembler rtpr,
  970. OSType inSHType,
  971. SampleDescriptionHandle inSampleDescription,
  972. TimeScale inSHTimeScale,
  973. ComponentInstance * outHandler) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0106, 0x7000, 0xA82A);
  974. /*
  975. * RTPRssmSetStreamHandler()
  976. *
  977. * Availability:
  978. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  979. * CarbonLib: in CarbonLib 1.1 and later
  980. * Mac OS X: in version 10.0 and later
  981. * Windows: in QTSClient.lib 4.0 and later
  982. */
  983. EXTERN_API( ComponentResult )
  984. RTPRssmSetStreamHandler(
  985. RTPReassembler rtpr,
  986. ComponentInstance inStreamHandler) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0107, 0x7000, 0xA82A);
  987. /*
  988. * RTPRssmGetStreamHandler()
  989. *
  990. * Availability:
  991. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  992. * CarbonLib: in CarbonLib 1.1 and later
  993. * Mac OS X: in version 10.0 and later
  994. * Windows: in QTSClient.lib 4.0 and later
  995. */
  996. EXTERN_API( ComponentResult )
  997. RTPRssmGetStreamHandler(
  998. RTPReassembler rtpr,
  999. ComponentInstance * outStreamHandler) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0108, 0x7000, 0xA82A);
  1000. /*
  1001. * RTPRssmSendStreamHandlerChanged()
  1002. *
  1003. * Availability:
  1004. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1005. * CarbonLib: in CarbonLib 1.1 and later
  1006. * Mac OS X: in version 10.0 and later
  1007. * Windows: in QTSClient.lib 4.0 and later
  1008. */
  1009. EXTERN_API( ComponentResult )
  1010. RTPRssmSendStreamHandlerChanged(RTPReassembler rtpr) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0109, 0x7000, 0xA82A);
  1011. /*
  1012. * RTPRssmSetSampleDescription()
  1013. *
  1014. * Availability:
  1015. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1016. * CarbonLib: in CarbonLib 1.1 and later
  1017. * Mac OS X: in version 10.0 and later
  1018. * Windows: in QTSClient.lib 4.0 and later
  1019. */
  1020. EXTERN_API( ComponentResult )
  1021. RTPRssmSetSampleDescription(
  1022. RTPReassembler rtpr,
  1023. SampleDescriptionHandle inSampleDescription) FIVEWORDINLINE(0x2F3C, 0x0004, 0x010A, 0x7000, 0xA82A);
  1024. /* ----- manually sending chunks*/
  1025. /*
  1026. * RTPRssmGetChunkAndIncrRefCount()
  1027. *
  1028. * Availability:
  1029. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1030. * CarbonLib: in CarbonLib 1.1 and later
  1031. * Mac OS X: in version 10.0 and later
  1032. * Windows: in QTSClient.lib 4.0 and later
  1033. */
  1034. EXTERN_API( ComponentResult )
  1035. RTPRssmGetChunkAndIncrRefCount(
  1036. RTPReassembler rtpr,
  1037. UInt32 inChunkDataSize,
  1038. const TimeValue64 * inChunkPresentationTime,
  1039. SHChunkRecord ** outChunk) FIVEWORDINLINE(0x2F3C, 0x000C, 0x010D, 0x7000, 0xA82A);
  1040. /*
  1041. * RTPRssmGetExtChunkAndIncrRefCount()
  1042. *
  1043. * Availability:
  1044. * Non-Carbon CFM: in QTStreamLib 6.0 and later
  1045. * CarbonLib: in CarbonLib 1.6 and later
  1046. * Mac OS X: in version 10.2 and later
  1047. * Windows: in qtmlClient.lib 6.0 and later
  1048. */
  1049. EXTERN_API( ComponentResult )
  1050. RTPRssmGetExtChunkAndIncrRefCount(
  1051. RTPReassembler rtpr,
  1052. UInt32 inChunkDataSize,
  1053. const TimeValue64 * inChunkPresentationTime,
  1054. SInt32 inFlags,
  1055. SHExtendedChunkRecord ** outChunk) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0117, 0x7000, 0xA82A);
  1056. /*
  1057. * RTPRssmSendChunkAndDecrRefCount()
  1058. *
  1059. * Availability:
  1060. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1061. * CarbonLib: in CarbonLib 1.1 and later
  1062. * Mac OS X: in version 10.0 and later
  1063. * Windows: in QTSClient.lib 4.0 and later
  1064. */
  1065. EXTERN_API( ComponentResult )
  1066. RTPRssmSendChunkAndDecrRefCount(
  1067. RTPReassembler rtpr,
  1068. SHChunkRecord * inChunk,
  1069. const SHServerEditParameters * inServerEdit) FIVEWORDINLINE(0x2F3C, 0x0008, 0x010E, 0x7000, 0xA82A);
  1070. /*
  1071. * RTPRssmSendLostChunk()
  1072. *
  1073. * Availability:
  1074. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1075. * CarbonLib: in CarbonLib 1.1 and later
  1076. * Mac OS X: in version 10.0 and later
  1077. * Windows: in QTSClient.lib 4.0 and later
  1078. */
  1079. EXTERN_API( ComponentResult )
  1080. RTPRssmSendLostChunk(
  1081. RTPReassembler rtpr,
  1082. const TimeValue64 * inChunkPresentationTime) FIVEWORDINLINE(0x2F3C, 0x0004, 0x010F, 0x7000, 0xA82A);
  1083. /*
  1084. * RTPRssmSendStreamBufferRange()
  1085. *
  1086. * Availability:
  1087. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1088. * CarbonLib: in CarbonLib 1.1 and later
  1089. * Mac OS X: in version 10.0 and later
  1090. * Windows: in QTSClient.lib 4.0 and later
  1091. */
  1092. EXTERN_API( ComponentResult )
  1093. RTPRssmSendStreamBufferRange(
  1094. RTPReassembler rtpr,
  1095. RTPSendStreamBufferRangeParams * inParams) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0110, 0x7000, 0xA82A);
  1096. /*
  1097. * RTPRssmClearCachedPackets()
  1098. *
  1099. * Availability:
  1100. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1101. * CarbonLib: in CarbonLib 1.1 and later
  1102. * Mac OS X: in version 10.0 and later
  1103. * Windows: in QTSClient.lib 4.0 and later
  1104. */
  1105. EXTERN_API( ComponentResult )
  1106. RTPRssmClearCachedPackets(
  1107. RTPReassembler rtpr,
  1108. SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0111, 0x7000, 0xA82A);
  1109. /*
  1110. * RTPRssmFillPacketListParams()
  1111. *
  1112. * Availability:
  1113. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1114. * CarbonLib: in CarbonLib 1.1 and later
  1115. * Mac OS X: in version 10.0 and later
  1116. * Windows: in QTSClient.lib 4.0 and later
  1117. */
  1118. EXTERN_API( ComponentResult )
  1119. RTPRssmFillPacketListParams(
  1120. RTPReassembler rtpr,
  1121. RTPRssmPacket * inPacketListHead,
  1122. SInt32 inNumWraparounds,
  1123. SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0113, 0x7000, 0xA82A);
  1124. /*
  1125. * RTPRssmReleasePacketList()
  1126. *
  1127. * Availability:
  1128. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1129. * CarbonLib: in CarbonLib 1.1 and later
  1130. * Mac OS X: in version 10.0 and later
  1131. * Windows: in QTSClient.lib 4.0 and later
  1132. */
  1133. EXTERN_API( ComponentResult )
  1134. RTPRssmReleasePacketList(
  1135. RTPReassembler rtpr,
  1136. RTPRssmPacket * inPacketListHead) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0114, 0x7000, 0xA82A);
  1137. /*
  1138. * RTPRssmIncrChunkRefCount()
  1139. *
  1140. * Availability:
  1141. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1142. * CarbonLib: in CarbonLib 1.1 and later
  1143. * Mac OS X: in version 10.0 and later
  1144. * Windows: in QTSClient.lib 4.0 and later
  1145. */
  1146. EXTERN_API( ComponentResult )
  1147. RTPRssmIncrChunkRefCount(
  1148. RTPReassembler rtpr,
  1149. SHChunkRecord * inChunk) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0115, 0x7000, 0xA82A);
  1150. /*
  1151. * RTPRssmDecrChunkRefCount()
  1152. *
  1153. * Availability:
  1154. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1155. * CarbonLib: in CarbonLib 1.1 and later
  1156. * Mac OS X: in version 10.0 and later
  1157. * Windows: in QTSClient.lib 4.0 and later
  1158. */
  1159. EXTERN_API( ComponentResult )
  1160. RTPRssmDecrChunkRefCount(
  1161. RTPReassembler rtpr,
  1162. SHChunkRecord * inChunk) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0116, 0x7000, 0xA82A);
  1163. /*============================================================================
  1164. RTP Media Packetizer
  1165. ============================================================================*/
  1166. enum {
  1167. kRTPMediaPacketizerType = FOUR_CHAR_CODE('rtpm')
  1168. };
  1169. typedef ComponentInstance RTPMediaPacketizer;
  1170. enum {
  1171. kRTPBaseMediaPacketizerType = FOUR_CHAR_CODE('gnrc'),
  1172. kRTP261MediaPacketizerType = FOUR_CHAR_CODE('h261'),
  1173. kRTP263PlusMediaPacketizerType = FOUR_CHAR_CODE('263+'),
  1174. kRTPAudioMediaPacketizerType = FOUR_CHAR_CODE('soun'),
  1175. kRTPQTMediaPacketizerType = FOUR_CHAR_CODE('qtim'),
  1176. kRTPPureVoiceMediaPacketizerType = FOUR_CHAR_CODE('Qclp'),
  1177. kRTPJPEGMediaPacketizerType = FOUR_CHAR_CODE('jpeg'),
  1178. kRTPQDesign2MediaPacketizerType = FOUR_CHAR_CODE('QDM2'),
  1179. kRTPSorensonMediaPacketizerType = FOUR_CHAR_CODE('SVQ1'),
  1180. kRTPMP3MediaPacketizerType = FOUR_CHAR_CODE('mp3 '),
  1181. kRTPMPEG4AudioMediaPacketizerType = FOUR_CHAR_CODE('mp4a'),
  1182. kRTPMPEG4VideoMediaPacketizerType = FOUR_CHAR_CODE('mp4v'),
  1183. kRTPAMRMediaPacketizerType = FOUR_CHAR_CODE('amr ')
  1184. };
  1185. typedef UInt32 RTPMPSampleRef;
  1186. typedef CALLBACK_API( void , RTPMPDataReleaseProcPtr )(UInt8 *inData, void *inRefCon);
  1187. typedef STACK_UPP_TYPE(RTPMPDataReleaseProcPtr) RTPMPDataReleaseUPP;
  1188. enum {
  1189. kMediaPacketizerCanPackEditRate = 1 << 0,
  1190. kMediaPacketizerCanPackLayer = 1 << 1,
  1191. kMediaPacketizerCanPackVolume = 1 << 2,
  1192. kMediaPacketizerCanPackBalance = 1 << 3,
  1193. kMediaPacketizerCanPackGraphicsMode = 1 << 4,
  1194. kMediaPacketizerCanPackEmptyEdit = 1 << 5
  1195. };
  1196. struct MediaPacketizerRequirements {
  1197. OSType mediaType; /* media type supported (0 for all)*/
  1198. OSType dataFormat; /* data format (e.g., compression) supported (0 for all)*/
  1199. UInt32 capabilityFlags; /* ability to handle non-standard track characteristics*/
  1200. UInt8 canPackMatrixType; /* can pack any matrix type up to this (identityMatrixType for identity only)*/
  1201. UInt8 reserved1;
  1202. UInt8 reserved2;
  1203. UInt8 reserved3;
  1204. };
  1205. typedef struct MediaPacketizerRequirements MediaPacketizerRequirements;
  1206. typedef MediaPacketizerRequirements * MediaPacketizerRequirementsPtr;
  1207. struct MediaPacketizerInfo {
  1208. OSType mediaType; /* media type supported (0 for all)*/
  1209. OSType dataFormat; /* data format (e.g., compression) supported (0 for all)*/
  1210. OSType vendor; /* manufacturer of this packetizer (e.g., 'appl' for Apple)*/
  1211. UInt32 capabilityFlags; /* ability to handle non-standard track characteristics*/
  1212. UInt8 canPackMatrixType; /* can pack any matrix type up to this (identityMatrixType for identity only)*/
  1213. UInt8 reserved1;
  1214. UInt8 reserved2;
  1215. UInt8 reserved3;
  1216. long characteristicCount;
  1217. RTPPayloadCharacteristic characteristic[1];
  1218. /* after the last characteristic, the payload name (defined by the RTPPayloadInfo*/
  1219. /* structure) is present. */
  1220. };
  1221. typedef struct MediaPacketizerInfo MediaPacketizerInfo;
  1222. typedef MediaPacketizerInfo * MediaPacketizerInfoPtr;
  1223. typedef MediaPacketizerInfoPtr * MediaPacketizerInfoHandle;
  1224. #define MediaPacketizerInfoToPayloadInfo(_mpi) ((RTPPayloadInfoPtr)(&((_mpi)->characteristic[(_mpi)->characteristicCount])))
  1225. /* MediaPacketizerInfo structs are padded to 32 bits */
  1226. enum {
  1227. kMediaPacketizerInfoPadUpToBytes = 4
  1228. };
  1229. enum {
  1230. kRTPMediaPacketizerInfoRezType = FOUR_CHAR_CODE('pcki')
  1231. };
  1232. /*
  1233. * QTSFindMediaPacketizer()
  1234. *
  1235. * Availability:
  1236. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1237. * CarbonLib: in CarbonLib 1.1 and later
  1238. * Mac OS X: in version 10.0 and later
  1239. * Windows: in QTSClient.lib 4.0 and later
  1240. */
  1241. EXTERN_API_C( OSErr )
  1242. QTSFindMediaPacketizer(
  1243. MediaPacketizerRequirementsPtr inPacketizerinfo,
  1244. SampleDescriptionHandle inSampleDescription,
  1245. RTPPayloadSortRequestPtr inSortInfo,
  1246. QTAtomContainer * outPacketizerList);
  1247. /*
  1248. * QTSFindMediaPacketizerForTrack()
  1249. *
  1250. * Availability:
  1251. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1252. * CarbonLib: in CarbonLib 1.1 and later
  1253. * Mac OS X: in version 10.0 and later
  1254. * Windows: in QTSClient.lib 4.0 and later
  1255. */
  1256. EXTERN_API_C( OSErr )
  1257. QTSFindMediaPacketizerForTrack(
  1258. Track inTrack,
  1259. long inSampleDescriptionIndex,
  1260. RTPPayloadSortRequestPtr inSortInfo,
  1261. QTAtomContainer * outPacketizerList);
  1262. /*
  1263. * QTSFindMediaPacketizerForPayloadID()
  1264. *
  1265. * Availability:
  1266. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1267. * CarbonLib: in CarbonLib 1.1 and later
  1268. * Mac OS X: in version 10.0 and later
  1269. * Windows: in QTSClient.lib 4.0 and later
  1270. */
  1271. EXTERN_API_C( OSErr )
  1272. QTSFindMediaPacketizerForPayloadID(
  1273. long payloadID,
  1274. RTPPayloadSortRequestPtr inSortInfo,
  1275. QTAtomContainer * outPacketizerList);
  1276. /*
  1277. * QTSFindMediaPacketizerForPayloadName()
  1278. *
  1279. * Availability:
  1280. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1281. * CarbonLib: in CarbonLib 1.1 and later
  1282. * Mac OS X: in version 10.0 and later
  1283. * Windows: in QTSClient.lib 4.0 and later
  1284. */
  1285. EXTERN_API_C( OSErr )
  1286. QTSFindMediaPacketizerForPayloadName(
  1287. const char * payloadName,
  1288. RTPPayloadSortRequestPtr inSortInfo,
  1289. QTAtomContainer * outPacketizerList);
  1290. /* flags for RTPMPInitialize*/
  1291. enum {
  1292. kRTPMPRealtimeModeFlag = 0x00000001
  1293. };
  1294. /* flags for RTPMPSampleDataParams*/
  1295. enum {
  1296. kRTPMPSyncSampleFlag = 0x00000001,
  1297. kRTPMPRespectDurationFlag = 0x00000002
  1298. };
  1299. struct RTPMPSampleDataParams {
  1300. UInt32 version;
  1301. UInt32 timeStamp;
  1302. UInt32 duration; /* 0 = unknown duration*/
  1303. UInt32 playOffset;
  1304. Fixed playRate;
  1305. SInt32 flags;
  1306. UInt32 sampleDescSeed;
  1307. Handle sampleDescription;
  1308. RTPMPSampleRef sampleRef;
  1309. UInt32 dataLength;
  1310. const UInt8 * data;
  1311. RTPMPDataReleaseUPP releaseProc;
  1312. void * refCon;
  1313. };
  1314. typedef struct RTPMPSampleDataParams RTPMPSampleDataParams;
  1315. /* out flags for idle, RTPMPSetSampleData, and RTPMPFlush*/
  1316. enum {
  1317. kRTPMPStillProcessingData = 0x00000001 /* not done with data you've got*/
  1318. };
  1319. struct RTPMPPayloadTypeParams {
  1320. UInt32 flags;
  1321. UInt32 payloadNumber;
  1322. short nameLength; /* in: size of payloadName buffer (counting null terminator) -- this will be reset to needed length and paramErr returned if too small */
  1323. char * payloadName; /* caller must provide buffer */
  1324. };
  1325. typedef struct RTPMPPayloadTypeParams RTPMPPayloadTypeParams;
  1326. /*-----------------------------------------
  1327. RTP Media Packetizer Info selectors
  1328. -----------------------------------------*/
  1329. /* info selectors - get only */
  1330. enum {
  1331. kRTPMPPayloadTypeInfo = FOUR_CHAR_CODE('rtpp'), /* RTPMPPayloadTypeParams* */
  1332. kRTPMPRTPTimeScaleInfo = FOUR_CHAR_CODE('rtpt'), /* TimeScale* */
  1333. kRTPMPRequiredSampleDescriptionInfo = FOUR_CHAR_CODE('sdsc'), /* SampleDescriptionHandle* */
  1334. kRTPMPMinPayloadSize = FOUR_CHAR_CODE('mins'), /* UInt32* in bytes, does not include rtp header; default is 0 */
  1335. kRTPMPMinPacketDuration = FOUR_CHAR_CODE('mind'), /* UInt3* in milliseconds; default is no min required */
  1336. kRTPMPSuggestedRepeatPktCountInfo = FOUR_CHAR_CODE('srpc'), /* UInt32* */
  1337. kRTPMPSuggestedRepeatPktSpacingInfo = FOUR_CHAR_CODE('srps'), /* UInt32* in milliseconds */
  1338. kRTPMPMaxPartialSampleSizeInfo = FOUR_CHAR_CODE('mpss'), /* UInt32* in bytes */
  1339. kRTPMPPreferredBufferDelayInfo = FOUR_CHAR_CODE('prbd'), /* UInt32* in milliseconds */
  1340. kRTPMPPayloadNameInfo = FOUR_CHAR_CODE('name'), /* StringPtr */
  1341. kRTPInfo_FormatString = FOUR_CHAR_CODE('fmtp') /* char **, caller allocates ptr, callee disposes */
  1342. };
  1343. /*-----------------------------------------
  1344. RTP Media Packetizer Characteristics
  1345. -----------------------------------------*/
  1346. /* also supports relevant ones in Movies.h and QTSToolbox.h */
  1347. enum {
  1348. kRTPMPNoSampleDataRequiredCharacteristic = FOUR_CHAR_CODE('nsdr'),
  1349. kRTPMPHasUserSettingsDialogCharacteristic = FOUR_CHAR_CODE('sdlg'),
  1350. kRTPMPPrefersReliableTransportCharacteristic = FOUR_CHAR_CODE('rely'),
  1351. kRTPMPRequiresOutOfBandDimensionsCharacteristic = FOUR_CHAR_CODE('robd'),
  1352. kRTPMPReadsPartialSamplesCharacteristic = FOUR_CHAR_CODE('rpsp')
  1353. };
  1354. /*-----------------------------------------
  1355. RTP Media Packetizer selectors
  1356. -----------------------------------------*/
  1357. enum {
  1358. kRTPMPInitializeSelect = 0x0500,
  1359. kRTPMPPreflightMediaSelect = 0x0501,
  1360. kRTPMPIdleSelect = 0x0502,
  1361. kRTPMPSetSampleDataSelect = 0x0503,
  1362. kRTPMPFlushSelect = 0x0504,
  1363. kRTPMPResetSelect = 0x0505,
  1364. kRTPMPSetInfoSelect = 0x0506,
  1365. kRTPMPGetInfoSelect = 0x0507,
  1366. kRTPMPSetTimeScaleSelect = 0x0508,
  1367. kRTPMPGetTimeScaleSelect = 0x0509,
  1368. kRTPMPSetTimeBaseSelect = 0x050A,
  1369. kRTPMPGetTimeBaseSelect = 0x050B,
  1370. kRTPMPHasCharacteristicSelect = 0x050C,
  1371. kRTPMPSetPacketBuilderSelect = 0x050E,
  1372. kRTPMPGetPacketBuilderSelect = 0x050F,
  1373. kRTPMPSetMediaTypeSelect = 0x0510,
  1374. kRTPMPGetMediaTypeSelect = 0x0511,
  1375. kRTPMPSetMaxPacketSizeSelect = 0x0512,
  1376. kRTPMPGetMaxPacketSizeSelect = 0x0513,
  1377. kRTPMPSetMaxPacketDurationSelect = 0x0514,
  1378. kRTPMPGetMaxPacketDurationSelect = 0x0515, /* for export component and apps who want to*/
  1379. /* access dialogs for Media-specific settings*/
  1380. /* (such as Pure Voice interleave factor)*/
  1381. kRTPMPDoUserDialogSelect = 0x0516,
  1382. kRTPMPSetSettingsFromAtomContainerAtAtomSelect = 0x0517,
  1383. kRTPMPGetSettingsIntoAtomContainerAtAtomSelect = 0x0518,
  1384. kRTPMPGetSettingsAsTextSelect = 0x0519,
  1385. kRTPMPGetSettingsSelect = 0x051C,
  1386. kRTPMPSetSettingsSelect = 0x051D
  1387. };
  1388. /*-----------------------------------------
  1389. RTP Media Packetizer functions
  1390. -----------------------------------------*/
  1391. /*
  1392. * RTPMPInitialize()
  1393. *
  1394. * Availability:
  1395. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1396. * CarbonLib: in CarbonLib 1.1 and later
  1397. * Mac OS X: in version 10.0 and later
  1398. * Windows: in QTSClient.lib 4.0 and later
  1399. */
  1400. EXTERN_API( ComponentResult )
  1401. RTPMPInitialize(
  1402. RTPMediaPacketizer rtpm,
  1403. SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0500, 0x7000, 0xA82A);
  1404. /* return noErr if you can handle this media */
  1405. /*
  1406. * RTPMPPreflightMedia()
  1407. *
  1408. * Availability:
  1409. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1410. * CarbonLib: in CarbonLib 1.1 and later
  1411. * Mac OS X: in version 10.0 and later
  1412. * Windows: in QTSClient.lib 4.0 and later
  1413. */
  1414. EXTERN_API( ComponentResult )
  1415. RTPMPPreflightMedia(
  1416. RTPMediaPacketizer rtpm,
  1417. OSType inMediaType,
  1418. SampleDescriptionHandle inSampleDescription) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0501, 0x7000, 0xA82A);
  1419. /*
  1420. do work here if you need to - give up time periodically
  1421. if you're doing time consuming operations
  1422. */
  1423. /*
  1424. * RTPMPIdle()
  1425. *
  1426. * Availability:
  1427. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1428. * CarbonLib: in CarbonLib 1.1 and later
  1429. * Mac OS X: in version 10.0 and later
  1430. * Windows: in QTSClient.lib 4.0 and later
  1431. */
  1432. EXTERN_API( ComponentResult )
  1433. RTPMPIdle(
  1434. RTPMediaPacketizer rtpm,
  1435. SInt32 inFlags,
  1436. SInt32 * outFlags) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0502, 0x7000, 0xA82A);
  1437. /*
  1438. caller owns the RTPMPSampleDataParams struct
  1439. media Packetizer must copy any fields of the struct it wants to keep
  1440. media Packetizer must call release proc when done with the data
  1441. you can do the processing work here if it does not take up too
  1442. much cpu time - otherwise do it in idle
  1443. */
  1444. /*
  1445. * RTPMPSetSampleData()
  1446. *
  1447. * Availability:
  1448. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1449. * CarbonLib: in CarbonLib 1.1 and later
  1450. * Mac OS X: in version 10.0 and later
  1451. * Windows: in QTSClient.lib 4.0 and later
  1452. */
  1453. EXTERN_API( ComponentResult )
  1454. RTPMPSetSampleData(
  1455. RTPMediaPacketizer rtpm,
  1456. const RTPMPSampleDataParams * inSampleData,
  1457. SInt32 * outFlags) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0503, 0x7000, 0xA82A);
  1458. /*
  1459. send everything you have buffered - you will get idles while
  1460. you set the kRTPMPStillProcessingData flag here and in idle
  1461. */
  1462. /*
  1463. * RTPMPFlush()
  1464. *
  1465. * Availability:
  1466. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1467. * CarbonLib: in CarbonLib 1.1 and later
  1468. * Mac OS X: in version 10.0 and later
  1469. * Windows: in QTSClient.lib 4.0 and later
  1470. */
  1471. EXTERN_API( ComponentResult )
  1472. RTPMPFlush(
  1473. RTPMediaPacketizer rtpm,
  1474. SInt32 inFlags,
  1475. SInt32 * outFlags) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0504, 0x7000, 0xA82A);
  1476. /*
  1477. dispose of anything buffered and get rid of state
  1478. do not send the buffered data (because presumably
  1479. there is no connection for you to send on)
  1480. state should be the same as if you were just initialized
  1481. */
  1482. /*
  1483. * RTPMPReset()
  1484. *
  1485. * Availability:
  1486. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1487. * CarbonLib: in CarbonLib 1.1 and later
  1488. * Mac OS X: in version 10.0 and later
  1489. * Windows: in QTSClient.lib 4.0 and later
  1490. */
  1491. EXTERN_API( ComponentResult )
  1492. RTPMPReset(
  1493. RTPMediaPacketizer rtpm,
  1494. SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0505, 0x7000, 0xA82A);
  1495. /*-----------------------------------------
  1496. RTP Media Packetizer get / set functions
  1497. -----------------------------------------*/
  1498. /*
  1499. * RTPMPSetInfo()
  1500. *
  1501. * Availability:
  1502. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1503. * CarbonLib: in CarbonLib 1.1 and later
  1504. * Mac OS X: in version 10.0 and later
  1505. * Windows: in QTSClient.lib 4.0 and later
  1506. */
  1507. EXTERN_API( ComponentResult )
  1508. RTPMPSetInfo(
  1509. RTPMediaPacketizer rtpm,
  1510. OSType inSelector,
  1511. const void * ioParams) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0506, 0x7000, 0xA82A);
  1512. /*
  1513. * RTPMPGetInfo()
  1514. *
  1515. * Availability:
  1516. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1517. * CarbonLib: in CarbonLib 1.1 and later
  1518. * Mac OS X: in version 10.0 and later
  1519. * Windows: in QTSClient.lib 4.0 and later
  1520. */
  1521. EXTERN_API( ComponentResult )
  1522. RTPMPGetInfo(
  1523. RTPMediaPacketizer rtpm,
  1524. OSType inSelector,
  1525. void * ioParams) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0507, 0x7000, 0xA82A);
  1526. /*
  1527. * RTPMPSetTimeScale()
  1528. *
  1529. * Availability:
  1530. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1531. * CarbonLib: in CarbonLib 1.1 and later
  1532. * Mac OS X: in version 10.0 and later
  1533. * Windows: in QTSClient.lib 4.0 and later
  1534. */
  1535. EXTERN_API( ComponentResult )
  1536. RTPMPSetTimeScale(
  1537. RTPMediaPacketizer rtpm,
  1538. TimeScale inTimeScale) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0508, 0x7000, 0xA82A);
  1539. /*
  1540. * RTPMPGetTimeScale()
  1541. *
  1542. * Availability:
  1543. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1544. * CarbonLib: in CarbonLib 1.1 and later
  1545. * Mac OS X: in version 10.0 and later
  1546. * Windows: in QTSClient.lib 4.0 and later
  1547. */
  1548. EXTERN_API( ComponentResult )
  1549. RTPMPGetTimeScale(
  1550. RTPMediaPacketizer rtpm,
  1551. TimeScale * outTimeScale) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0509, 0x7000, 0xA82A);
  1552. /*
  1553. * RTPMPSetTimeBase()
  1554. *
  1555. * Availability:
  1556. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1557. * CarbonLib: in CarbonLib 1.1 and later
  1558. * Mac OS X: in version 10.0 and later
  1559. * Windows: in QTSClient.lib 4.0 and later
  1560. */
  1561. EXTERN_API( ComponentResult )
  1562. RTPMPSetTimeBase(
  1563. RTPMediaPacketizer rtpm,
  1564. TimeBase inTimeBase) FIVEWORDINLINE(0x2F3C, 0x0004, 0x050A, 0x7000, 0xA82A);
  1565. /*
  1566. * RTPMPGetTimeBase()
  1567. *
  1568. * Availability:
  1569. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1570. * CarbonLib: in CarbonLib 1.1 and later
  1571. * Mac OS X: in version 10.0 and later
  1572. * Windows: in QTSClient.lib 4.0 and later
  1573. */
  1574. EXTERN_API( ComponentResult )
  1575. RTPMPGetTimeBase(
  1576. RTPMediaPacketizer rtpm,
  1577. TimeBase * outTimeBase) FIVEWORDINLINE(0x2F3C, 0x0004, 0x050B, 0x7000, 0xA82A);
  1578. /*
  1579. * RTPMPHasCharacteristic()
  1580. *
  1581. * Availability:
  1582. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1583. * CarbonLib: in CarbonLib 1.1 and later
  1584. * Mac OS X: in version 10.0 and later
  1585. * Windows: in QTSClient.lib 4.0 and later
  1586. */
  1587. EXTERN_API( ComponentResult )
  1588. RTPMPHasCharacteristic(
  1589. RTPMediaPacketizer rtpm,
  1590. OSType inSelector,
  1591. Boolean * outHasIt) FIVEWORDINLINE(0x2F3C, 0x0008, 0x050C, 0x7000, 0xA82A);
  1592. /*
  1593. * RTPMPSetPacketBuilder()
  1594. *
  1595. * Availability:
  1596. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1597. * CarbonLib: in CarbonLib 1.1 and later
  1598. * Mac OS X: in version 10.0 and later
  1599. * Windows: in QTSClient.lib 4.0 and later
  1600. */
  1601. EXTERN_API( ComponentResult )
  1602. RTPMPSetPacketBuilder(
  1603. RTPMediaPacketizer rtpm,
  1604. ComponentInstance inPacketBuilder) FIVEWORDINLINE(0x2F3C, 0x0004, 0x050E, 0x7000, 0xA82A);
  1605. /*
  1606. * RTPMPGetPacketBuilder()
  1607. *
  1608. * Availability:
  1609. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1610. * CarbonLib: in CarbonLib 1.1 and later
  1611. * Mac OS X: in version 10.0 and later
  1612. * Windows: in QTSClient.lib 4.0 and later
  1613. */
  1614. EXTERN_API( ComponentResult )
  1615. RTPMPGetPacketBuilder(
  1616. RTPMediaPacketizer rtpm,
  1617. ComponentInstance * outPacketBuilder) FIVEWORDINLINE(0x2F3C, 0x0004, 0x050F, 0x7000, 0xA82A);
  1618. /*
  1619. * RTPMPSetMediaType()
  1620. *
  1621. * Availability:
  1622. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1623. * CarbonLib: in CarbonLib 1.1 and later
  1624. * Mac OS X: in version 10.0 and later
  1625. * Windows: in QTSClient.lib 4.0 and later
  1626. */
  1627. EXTERN_API( ComponentResult )
  1628. RTPMPSetMediaType(
  1629. RTPMediaPacketizer rtpm,
  1630. OSType inMediaType) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0510, 0x7000, 0xA82A);
  1631. /*
  1632. * RTPMPGetMediaType()
  1633. *
  1634. * Availability:
  1635. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1636. * CarbonLib: in CarbonLib 1.1 and later
  1637. * Mac OS X: in version 10.0 and later
  1638. * Windows: in QTSClient.lib 4.0 and later
  1639. */
  1640. EXTERN_API( ComponentResult )
  1641. RTPMPGetMediaType(
  1642. RTPMediaPacketizer rtpm,
  1643. OSType * outMediaType) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0511, 0x7000, 0xA82A);
  1644. /* size is in bytes*/
  1645. /*
  1646. * RTPMPSetMaxPacketSize()
  1647. *
  1648. * Availability:
  1649. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1650. * CarbonLib: in CarbonLib 1.1 and later
  1651. * Mac OS X: in version 10.0 and later
  1652. * Windows: in QTSClient.lib 4.0 and later
  1653. */
  1654. EXTERN_API( ComponentResult )
  1655. RTPMPSetMaxPacketSize(
  1656. RTPMediaPacketizer rtpm,
  1657. UInt32 inMaxPacketSize) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0512, 0x7000, 0xA82A);
  1658. /*
  1659. * RTPMPGetMaxPacketSize()
  1660. *
  1661. * Availability:
  1662. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1663. * CarbonLib: in CarbonLib 1.1 and later
  1664. * Mac OS X: in version 10.0 and later
  1665. * Windows: in QTSClient.lib 4.0 and later
  1666. */
  1667. EXTERN_API( ComponentResult )
  1668. RTPMPGetMaxPacketSize(
  1669. RTPMediaPacketizer rtpm,
  1670. UInt32 * outMaxPacketSize) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0513, 0x7000, 0xA82A);
  1671. /* duration is in milliseconds*/
  1672. /*
  1673. * RTPMPSetMaxPacketDuration()
  1674. *
  1675. * Availability:
  1676. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1677. * CarbonLib: in CarbonLib 1.1 and later
  1678. * Mac OS X: in version 10.0 and later
  1679. * Windows: in QTSClient.lib 4.0 and later
  1680. */
  1681. EXTERN_API( ComponentResult )
  1682. RTPMPSetMaxPacketDuration(
  1683. RTPMediaPacketizer rtpm,
  1684. UInt32 inMaxPacketDuration) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0514, 0x7000, 0xA82A);
  1685. /*
  1686. * RTPMPGetMaxPacketDuration()
  1687. *
  1688. * Availability:
  1689. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1690. * CarbonLib: in CarbonLib 1.1 and later
  1691. * Mac OS X: in version 10.0 and later
  1692. * Windows: in QTSClient.lib 4.0 and later
  1693. */
  1694. EXTERN_API( ComponentResult )
  1695. RTPMPGetMaxPacketDuration(
  1696. RTPMediaPacketizer rtpm,
  1697. UInt32 * outMaxPacketDuration) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0515, 0x7000, 0xA82A);
  1698. /*
  1699. * RTPMPDoUserDialog()
  1700. *
  1701. * Availability:
  1702. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1703. * CarbonLib: in CarbonLib 1.1 and later
  1704. * Mac OS X: in version 10.0 and later
  1705. * Windows: in QTSClient.lib 4.0 and later
  1706. */
  1707. EXTERN_API( ComponentResult )
  1708. RTPMPDoUserDialog(
  1709. RTPMediaPacketizer rtpm,
  1710. ModalFilterUPP inFilterUPP,
  1711. Boolean * canceled) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0516, 0x7000, 0xA82A);
  1712. /*
  1713. * RTPMPSetSettingsFromAtomContainerAtAtom()
  1714. *
  1715. * Availability:
  1716. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1717. * CarbonLib: in CarbonLib 1.1 and later
  1718. * Mac OS X: in version 10.0 and later
  1719. * Windows: in QTSClient.lib 4.0 and later
  1720. */
  1721. EXTERN_API( ComponentResult )
  1722. RTPMPSetSettingsFromAtomContainerAtAtom(
  1723. RTPMediaPacketizer rtpm,
  1724. QTAtomContainer inContainer,
  1725. QTAtom inParentAtom) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0517, 0x7000, 0xA82A);
  1726. /*
  1727. * RTPMPGetSettingsIntoAtomContainerAtAtom()
  1728. *
  1729. * Availability:
  1730. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1731. * CarbonLib: in CarbonLib 1.1 and later
  1732. * Mac OS X: in version 10.0 and later
  1733. * Windows: in QTSClient.lib 4.0 and later
  1734. */
  1735. EXTERN_API( ComponentResult )
  1736. RTPMPGetSettingsIntoAtomContainerAtAtom(
  1737. RTPMediaPacketizer rtpm,
  1738. QTAtomContainer inOutContainer,
  1739. QTAtom inParentAtom) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0518, 0x7000, 0xA82A);
  1740. /*
  1741. * RTPMPGetSettingsAsText()
  1742. *
  1743. * Availability:
  1744. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1745. * CarbonLib: in CarbonLib 1.1 and later
  1746. * Mac OS X: in version 10.0 and later
  1747. * Windows: in QTSClient.lib 4.0 and later
  1748. */
  1749. EXTERN_API( ComponentResult )
  1750. RTPMPGetSettingsAsText(
  1751. RTPMediaPacketizer rtpm,
  1752. Handle * text) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0519, 0x7000, 0xA82A);
  1753. /*
  1754. * RTPMPGetSettings()
  1755. *
  1756. * Availability:
  1757. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  1758. * CarbonLib: in CarbonLib 1.3 and later
  1759. * Mac OS X: in version 10.0 and later
  1760. * Windows: in QTSClient.lib 5.0 and later
  1761. */
  1762. EXTERN_API( ComponentResult )
  1763. RTPMPGetSettings(
  1764. RTPMediaPacketizer rtpm,
  1765. QTAtomContainer * outSettings,
  1766. SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0008, 0x051C, 0x7000, 0xA82A);
  1767. /*
  1768. * RTPMPSetSettings()
  1769. *
  1770. * Availability:
  1771. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  1772. * CarbonLib: in CarbonLib 1.3 and later
  1773. * Mac OS X: in version 10.0 and later
  1774. * Windows: in QTSClient.lib 5.0 and later
  1775. */
  1776. EXTERN_API( ComponentResult )
  1777. RTPMPSetSettings(
  1778. RTPMediaPacketizer rtpm,
  1779. QTAtomSpecPtr inSettings,
  1780. SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0008, 0x051D, 0x7000, 0xA82A);
  1781. /*============================================================================
  1782. RTP Packet Builder
  1783. ============================================================================*/
  1784. enum {
  1785. kRTPPacketBuilderType = FOUR_CHAR_CODE('rtpb')
  1786. };
  1787. typedef ComponentInstance RTPPacketBuilder;
  1788. typedef struct OpaqueRTPPacketGroupRef* RTPPacketGroupRef;
  1789. typedef struct OpaqueRTPPacketRef* RTPPacketRef;
  1790. typedef struct OpaqueRTPPacketRepeatedDataRef* RTPPacketRepeatedDataRef;
  1791. /* flags for RTPPBBegin/EndPacket, RTPPBBegin/EndPacketGroup*/
  1792. enum {
  1793. kRTPPBSetMarkerFlag = 0x00000001,
  1794. kRTPPBRepeatPacketFlag = 0x00000002,
  1795. kRTPPBSyncSampleFlag = 0x00010000,
  1796. kRTPPBBFrameFlag = 0x00020000,
  1797. kRTPPBDontSendFlag = 0x10000000 /* when set in EndPacketGroup, will not add group*/
  1798. };
  1799. enum {
  1800. kRTPPBUnknownPacketMediaDataLength = 0
  1801. };
  1802. /* flags for RTPPBGetSampleData*/
  1803. enum {
  1804. kRTPPBEndOfDataFlag = 0x00000001
  1805. };
  1806. typedef CALLBACK_API( void , RTPPBCallbackProcPtr )(OSType inSelector, void *ioParams, void *inRefCon);
  1807. typedef STACK_UPP_TYPE(RTPPBCallbackProcPtr) RTPPBCallbackUPP;
  1808. /*-----------------------------------------
  1809. RTP Packet Builder selectors
  1810. -----------------------------------------*/
  1811. enum {
  1812. kRTPPBBeginPacketGroupSelect = 0x0500,
  1813. kRTPPBEndPacketGroupSelect = 0x0501,
  1814. kRTPPBBeginPacketSelect = 0x0502,
  1815. kRTPPBEndPacketSelect = 0x0503,
  1816. kRTPPBAddPacketLiteralDataSelect = 0x0504,
  1817. kRTPPBAddPacketSampleDataSelect = 0x0505,
  1818. kRTPPBAddPacketRepeatedDataSelect = 0x0506,
  1819. kRTPPBReleaseRepeatedDataSelect = 0x0507,
  1820. kRTPPBSetPacketSequenceNumberSelect = 0x0508,
  1821. kRTPPBGetPacketSequenceNumberSelect = 0x0509,
  1822. kRTPPBSetCallbackSelect = 0x050A,
  1823. kRTPPBGetCallbackSelect = 0x050B,
  1824. kRTPPBSetInfoSelect = 0x050C,
  1825. kRTPPBGetInfoSelect = 0x050D,
  1826. kRTPPBSetPacketTimeStampOffsetSelect = 0x050E,
  1827. kRTPPBGetPacketTimeStampOffsetSelect = 0x050F,
  1828. kRTPPBAddPacketSampleData64Select = 0x0510,
  1829. kRTPPBGetSampleDataSelect = 0x0511,
  1830. kRTPPBAddRepeatPacketSelect = 0x0512
  1831. };
  1832. /*-----------------------------------------
  1833. RTP Packet Builder functions
  1834. -----------------------------------------*/
  1835. /*
  1836. * RTPPBBeginPacketGroup()
  1837. *
  1838. * Availability:
  1839. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1840. * CarbonLib: in CarbonLib 1.1 and later
  1841. * Mac OS X: in version 10.0 and later
  1842. * Windows: in QTSClient.lib 4.0 and later
  1843. */
  1844. EXTERN_API( ComponentResult )
  1845. RTPPBBeginPacketGroup(
  1846. RTPPacketBuilder rtpb,
  1847. SInt32 inFlags,
  1848. UInt32 inTimeStamp,
  1849. RTPPacketGroupRef * outPacketGroup) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0500, 0x7000, 0xA82A);
  1850. /*
  1851. * RTPPBEndPacketGroup()
  1852. *
  1853. * Availability:
  1854. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1855. * CarbonLib: in CarbonLib 1.1 and later
  1856. * Mac OS X: in version 10.0 and later
  1857. * Windows: in QTSClient.lib 4.0 and later
  1858. */
  1859. EXTERN_API( ComponentResult )
  1860. RTPPBEndPacketGroup(
  1861. RTPPacketBuilder rtpb,
  1862. SInt32 inFlags,
  1863. RTPPacketGroupRef inPacketGroup) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0501, 0x7000, 0xA82A);
  1864. /*
  1865. * RTPPBBeginPacket()
  1866. *
  1867. * Availability:
  1868. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1869. * CarbonLib: in CarbonLib 1.1 and later
  1870. * Mac OS X: in version 10.0 and later
  1871. * Windows: in QTSClient.lib 4.0 and later
  1872. */
  1873. EXTERN_API( ComponentResult )
  1874. RTPPBBeginPacket(
  1875. RTPPacketBuilder rtpb,
  1876. SInt32 inFlags,
  1877. RTPPacketGroupRef inPacketGroup,
  1878. UInt32 inPacketMediaDataLength,
  1879. RTPPacketRef * outPacket) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0502, 0x7000, 0xA82A);
  1880. /*
  1881. * RTPPBEndPacket()
  1882. *
  1883. * Availability:
  1884. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1885. * CarbonLib: in CarbonLib 1.1 and later
  1886. * Mac OS X: in version 10.0 and later
  1887. * Windows: in QTSClient.lib 4.0 and later
  1888. */
  1889. EXTERN_API( ComponentResult )
  1890. RTPPBEndPacket(
  1891. RTPPacketBuilder rtpb,
  1892. SInt32 inFlags,
  1893. RTPPacketGroupRef inPacketGroup,
  1894. RTPPacketRef inPacket,
  1895. UInt32 inTransmissionTimeOffset,
  1896. UInt32 inDuration) FIVEWORDINLINE(0x2F3C, 0x0014, 0x0503, 0x7000, 0xA82A);
  1897. /*
  1898. non-NULL RTPPacketRepeatedDataRef means this data will be repeated later
  1899. pb must return a repeated data ref
  1900. */
  1901. /*
  1902. * RTPPBAddPacketLiteralData()
  1903. *
  1904. * Availability:
  1905. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1906. * CarbonLib: in CarbonLib 1.1 and later
  1907. * Mac OS X: in version 10.0 and later
  1908. * Windows: in QTSClient.lib 4.0 and later
  1909. */
  1910. EXTERN_API( ComponentResult )
  1911. RTPPBAddPacketLiteralData(
  1912. RTPPacketBuilder rtpb,
  1913. SInt32 inFlags,
  1914. RTPPacketGroupRef inPacketGroup,
  1915. RTPPacketRef inPacket,
  1916. UInt8 * inData,
  1917. UInt32 inDataLength,
  1918. RTPPacketRepeatedDataRef * outDataRef) FIVEWORDINLINE(0x2F3C, 0x0018, 0x0504, 0x7000, 0xA82A);
  1919. /*
  1920. non-NULL RTPPacketRepeatedDataRef means this data will be repeated later
  1921. pb must return a repeated data ref
  1922. */
  1923. /*
  1924. * RTPPBAddPacketSampleData()
  1925. *
  1926. * Availability:
  1927. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1928. * CarbonLib: in CarbonLib 1.1 and later
  1929. * Mac OS X: in version 10.0 and later
  1930. * Windows: in QTSClient.lib 4.0 and later
  1931. */
  1932. EXTERN_API( ComponentResult )
  1933. RTPPBAddPacketSampleData(
  1934. RTPPacketBuilder rtpb,
  1935. SInt32 inFlags,
  1936. RTPPacketGroupRef inPacketGroup,
  1937. RTPPacketRef inPacket,
  1938. RTPMPSampleDataParams * inSampleDataParams,
  1939. UInt32 inSampleOffset,
  1940. UInt32 inSampleDataLength,
  1941. RTPPacketRepeatedDataRef * outDataRef) FIVEWORDINLINE(0x2F3C, 0x001C, 0x0505, 0x7000, 0xA82A);
  1942. /*
  1943. non-NULL RTPPacketRepeatedDataRef means this data will be repeated later
  1944. pb must return a repeated data ref
  1945. */
  1946. /*
  1947. * RTPPBAddPacketSampleData64()
  1948. *
  1949. * Availability:
  1950. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  1951. * CarbonLib: in CarbonLib 1.3 and later
  1952. * Mac OS X: in version 10.0 and later
  1953. * Windows: in QTSClient.lib 5.0 and later
  1954. */
  1955. EXTERN_API( ComponentResult )
  1956. RTPPBAddPacketSampleData64(
  1957. RTPPacketBuilder rtpb,
  1958. SInt32 inFlags,
  1959. RTPPacketGroupRef inPacketGroup,
  1960. RTPPacketRef inPacket,
  1961. RTPMPSampleDataParams * inSampleDataParams,
  1962. const UInt64 * inSampleOffset,
  1963. UInt32 inSampleDataLength,
  1964. RTPPacketRepeatedDataRef * outDataRef) FIVEWORDINLINE(0x2F3C, 0x001C, 0x0510, 0x7000, 0xA82A);
  1965. /*
  1966. call to add the repeated data using the ref you got from
  1967. RTPPBAddPacketLiteralData or RTPPBAddPacketSampleData
  1968. */
  1969. /*
  1970. * RTPPBAddPacketRepeatedData()
  1971. *
  1972. * Availability:
  1973. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1974. * CarbonLib: in CarbonLib 1.1 and later
  1975. * Mac OS X: in version 10.0 and later
  1976. * Windows: in QTSClient.lib 4.0 and later
  1977. */
  1978. EXTERN_API( ComponentResult )
  1979. RTPPBAddPacketRepeatedData(
  1980. RTPPacketBuilder rtpb,
  1981. SInt32 inFlags,
  1982. RTPPacketGroupRef inPacketGroup,
  1983. RTPPacketRef inPacket,
  1984. RTPPacketRepeatedDataRef inDataRef) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0506, 0x7000, 0xA82A);
  1985. /* call when done with repeated data*/
  1986. /*
  1987. * RTPPBReleaseRepeatedData()
  1988. *
  1989. * Availability:
  1990. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1991. * CarbonLib: in CarbonLib 1.1 and later
  1992. * Mac OS X: in version 10.0 and later
  1993. * Windows: in QTSClient.lib 4.0 and later
  1994. */
  1995. EXTERN_API( ComponentResult )
  1996. RTPPBReleaseRepeatedData(
  1997. RTPPacketBuilder rtpb,
  1998. RTPPacketRepeatedDataRef inDataRef) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0507, 0x7000, 0xA82A);
  1999. /*
  2000. seq number is just relative seq number
  2001. don't call if you don't care when seq # is used
  2002. */
  2003. /*
  2004. * RTPPBSetPacketSequenceNumber()
  2005. *
  2006. * Availability:
  2007. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  2008. * CarbonLib: in CarbonLib 1.1 and later
  2009. * Mac OS X: in version 10.0 and later
  2010. * Windows: in QTSClient.lib 4.0 and later
  2011. */
  2012. EXTERN_API( ComponentResult )
  2013. RTPPBSetPacketSequenceNumber(
  2014. RTPPacketBuilder rtpb,
  2015. SInt32 inFlags,
  2016. RTPPacketGroupRef inPacketGroup,
  2017. RTPPacketRef inPacket,
  2018. UInt32 inSequenceNumber) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0508, 0x7000, 0xA82A);
  2019. /*
  2020. * RTPPBGetPacketSequenceNumber()
  2021. *
  2022. * Availability:
  2023. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  2024. * CarbonLib: in CarbonLib 1.1 and later
  2025. * Mac OS X: in version 10.0 and later
  2026. * Windows: in QTSClient.lib 4.0 and later
  2027. */
  2028. EXTERN_API( ComponentResult )
  2029. RTPPBGetPacketSequenceNumber(
  2030. RTPPacketBuilder rtpb,
  2031. SInt32 inFlags,
  2032. RTPPacketGroupRef inPacketGroup,
  2033. RTPPacketRef inPacket,
  2034. UInt32 * outSequenceNumber) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0509, 0x7000, 0xA82A);
  2035. /*
  2036. * RTPPBSetPacketTimeStampOffset()
  2037. *
  2038. * Availability:
  2039. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  2040. * CarbonLib: in CarbonLib 1.3 and later
  2041. * Mac OS X: in version 10.0 and later
  2042. * Windows: in QTSClient.lib 5.0 and later
  2043. */
  2044. EXTERN_API( ComponentResult )
  2045. RTPPBSetPacketTimeStampOffset(
  2046. RTPPacketBuilder rtpb,
  2047. SInt32 inFlags,
  2048. RTPPacketGroupRef inPacketGroup,
  2049. RTPPacketRef inPacket,
  2050. SInt32 inTimeStampOffset) FIVEWORDINLINE(0x2F3C, 0x0010, 0x050E, 0x7000, 0xA82A);
  2051. /*
  2052. * RTPPBGetPacketTimeStampOffset()
  2053. *
  2054. * Availability:
  2055. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  2056. * CarbonLib: in CarbonLib 1.3 and later
  2057. * Mac OS X: in version 10.0 and later
  2058. * Windows: in QTSClient.lib 5.0 and later
  2059. */
  2060. EXTERN_API( ComponentResult )
  2061. RTPPBGetPacketTimeStampOffset(
  2062. RTPPacketBuilder rtpb,
  2063. SInt32 inFlags,
  2064. RTPPacketGroupRef inPacketGroup,
  2065. RTPPacketRef inPacket,
  2066. SInt32 * outTimeStampOffset) FIVEWORDINLINE(0x2F3C, 0x0010, 0x050F, 0x7000, 0xA82A);
  2067. /*
  2068. * RTPPBAddRepeatPacket()
  2069. *
  2070. * Availability:
  2071. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  2072. * CarbonLib: in CarbonLib 1.3 and later
  2073. * Mac OS X: in version 10.0 and later
  2074. * Windows: in QTSClient.lib 5.0 and later
  2075. */
  2076. EXTERN_API( ComponentResult )
  2077. RTPPBAddRepeatPacket(
  2078. RTPPacketBuilder rtpb,
  2079. SInt32 inFlags,
  2080. RTPPacketGroupRef inPacketGroup,
  2081. RTPPacketRef inPacket,
  2082. TimeValue inTransmissionOffset,
  2083. UInt32 inSequenceNumber) FIVEWORDINLINE(0x2F3C, 0x0014, 0x0512, 0x7000, 0xA82A);
  2084. /*
  2085. used for communicating with the caller of the media packetizers if needed
  2086. NOT used for communicating with the media packetizers themselves
  2087. */
  2088. /*
  2089. * RTPPBSetCallback()
  2090. *
  2091. * Availability:
  2092. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  2093. * CarbonLib: in CarbonLib 1.1 and later
  2094. * Mac OS X: in version 10.0 and later
  2095. * Windows: in QTSClient.lib 4.0 and later
  2096. */
  2097. EXTERN_API( ComponentResult )
  2098. RTPPBSetCallback(
  2099. RTPPacketBuilder rtpb,
  2100. RTPPBCallbackUPP inCallback,
  2101. void * inRefCon) FIVEWORDINLINE(0x2F3C, 0x0008, 0x050A, 0x7000, 0xA82A);
  2102. /*
  2103. * RTPPBGetCallback()
  2104. *
  2105. * Availability:
  2106. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  2107. * CarbonLib: in CarbonLib 1.1 and later
  2108. * Mac OS X: in version 10.0 and later
  2109. * Windows: in QTSClient.lib 4.0 and later
  2110. */
  2111. EXTERN_API( ComponentResult )
  2112. RTPPBGetCallback(
  2113. RTPPacketBuilder rtpb,
  2114. RTPPBCallbackUPP * outCallback,
  2115. void ** outRefCon) FIVEWORDINLINE(0x2F3C, 0x0008, 0x050B, 0x7000, 0xA82A);
  2116. /*
  2117. * RTPPBSetInfo()
  2118. *
  2119. * Availability:
  2120. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  2121. * CarbonLib: in CarbonLib 1.1 and later
  2122. * Mac OS X: in version 10.0 and later
  2123. * Windows: in QTSClient.lib 4.0 and later
  2124. */
  2125. EXTERN_API( ComponentResult )
  2126. RTPPBSetInfo(
  2127. RTPPacketBuilder rtpb,
  2128. OSType inSelector,
  2129. void * ioParams) FIVEWORDINLINE(0x2F3C, 0x0008, 0x050C, 0x7000, 0xA82A);
  2130. /*
  2131. * RTPPBGetInfo()
  2132. *
  2133. * Availability:
  2134. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  2135. * CarbonLib: in CarbonLib 1.1 and later
  2136. * Mac OS X: in version 10.0 and later
  2137. * Windows: in QTSClient.lib 4.0 and later
  2138. */
  2139. EXTERN_API( ComponentResult )
  2140. RTPPBGetInfo(
  2141. RTPPacketBuilder rtpb,
  2142. OSType inSelector,
  2143. void * ioParams) FIVEWORDINLINE(0x2F3C, 0x0008, 0x050D, 0x7000, 0xA82A);
  2144. /*
  2145. * RTPPBGetSampleData()
  2146. *
  2147. * Availability:
  2148. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  2149. * CarbonLib: in CarbonLib 1.3 and later
  2150. * Mac OS X: in version 10.0 and later
  2151. * Windows: in QTSClient.lib 5.0 and later
  2152. */
  2153. EXTERN_API( ComponentResult )
  2154. RTPPBGetSampleData(
  2155. RTPPacketBuilder rtpb,
  2156. RTPMPSampleDataParams * inParams,
  2157. const UInt64 * inStartOffset,
  2158. UInt8 * outDataBuffer,
  2159. UInt32 inBytesToRead,
  2160. UInt32 * outBytesRead,
  2161. SInt32 * outFlags) FIVEWORDINLINE(0x2F3C, 0x0018, 0x0511, 0x7000, 0xA82A);
  2162. /* UPP call backs */
  2163. /*
  2164. * NewRTPMPDataReleaseUPP()
  2165. *
  2166. * Availability:
  2167. * Non-Carbon CFM: available as macro/inline
  2168. * CarbonLib: in CarbonLib 1.3 and later
  2169. * Mac OS X: in version 10.0 and later
  2170. */
  2171. EXTERN_API_C( RTPMPDataReleaseUPP )
  2172. NewRTPMPDataReleaseUPP(RTPMPDataReleaseProcPtr userRoutine);
  2173. #if !OPAQUE_UPP_TYPES
  2174. enum { uppRTPMPDataReleaseProcInfo = 0x000003C0 }; /* pascal no_return_value Func(4_bytes, 4_bytes) */
  2175. #ifdef __cplusplus
  2176. inline DEFINE_API_C(RTPMPDataReleaseUPP) NewRTPMPDataReleaseUPP(RTPMPDataReleaseProcPtr userRoutine) { return (RTPMPDataReleaseUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppRTPMPDataReleaseProcInfo, GetCurrentArchitecture()); }
  2177. #else
  2178. #define NewRTPMPDataReleaseUPP(userRoutine) (RTPMPDataReleaseUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppRTPMPDataReleaseProcInfo, GetCurrentArchitecture())
  2179. #endif
  2180. #endif
  2181. /*
  2182. * NewRTPPBCallbackUPP()
  2183. *
  2184. * Availability:
  2185. * Non-Carbon CFM: available as macro/inline
  2186. * CarbonLib: in CarbonLib 1.3 and later
  2187. * Mac OS X: in version 10.0 and later
  2188. */
  2189. EXTERN_API_C( RTPPBCallbackUPP )
  2190. NewRTPPBCallbackUPP(RTPPBCallbackProcPtr userRoutine);
  2191. #if !OPAQUE_UPP_TYPES
  2192. enum { uppRTPPBCallbackProcInfo = 0x00000FC0 }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes) */
  2193. #ifdef __cplusplus
  2194. inline DEFINE_API_C(RTPPBCallbackUPP) NewRTPPBCallbackUPP(RTPPBCallbackProcPtr userRoutine) { return (RTPPBCallbackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppRTPPBCallbackProcInfo, GetCurrentArchitecture()); }
  2195. #else
  2196. #define NewRTPPBCallbackUPP(userRoutine) (RTPPBCallbackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppRTPPBCallbackProcInfo, GetCurrentArchitecture())
  2197. #endif
  2198. #endif
  2199. /*
  2200. * DisposeRTPMPDataReleaseUPP()
  2201. *
  2202. * Availability:
  2203. * Non-Carbon CFM: available as macro/inline
  2204. * CarbonLib: in CarbonLib 1.3 and later
  2205. * Mac OS X: in version 10.0 and later
  2206. */
  2207. EXTERN_API_C( void )
  2208. DisposeRTPMPDataReleaseUPP(RTPMPDataReleaseUPP userUPP);
  2209. #if !OPAQUE_UPP_TYPES
  2210. #ifdef __cplusplus
  2211. inline DEFINE_API_C(void) DisposeRTPMPDataReleaseUPP(RTPMPDataReleaseUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  2212. #else
  2213. #define DisposeRTPMPDataReleaseUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  2214. #endif
  2215. #endif
  2216. /*
  2217. * DisposeRTPPBCallbackUPP()
  2218. *
  2219. * Availability:
  2220. * Non-Carbon CFM: available as macro/inline
  2221. * CarbonLib: in CarbonLib 1.3 and later
  2222. * Mac OS X: in version 10.0 and later
  2223. */
  2224. EXTERN_API_C( void )
  2225. DisposeRTPPBCallbackUPP(RTPPBCallbackUPP userUPP);
  2226. #if !OPAQUE_UPP_TYPES
  2227. #ifdef __cplusplus
  2228. inline DEFINE_API_C(void) DisposeRTPPBCallbackUPP(RTPPBCallbackUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  2229. #else
  2230. #define DisposeRTPPBCallbackUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  2231. #endif
  2232. #endif
  2233. /*
  2234. * InvokeRTPMPDataReleaseUPP()
  2235. *
  2236. * Availability:
  2237. * Non-Carbon CFM: available as macro/inline
  2238. * CarbonLib: in CarbonLib 1.3 and later
  2239. * Mac OS X: in version 10.0 and later
  2240. */
  2241. EXTERN_API_C( void )
  2242. InvokeRTPMPDataReleaseUPP(
  2243. UInt8 * inData,
  2244. void * inRefCon,
  2245. RTPMPDataReleaseUPP userUPP);
  2246. #if !OPAQUE_UPP_TYPES
  2247. #ifdef __cplusplus
  2248. inline DEFINE_API_C(void) InvokeRTPMPDataReleaseUPP(UInt8 * inData, void * inRefCon, RTPMPDataReleaseUPP userUPP) { CALL_TWO_PARAMETER_UPP(userUPP, uppRTPMPDataReleaseProcInfo, inData, inRefCon); }
  2249. #else
  2250. #define InvokeRTPMPDataReleaseUPP(inData, inRefCon, userUPP) CALL_TWO_PARAMETER_UPP((userUPP), uppRTPMPDataReleaseProcInfo, (inData), (inRefCon))
  2251. #endif
  2252. #endif
  2253. /*
  2254. * InvokeRTPPBCallbackUPP()
  2255. *
  2256. * Availability:
  2257. * Non-Carbon CFM: available as macro/inline
  2258. * CarbonLib: in CarbonLib 1.3 and later
  2259. * Mac OS X: in version 10.0 and later
  2260. */
  2261. EXTERN_API_C( void )
  2262. InvokeRTPPBCallbackUPP(
  2263. OSType inSelector,
  2264. void * ioParams,
  2265. void * inRefCon,
  2266. RTPPBCallbackUPP userUPP);
  2267. #if !OPAQUE_UPP_TYPES
  2268. #ifdef __cplusplus
  2269. inline DEFINE_API_C(void) InvokeRTPPBCallbackUPP(OSType inSelector, void * ioParams, void * inRefCon, RTPPBCallbackUPP userUPP) { CALL_THREE_PARAMETER_UPP(userUPP, uppRTPPBCallbackProcInfo, inSelector, ioParams, inRefCon); }
  2270. #else
  2271. #define InvokeRTPPBCallbackUPP(inSelector, ioParams, inRefCon, userUPP) CALL_THREE_PARAMETER_UPP((userUPP), uppRTPPBCallbackProcInfo, (inSelector), (ioParams), (inRefCon))
  2272. #endif
  2273. #endif
  2274. #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
  2275. /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
  2276. #define NewRTPMPDataReleaseProc(userRoutine) NewRTPMPDataReleaseUPP(userRoutine)
  2277. #define NewRTPPBCallbackProc(userRoutine) NewRTPPBCallbackUPP(userRoutine)
  2278. #define CallRTPMPDataReleaseProc(userRoutine, inData, inRefCon) InvokeRTPMPDataReleaseUPP(inData, inRefCon, userRoutine)
  2279. #define CallRTPPBCallbackProc(userRoutine, inSelector, ioParams, inRefCon) InvokeRTPPBCallbackUPP(inSelector, ioParams, inRefCon, userRoutine)
  2280. #endif /* CALL_NOT_IN_CARBON */
  2281. #endif // !__LP64__
  2282. #if PRAGMA_STRUCT_ALIGN
  2283. #pragma options align=reset
  2284. #elif PRAGMA_STRUCT_PACKPUSH
  2285. #pragma pack(pop)
  2286. #elif PRAGMA_STRUCT_PACK
  2287. #pragma pack()
  2288. #endif
  2289. #ifdef PRAGMA_IMPORT_OFF
  2290. #pragma import off
  2291. #elif PRAGMA_IMPORT
  2292. #pragma import reset
  2293. #endif
  2294. #ifdef __cplusplus
  2295. }
  2296. #endif
  2297. #endif /* __QTSTREAMINGCOMPONENTS__ */