QTStreamingComponents.pas 76 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022
  1. {
  2. File: QTStreamingComponents.p
  3. Contains: QuickTime Interfaces.
  4. Version: Technology: QuickTime 6.0
  5. Release: Universal Interfaces 3.4.2
  6. Copyright: © 1990-2002 by Apple Computer, Inc., all rights reserved
  7. Bugs?: For bug reports, consult the following page on
  8. the World Wide Web:
  9. http://www.freepascal.org/bugs.html
  10. }
  11. {
  12. Modified for use with Free Pascal
  13. Version 200
  14. Please report any bugs to <[email protected]>
  15. }
  16. {$mode macpas}
  17. {$packenum 1}
  18. {$macro on}
  19. {$inline on}
  20. {$CALLING MWPASCAL}
  21. unit QTStreamingComponents;
  22. interface
  23. {$setc UNIVERSAL_INTERFACES_VERSION := $0342}
  24. {$setc GAP_INTERFACES_VERSION := $0200}
  25. {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
  26. {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
  27. {$endc}
  28. {$ifc defined CPUPOWERPC and defined CPUI386}
  29. {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
  30. {$endc}
  31. {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
  32. {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
  33. {$endc}
  34. {$ifc not defined __ppc__ and defined CPUPOWERPC}
  35. {$setc __ppc__ := 1}
  36. {$elsec}
  37. {$setc __ppc__ := 0}
  38. {$endc}
  39. {$ifc not defined __i386__ and defined CPUI386}
  40. {$setc __i386__ := 1}
  41. {$elsec}
  42. {$setc __i386__ := 0}
  43. {$endc}
  44. {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
  45. {$error Conflicting definitions for __ppc__ and __i386__}
  46. {$endc}
  47. {$ifc defined __ppc__ and __ppc__}
  48. {$setc TARGET_CPU_PPC := TRUE}
  49. {$setc TARGET_CPU_X86 := FALSE}
  50. {$elifc defined __i386__ and __i386__}
  51. {$setc TARGET_CPU_PPC := FALSE}
  52. {$setc TARGET_CPU_X86 := TRUE}
  53. {$elsec}
  54. {$error Neither __ppc__ nor __i386__ is defined.}
  55. {$endc}
  56. {$setc TARGET_CPU_PPC_64 := FALSE}
  57. {$ifc defined FPC_BIG_ENDIAN}
  58. {$setc TARGET_RT_BIG_ENDIAN := TRUE}
  59. {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
  60. {$elifc defined FPC_LITTLE_ENDIAN}
  61. {$setc TARGET_RT_BIG_ENDIAN := FALSE}
  62. {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
  63. {$elsec}
  64. {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
  65. {$endc}
  66. {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
  67. {$setc CALL_NOT_IN_CARBON := FALSE}
  68. {$setc OLDROUTINENAMES := FALSE}
  69. {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
  70. {$setc OPAQUE_UPP_TYPES := TRUE}
  71. {$setc OTCARBONAPPLICATION := TRUE}
  72. {$setc OTKERNEL := FALSE}
  73. {$setc PM_USE_SESSION_APIS := TRUE}
  74. {$setc TARGET_API_MAC_CARBON := TRUE}
  75. {$setc TARGET_API_MAC_OS8 := FALSE}
  76. {$setc TARGET_API_MAC_OSX := TRUE}
  77. {$setc TARGET_CARBON := TRUE}
  78. {$setc TARGET_CPU_68K := FALSE}
  79. {$setc TARGET_CPU_MIPS := FALSE}
  80. {$setc TARGET_CPU_SPARC := FALSE}
  81. {$setc TARGET_OS_MAC := TRUE}
  82. {$setc TARGET_OS_UNIX := FALSE}
  83. {$setc TARGET_OS_WIN32 := FALSE}
  84. {$setc TARGET_RT_MAC_68881 := FALSE}
  85. {$setc TARGET_RT_MAC_CFM := FALSE}
  86. {$setc TARGET_RT_MAC_MACHO := TRUE}
  87. {$setc TYPED_FUNCTION_POINTERS := TRUE}
  88. {$setc TYPE_BOOL := FALSE}
  89. {$setc TYPE_EXTENDED := FALSE}
  90. {$setc TYPE_LONGLONG := TRUE}
  91. uses MacTypes,Dialogs,Components,Movies,QuickTimeStreaming;
  92. {$ALIGN MAC68K}
  93. {============================================================================
  94. Stream Sourcer
  95. ============================================================================}
  96. const
  97. kQTSSourcerType = $73726372 (* 'srcr' *);
  98. type
  99. QTSSourcer = ComponentInstance;
  100. const
  101. kQTSSGChannelSourcerType = $73676368 (* 'sgch' *);
  102. kQTSMovieTrackSourcerType = $7472616B (* 'trak' *);
  103. kQTSPushDataSourcerType = $70757368 (* 'push' *);
  104. { flags for sourcer data }
  105. kQTSSourcerDataFlag_SyncSample = $00000001;
  106. kQTSPushDataSourcerFlag_SampleTimeIsValid = $80000000;
  107. kQTSSourcerInitParamsVersion1 = 1;
  108. type
  109. QTSSourcerInitParamsPtr = ^QTSSourcerInitParams;
  110. QTSSourcerInitParams = record
  111. version: SInt32;
  112. flags: SInt32;
  113. dataType: OSType;
  114. data: Ptr;
  115. dataLength: UInt32;
  116. end;
  117. {
  118. * QTSNewSourcer()
  119. *
  120. * Availability:
  121. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  122. * CarbonLib: in CarbonLib 1.3 and later
  123. * Mac OS X: in version 10.0 and later
  124. }
  125. function QTSNewSourcer(params: UnivPtr; const (*var*) inInitParams: QTSSourcerInitParams; inFlags: SInt32; var outSourcer: ComponentInstance): OSErr; external name '_QTSNewSourcer';
  126. { info selectors for sourcers - get and set }
  127. const
  128. kQTSInfo_Track = $7472616B (* 'trak' *); { QTSTrackParams* }
  129. kQTSInfo_Loop = $6C6F6F70 (* 'loop' *); { QTSLoopParams* }
  130. kQTSInfo_SourcerTiming = $7374696D (* 'stim' *); { QTSSourcerTimingParams* }
  131. kQTSInfo_TargetFrameRate = $74667073 (* 'tfps' *); { Fixed * in frames per second }
  132. kQTSInfo_PushData = $70757368 (* 'push' *); { QTSPushDataParams* }
  133. kQTSInfo_SourcerCallbackProc = $73636270 (* 'scbp' *); { QTSSourcerCallbackProcParams* }
  134. kQTSInfo_TargetDataRate = $74647274 (* 'tdrt' *); { UInt32 * in bytes per second }
  135. kQTSInfo_AudioAutoGainOnOff = $61676320 (* 'agc ' *); { Boolean* - error if unavailable }
  136. kQTSInfo_AudioGain = $6761696E (* 'gain' *); { Fixed* kFixed1 is unity gain }
  137. kQTSInfo_CroppedInputRect = $63727072 (* 'crpr' *); { Rect* - defined relative to kQTSInfo_FullInputRect below }
  138. kQTSInfo_SpatialSettings = $7370746C (* 'sptl' *); { pointer to SCSpatialSettings struct }
  139. kQTSInfo_TemporalSettings = $7470726C (* 'tprl' *); { pointer to SCTemporalSettings struct }
  140. kQTSInfo_DataRateSettings = $64726174 (* 'drat' *); { pointer to SCDataRateSettings struct }
  141. kQTSInfo_CodecFlags = $63666C67 (* 'cflg' *); { pointer to CodecFlags }
  142. kQTSInfo_CodecSettings = $63646563 (* 'cdec' *); { pointer to Handle }
  143. kQTSInfo_ForceKeyValue = $6B73696D (* 'ksim' *); { pointer to long }
  144. kQTSInfo_SoundSampleRate = $73737274 (* 'ssrt' *); { pointer to UnsignedFixed }
  145. kQTSInfo_SoundSampleSize = $73737373 (* 'ssss' *); { pointer to short }
  146. kQTSInfo_SoundChannelCount = $73736363 (* 'sscc' *); { pointer to short }
  147. kQTSInfo_SoundCompression = $73736374 (* 'ssct' *); { pointer to OSType }
  148. kQTSInfo_CompressionList = $6374796C (* 'ctyl' *); { pointer to OSType Handle }
  149. kQTSInfo_VideoHue = $68756520 (* 'hue ' *); { UInt16* }
  150. kQTSInfo_VideoSaturation = $73617472 (* 'satr' *); { UInt16* }
  151. kQTSInfo_VideoContrast = $74727374 (* 'trst' *); { UInt16* }
  152. kQTSInfo_VideoBrightness = $62726974 (* 'brit' *); { UInt16* }
  153. kQTSInfo_VideoSharpness = $73687270 (* 'shrp' *); { UInt16* }
  154. kQTSInfo_TimeScale = $7363616C (* 'scal' *); { UInt32* }
  155. kQTSInfo_SGChannelDeviceName = $696E6E6D (* 'innm' *); { Handle* }
  156. kQTSInfo_SGChannelDeviceList = $7372646C (* 'srdl' *); { SGDeviceList* }
  157. kQTSInfo_SGChannelDeviceInput = $73646969 (* 'sdii' *); { short* }
  158. kQTSInfo_SGChannelSettings = $73657367 (* 'sesg' *); { QTSSGChannelSettingsParams }
  159. kQTSInfo_PreviewWhileRecordingMode = $73727072 (* 'srpr' *); { Boolean* }
  160. kQTSInfo_CompressionParams = $73636370 (* 'sccp' *); { QTAtomContainer* }
  161. { info selectors for sourcers - get only }
  162. kQTSInfo_SGChannel = $73676368 (* 'sgch' *); { SGChannel* }
  163. kQTSInfo_SGChannelInputName = $73726E6D (* 'srnm' *); { Handle* }
  164. kQTSInfo_FullInputRect = $66756C72 (* 'fulr' *); { Rect* }
  165. { loop flags }
  166. kQTSLoopFlag_Loop = $00000001;
  167. kQTSLoopParamsVersion1 = 1;
  168. type
  169. QTSLoopParamsPtr = ^QTSLoopParams;
  170. QTSLoopParams = record
  171. version: SInt32;
  172. flags: SInt32;
  173. loopFlags: SInt32;
  174. flagsMask: SInt32;
  175. numLoops: SInt32;
  176. end;
  177. const
  178. kQTSTrackParamsVersion1 = 1;
  179. type
  180. QTSTrackParamsPtr = ^QTSTrackParams;
  181. QTSTrackParams = record
  182. version: SInt32;
  183. flags: SInt32;
  184. track: Track_fix;
  185. trackStartOffset: TimeValue64; { to start other than at the beginning otherwise set to 0 }
  186. duration: TimeValue64; { to limit the duration otherwise set to 0 }
  187. loopParams: QTSLoopParamsPtr; { set to NULL if not using; default is no looping }
  188. end;
  189. const
  190. kQTSSourcerTimingParamsVersion1 = 1;
  191. type
  192. QTSSourcerTimingParamsPtr = ^QTSSourcerTimingParams;
  193. QTSSourcerTimingParams = record
  194. version: SInt32;
  195. flags: SInt32;
  196. timeScale: TimeScale_fix;
  197. presentationStartTime: TimeValue64;
  198. presentationEndTime: TimeValue64;
  199. presentationCurrentTime: TimeValue64;
  200. localStartTime: TimeValue64;
  201. localEndTime: TimeValue64;
  202. localCurrentTime: TimeValue64;
  203. end;
  204. const
  205. kQTSPushDataParamsVersion1 = 1;
  206. kQTSPushDataFlag_SampleTimeIsValid = $00000001;
  207. kQTSPushDataFlag_DurationIsValid = $00000002;
  208. type
  209. QTSPushDataParamsPtr = ^QTSPushDataParams;
  210. QTSPushDataParams = record
  211. version: SInt32;
  212. flags: SInt32;
  213. sampleDescription: SampleDescriptionHandle; { caller owns the handle }
  214. sampleDescSeed: UInt32;
  215. sampleTime: TimeValue64; { also set flag if you set this }
  216. duration: TimeValue64; { also set flag if you set this }
  217. dataLength: UInt32;
  218. dataPtr: Ptr; { this does not have to be a real macintosh Ptr }
  219. end;
  220. const
  221. kQTSSourcerCallbackProcParamsVersion1 = 1;
  222. type
  223. QTSSourcerCallbackProcParamsPtr = ^QTSSourcerCallbackProcParams;
  224. QTSSourcerCallbackProcParams = record
  225. version: SInt32;
  226. flags: SInt32;
  227. proc: QTSNotificationUPP;
  228. refCon: Ptr;
  229. end;
  230. { track sourcer callback selectors }
  231. const
  232. kQTSSourcerCallback_Done = $646F6E65 (* 'done' *); { QTSSourcerDoneParams* }
  233. { push data sourcer callback selectors }
  234. kQTSPushDataSourcerCallback_HasCharacteristic = $050D; { QTSPushDataHasCharacteristicParams* }
  235. kQTSPushDataSourcerCallback_SetInfo = $0507; { QTSPushDataInfoParams* }
  236. kQTSPushDataSourcerCallback_GetInfo = $0508; { QTSPushDataInfoParams* }
  237. type
  238. QTSPushDataHasCharacteristicParamsPtr = ^QTSPushDataHasCharacteristicParams;
  239. QTSPushDataHasCharacteristicParams = record
  240. version: SInt32;
  241. flags: SInt32;
  242. characteristic: OSType;
  243. returnedHasIt: boolean;
  244. reserved1: SInt8;
  245. reserved2: SInt8;
  246. reserved3: SInt8;
  247. end;
  248. QTSPushDataInfoParamsPtr = ^QTSPushDataInfoParams;
  249. QTSPushDataInfoParams = record
  250. version: SInt32;
  251. flags: SInt32;
  252. selector: OSType;
  253. ioParams: Ptr;
  254. end;
  255. const
  256. kQTSSourcerDoneParamsVersion1 = 1;
  257. type
  258. QTSSourcerDoneParamsPtr = ^QTSSourcerDoneParams;
  259. QTSSourcerDoneParams = record
  260. version: SInt32;
  261. flags: SInt32;
  262. sourcer: ComponentInstance;
  263. end;
  264. QTSSGChannelSettingsParamsPtr = ^QTSSGChannelSettingsParams;
  265. QTSSGChannelSettingsParams = record
  266. settings: UserData;
  267. flags: SInt32;
  268. end;
  269. { -----------------------------------------
  270. Stream Sourcer Selectors
  271. ----------------------------------------- }
  272. const
  273. kQTSSourcerInitializeSelect = $0500;
  274. kQTSSourcerSetEnableSelect = $0503;
  275. kQTSSourcerGetEnableSelect = $0504;
  276. kQTSSourcerSetInfoSelect = $0507;
  277. kQTSSourcerGetInfoSelect = $0508;
  278. kQTSSourcerSetTimeScaleSelect = $050E;
  279. kQTSSourcerGetTimeScaleSelect = $050F;
  280. kQTSSourcerIdleSelect = $0516;
  281. { -----------------------------------------
  282. Stream Sourcer Prototypes
  283. ----------------------------------------- }
  284. {
  285. * QTSSourcerInitialize()
  286. *
  287. * Availability:
  288. * Non-Carbon CFM: in QTStreamLib 5.0.1 and later
  289. * CarbonLib: in CarbonLib 1.6 and later
  290. * Mac OS X: in version 10.1 and later
  291. }
  292. function QTSSourcerInitialize(inSourcer: QTSSourcer; const (*var*) inInitParams: QTSSourcerInitParams): ComponentResult; external name '_QTSSourcerInitialize';
  293. {
  294. * QTSSourcerIdle()
  295. *
  296. * Availability:
  297. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  298. * CarbonLib: in CarbonLib 1.3 and later
  299. * Mac OS X: in version 10.0 and later
  300. }
  301. function QTSSourcerIdle(inSourcer: QTSSourcer; (*const*) var inTime: TimeValue64; inFlags: SInt32; var outFlags: SInt32): ComponentResult; external name '_QTSSourcerIdle';
  302. {
  303. * QTSSourcerSetEnable()
  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. function QTSSourcerSetEnable(inSourcer: QTSSourcer; inEnableMode: boolean; inFlags: SInt32): ComponentResult; external name '_QTSSourcerSetEnable';
  311. {
  312. * QTSSourcerGetEnable()
  313. *
  314. * Availability:
  315. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  316. * CarbonLib: in CarbonLib 1.3 and later
  317. * Mac OS X: in version 10.0 and later
  318. }
  319. function QTSSourcerGetEnable(inSourcer: QTSSourcer; var outEnableMode: boolean; inFlags: SInt32): ComponentResult; external name '_QTSSourcerGetEnable';
  320. {
  321. * QTSSourcerSetTimeScale()
  322. *
  323. * Availability:
  324. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  325. * CarbonLib: in CarbonLib 1.3 and later
  326. * Mac OS X: in version 10.0 and later
  327. }
  328. function QTSSourcerSetTimeScale(inSourcer: QTSSourcer; inTimeScale: TimeScale): ComponentResult; external name '_QTSSourcerSetTimeScale';
  329. {
  330. * QTSSourcerGetTimeScale()
  331. *
  332. * Availability:
  333. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  334. * CarbonLib: in CarbonLib 1.3 and later
  335. * Mac OS X: in version 10.0 and later
  336. }
  337. function QTSSourcerGetTimeScale(inSourcer: QTSSourcer; var outTimeScale: TimeScale): ComponentResult; external name '_QTSSourcerGetTimeScale';
  338. {
  339. * QTSSourcerSetInfo()
  340. *
  341. * Availability:
  342. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  343. * CarbonLib: in CarbonLib 1.3 and later
  344. * Mac OS X: in version 10.0 and later
  345. }
  346. function QTSSourcerSetInfo(inSourcer: QTSSourcer; inSelector: OSType; ioParams: UnivPtr): ComponentResult; external name '_QTSSourcerSetInfo';
  347. {
  348. * QTSSourcerGetInfo()
  349. *
  350. * Availability:
  351. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  352. * CarbonLib: in CarbonLib 1.3 and later
  353. * Mac OS X: in version 10.0 and later
  354. }
  355. function QTSSourcerGetInfo(inSourcer: QTSSourcer; inSelector: OSType; ioParams: UnivPtr): ComponentResult; external name '_QTSSourcerGetInfo';
  356. const
  357. kQTSInfo_InputDeviceName = $696E6E6D (* 'innm' *); { Handle* }
  358. kQTSInfo_InputSourceName = $73726E6D (* 'srnm' *); { Handle* }
  359. { ============================================================================
  360. Stream Handler
  361. ============================================================================ }
  362. {
  363. Server edits are only valid for the current chunk
  364. }
  365. type
  366. SHServerEditParametersPtr = ^SHServerEditParameters;
  367. SHServerEditParameters = record
  368. version: UInt32;
  369. editRate: Fixed;
  370. dataStartTime_mediaAxis: TimeValue64;
  371. dataEndTime_mediaAxis: TimeValue64;
  372. end;
  373. const
  374. kSHNoChunkDispatchFlags = 0;
  375. kSHChunkFlagSyncSample = $04;
  376. kSHChunkFlagDataLoss = $10;
  377. kSHChunkFlagExtended = $20;
  378. type
  379. SHChunkRecordPtr = ^SHChunkRecord;
  380. SHChunkRecord = record
  381. version: UInt32;
  382. reserved1: SInt32;
  383. flags: SInt32;
  384. dataSize: UInt32;
  385. dataPtr: Ptr;
  386. reserved2: SInt32;
  387. reserved3: SInt32;
  388. presentationTime: TimeValue64;
  389. reserved4: SInt32;
  390. reserved5: SInt32;
  391. serverEditParameters: SHServerEditParametersPtr;
  392. reserved6: SInt32;
  393. reserved7: SInt32;
  394. end;
  395. const
  396. kSHNumExtendedDataLongs = 10;
  397. kSHExtendedChunkFlag_HasSampleCount = $01;
  398. kSHExtendedChunkFlag_HasFrameLengths = $02;
  399. type
  400. SHExtendedChunkRecordPtr = ^SHExtendedChunkRecord;
  401. SHExtendedChunkRecord = record
  402. chunk: SHChunkRecord;
  403. extendedFlags: SInt32;
  404. extendedData: array [0..9] of SInt32;
  405. end;
  406. { ============================================================================
  407. RTP Components
  408. ============================================================================ }
  409. RTPSSRC = UInt32;
  410. const
  411. kRTPInvalidSSRC = 0;
  412. { RTP standard content encodings for audio }
  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. { RTP standard content encodings for video }
  429. kRTPPayload_CELLB = 25; { Sun CellB }
  430. kRTPPayload_JPEG = 26; { JPEG }
  431. kRTPPayload_CUSEEME = 27; { Cornell CU-SeeMe }
  432. kRTPPayload_NV = 28; { Xerox PARC nv }
  433. kRTPPayload_PICWIN = 29; { BBN Picture Window }
  434. kRTPPayload_CPV = 30; { Bolter CPV }
  435. kRTPPayload_H261 = 31; { CCITT H.261 }
  436. kRTPPayload_MPEGVIDEO = 32; { MPEG I and II video }
  437. kRTPPayload_H263 = 34; { CCITT H.263 }
  438. { Other RTP standard content encodings }
  439. kRTPPayload_MPEG2T = 33; { MPEG 2 Transport }
  440. { Dynamic encodings }
  441. kRTPPayload_FirstDynamic = 96;
  442. kRTPPayload_LastDynamic = 127;
  443. kRTPPayload_Unknown = $FF;
  444. {
  445. -----------------------------------------
  446. RTP Info selectors
  447. -----------------------------------------
  448. }
  449. { ----- these are get and set ----- }
  450. kRTPInfo_SSRC = $73737263 (* 'ssrc' *); { UInt32* }
  451. kRTPInfo_NextSeqNum = $726E736E (* 'rnsn' *); { UInt16* }
  452. { -----------------------------------------
  453. RTP Statistics
  454. ----------------------------------------- }
  455. kRTPTotalReceivedPktsStat = $74726370 (* 'trcp' *);
  456. kRTPTotalLostPktsStat = $746C7370 (* 'tlsp' *);
  457. kRTPTotalProcessedPktsStat = $74707270 (* 'tprp' *);
  458. kRTPTotalDroppedPktsStat = $74647270 (* 'tdrp' *);
  459. kRTPBadHeaderDroppedPktsStat = $62686470 (* 'bhdp' *);
  460. kRTPOurHeaderDroppedPktsStat = $6F686470 (* 'ohdp' *);
  461. kRTPNotReceivingSenderDroppedPktsStat = $6E736470 (* 'nsdp' *);
  462. kRTPNotProcessingDroppedPktsStat = $6E706470 (* 'npdp' *);
  463. kRTPBadSeqDroppedPktsStat = $62736470 (* 'bsdp' *);
  464. kRTPArriveTooLatePktsStat = $6172746C (* 'artl' *);
  465. kRTPWaitForSeqDroppedPktsStat = $77736470 (* 'wsdp' *);
  466. kRTPBadStateDroppedPktsStat = $73746470 (* 'stdp' *);
  467. kRTPBadPayloadDroppedPktsStat = $62706470 (* 'bpdp' *);
  468. kRTPNoTimeScaleDroppedPktsStat = $6E746470 (* 'ntdp' *);
  469. kRTPDupSeqNumDroppedPktsStat = $64736470 (* 'dsdp' *);
  470. kRTPLostPktsPercentStat = $6C737070 (* 'lspp' *);
  471. kRTPDroppedPktsPercentStat = $64707070 (* 'dppp' *);
  472. kRTPTotalUnprocessedPktsPercentStat = $74757070 (* 'tupp' *);
  473. kRTPRTCPDataRateStat = $72726364 (* 'rrcd' *);
  474. kRTPPayloadIDStat = $72706964 (* 'rpid' *);
  475. kRTPPayloadNameStat = $72706E6D (* 'rpnm' *);
  476. kRTPNumPktsInQueueStat = $726E7071 (* 'rnpq' *);
  477. kRTPTotalPktsInQueueStat = $72747071 (* 'rtpq' *);
  478. kRTPTotalOutOfOrderPktsStat = $72746F6F (* 'rtoo' *);
  479. kRTPRetransmissionStat = $72727478 (* 'rrtx' *);
  480. { -----------------------------------------
  481. Payload Info
  482. ----------------------------------------- }
  483. kRTPPayloadSpeedTag = $73706564 (* 'sped' *); { 0-255, 255 is fastest }
  484. kRTPPayloadLossRecoveryTag = $6C6F7373 (* 'loss' *); { 0-255, 0 can't handle any loss, 128 can handle 50% packet loss }
  485. kRTPPayloadConformanceTag = $636F6E66 (* 'conf' *); { more than one of these can be present }
  486. type
  487. RTPPayloadCharacteristicPtr = ^RTPPayloadCharacteristic;
  488. RTPPayloadCharacteristic = record
  489. tag: OSType;
  490. value: SInt32;
  491. end;
  492. {
  493. pass RTPPayloadSortRequest to QTSFindMediaPacketizer or QTSFindMediaPacketizerForTrack.
  494. define the characteristics to sort by. tag is key to sort on. value is positive for ascending
  495. sort (low value first), negative for descending sort (high value first).
  496. }
  497. RTPPayloadSortRequestPtr = ^RTPPayloadSortRequest;
  498. RTPPayloadSortRequest = record
  499. characteristicCount: SInt32;
  500. characteristic: array [0..0] of RTPPayloadCharacteristic; { tag is key to sort on, value is + for ascending, - for descending }
  501. end;
  502. { flags for RTPPayloadInfo }
  503. const
  504. kRTPPayloadTypeStaticFlag = $00000001;
  505. kRTPPayloadTypeDynamicFlag = $00000002;
  506. type
  507. RTPPayloadInfoPtr = ^RTPPayloadInfo;
  508. RTPPayloadInfo = record
  509. payloadFlags: SInt32;
  510. payloadID: SInt8;
  511. reserved1: SInt8;
  512. reserved2: SInt8;
  513. reserved3: SInt8;
  514. payloadName: SInt8;
  515. end;
  516. RTPPayloadInfoHandle = ^RTPPayloadInfoPtr;
  517. { ============================================================================
  518. RTP Reassembler
  519. ============================================================================ }
  520. RTPReassembler = ComponentInstance;
  521. const
  522. kRTPReassemblerType = $72747072 (* 'rtpr' *);
  523. kRTPBaseReassemblerType = $676E7263 (* 'gnrc' *);
  524. kRTP261ReassemblerType = $68323631 (* 'h261' *);
  525. kRTP263ReassemblerType = $68323633 (* 'h263' *);
  526. kRTP263PlusReassemblerType = $3236332B (* '263+' *);
  527. kRTPAudioReassemblerType = $736F756E (* 'soun' *);
  528. kRTPQTReassemblerType = $7174696D (* 'qtim' *);
  529. kRTPPureVoiceReassemblerType = $51636C70 (* 'Qclp' *);
  530. kRTPJPEGReassemblerType = $6A706567 (* 'jpeg' *);
  531. kRTPQDesign2ReassemblerType = $51444D32 (* 'QDM2' *);
  532. kRTPSorensonReassemblerType = $53565131 (* 'SVQ1' *);
  533. kRTPMP3ReassemblerType = $6D703320 (* 'mp3 ' *);
  534. kRTPMPEG4AudioReassemblerType = $6D703461 (* 'mp4a' *);
  535. kRTPMPEG4VideoReassemblerType = $6D703476 (* 'mp4v' *);
  536. type
  537. RTPRssmInitParamsPtr = ^RTPRssmInitParams;
  538. RTPRssmInitParams = record
  539. ssrc: RTPSSRC;
  540. payloadType: SInt8;
  541. reserved1: SInt8;
  542. reserved2: SInt8;
  543. reserved3: SInt8;
  544. timeBase: TimeBase_fix;
  545. timeScale: TimeScale_fix;
  546. end;
  547. RTPDescParamsPtr = ^RTPDescParams;
  548. RTPDescParams = record
  549. container: QTAtomContainer;
  550. presentationParentAtom: QTAtom;
  551. streamParentAtom: QTAtom;
  552. end;
  553. RTPRssmMoreInitParamsPtr = ^RTPRssmMoreInitParams;
  554. RTPRssmMoreInitParams = record
  555. initParams: RTPRssmInitParams;
  556. version: SInt32;
  557. desc: RTPDescParams;
  558. end;
  559. const
  560. kRTPRssmMoreInitParamsVersion1 = 1;
  561. { get/set info selectors }
  562. kRTPRssmInfo_MoreInitParams = $72726D69 (* 'rrmi' *);
  563. type
  564. RTPRssmPacketPtr = ^RTPRssmPacket;
  565. RTPRssmPacket = record
  566. next: RTPRssmPacketPtr;
  567. prev: RTPRssmPacketPtr;
  568. streamBuffer: QTSStreamBufferPtr;
  569. paramsFilledIn: boolean;
  570. reserved: SInt8;
  571. sequenceNum: UInt16;
  572. transportHeaderLength: UInt32; { filled in by base }
  573. payloadHeaderLength: UInt32; { derived adjusts this }
  574. dataLength: UInt32;
  575. serverEditParams: SHServerEditParameters;
  576. timeStamp: TimeValue64; { lower 32 bits is original rtp timestamp }
  577. chunkFlags: SInt32; { these are or'd together }
  578. flags: SInt32;
  579. end;
  580. { flags for RTPRssmPacket struct }
  581. const
  582. kRTPRssmPacketHasMarkerBitSet = $00000001;
  583. kRTPRssmPacketHasServerEditFlag = $00010000;
  584. { flags for RTPRssmSendStreamBufferRange }
  585. kRTPRssmCanRefStreamBuffer = $00000001;
  586. { flags for RTPRssmSendPacketList }
  587. kRTPRssmLostSomePackets = $00000001;
  588. { flags for RTPRssmSetFlags }
  589. kRTPRssmEveryPacketAChunkFlag = $00000001;
  590. kRTPRssmQueueAndUseMarkerBitFlag = $00000002;
  591. kRTPRssmTrackLostPacketsFlag = $00010000;
  592. kRTPRssmNoReorderingRequiredFlag = $00020000;
  593. type
  594. RTPSendStreamBufferRangeParamsPtr = ^RTPSendStreamBufferRangeParams;
  595. RTPSendStreamBufferRangeParams = record
  596. streamBuffer: QTSStreamBufferPtr;
  597. presentationTime: TimeValue64;
  598. chunkStartPosition: UInt32;
  599. numDataBytes: UInt32;
  600. chunkFlags: SInt32;
  601. flags: SInt32;
  602. serverEditParams: SHServerEditParametersPtr; { NULL if no edit }
  603. end;
  604. { characteristics }
  605. const
  606. kRTPCharacteristic_RequiresOrderedPackets = $72726F70 (* 'rrop' *);
  607. kRTPCharacteristic_TimeStampsNotMonoIncreasing = $74736D69 (* 'tsmi' *);
  608. kRTPReassemblerInfoResType = $72736D69 (* 'rsmi' *);
  609. type
  610. RTPReassemblerInfoPtr = ^RTPReassemblerInfo;
  611. RTPReassemblerInfo = record
  612. characteristicCount: SInt32;
  613. characteristic: array [0..0] of RTPPayloadCharacteristic;
  614. { after the last characteristic, the payload name (defined by the MediaPacketizerPayloadInfo }
  615. { structure) is present. }
  616. end;
  617. RTPReassemblerInfoHandle = ^RTPReassemblerInfoPtr;
  618. { RTPReassemblerInfoElement structs are padded to 32 bits }
  619. const
  620. kRTPReassemblerInfoPadUpToBytes = 4;
  621. {
  622. * QTSFindReassemblerForPayloadID()
  623. *
  624. * Availability:
  625. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  626. * CarbonLib: in CarbonLib 1.1 and later
  627. * Mac OS X: in version 10.0 and later
  628. * Windows: in QTSClient.lib 4.0 and later
  629. }
  630. function QTSFindReassemblerForPayloadID(inPayloadID: ByteParameter; var inSortInfo: RTPPayloadSortRequest; var outReassemblerList: QTAtomContainer): OSErr; external name '_QTSFindReassemblerForPayloadID';
  631. {
  632. * QTSFindReassemblerForPayloadName()
  633. *
  634. * Availability:
  635. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  636. * CarbonLib: in CarbonLib 1.1 and later
  637. * Mac OS X: in version 10.0 and later
  638. * Windows: in QTSClient.lib 4.0 and later
  639. }
  640. function QTSFindReassemblerForPayloadName(inPayloadName: ConstCStringPtr; var inSortInfo: RTPPayloadSortRequest; var outReassemblerList: QTAtomContainer): OSErr; external name '_QTSFindReassemblerForPayloadName';
  641. {-----------------------------------------
  642. RTP Reassembler Selectors
  643. -----------------------------------------}
  644. const
  645. kRTPRssmSetCapabilitiesSelect = $0100;
  646. kRTPRssmGetCapabilitiesSelect = $0101;
  647. kRTPRssmSetPayloadHeaderLengthSelect = $0102;
  648. kRTPRssmGetPayloadHeaderLengthSelect = $0103;
  649. kRTPRssmSetTimeScaleSelect = $0104;
  650. kRTPRssmGetTimeScaleSelect = $0105;
  651. kRTPRssmNewStreamHandlerSelect = $0106;
  652. kRTPRssmSetStreamHandlerSelect = $0107;
  653. kRTPRssmGetStreamHandlerSelect = $0108;
  654. kRTPRssmSendStreamHandlerChangedSelect = $0109;
  655. kRTPRssmSetSampleDescriptionSelect = $010A;
  656. kRTPRssmGetChunkAndIncrRefCountSelect = $010D;
  657. kRTPRssmSendChunkAndDecrRefCountSelect = $010E;
  658. kRTPRssmSendLostChunkSelect = $010F;
  659. kRTPRssmSendStreamBufferRangeSelect = $0110;
  660. kRTPRssmClearCachedPackets = $0111;
  661. kRTPRssmFillPacketListParamsSelect = $0113;
  662. kRTPRssmReleasePacketListSelect = $0114;
  663. kRTPRssmIncrChunkRefCountSelect = $0115;
  664. kRTPRssmDecrChunkRefCountSelect = $0116;
  665. kRTPRssmGetExtChunkAndIncrRefCountSelect = $0117;
  666. kRTPRssmInitializeSelect = $0500;
  667. kRTPRssmHandleNewPacketSelect = $0501;
  668. kRTPRssmComputeChunkSizeSelect = $0502;
  669. kRTPRssmAdjustPacketParamsSelect = $0503;
  670. kRTPRssmCopyDataToChunkSelect = $0504;
  671. kRTPRssmSendPacketListSelect = $0505;
  672. kRTPRssmGetTimeScaleFromPacketSelect = $0506;
  673. kRTPRssmSetInfoSelect = $0509;
  674. kRTPRssmGetInfoSelect = $050A;
  675. kRTPRssmHasCharacteristicSelect = $050B;
  676. kRTPRssmResetSelect = $050C;
  677. { -----------------------------------------
  678. RTP Reassembler functions - base to derived
  679. ----------------------------------------- }
  680. {
  681. * RTPRssmInitialize()
  682. *
  683. * Availability:
  684. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  685. * CarbonLib: in CarbonLib 1.1 and later
  686. * Mac OS X: in version 10.0 and later
  687. * Windows: in QTSClient.lib 4.0 and later
  688. }
  689. function RTPRssmInitialize(rtpr: RTPReassembler; var inInitParams: RTPRssmInitParams): ComponentResult; external name '_RTPRssmInitialize';
  690. {
  691. * RTPRssmHandleNewPacket()
  692. *
  693. * Availability:
  694. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  695. * CarbonLib: in CarbonLib 1.1 and later
  696. * Mac OS X: in version 10.0 and later
  697. * Windows: in QTSClient.lib 4.0 and later
  698. }
  699. function RTPRssmHandleNewPacket(rtpr: RTPReassembler; var inStreamBuffer: QTSStreamBuffer; inNumWraparounds: SInt32): ComponentResult; external name '_RTPRssmHandleNewPacket';
  700. {
  701. * RTPRssmComputeChunkSize()
  702. *
  703. * Availability:
  704. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  705. * CarbonLib: in CarbonLib 1.1 and later
  706. * Mac OS X: in version 10.0 and later
  707. * Windows: in QTSClient.lib 4.0 and later
  708. }
  709. function RTPRssmComputeChunkSize(rtpr: RTPReassembler; var inPacketListHead: RTPRssmPacket; inFlags: SInt32; var outChunkDataSize: UInt32): ComponentResult; external name '_RTPRssmComputeChunkSize';
  710. {
  711. * RTPRssmAdjustPacketParams()
  712. *
  713. * Availability:
  714. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  715. * CarbonLib: in CarbonLib 1.1 and later
  716. * Mac OS X: in version 10.0 and later
  717. * Windows: in QTSClient.lib 4.0 and later
  718. }
  719. function RTPRssmAdjustPacketParams(rtpr: RTPReassembler; var inPacket: RTPRssmPacket; inFlags: SInt32): ComponentResult; external name '_RTPRssmAdjustPacketParams';
  720. {
  721. * RTPRssmCopyDataToChunk()
  722. *
  723. * Availability:
  724. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  725. * CarbonLib: in CarbonLib 1.1 and later
  726. * Mac OS X: in version 10.0 and later
  727. * Windows: in QTSClient.lib 4.0 and later
  728. }
  729. function RTPRssmCopyDataToChunk(rtpr: RTPReassembler; var inPacketListHead: RTPRssmPacket; inMaxChunkDataSize: UInt32; var inChunk: SHChunkRecord; inFlags: SInt32): ComponentResult; external name '_RTPRssmCopyDataToChunk';
  730. {
  731. * RTPRssmSendPacketList()
  732. *
  733. * Availability:
  734. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  735. * CarbonLib: in CarbonLib 1.1 and later
  736. * Mac OS X: in version 10.0 and later
  737. * Windows: in QTSClient.lib 4.0 and later
  738. }
  739. function RTPRssmSendPacketList(rtpr: RTPReassembler; var inPacketListHead: RTPRssmPacket; (*const*) var inLastChunkPresentationTime: TimeValue64; inFlags: SInt32): ComponentResult; external name '_RTPRssmSendPacketList';
  740. {
  741. * RTPRssmGetTimeScaleFromPacket()
  742. *
  743. * Availability:
  744. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  745. * CarbonLib: in CarbonLib 1.1 and later
  746. * Mac OS X: in version 10.0 and later
  747. * Windows: in QTSClient.lib 4.0 and later
  748. }
  749. function RTPRssmGetTimeScaleFromPacket(rtpr: RTPReassembler; var inStreamBuffer: QTSStreamBuffer; var outTimeScale: TimeScale): ComponentResult; external name '_RTPRssmGetTimeScaleFromPacket';
  750. {
  751. * RTPRssmSetInfo()
  752. *
  753. * Availability:
  754. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  755. * CarbonLib: in CarbonLib 1.1 and later
  756. * Mac OS X: in version 10.0 and later
  757. * Windows: in QTSClient.lib 4.0 and later
  758. }
  759. function RTPRssmSetInfo(rtpr: RTPReassembler; inSelector: OSType; ioParams: UnivPtr): ComponentResult; external name '_RTPRssmSetInfo';
  760. {
  761. * RTPRssmGetInfo()
  762. *
  763. * Availability:
  764. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  765. * CarbonLib: in CarbonLib 1.1 and later
  766. * Mac OS X: in version 10.0 and later
  767. * Windows: in QTSClient.lib 4.0 and later
  768. }
  769. function RTPRssmGetInfo(rtpr: RTPReassembler; inSelector: OSType; ioParams: UnivPtr): ComponentResult; external name '_RTPRssmGetInfo';
  770. {
  771. * RTPRssmHasCharacteristic()
  772. *
  773. * Availability:
  774. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  775. * CarbonLib: in CarbonLib 1.1 and later
  776. * Mac OS X: in version 10.0 and later
  777. * Windows: in QTSClient.lib 4.0 and later
  778. }
  779. function RTPRssmHasCharacteristic(rtpr: RTPReassembler; inCharacteristic: OSType; var outHasIt: boolean): ComponentResult; external name '_RTPRssmHasCharacteristic';
  780. {
  781. * RTPRssmReset()
  782. *
  783. * Availability:
  784. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  785. * CarbonLib: in CarbonLib 1.1 and later
  786. * Mac OS X: in version 10.0 and later
  787. * Windows: in QTSClient.lib 4.0 and later
  788. }
  789. function RTPRssmReset(rtpr: RTPReassembler; inFlags: SInt32): ComponentResult; external name '_RTPRssmReset';
  790. {-----------------------------------------
  791. RTP Reassembler functions - derived to base
  792. -----------------------------------------}
  793. { ----- setup }
  794. {
  795. * RTPRssmSetCapabilities()
  796. *
  797. * Availability:
  798. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  799. * CarbonLib: in CarbonLib 1.1 and later
  800. * Mac OS X: in version 10.0 and later
  801. * Windows: in QTSClient.lib 4.0 and later
  802. }
  803. function RTPRssmSetCapabilities(rtpr: RTPReassembler; inFlags: SInt32; inFlagsMask: SInt32): ComponentResult; external name '_RTPRssmSetCapabilities';
  804. {
  805. * RTPRssmGetCapabilities()
  806. *
  807. * Availability:
  808. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  809. * CarbonLib: in CarbonLib 1.1 and later
  810. * Mac OS X: in version 10.0 and later
  811. * Windows: in QTSClient.lib 4.0 and later
  812. }
  813. function RTPRssmGetCapabilities(rtpr: RTPReassembler; var outFlags: SInt32): ComponentResult; external name '_RTPRssmGetCapabilities';
  814. {
  815. * RTPRssmSetPayloadHeaderLength()
  816. *
  817. * Availability:
  818. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  819. * CarbonLib: in CarbonLib 1.1 and later
  820. * Mac OS X: in version 10.0 and later
  821. * Windows: in QTSClient.lib 4.0 and later
  822. }
  823. function RTPRssmSetPayloadHeaderLength(rtpr: RTPReassembler; inPayloadHeaderLength: UInt32): ComponentResult; external name '_RTPRssmSetPayloadHeaderLength';
  824. {
  825. * RTPRssmGetPayloadHeaderLength()
  826. *
  827. * Availability:
  828. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  829. * CarbonLib: in CarbonLib 1.1 and later
  830. * Mac OS X: in version 10.0 and later
  831. * Windows: in QTSClient.lib 4.0 and later
  832. }
  833. function RTPRssmGetPayloadHeaderLength(rtpr: RTPReassembler; var outPayloadHeaderLength: UInt32): ComponentResult; external name '_RTPRssmGetPayloadHeaderLength';
  834. {
  835. * RTPRssmSetTimeScale()
  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. function RTPRssmSetTimeScale(rtpr: RTPReassembler; inSHTimeScale: TimeScale): ComponentResult; external name '_RTPRssmSetTimeScale';
  844. {
  845. * RTPRssmGetTimeScale()
  846. *
  847. * Availability:
  848. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  849. * CarbonLib: in CarbonLib 1.1 and later
  850. * Mac OS X: in version 10.0 and later
  851. * Windows: in QTSClient.lib 4.0 and later
  852. }
  853. function RTPRssmGetTimeScale(rtpr: RTPReassembler; var outSHTimeScale: TimeScale): ComponentResult; external name '_RTPRssmGetTimeScale';
  854. {
  855. * RTPRssmNewStreamHandler()
  856. *
  857. * Availability:
  858. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  859. * CarbonLib: in CarbonLib 1.1 and later
  860. * Mac OS X: in version 10.0 and later
  861. * Windows: in QTSClient.lib 4.0 and later
  862. }
  863. function RTPRssmNewStreamHandler(rtpr: RTPReassembler; inSHType: OSType; inSampleDescription: SampleDescriptionHandle; inSHTimeScale: TimeScale; var outHandler: ComponentInstance): ComponentResult; external name '_RTPRssmNewStreamHandler';
  864. {
  865. * RTPRssmSetStreamHandler()
  866. *
  867. * Availability:
  868. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  869. * CarbonLib: in CarbonLib 1.1 and later
  870. * Mac OS X: in version 10.0 and later
  871. * Windows: in QTSClient.lib 4.0 and later
  872. }
  873. function RTPRssmSetStreamHandler(rtpr: RTPReassembler; inStreamHandler: ComponentInstance): ComponentResult; external name '_RTPRssmSetStreamHandler';
  874. {
  875. * RTPRssmGetStreamHandler()
  876. *
  877. * Availability:
  878. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  879. * CarbonLib: in CarbonLib 1.1 and later
  880. * Mac OS X: in version 10.0 and later
  881. * Windows: in QTSClient.lib 4.0 and later
  882. }
  883. function RTPRssmGetStreamHandler(rtpr: RTPReassembler; var outStreamHandler: ComponentInstance): ComponentResult; external name '_RTPRssmGetStreamHandler';
  884. {
  885. * RTPRssmSendStreamHandlerChanged()
  886. *
  887. * Availability:
  888. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  889. * CarbonLib: in CarbonLib 1.1 and later
  890. * Mac OS X: in version 10.0 and later
  891. * Windows: in QTSClient.lib 4.0 and later
  892. }
  893. function RTPRssmSendStreamHandlerChanged(rtpr: RTPReassembler): ComponentResult; external name '_RTPRssmSendStreamHandlerChanged';
  894. {
  895. * RTPRssmSetSampleDescription()
  896. *
  897. * Availability:
  898. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  899. * CarbonLib: in CarbonLib 1.1 and later
  900. * Mac OS X: in version 10.0 and later
  901. * Windows: in QTSClient.lib 4.0 and later
  902. }
  903. function RTPRssmSetSampleDescription(rtpr: RTPReassembler; inSampleDescription: SampleDescriptionHandle): ComponentResult; external name '_RTPRssmSetSampleDescription';
  904. { ----- manually sending chunks }
  905. {
  906. * RTPRssmGetChunkAndIncrRefCount()
  907. *
  908. * Availability:
  909. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  910. * CarbonLib: in CarbonLib 1.1 and later
  911. * Mac OS X: in version 10.0 and later
  912. * Windows: in QTSClient.lib 4.0 and later
  913. }
  914. function RTPRssmGetChunkAndIncrRefCount(rtpr: RTPReassembler; inChunkDataSize: UInt32; (*const*) var inChunkPresentationTime: TimeValue64; var outChunk: UnivPtr): ComponentResult; external name '_RTPRssmGetChunkAndIncrRefCount';
  915. {
  916. * RTPRssmGetExtChunkAndIncrRefCount()
  917. *
  918. * Availability:
  919. * Non-Carbon CFM: in QTStreamLib 6.0 and later
  920. * CarbonLib: in CarbonLib 1.6 and later
  921. * Mac OS X: in version 10.2 and later
  922. * Windows: in qtmlClient.lib 6.0 and later
  923. }
  924. function RTPRssmGetExtChunkAndIncrRefCount(rtpr: RTPReassembler; inChunkDataSize: UInt32; (*const*) var inChunkPresentationTime: TimeValue64; inFlags: SInt32; var outChunk: UnivPtr): ComponentResult; external name '_RTPRssmGetExtChunkAndIncrRefCount';
  925. {
  926. * RTPRssmSendChunkAndDecrRefCount()
  927. *
  928. * Availability:
  929. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  930. * CarbonLib: in CarbonLib 1.1 and later
  931. * Mac OS X: in version 10.0 and later
  932. * Windows: in QTSClient.lib 4.0 and later
  933. }
  934. function RTPRssmSendChunkAndDecrRefCount(rtpr: RTPReassembler; var inChunk: SHChunkRecord; const (*var*) inServerEdit: SHServerEditParameters): ComponentResult; external name '_RTPRssmSendChunkAndDecrRefCount';
  935. {
  936. * RTPRssmSendLostChunk()
  937. *
  938. * Availability:
  939. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  940. * CarbonLib: in CarbonLib 1.1 and later
  941. * Mac OS X: in version 10.0 and later
  942. * Windows: in QTSClient.lib 4.0 and later
  943. }
  944. function RTPRssmSendLostChunk(rtpr: RTPReassembler; (*const*) var inChunkPresentationTime: TimeValue64): ComponentResult; external name '_RTPRssmSendLostChunk';
  945. {
  946. * RTPRssmSendStreamBufferRange()
  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. function RTPRssmSendStreamBufferRange(rtpr: RTPReassembler; var inParams: RTPSendStreamBufferRangeParams): ComponentResult; external name '_RTPRssmSendStreamBufferRange';
  955. {
  956. * RTPRssmClearCachedPackets()
  957. *
  958. * Availability:
  959. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  960. * CarbonLib: in CarbonLib 1.1 and later
  961. * Mac OS X: in version 10.0 and later
  962. * Windows: in QTSClient.lib 4.0 and later
  963. }
  964. function RTPRssmClearCachedPackets(rtpr: RTPReassembler; inFlags: SInt32): ComponentResult; external name '_RTPRssmClearCachedPackets';
  965. {
  966. * RTPRssmFillPacketListParams()
  967. *
  968. * Availability:
  969. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  970. * CarbonLib: in CarbonLib 1.1 and later
  971. * Mac OS X: in version 10.0 and later
  972. * Windows: in QTSClient.lib 4.0 and later
  973. }
  974. function RTPRssmFillPacketListParams(rtpr: RTPReassembler; var inPacketListHead: RTPRssmPacket; inNumWraparounds: SInt32; inFlags: SInt32): ComponentResult; external name '_RTPRssmFillPacketListParams';
  975. {
  976. * RTPRssmReleasePacketList()
  977. *
  978. * Availability:
  979. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  980. * CarbonLib: in CarbonLib 1.1 and later
  981. * Mac OS X: in version 10.0 and later
  982. * Windows: in QTSClient.lib 4.0 and later
  983. }
  984. function RTPRssmReleasePacketList(rtpr: RTPReassembler; var inPacketListHead: RTPRssmPacket): ComponentResult; external name '_RTPRssmReleasePacketList';
  985. {
  986. * RTPRssmIncrChunkRefCount()
  987. *
  988. * Availability:
  989. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  990. * CarbonLib: in CarbonLib 1.1 and later
  991. * Mac OS X: in version 10.0 and later
  992. * Windows: in QTSClient.lib 4.0 and later
  993. }
  994. function RTPRssmIncrChunkRefCount(rtpr: RTPReassembler; var inChunk: SHChunkRecord): ComponentResult; external name '_RTPRssmIncrChunkRefCount';
  995. {
  996. * RTPRssmDecrChunkRefCount()
  997. *
  998. * Availability:
  999. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1000. * CarbonLib: in CarbonLib 1.1 and later
  1001. * Mac OS X: in version 10.0 and later
  1002. * Windows: in QTSClient.lib 4.0 and later
  1003. }
  1004. function RTPRssmDecrChunkRefCount(rtpr: RTPReassembler; var inChunk: SHChunkRecord): ComponentResult; external name '_RTPRssmDecrChunkRefCount';
  1005. {============================================================================
  1006. RTP Media Packetizer
  1007. ============================================================================}
  1008. const
  1009. kRTPMediaPacketizerType = $7274706D (* 'rtpm' *);
  1010. type
  1011. RTPMediaPacketizer = ComponentInstance;
  1012. const
  1013. kRTPBaseMediaPacketizerType = $676E7263 (* 'gnrc' *);
  1014. kRTP261MediaPacketizerType = $68323631 (* 'h261' *);
  1015. kRTP263PlusMediaPacketizerType = $3236332B (* '263+' *);
  1016. kRTPAudioMediaPacketizerType = $736F756E (* 'soun' *);
  1017. kRTPQTMediaPacketizerType = $7174696D (* 'qtim' *);
  1018. kRTPPureVoiceMediaPacketizerType = $51636C70 (* 'Qclp' *);
  1019. kRTPJPEGMediaPacketizerType = $6A706567 (* 'jpeg' *);
  1020. kRTPQDesign2MediaPacketizerType = $51444D32 (* 'QDM2' *);
  1021. kRTPSorensonMediaPacketizerType = $53565131 (* 'SVQ1' *);
  1022. kRTPMP3MediaPacketizerType = $6D703320 (* 'mp3 ' *);
  1023. kRTPMPEG4AudioMediaPacketizerType = $6D703461 (* 'mp4a' *);
  1024. kRTPMPEG4VideoMediaPacketizerType = $6D703476 (* 'mp4v' *);
  1025. type
  1026. RTPMPSampleRef = UInt32;
  1027. {$ifc TYPED_FUNCTION_POINTERS}
  1028. RTPMPDataReleaseProcPtr = procedure(var inData: UInt8; inRefCon: UnivPtr);
  1029. {$elsec}
  1030. RTPMPDataReleaseProcPtr = ProcPtr;
  1031. {$endc}
  1032. {$ifc OPAQUE_UPP_TYPES}
  1033. RTPMPDataReleaseUPP = ^SInt32; { an opaque UPP }
  1034. {$elsec}
  1035. RTPMPDataReleaseUPP = UniversalProcPtr;
  1036. {$endc}
  1037. const
  1038. kMediaPacketizerCanPackEditRate = $01;
  1039. kMediaPacketizerCanPackLayer = $02;
  1040. kMediaPacketizerCanPackVolume = $04;
  1041. kMediaPacketizerCanPackBalance = $08;
  1042. kMediaPacketizerCanPackGraphicsMode = $10;
  1043. kMediaPacketizerCanPackEmptyEdit = $20;
  1044. type
  1045. MediaPacketizerRequirementsPtr = ^MediaPacketizerRequirements;
  1046. MediaPacketizerRequirements = record
  1047. mediaType: OSType; { media type supported (0 for all) }
  1048. dataFormat: OSType; { data format (e.g., compression) supported (0 for all) }
  1049. capabilityFlags: UInt32; { ability to handle non-standard track characteristics }
  1050. canPackMatrixType: SInt8; { can pack any matrix type up to this (identityMatrixType for identity only) }
  1051. reserved1: SInt8;
  1052. reserved2: SInt8;
  1053. reserved3: SInt8;
  1054. end;
  1055. MediaPacketizerInfoPtr = ^MediaPacketizerInfo;
  1056. MediaPacketizerInfo = record
  1057. mediaType: OSType; { media type supported (0 for all) }
  1058. dataFormat: OSType; { data format (e.g., compression) supported (0 for all) }
  1059. vendor: OSType; { manufacturer of this packetizer (e.g., 'appl' for Apple) }
  1060. capabilityFlags: UInt32; { ability to handle non-standard track characteristics }
  1061. canPackMatrixType: SInt8; { can pack any matrix type up to this (identityMatrixType for identity only) }
  1062. reserved1: SInt8;
  1063. reserved2: SInt8;
  1064. reserved3: SInt8;
  1065. characteristicCount: SInt32;
  1066. characteristic: array [0..0] of RTPPayloadCharacteristic;
  1067. { after the last characteristic, the payload name (defined by the RTPPayloadInfo }
  1068. { structure) is present. }
  1069. end;
  1070. MediaPacketizerInfoHandle = ^MediaPacketizerInfoPtr;
  1071. { MediaPacketizerInfo structs are padded to 32 bits }
  1072. const
  1073. kMediaPacketizerInfoPadUpToBytes = 4;
  1074. {
  1075. * QTSFindMediaPacketizer()
  1076. *
  1077. * Availability:
  1078. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1079. * CarbonLib: in CarbonLib 1.1 and later
  1080. * Mac OS X: in version 10.0 and later
  1081. * Windows: in QTSClient.lib 4.0 and later
  1082. }
  1083. function QTSFindMediaPacketizer(inPacketizerinfo: MediaPacketizerRequirementsPtr; inSampleDescription: SampleDescriptionHandle; inSortInfo: RTPPayloadSortRequestPtr; var outPacketizerList: QTAtomContainer): OSErr; external name '_QTSFindMediaPacketizer';
  1084. {
  1085. * QTSFindMediaPacketizerForTrack()
  1086. *
  1087. * Availability:
  1088. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1089. * CarbonLib: in CarbonLib 1.1 and later
  1090. * Mac OS X: in version 10.0 and later
  1091. * Windows: in QTSClient.lib 4.0 and later
  1092. }
  1093. function QTSFindMediaPacketizerForTrack(inTrack: Track; inSampleDescriptionIndex: SInt32; inSortInfo: RTPPayloadSortRequestPtr; var outPacketizerList: QTAtomContainer): OSErr; external name '_QTSFindMediaPacketizerForTrack';
  1094. {
  1095. * QTSFindMediaPacketizerForPayloadID()
  1096. *
  1097. * Availability:
  1098. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1099. * CarbonLib: in CarbonLib 1.1 and later
  1100. * Mac OS X: in version 10.0 and later
  1101. * Windows: in QTSClient.lib 4.0 and later
  1102. }
  1103. function QTSFindMediaPacketizerForPayloadID(payloadID: SInt32; inSortInfo: RTPPayloadSortRequestPtr; var outPacketizerList: QTAtomContainer): OSErr; external name '_QTSFindMediaPacketizerForPayloadID';
  1104. {
  1105. * QTSFindMediaPacketizerForPayloadName()
  1106. *
  1107. * Availability:
  1108. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1109. * CarbonLib: in CarbonLib 1.1 and later
  1110. * Mac OS X: in version 10.0 and later
  1111. * Windows: in QTSClient.lib 4.0 and later
  1112. }
  1113. function QTSFindMediaPacketizerForPayloadName(payloadName: ConstCStringPtr; inSortInfo: RTPPayloadSortRequestPtr; var outPacketizerList: QTAtomContainer): OSErr; external name '_QTSFindMediaPacketizerForPayloadName';
  1114. { flags for RTPMPInitialize }
  1115. const
  1116. kRTPMPRealtimeModeFlag = $00000001;
  1117. { flags for RTPMPSampleDataParams }
  1118. kRTPMPSyncSampleFlag = $00000001;
  1119. kRTPMPRespectDurationFlag = $00000002;
  1120. type
  1121. RTPMPSampleDataParamsPtr = ^RTPMPSampleDataParams;
  1122. RTPMPSampleDataParams = record
  1123. version: UInt32;
  1124. timeStamp: UInt32;
  1125. duration: UInt32; { 0 = unknown duration }
  1126. playOffset: UInt32;
  1127. playRate: Fixed;
  1128. flags: SInt32;
  1129. sampleDescSeed: UInt32;
  1130. sampleDescription: Handle;
  1131. sampleRef: RTPMPSampleRef;
  1132. dataLength: UInt32;
  1133. data: Ptr;
  1134. releaseProc: RTPMPDataReleaseUPP;
  1135. refCon: Ptr;
  1136. end;
  1137. { out flags for idle, RTPMPSetSampleData, and RTPMPFlush }
  1138. const
  1139. kRTPMPStillProcessingData = $00000001; { not done with data you've got }
  1140. type
  1141. RTPMPPayloadTypeParamsPtr = ^RTPMPPayloadTypeParams;
  1142. RTPMPPayloadTypeParams = record
  1143. flags: UInt32;
  1144. payloadNumber: UInt32;
  1145. nameLength: SInt16; { in: size of payloadName buffer (counting null terminator) -- this will be reset to needed length and paramErr returned if too small }
  1146. payloadName: CStringPtr; { caller must provide buffer }
  1147. end;
  1148. { -----------------------------------------
  1149. RTP Media Packetizer Info selectors
  1150. ----------------------------------------- }
  1151. { info selectors - get only }
  1152. const
  1153. kRTPMPPayloadTypeInfo = $72747070 (* 'rtpp' *); { RTPMPPayloadTypeParams* }
  1154. kRTPMPRTPTimeScaleInfo = $72747074 (* 'rtpt' *); { TimeScale* }
  1155. kRTPMPRequiredSampleDescriptionInfo = $73647363 (* 'sdsc' *); { SampleDescriptionHandle* }
  1156. kRTPMPMinPayloadSize = $6D696E73 (* 'mins' *); { UInt32* in bytes, does not include rtp header; default is 0 }
  1157. kRTPMPMinPacketDuration = $6D696E64 (* 'mind' *); { UInt3* in milliseconds; default is no min required }
  1158. kRTPMPSuggestedRepeatPktCountInfo = $73727063 (* 'srpc' *); { UInt32* }
  1159. kRTPMPSuggestedRepeatPktSpacingInfo = $73727073 (* 'srps' *); { UInt32* in milliseconds }
  1160. kRTPMPMaxPartialSampleSizeInfo = $6D707373 (* 'mpss' *); { UInt32* in bytes }
  1161. kRTPMPPreferredBufferDelayInfo = $70726264 (* 'prbd' *); { UInt32* in milliseconds }
  1162. kRTPMPPayloadNameInfo = $6E616D65 (* 'name' *); { StringPtr }
  1163. kRTPInfo_FormatString = $666D7470 (* 'fmtp' *); { char **, caller allocates ptr, callee disposes }
  1164. { -----------------------------------------
  1165. RTP Media Packetizer Characteristics
  1166. ----------------------------------------- }
  1167. { also supports relevant ones in Movies.h and QTSToolbox.h }
  1168. kRTPMPNoSampleDataRequiredCharacteristic = $6E736472 (* 'nsdr' *);
  1169. kRTPMPHasUserSettingsDialogCharacteristic = $73646C67 (* 'sdlg' *);
  1170. kRTPMPPrefersReliableTransportCharacteristic = $72656C79 (* 'rely' *);
  1171. kRTPMPRequiresOutOfBandDimensionsCharacteristic = $726F6264 (* 'robd' *);
  1172. kRTPMPReadsPartialSamplesCharacteristic = $72707370 (* 'rpsp' *);
  1173. { -----------------------------------------
  1174. RTP Media Packetizer selectors
  1175. ----------------------------------------- }
  1176. kRTPMPInitializeSelect = $0500;
  1177. kRTPMPPreflightMediaSelect = $0501;
  1178. kRTPMPIdleSelect = $0502;
  1179. kRTPMPSetSampleDataSelect = $0503;
  1180. kRTPMPFlushSelect = $0504;
  1181. kRTPMPResetSelect = $0505;
  1182. kRTPMPSetInfoSelect = $0506;
  1183. kRTPMPGetInfoSelect = $0507;
  1184. kRTPMPSetTimeScaleSelect = $0508;
  1185. kRTPMPGetTimeScaleSelect = $0509;
  1186. kRTPMPSetTimeBaseSelect = $050A;
  1187. kRTPMPGetTimeBaseSelect = $050B;
  1188. kRTPMPHasCharacteristicSelect = $050C;
  1189. kRTPMPSetPacketBuilderSelect = $050E;
  1190. kRTPMPGetPacketBuilderSelect = $050F;
  1191. kRTPMPSetMediaTypeSelect = $0510;
  1192. kRTPMPGetMediaTypeSelect = $0511;
  1193. kRTPMPSetMaxPacketSizeSelect = $0512;
  1194. kRTPMPGetMaxPacketSizeSelect = $0513;
  1195. kRTPMPSetMaxPacketDurationSelect = $0514;
  1196. kRTPMPGetMaxPacketDurationSelect = $0515; { for export component and apps who want to }
  1197. { access dialogs for Media-specific settings }
  1198. { (such as Pure Voice interleave factor) }
  1199. kRTPMPDoUserDialogSelect = $0516;
  1200. kRTPMPSetSettingsFromAtomContainerAtAtomSelect = $0517;
  1201. kRTPMPGetSettingsIntoAtomContainerAtAtomSelect = $0518;
  1202. kRTPMPGetSettingsAsTextSelect = $0519;
  1203. kRTPMPGetSettingsSelect = $051A;
  1204. kRTPMPSetSettingsSelect = $051B;
  1205. { -----------------------------------------
  1206. RTP Media Packetizer functions
  1207. ----------------------------------------- }
  1208. {
  1209. * RTPMPInitialize()
  1210. *
  1211. * Availability:
  1212. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1213. * CarbonLib: in CarbonLib 1.1 and later
  1214. * Mac OS X: in version 10.0 and later
  1215. * Windows: in QTSClient.lib 4.0 and later
  1216. }
  1217. function RTPMPInitialize(rtpm: RTPMediaPacketizer; inFlags: SInt32): ComponentResult; external name '_RTPMPInitialize';
  1218. { return noErr if you can handle this media }
  1219. {
  1220. * RTPMPPreflightMedia()
  1221. *
  1222. * Availability:
  1223. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1224. * CarbonLib: in CarbonLib 1.1 and later
  1225. * Mac OS X: in version 10.0 and later
  1226. * Windows: in QTSClient.lib 4.0 and later
  1227. }
  1228. function RTPMPPreflightMedia(rtpm: RTPMediaPacketizer; inMediaType: OSType; inSampleDescription: SampleDescriptionHandle): ComponentResult; external name '_RTPMPPreflightMedia';
  1229. {
  1230. do work here if you need to - give up time periodically
  1231. if you're doing time consuming operations
  1232. }
  1233. {
  1234. * RTPMPIdle()
  1235. *
  1236. * Availability:
  1237. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1238. * CarbonLib: in CarbonLib 1.1 and later
  1239. * Mac OS X: in version 10.0 and later
  1240. * Windows: in QTSClient.lib 4.0 and later
  1241. }
  1242. function RTPMPIdle(rtpm: RTPMediaPacketizer; inFlags: SInt32; var outFlags: SInt32): ComponentResult; external name '_RTPMPIdle';
  1243. {
  1244. caller owns the RTPMPSampleDataParams struct
  1245. media Packetizer must copy any fields of the struct it wants to keep
  1246. media Packetizer must call release proc when done with the data
  1247. you can do the processing work here if it does not take up too
  1248. much cpu time - otherwise do it in idle
  1249. }
  1250. {
  1251. * RTPMPSetSampleData()
  1252. *
  1253. * Availability:
  1254. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1255. * CarbonLib: in CarbonLib 1.1 and later
  1256. * Mac OS X: in version 10.0 and later
  1257. * Windows: in QTSClient.lib 4.0 and later
  1258. }
  1259. function RTPMPSetSampleData(rtpm: RTPMediaPacketizer; const (*var*) inSampleData: RTPMPSampleDataParams; var outFlags: SInt32): ComponentResult; external name '_RTPMPSetSampleData';
  1260. {
  1261. send everything you have buffered - you will get idles while
  1262. you set the kRTPMPStillProcessingData flag here and in idle
  1263. }
  1264. {
  1265. * RTPMPFlush()
  1266. *
  1267. * Availability:
  1268. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1269. * CarbonLib: in CarbonLib 1.1 and later
  1270. * Mac OS X: in version 10.0 and later
  1271. * Windows: in QTSClient.lib 4.0 and later
  1272. }
  1273. function RTPMPFlush(rtpm: RTPMediaPacketizer; inFlags: SInt32; var outFlags: SInt32): ComponentResult; external name '_RTPMPFlush';
  1274. {
  1275. dispose of anything buffered and get rid of state
  1276. do not send the buffered data (because presumably
  1277. there is no connection for you to send on)
  1278. state should be the same as if you were just initialized
  1279. }
  1280. {
  1281. * RTPMPReset()
  1282. *
  1283. * Availability:
  1284. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1285. * CarbonLib: in CarbonLib 1.1 and later
  1286. * Mac OS X: in version 10.0 and later
  1287. * Windows: in QTSClient.lib 4.0 and later
  1288. }
  1289. function RTPMPReset(rtpm: RTPMediaPacketizer; inFlags: SInt32): ComponentResult; external name '_RTPMPReset';
  1290. {-----------------------------------------
  1291. RTP Media Packetizer get / set functions
  1292. -----------------------------------------}
  1293. {
  1294. * RTPMPSetInfo()
  1295. *
  1296. * Availability:
  1297. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1298. * CarbonLib: in CarbonLib 1.1 and later
  1299. * Mac OS X: in version 10.0 and later
  1300. * Windows: in QTSClient.lib 4.0 and later
  1301. }
  1302. function RTPMPSetInfo(rtpm: RTPMediaPacketizer; inSelector: OSType; ioParams: UnivPtr): ComponentResult; external name '_RTPMPSetInfo';
  1303. {
  1304. * RTPMPGetInfo()
  1305. *
  1306. * Availability:
  1307. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1308. * CarbonLib: in CarbonLib 1.1 and later
  1309. * Mac OS X: in version 10.0 and later
  1310. * Windows: in QTSClient.lib 4.0 and later
  1311. }
  1312. function RTPMPGetInfo(rtpm: RTPMediaPacketizer; inSelector: OSType; ioParams: UnivPtr): ComponentResult; external name '_RTPMPGetInfo';
  1313. {
  1314. * RTPMPSetTimeScale()
  1315. *
  1316. * Availability:
  1317. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1318. * CarbonLib: in CarbonLib 1.1 and later
  1319. * Mac OS X: in version 10.0 and later
  1320. * Windows: in QTSClient.lib 4.0 and later
  1321. }
  1322. function RTPMPSetTimeScale(rtpm: RTPMediaPacketizer; inTimeScale: TimeScale): ComponentResult; external name '_RTPMPSetTimeScale';
  1323. {
  1324. * RTPMPGetTimeScale()
  1325. *
  1326. * Availability:
  1327. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1328. * CarbonLib: in CarbonLib 1.1 and later
  1329. * Mac OS X: in version 10.0 and later
  1330. * Windows: in QTSClient.lib 4.0 and later
  1331. }
  1332. function RTPMPGetTimeScale(rtpm: RTPMediaPacketizer; var outTimeScale: TimeScale): ComponentResult; external name '_RTPMPGetTimeScale';
  1333. {
  1334. * RTPMPSetTimeBase()
  1335. *
  1336. * Availability:
  1337. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1338. * CarbonLib: in CarbonLib 1.1 and later
  1339. * Mac OS X: in version 10.0 and later
  1340. * Windows: in QTSClient.lib 4.0 and later
  1341. }
  1342. function RTPMPSetTimeBase(rtpm: RTPMediaPacketizer; inTimeBase: TimeBase): ComponentResult; external name '_RTPMPSetTimeBase';
  1343. {
  1344. * RTPMPGetTimeBase()
  1345. *
  1346. * Availability:
  1347. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1348. * CarbonLib: in CarbonLib 1.1 and later
  1349. * Mac OS X: in version 10.0 and later
  1350. * Windows: in QTSClient.lib 4.0 and later
  1351. }
  1352. function RTPMPGetTimeBase(rtpm: RTPMediaPacketizer; var outTimeBase: TimeBase): ComponentResult; external name '_RTPMPGetTimeBase';
  1353. {
  1354. * RTPMPHasCharacteristic()
  1355. *
  1356. * Availability:
  1357. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1358. * CarbonLib: in CarbonLib 1.1 and later
  1359. * Mac OS X: in version 10.0 and later
  1360. * Windows: in QTSClient.lib 4.0 and later
  1361. }
  1362. function RTPMPHasCharacteristic(rtpm: RTPMediaPacketizer; inSelector: OSType; var outHasIt: boolean): ComponentResult; external name '_RTPMPHasCharacteristic';
  1363. {
  1364. * RTPMPSetPacketBuilder()
  1365. *
  1366. * Availability:
  1367. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1368. * CarbonLib: in CarbonLib 1.1 and later
  1369. * Mac OS X: in version 10.0 and later
  1370. * Windows: in QTSClient.lib 4.0 and later
  1371. }
  1372. function RTPMPSetPacketBuilder(rtpm: RTPMediaPacketizer; inPacketBuilder: ComponentInstance): ComponentResult; external name '_RTPMPSetPacketBuilder';
  1373. {
  1374. * RTPMPGetPacketBuilder()
  1375. *
  1376. * Availability:
  1377. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1378. * CarbonLib: in CarbonLib 1.1 and later
  1379. * Mac OS X: in version 10.0 and later
  1380. * Windows: in QTSClient.lib 4.0 and later
  1381. }
  1382. function RTPMPGetPacketBuilder(rtpm: RTPMediaPacketizer; var outPacketBuilder: ComponentInstance): ComponentResult; external name '_RTPMPGetPacketBuilder';
  1383. {
  1384. * RTPMPSetMediaType()
  1385. *
  1386. * Availability:
  1387. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1388. * CarbonLib: in CarbonLib 1.1 and later
  1389. * Mac OS X: in version 10.0 and later
  1390. * Windows: in QTSClient.lib 4.0 and later
  1391. }
  1392. function RTPMPSetMediaType(rtpm: RTPMediaPacketizer; inMediaType: OSType): ComponentResult; external name '_RTPMPSetMediaType';
  1393. {
  1394. * RTPMPGetMediaType()
  1395. *
  1396. * Availability:
  1397. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1398. * CarbonLib: in CarbonLib 1.1 and later
  1399. * Mac OS X: in version 10.0 and later
  1400. * Windows: in QTSClient.lib 4.0 and later
  1401. }
  1402. function RTPMPGetMediaType(rtpm: RTPMediaPacketizer; var outMediaType: OSType): ComponentResult; external name '_RTPMPGetMediaType';
  1403. { size is in bytes }
  1404. {
  1405. * RTPMPSetMaxPacketSize()
  1406. *
  1407. * Availability:
  1408. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1409. * CarbonLib: in CarbonLib 1.1 and later
  1410. * Mac OS X: in version 10.0 and later
  1411. * Windows: in QTSClient.lib 4.0 and later
  1412. }
  1413. function RTPMPSetMaxPacketSize(rtpm: RTPMediaPacketizer; inMaxPacketSize: UInt32): ComponentResult; external name '_RTPMPSetMaxPacketSize';
  1414. {
  1415. * RTPMPGetMaxPacketSize()
  1416. *
  1417. * Availability:
  1418. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1419. * CarbonLib: in CarbonLib 1.1 and later
  1420. * Mac OS X: in version 10.0 and later
  1421. * Windows: in QTSClient.lib 4.0 and later
  1422. }
  1423. function RTPMPGetMaxPacketSize(rtpm: RTPMediaPacketizer; var outMaxPacketSize: UInt32): ComponentResult; external name '_RTPMPGetMaxPacketSize';
  1424. { duration is in milliseconds }
  1425. {
  1426. * RTPMPSetMaxPacketDuration()
  1427. *
  1428. * Availability:
  1429. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1430. * CarbonLib: in CarbonLib 1.1 and later
  1431. * Mac OS X: in version 10.0 and later
  1432. * Windows: in QTSClient.lib 4.0 and later
  1433. }
  1434. function RTPMPSetMaxPacketDuration(rtpm: RTPMediaPacketizer; inMaxPacketDuration: UInt32): ComponentResult; external name '_RTPMPSetMaxPacketDuration';
  1435. {
  1436. * RTPMPGetMaxPacketDuration()
  1437. *
  1438. * Availability:
  1439. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1440. * CarbonLib: in CarbonLib 1.1 and later
  1441. * Mac OS X: in version 10.0 and later
  1442. * Windows: in QTSClient.lib 4.0 and later
  1443. }
  1444. function RTPMPGetMaxPacketDuration(rtpm: RTPMediaPacketizer; var outMaxPacketDuration: UInt32): ComponentResult; external name '_RTPMPGetMaxPacketDuration';
  1445. {
  1446. * RTPMPDoUserDialog()
  1447. *
  1448. * Availability:
  1449. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1450. * CarbonLib: in CarbonLib 1.1 and later
  1451. * Mac OS X: in version 10.0 and later
  1452. * Windows: in QTSClient.lib 4.0 and later
  1453. }
  1454. function RTPMPDoUserDialog(rtpm: RTPMediaPacketizer; inFilterUPP: ModalFilterUPP; var canceled: boolean): ComponentResult; external name '_RTPMPDoUserDialog';
  1455. {
  1456. * RTPMPSetSettingsFromAtomContainerAtAtom()
  1457. *
  1458. * Availability:
  1459. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1460. * CarbonLib: in CarbonLib 1.1 and later
  1461. * Mac OS X: in version 10.0 and later
  1462. * Windows: in QTSClient.lib 4.0 and later
  1463. }
  1464. function RTPMPSetSettingsFromAtomContainerAtAtom(rtpm: RTPMediaPacketizer; inContainer: QTAtomContainer; inParentAtom: QTAtom): ComponentResult; external name '_RTPMPSetSettingsFromAtomContainerAtAtom';
  1465. {
  1466. * RTPMPGetSettingsIntoAtomContainerAtAtom()
  1467. *
  1468. * Availability:
  1469. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1470. * CarbonLib: in CarbonLib 1.1 and later
  1471. * Mac OS X: in version 10.0 and later
  1472. * Windows: in QTSClient.lib 4.0 and later
  1473. }
  1474. function RTPMPGetSettingsIntoAtomContainerAtAtom(rtpm: RTPMediaPacketizer; inOutContainer: QTAtomContainer; inParentAtom: QTAtom): ComponentResult; external name '_RTPMPGetSettingsIntoAtomContainerAtAtom';
  1475. {
  1476. * RTPMPGetSettingsAsText()
  1477. *
  1478. * Availability:
  1479. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1480. * CarbonLib: in CarbonLib 1.1 and later
  1481. * Mac OS X: in version 10.0 and later
  1482. * Windows: in QTSClient.lib 4.0 and later
  1483. }
  1484. function RTPMPGetSettingsAsText(rtpm: RTPMediaPacketizer; var text: Handle): ComponentResult; external name '_RTPMPGetSettingsAsText';
  1485. {
  1486. * RTPMPGetSettings()
  1487. *
  1488. * Availability:
  1489. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  1490. * CarbonLib: in CarbonLib 1.3 and later
  1491. * Mac OS X: in version 10.0 and later
  1492. * Windows: in QTSClient.lib 5.0 and later
  1493. }
  1494. function RTPMPGetSettings(rtpm: RTPMediaPacketizer; var outSettings: QTAtomContainer; inFlags: SInt32): ComponentResult; external name '_RTPMPGetSettings';
  1495. {
  1496. * RTPMPSetSettings()
  1497. *
  1498. * Availability:
  1499. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  1500. * CarbonLib: in CarbonLib 1.3 and later
  1501. * Mac OS X: in version 10.0 and later
  1502. * Windows: in QTSClient.lib 5.0 and later
  1503. }
  1504. function RTPMPSetSettings(rtpm: RTPMediaPacketizer; inSettings: QTAtomSpecPtr; inFlags: SInt32): ComponentResult; external name '_RTPMPSetSettings';
  1505. {============================================================================
  1506. RTP Packet Builder
  1507. ============================================================================}
  1508. const
  1509. kRTPPacketBuilderType = $72747062 (* 'rtpb' *);
  1510. type
  1511. RTPPacketBuilder = ComponentInstance;
  1512. RTPPacketGroupRef = ^SInt32; { an opaque 32-bit type }
  1513. RTPPacketGroupRefPtr = ^RTPPacketGroupRef; { when a var xx:RTPPacketGroupRef parameter can be nil, it is changed to xx: RTPPacketGroupRefPtr }
  1514. RTPPacketRef = ^SInt32; { an opaque 32-bit type }
  1515. RTPPacketRefPtr = ^RTPPacketRef; { when a var xx:RTPPacketRef parameter can be nil, it is changed to xx: RTPPacketRefPtr }
  1516. RTPPacketRepeatedDataRef = ^SInt32; { an opaque 32-bit type }
  1517. RTPPacketRepeatedDataRefPtr = ^RTPPacketRepeatedDataRef; { when a var xx:RTPPacketRepeatedDataRef parameter can be nil, it is changed to xx: RTPPacketRepeatedDataRefPtr }
  1518. { flags for RTPPBBegin/EndPacket, RTPPBBegin/EndPacketGroup }
  1519. const
  1520. kRTPPBSetMarkerFlag = $00000001;
  1521. kRTPPBRepeatPacketFlag = $00000002;
  1522. kRTPPBSyncSampleFlag = $00010000;
  1523. kRTPPBBFrameFlag = $00020000;
  1524. kRTPPBDontSendFlag = $10000000; { when set in EndPacketGroup, will not add group }
  1525. kRTPPBUnknownPacketMediaDataLength = 0;
  1526. { flags for RTPPBGetSampleData }
  1527. kRTPPBEndOfDataFlag = $00000001;
  1528. type
  1529. {$ifc TYPED_FUNCTION_POINTERS}
  1530. RTPPBCallbackProcPtr = procedure(inSelector: OSType; ioParams: UnivPtr; inRefCon: UnivPtr);
  1531. {$elsec}
  1532. RTPPBCallbackProcPtr = ProcPtr;
  1533. {$endc}
  1534. {$ifc OPAQUE_UPP_TYPES}
  1535. RTPPBCallbackUPP = ^SInt32; { an opaque UPP }
  1536. {$elsec}
  1537. RTPPBCallbackUPP = UniversalProcPtr;
  1538. {$endc}
  1539. { -----------------------------------------
  1540. RTP Packet Builder selectors
  1541. ----------------------------------------- }
  1542. const
  1543. kRTPPBBeginPacketGroupSelect = $0500;
  1544. kRTPPBEndPacketGroupSelect = $0501;
  1545. kRTPPBBeginPacketSelect = $0502;
  1546. kRTPPBEndPacketSelect = $0503;
  1547. kRTPPBAddPacketLiteralDataSelect = $0504;
  1548. kRTPPBAddPacketSampleDataSelect = $0505;
  1549. kRTPPBAddPacketRepeatedDataSelect = $0506;
  1550. kRTPPBReleaseRepeatedDataSelect = $0507;
  1551. kRTPPBSetPacketSequenceNumberSelect = $0508;
  1552. kRTPPBGetPacketSequenceNumberSelect = $0509;
  1553. kRTPPBSetCallbackSelect = $050A;
  1554. kRTPPBGetCallbackSelect = $050B;
  1555. kRTPPBSetInfoSelect = $050C;
  1556. kRTPPBGetInfoSelect = $050D;
  1557. kRTPPBSetPacketTimeStampOffsetSelect = $050E;
  1558. kRTPPBGetPacketTimeStampOffsetSelect = $050F;
  1559. kRTPPBAddPacketSampleData64Select = $0510;
  1560. kRTPPBGetSampleDataSelect = $0511;
  1561. kRTPPBAddRepeatPacketSelect = $0512;
  1562. { -----------------------------------------
  1563. RTP Packet Builder functions
  1564. ----------------------------------------- }
  1565. {
  1566. * RTPPBBeginPacketGroup()
  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. function RTPPBBeginPacketGroup(rtpb: RTPPacketBuilder; inFlags: SInt32; inTimeStamp: UInt32; var outPacketGroup: RTPPacketGroupRef): ComponentResult; external name '_RTPPBBeginPacketGroup';
  1575. {
  1576. * RTPPBEndPacketGroup()
  1577. *
  1578. * Availability:
  1579. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1580. * CarbonLib: in CarbonLib 1.1 and later
  1581. * Mac OS X: in version 10.0 and later
  1582. * Windows: in QTSClient.lib 4.0 and later
  1583. }
  1584. function RTPPBEndPacketGroup(rtpb: RTPPacketBuilder; inFlags: SInt32; inPacketGroup: RTPPacketGroupRef): ComponentResult; external name '_RTPPBEndPacketGroup';
  1585. {
  1586. * RTPPBBeginPacket()
  1587. *
  1588. * Availability:
  1589. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1590. * CarbonLib: in CarbonLib 1.1 and later
  1591. * Mac OS X: in version 10.0 and later
  1592. * Windows: in QTSClient.lib 4.0 and later
  1593. }
  1594. function RTPPBBeginPacket(rtpb: RTPPacketBuilder; inFlags: SInt32; inPacketGroup: RTPPacketGroupRef; inPacketMediaDataLength: UInt32; var outPacket: RTPPacketRef): ComponentResult; external name '_RTPPBBeginPacket';
  1595. {
  1596. * RTPPBEndPacket()
  1597. *
  1598. * Availability:
  1599. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1600. * CarbonLib: in CarbonLib 1.1 and later
  1601. * Mac OS X: in version 10.0 and later
  1602. * Windows: in QTSClient.lib 4.0 and later
  1603. }
  1604. function RTPPBEndPacket(rtpb: RTPPacketBuilder; inFlags: SInt32; inPacketGroup: RTPPacketGroupRef; inPacket: RTPPacketRef; inTransmissionTimeOffset: UInt32; inDuration: UInt32): ComponentResult; external name '_RTPPBEndPacket';
  1605. {
  1606. non-NULL RTPPacketRepeatedDataRef means this data will be repeated later
  1607. pb must return a repeated data ref
  1608. }
  1609. {
  1610. * RTPPBAddPacketLiteralData()
  1611. *
  1612. * Availability:
  1613. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1614. * CarbonLib: in CarbonLib 1.1 and later
  1615. * Mac OS X: in version 10.0 and later
  1616. * Windows: in QTSClient.lib 4.0 and later
  1617. }
  1618. function RTPPBAddPacketLiteralData(rtpb: RTPPacketBuilder; inFlags: SInt32; inPacketGroup: RTPPacketGroupRef; inPacket: RTPPacketRef; var inData: UInt8; inDataLength: UInt32; var outDataRef: RTPPacketRepeatedDataRef): ComponentResult; external name '_RTPPBAddPacketLiteralData';
  1619. {
  1620. non-NULL RTPPacketRepeatedDataRef means this data will be repeated later
  1621. pb must return a repeated data ref
  1622. }
  1623. {
  1624. * RTPPBAddPacketSampleData()
  1625. *
  1626. * Availability:
  1627. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1628. * CarbonLib: in CarbonLib 1.1 and later
  1629. * Mac OS X: in version 10.0 and later
  1630. * Windows: in QTSClient.lib 4.0 and later
  1631. }
  1632. function RTPPBAddPacketSampleData(rtpb: RTPPacketBuilder; inFlags: SInt32; inPacketGroup: RTPPacketGroupRef; inPacket: RTPPacketRef; var inSampleDataParams: RTPMPSampleDataParams; inSampleOffset: UInt32; inSampleDataLength: UInt32; var outDataRef: RTPPacketRepeatedDataRef): ComponentResult; external name '_RTPPBAddPacketSampleData';
  1633. {
  1634. non-NULL RTPPacketRepeatedDataRef means this data will be repeated later
  1635. pb must return a repeated data ref
  1636. }
  1637. {
  1638. * RTPPBAddPacketSampleData64()
  1639. *
  1640. * Availability:
  1641. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  1642. * CarbonLib: in CarbonLib 1.3 and later
  1643. * Mac OS X: in version 10.0 and later
  1644. * Windows: in QTSClient.lib 5.0 and later
  1645. }
  1646. function RTPPBAddPacketSampleData64(rtpb: RTPPacketBuilder; inFlags: SInt32; inPacketGroup: RTPPacketGroupRef; inPacket: RTPPacketRef; var inSampleDataParams: RTPMPSampleDataParams; (*const*) var inSampleOffset: UInt64; inSampleDataLength: UInt32; var outDataRef: RTPPacketRepeatedDataRef): ComponentResult; external name '_RTPPBAddPacketSampleData64';
  1647. {
  1648. call to add the repeated data using the ref you got from
  1649. RTPPBAddPacketLiteralData or RTPPBAddPacketSampleData
  1650. }
  1651. {
  1652. * RTPPBAddPacketRepeatedData()
  1653. *
  1654. * Availability:
  1655. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1656. * CarbonLib: in CarbonLib 1.1 and later
  1657. * Mac OS X: in version 10.0 and later
  1658. * Windows: in QTSClient.lib 4.0 and later
  1659. }
  1660. function RTPPBAddPacketRepeatedData(rtpb: RTPPacketBuilder; inFlags: SInt32; inPacketGroup: RTPPacketGroupRef; inPacket: RTPPacketRef; inDataRef: RTPPacketRepeatedDataRef): ComponentResult; external name '_RTPPBAddPacketRepeatedData';
  1661. { call when done with repeated data }
  1662. {
  1663. * RTPPBReleaseRepeatedData()
  1664. *
  1665. * Availability:
  1666. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1667. * CarbonLib: in CarbonLib 1.1 and later
  1668. * Mac OS X: in version 10.0 and later
  1669. * Windows: in QTSClient.lib 4.0 and later
  1670. }
  1671. function RTPPBReleaseRepeatedData(rtpb: RTPPacketBuilder; inDataRef: RTPPacketRepeatedDataRef): ComponentResult; external name '_RTPPBReleaseRepeatedData';
  1672. {
  1673. seq number is just relative seq number
  1674. don't call if you don't care when seq # is used
  1675. }
  1676. {
  1677. * RTPPBSetPacketSequenceNumber()
  1678. *
  1679. * Availability:
  1680. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1681. * CarbonLib: in CarbonLib 1.1 and later
  1682. * Mac OS X: in version 10.0 and later
  1683. * Windows: in QTSClient.lib 4.0 and later
  1684. }
  1685. function RTPPBSetPacketSequenceNumber(rtpb: RTPPacketBuilder; inFlags: SInt32; inPacketGroup: RTPPacketGroupRef; inPacket: RTPPacketRef; inSequenceNumber: UInt32): ComponentResult; external name '_RTPPBSetPacketSequenceNumber';
  1686. {
  1687. * RTPPBGetPacketSequenceNumber()
  1688. *
  1689. * Availability:
  1690. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1691. * CarbonLib: in CarbonLib 1.1 and later
  1692. * Mac OS X: in version 10.0 and later
  1693. * Windows: in QTSClient.lib 4.0 and later
  1694. }
  1695. function RTPPBGetPacketSequenceNumber(rtpb: RTPPacketBuilder; inFlags: SInt32; inPacketGroup: RTPPacketGroupRef; inPacket: RTPPacketRef; var outSequenceNumber: UInt32): ComponentResult; external name '_RTPPBGetPacketSequenceNumber';
  1696. {
  1697. * RTPPBSetPacketTimeStampOffset()
  1698. *
  1699. * Availability:
  1700. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  1701. * CarbonLib: in CarbonLib 1.3 and later
  1702. * Mac OS X: in version 10.0 and later
  1703. * Windows: in QTSClient.lib 5.0 and later
  1704. }
  1705. function RTPPBSetPacketTimeStampOffset(rtpb: RTPPacketBuilder; inFlags: SInt32; inPacketGroup: RTPPacketGroupRef; inPacket: RTPPacketRef; inTimeStampOffset: SInt32): ComponentResult; external name '_RTPPBSetPacketTimeStampOffset';
  1706. {
  1707. * RTPPBGetPacketTimeStampOffset()
  1708. *
  1709. * Availability:
  1710. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  1711. * CarbonLib: in CarbonLib 1.3 and later
  1712. * Mac OS X: in version 10.0 and later
  1713. * Windows: in QTSClient.lib 5.0 and later
  1714. }
  1715. function RTPPBGetPacketTimeStampOffset(rtpb: RTPPacketBuilder; inFlags: SInt32; inPacketGroup: RTPPacketGroupRef; inPacket: RTPPacketRef; var outTimeStampOffset: SInt32): ComponentResult; external name '_RTPPBGetPacketTimeStampOffset';
  1716. {
  1717. * RTPPBAddRepeatPacket()
  1718. *
  1719. * Availability:
  1720. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  1721. * CarbonLib: in CarbonLib 1.3 and later
  1722. * Mac OS X: in version 10.0 and later
  1723. * Windows: in QTSClient.lib 5.0 and later
  1724. }
  1725. function RTPPBAddRepeatPacket(rtpb: RTPPacketBuilder; inFlags: SInt32; inPacketGroup: RTPPacketGroupRef; inPacket: RTPPacketRef; inTransmissionOffset: TimeValue; inSequenceNumber: UInt32): ComponentResult; external name '_RTPPBAddRepeatPacket';
  1726. {
  1727. used for communicating with the caller of the media packetizers if needed
  1728. NOT used for communicating with the media packetizers themselves
  1729. }
  1730. {
  1731. * RTPPBSetCallback()
  1732. *
  1733. * Availability:
  1734. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1735. * CarbonLib: in CarbonLib 1.1 and later
  1736. * Mac OS X: in version 10.0 and later
  1737. * Windows: in QTSClient.lib 4.0 and later
  1738. }
  1739. function RTPPBSetCallback(rtpb: RTPPacketBuilder; inCallback: RTPPBCallbackUPP; inRefCon: UnivPtr): ComponentResult; external name '_RTPPBSetCallback';
  1740. {
  1741. * RTPPBGetCallback()
  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. function RTPPBGetCallback(rtpb: RTPPacketBuilder; var outCallback: RTPPBCallbackUPP; var outRefCon: UnivPtr): ComponentResult; external name '_RTPPBGetCallback';
  1750. {
  1751. * RTPPBSetInfo()
  1752. *
  1753. * Availability:
  1754. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1755. * CarbonLib: in CarbonLib 1.1 and later
  1756. * Mac OS X: in version 10.0 and later
  1757. * Windows: in QTSClient.lib 4.0 and later
  1758. }
  1759. function RTPPBSetInfo(rtpb: RTPPacketBuilder; inSelector: OSType; ioParams: UnivPtr): ComponentResult; external name '_RTPPBSetInfo';
  1760. {
  1761. * RTPPBGetInfo()
  1762. *
  1763. * Availability:
  1764. * Non-Carbon CFM: in QTStreamLib 4.0 and later
  1765. * CarbonLib: in CarbonLib 1.1 and later
  1766. * Mac OS X: in version 10.0 and later
  1767. * Windows: in QTSClient.lib 4.0 and later
  1768. }
  1769. function RTPPBGetInfo(rtpb: RTPPacketBuilder; inSelector: OSType; ioParams: UnivPtr): ComponentResult; external name '_RTPPBGetInfo';
  1770. {
  1771. * RTPPBGetSampleData()
  1772. *
  1773. * Availability:
  1774. * Non-Carbon CFM: in QTStreamLib 5.0 and later
  1775. * CarbonLib: in CarbonLib 1.3 and later
  1776. * Mac OS X: in version 10.0 and later
  1777. * Windows: in QTSClient.lib 5.0 and later
  1778. }
  1779. function RTPPBGetSampleData(rtpb: RTPPacketBuilder; var inParams: RTPMPSampleDataParams; (*const*) var inStartOffset: UInt64; var outDataBuffer: UInt8; inBytesToRead: UInt32; var outBytesRead: UInt32; var outFlags: SInt32): ComponentResult; external name '_RTPPBGetSampleData';
  1780. { UPP call backs }
  1781. const
  1782. uppRTPMPDataReleaseProcInfo = $000003C0;
  1783. uppRTPPBCallbackProcInfo = $00000FC0;
  1784. {
  1785. * NewRTPMPDataReleaseUPP()
  1786. *
  1787. * Availability:
  1788. * Non-Carbon CFM: available as macro/inline
  1789. * CarbonLib: in CarbonLib 1.3 and later
  1790. * Mac OS X: in version 10.0 and later
  1791. }
  1792. function NewRTPMPDataReleaseUPP(userRoutine: RTPMPDataReleaseProcPtr): RTPMPDataReleaseUPP; external name '_NewRTPMPDataReleaseUPP'; { old name was NewRTPMPDataReleaseProc }
  1793. {
  1794. * NewRTPPBCallbackUPP()
  1795. *
  1796. * Availability:
  1797. * Non-Carbon CFM: available as macro/inline
  1798. * CarbonLib: in CarbonLib 1.3 and later
  1799. * Mac OS X: in version 10.0 and later
  1800. }
  1801. function NewRTPPBCallbackUPP(userRoutine: RTPPBCallbackProcPtr): RTPPBCallbackUPP; external name '_NewRTPPBCallbackUPP'; { old name was NewRTPPBCallbackProc }
  1802. {
  1803. * DisposeRTPMPDataReleaseUPP()
  1804. *
  1805. * Availability:
  1806. * Non-Carbon CFM: available as macro/inline
  1807. * CarbonLib: in CarbonLib 1.3 and later
  1808. * Mac OS X: in version 10.0 and later
  1809. }
  1810. procedure DisposeRTPMPDataReleaseUPP(userUPP: RTPMPDataReleaseUPP); external name '_DisposeRTPMPDataReleaseUPP';
  1811. {
  1812. * DisposeRTPPBCallbackUPP()
  1813. *
  1814. * Availability:
  1815. * Non-Carbon CFM: available as macro/inline
  1816. * CarbonLib: in CarbonLib 1.3 and later
  1817. * Mac OS X: in version 10.0 and later
  1818. }
  1819. procedure DisposeRTPPBCallbackUPP(userUPP: RTPPBCallbackUPP); external name '_DisposeRTPPBCallbackUPP';
  1820. {
  1821. * InvokeRTPMPDataReleaseUPP()
  1822. *
  1823. * Availability:
  1824. * Non-Carbon CFM: available as macro/inline
  1825. * CarbonLib: in CarbonLib 1.3 and later
  1826. * Mac OS X: in version 10.0 and later
  1827. }
  1828. procedure InvokeRTPMPDataReleaseUPP(var inData: UInt8; inRefCon: UnivPtr; userRoutine: RTPMPDataReleaseUPP); external name '_InvokeRTPMPDataReleaseUPP'; { old name was CallRTPMPDataReleaseProc }
  1829. {
  1830. * InvokeRTPPBCallbackUPP()
  1831. *
  1832. * Availability:
  1833. * Non-Carbon CFM: available as macro/inline
  1834. * CarbonLib: in CarbonLib 1.3 and later
  1835. * Mac OS X: in version 10.0 and later
  1836. }
  1837. procedure InvokeRTPPBCallbackUPP(inSelector: OSType; ioParams: UnivPtr; inRefCon: UnivPtr; userRoutine: RTPPBCallbackUPP); external name '_InvokeRTPPBCallbackUPP'; { old name was CallRTPPBCallbackProc }
  1838. {$ALIGN MAC68K}
  1839. end.