diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/QTStreamingComponents.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'common/quicktime_win32/QTStreamingComponents.h')
| -rw-r--r-- | common/quicktime_win32/QTStreamingComponents.h | 2606 |
1 files changed, 2606 insertions, 0 deletions
diff --git a/common/quicktime_win32/QTStreamingComponents.h b/common/quicktime_win32/QTStreamingComponents.h new file mode 100644 index 0000000..0ceed30 --- /dev/null +++ b/common/quicktime_win32/QTStreamingComponents.h @@ -0,0 +1,2606 @@ +/* + File: QTStreamingComponents.h + + Contains: QuickTime Interfaces. + + Version: QuickTime 7.3 + + Copyright: (c) 2007 (c) 1990-2007 by Apple Inc., all rights reserved + + Bugs?: For bug reports, consult the following page on + the World Wide Web: + + http://developer.apple.com/bugreporter/ + +*/ +#ifndef __QTSTREAMINGCOMPONENTS__ +#define __QTSTREAMINGCOMPONENTS__ + +#ifndef __COMPONENTS__ +#include <Components.h> +#endif + +#ifndef __MOVIES__ +#include <Movies.h> +#endif + +#ifndef __QUICKTIMESTREAMING__ +#include <QuickTimeStreaming.h> +#endif + + + + +#if PRAGMA_ONCE +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if PRAGMA_IMPORT +#pragma import on +#endif + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=mac68k +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(push, 2) +#elif PRAGMA_STRUCT_PACK + #pragma pack(2) +#endif + +/* QuickTime is not available to 64-bit clients */ + +#if !__LP64__ + +/*============================================================================ + Stream Sourcer +============================================================================*/ +enum { + kQTSSourcerType = FOUR_CHAR_CODE('srcr') +}; + +typedef ComponentInstance QTSSourcer; +enum { + kQTSSGChannelSourcerType = FOUR_CHAR_CODE('sgch'), + kQTSMovieTrackSourcerType = FOUR_CHAR_CODE('trak'), + kQTSPushDataSourcerType = FOUR_CHAR_CODE('push') +}; + +/* flags for sourcer data */ +enum { + kQTSSourcerDataFlag_SyncSample = 0x00000001, + kQTSPushDataSourcerFlag_SampleTimeIsValid = (long)0x80000000 +}; + + +enum { + kQTSSourcerInitParamsVersion1 = 1 +}; + +struct QTSSourcerInitParams { + SInt32 version; + SInt32 flags; + OSType dataType; + void * data; + UInt32 dataLength; +}; +typedef struct QTSSourcerInitParams QTSSourcerInitParams; +/* + * QTSNewSourcer() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSErr ) +QTSNewSourcer( + void * params, + const QTSSourcerInitParams * inInitParams, + SInt32 inFlags, + ComponentInstance * outSourcer); + + +/* info selectors for sourcers - get and set */ +enum { + kQTSInfo_Track = FOUR_CHAR_CODE('trak'), /* QTSTrackParams* */ + kQTSInfo_Loop = FOUR_CHAR_CODE('loop'), /* QTSLoopParams* */ + kQTSInfo_SourcerTiming = FOUR_CHAR_CODE('stim'), /* QTSSourcerTimingParams* */ + kQTSInfo_TargetFrameRate = FOUR_CHAR_CODE('tfps'), /* Fixed * in frames per second */ + kQTSInfo_PushData = FOUR_CHAR_CODE('push'), /* QTSPushDataParams* */ + kQTSInfo_SourcerCallbackProc = FOUR_CHAR_CODE('scbp'), /* QTSSourcerCallbackProcParams* */ + kQTSInfo_TargetDataRate = FOUR_CHAR_CODE('tdrt'), /* UInt32 * in bytes per second */ + kQTSInfo_AudioAutoGainOnOff = FOUR_CHAR_CODE('agc '), /* Boolean* - error if unavailable*/ + kQTSInfo_AudioGain = FOUR_CHAR_CODE('gain'), /* Fixed* kFixed1 is unity gain */ + kQTSInfo_CroppedInputRect = FOUR_CHAR_CODE('crpr'), /* Rect* - defined relative to kQTSInfo_FullInputRect below */ + kQTSInfo_SpatialSettings = FOUR_CHAR_CODE('sptl'), /* pointer to SCSpatialSettings struct*/ + kQTSInfo_TemporalSettings = FOUR_CHAR_CODE('tprl'), /* pointer to SCTemporalSettings struct*/ + kQTSInfo_DataRateSettings = FOUR_CHAR_CODE('drat'), /* pointer to SCDataRateSettings struct*/ + kQTSInfo_CodecFlags = FOUR_CHAR_CODE('cflg'), /* pointer to CodecFlags*/ + kQTSInfo_CodecSettings = FOUR_CHAR_CODE('cdec'), /* pointer to Handle*/ + kQTSInfo_ForceKeyValue = FOUR_CHAR_CODE('ksim'), /* pointer to long*/ + kQTSInfo_SoundSampleRate = FOUR_CHAR_CODE('ssrt'), /* pointer to UnsignedFixed*/ + kQTSInfo_SoundSampleSize = FOUR_CHAR_CODE('ssss'), /* pointer to short*/ + kQTSInfo_SoundChannelCount = FOUR_CHAR_CODE('sscc'), /* pointer to short*/ + kQTSInfo_SoundCompression = FOUR_CHAR_CODE('ssct'), /* pointer to OSType*/ + kQTSInfo_CompressionList = FOUR_CHAR_CODE('ctyl'), /* pointer to OSType Handle*/ + kQTSInfo_VideoHue = FOUR_CHAR_CODE('hue '), /* UInt16* */ + kQTSInfo_VideoSaturation = FOUR_CHAR_CODE('satr'), /* UInt16* */ + kQTSInfo_VideoContrast = FOUR_CHAR_CODE('trst'), /* UInt16* */ + kQTSInfo_VideoBrightness = FOUR_CHAR_CODE('brit'), /* UInt16* */ + kQTSInfo_VideoSharpness = FOUR_CHAR_CODE('shrp'), /* UInt16* */ + kQTSInfo_TimeScale = FOUR_CHAR_CODE('scal'), /* UInt32* */ + kQTSInfo_SGChannelDeviceName = FOUR_CHAR_CODE('innm'), /* Handle* */ + kQTSInfo_SGChannelDeviceList = FOUR_CHAR_CODE('srdl'), /* SGDeviceList* */ + kQTSInfo_SGChannelDeviceInput = FOUR_CHAR_CODE('sdii'), /* short* */ + kQTSInfo_SGChannelSettings = FOUR_CHAR_CODE('sesg'), /* QTSSGChannelSettingsParams */ + kQTSInfo_PreviewWhileRecordingMode = FOUR_CHAR_CODE('srpr'), /* Boolean* */ + kQTSInfo_CompressionParams = FOUR_CHAR_CODE('sccp') /* QTAtomContainer* */ +}; + +/* info selectors for sourcers - get only*/ +enum { + kQTSInfo_SGChannel = FOUR_CHAR_CODE('sgch'), /* SGChannel* */ + kQTSInfo_SGChannelInputName = FOUR_CHAR_CODE('srnm'), /* Handle* */ + kQTSInfo_FullInputRect = FOUR_CHAR_CODE('fulr') /* Rect* */ +}; + +/* loop flags */ +enum { + kQTSLoopFlag_Loop = 0x00000001 +}; + +enum { + kQTSLoopParamsVersion1 = 1 +}; + +struct QTSLoopParams { + SInt32 version; + SInt32 flags; + SInt32 loopFlags; + SInt32 flagsMask; + SInt32 numLoops; +}; +typedef struct QTSLoopParams QTSLoopParams; +enum { + kQTSTrackParamsVersion1 = 1 +}; + +struct QTSTrackParams { + SInt32 version; + SInt32 flags; + Track track; + TimeValue64 trackStartOffset; /* to start other than at the beginning otherwise set to 0*/ + TimeValue64 duration; /* to limit the duration otherwise set to 0*/ + QTSLoopParams * loopParams; /* set to NULL if not using; default is no looping */ +}; +typedef struct QTSTrackParams QTSTrackParams; +enum { + kQTSSourcerTimingParamsVersion1 = 1 +}; + +struct QTSSourcerTimingParams { + SInt32 version; + SInt32 flags; + TimeScale timeScale; + TimeValue64 presentationStartTime; + TimeValue64 presentationEndTime; + TimeValue64 presentationCurrentTime; + TimeValue64 localStartTime; + TimeValue64 localEndTime; + TimeValue64 localCurrentTime; +}; +typedef struct QTSSourcerTimingParams QTSSourcerTimingParams; +enum { + kQTSPushDataParamsVersion1 = 1 +}; + +enum { + kQTSPushDataFlag_SampleTimeIsValid = 0x00000001, + kQTSPushDataFlag_DurationIsValid = 0x00000002 +}; + +struct QTSPushDataParams { + SInt32 version; + SInt32 flags; + SampleDescriptionHandle sampleDescription; /* caller owns the handle */ + UInt32 sampleDescSeed; + TimeValue64 sampleTime; /* also set flag if you set this */ + TimeValue64 duration; /* also set flag if you set this */ + UInt32 dataLength; + void * dataPtr; /* this does not have to be a real macintosh Ptr */ +}; +typedef struct QTSPushDataParams QTSPushDataParams; +enum { + kQTSSourcerCallbackProcParamsVersion1 = 1 +}; + + +struct QTSSourcerCallbackProcParams { + SInt32 version; + SInt32 flags; + QTSNotificationUPP proc; + void * refCon; +}; +typedef struct QTSSourcerCallbackProcParams QTSSourcerCallbackProcParams; +/* track sourcer callback selectors*/ +enum { + kQTSSourcerCallback_Done = FOUR_CHAR_CODE('done') /* QTSSourcerDoneParams* */ +}; + + +/* push data sourcer callback selectors*/ +enum { + kQTSPushDataSourcerCallback_HasCharacteristic = 0x050D, /* QTSPushDataHasCharacteristicParams* */ + kQTSPushDataSourcerCallback_SetInfo = 0x0507, /* QTSPushDataInfoParams* */ + kQTSPushDataSourcerCallback_GetInfo = 0x0508 /* QTSPushDataInfoParams* */ +}; + +struct QTSPushDataHasCharacteristicParams { + SInt32 version; + SInt32 flags; + OSType characteristic; + Boolean returnedHasIt; + char reserved1; + char reserved2; + char reserved3; +}; +typedef struct QTSPushDataHasCharacteristicParams QTSPushDataHasCharacteristicParams; +struct QTSPushDataInfoParams { + SInt32 version; + SInt32 flags; + OSType selector; + void * ioParams; +}; +typedef struct QTSPushDataInfoParams QTSPushDataInfoParams; +enum { + kQTSSourcerDoneParamsVersion1 = 1 +}; + +struct QTSSourcerDoneParams { + SInt32 version; + SInt32 flags; + ComponentInstance sourcer; +}; +typedef struct QTSSourcerDoneParams QTSSourcerDoneParams; +struct QTSSGChannelSettingsParams { + UserData settings; + SInt32 flags; +}; +typedef struct QTSSGChannelSettingsParams QTSSGChannelSettingsParams; + +/*----------------------------------------- + Stream Sourcer Selectors +-----------------------------------------*/ +enum { + kQTSSourcerInitializeSelect = 0x0500, + kQTSSourcerSetEnableSelect = 0x0503, + kQTSSourcerGetEnableSelect = 0x0504, + kQTSSourcerSetInfoSelect = 0x0507, + kQTSSourcerGetInfoSelect = 0x0508, + kQTSSourcerSetTimeScaleSelect = 0x050E, + kQTSSourcerGetTimeScaleSelect = 0x050F, + kQTSSourcerIdleSelect = 0x0516 +}; + +/*----------------------------------------- + Stream Sourcer Prototypes +-----------------------------------------*/ +/* + * QTSSourcerInitialize() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 5.0.1 and later + * CarbonLib: in CarbonLib 1.6 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API( ComponentResult ) +QTSSourcerInitialize( + QTSSourcer inSourcer, + const QTSSourcerInitParams * inInitParams) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0500, 0x7000, 0xA82A); + + +/* + * QTSSourcerIdle() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( ComponentResult ) +QTSSourcerIdle( + QTSSourcer inSourcer, + const TimeValue64 * inTime, + SInt32 inFlags, + SInt32 * outFlags) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0516, 0x7000, 0xA82A); + + +/* + * QTSSourcerSetEnable() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( ComponentResult ) +QTSSourcerSetEnable( + QTSSourcer inSourcer, + Boolean inEnableMode, + SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0006, 0x0503, 0x7000, 0xA82A); + + +/* + * QTSSourcerGetEnable() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( ComponentResult ) +QTSSourcerGetEnable( + QTSSourcer inSourcer, + Boolean * outEnableMode, + SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0504, 0x7000, 0xA82A); + + +/* + * QTSSourcerSetTimeScale() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( ComponentResult ) +QTSSourcerSetTimeScale( + QTSSourcer inSourcer, + TimeScale inTimeScale) FIVEWORDINLINE(0x2F3C, 0x0004, 0x050E, 0x7000, 0xA82A); + + +/* + * QTSSourcerGetTimeScale() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( ComponentResult ) +QTSSourcerGetTimeScale( + QTSSourcer inSourcer, + TimeScale * outTimeScale) FIVEWORDINLINE(0x2F3C, 0x0004, 0x050F, 0x7000, 0xA82A); + + +/* + * QTSSourcerSetInfo() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( ComponentResult ) +QTSSourcerSetInfo( + QTSSourcer inSourcer, + OSType inSelector, + void * ioParams) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0507, 0x7000, 0xA82A); + + +/* + * QTSSourcerGetInfo() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( ComponentResult ) +QTSSourcerGetInfo( + QTSSourcer inSourcer, + OSType inSelector, + void * ioParams) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0508, 0x7000, 0xA82A); + + + +enum { + kQTSInfo_InputDeviceName = FOUR_CHAR_CODE('innm'), /* Handle* */ + kQTSInfo_InputSourceName = FOUR_CHAR_CODE('srnm') /* Handle* */ +}; + + +/*============================================================================ + Stream Handler +============================================================================*/ + +/* + Server edits are only valid for the current chunk +*/ +struct SHServerEditParameters { + UInt32 version; + Fixed editRate; + TimeValue64 dataStartTime_mediaAxis; + TimeValue64 dataEndTime_mediaAxis; +}; +typedef struct SHServerEditParameters SHServerEditParameters; +enum { + kSHNoChunkDispatchFlags = 0, + kSHChunkFlagSyncSample = 1 << 2, + kSHChunkFlagDataLoss = 1 << 4, + kSHChunkFlagExtended = 1 << 5 +}; + +struct SHChunkRecord { + UInt32 version; + long reserved1; + SInt32 flags; + UInt32 dataSize; + UInt8 * dataPtr; + long reserved2; + long reserved3; + TimeValue64 presentationTime; + + long reserved4; + long reserved5; + const SHServerEditParameters * serverEditParameters; + long reserved6; + long reserved7; +}; +typedef struct SHChunkRecord SHChunkRecord; +enum { + kSHNumExtendedDataLongs = 10 +}; + +enum { + kSHExtendedChunkFlag_HasSampleCount = 1 << 0, + kSHExtendedChunkFlag_HasFrameLengths = 1 << 1 +}; + +struct SHExtendedChunkRecord { + SHChunkRecord chunk; + SInt32 extendedFlags; + SInt32 extendedData[10]; +}; +typedef struct SHExtendedChunkRecord SHExtendedChunkRecord; + +/*============================================================================ + RTP Components +============================================================================*/ + +typedef UInt32 RTPSSRC; +enum { + kRTPInvalidSSRC = 0 +}; + + +/* RTP standard content encodings for audio */ +enum { + kRTPPayload_PCMU = 0, /* 8kHz PCM mu-law mono */ + kRTPPayload_1016 = 1, /* 8kHz CELP (Fed Std 1016) mono */ + kRTPPayload_G721 = 2, /* 8kHz G.721 ADPCM mono */ + kRTPPayload_GSM = 3, /* 8kHz GSM mono */ + kRTPPayload_G723 = 4, /* 8kHz G.723 ADPCM mono */ + kRTPPayload_DVI_8 = 5, /* 8kHz Intel DVI ADPCM mono */ + kRTPPayload_DVI_16 = 6, /* 16kHz Intel DVI ADPCM mono */ + kRTPPayload_LPC = 7, /* 8kHz LPC */ + kRTPPayload_PCMA = 8, /* 8kHz PCM a-law mono */ + kRTPPayload_L16_44_2 = 10, /* 44.1kHz 16-bit linear stereo */ + kRTPPayload_L16_44_1 = 11, /* 44.1kHz 16-bit linear mono */ + kRTPPayload_PureVoice = 12, /* 8kHz PureVoice mono (QCELP) */ + kRTPPayload_MPEGAUDIO = 14, /* MPEG I and II audio */ + kRTPPayload_DVI_11 = 16, /* 11kHz Intel DVI ADPCM mono */ + kRTPPayload_DVI_22 = 17 /* 22kHz Intel DVI ADPCM mono */ +}; + +/* RTP standard content encodings for video */ +enum { + kRTPPayload_CELLB = 25, /* Sun CellB */ + kRTPPayload_JPEG = 26, /* JPEG */ + kRTPPayload_CUSEEME = 27, /* Cornell CU-SeeMe */ + kRTPPayload_NV = 28, /* Xerox PARC nv */ + kRTPPayload_PICWIN = 29, /* BBN Picture Window */ + kRTPPayload_CPV = 30, /* Bolter CPV */ + kRTPPayload_H261 = 31, /* CCITT H.261 */ + kRTPPayload_MPEGVIDEO = 32, /* MPEG I and II video */ + kRTPPayload_H263 = 34 /* CCITT H.263 */ +}; + +/* Other RTP standard content encodings */ +enum { + kRTPPayload_MPEG2T = 33 /* MPEG 2 Transport */ +}; + +/* Dynamic encodings */ +enum { + kRTPPayload_FirstDynamic = 96, + kRTPPayload_LastDynamic = 127, + kRTPPayload_Unknown = 0xFF +}; + + + +/* +----------------------------------------- + RTP Info selectors +----------------------------------------- +*/ +/* ----- these are get and set ----- */ +enum { + kRTPInfo_SSRC = FOUR_CHAR_CODE('ssrc'), /* UInt32* */ + kRTPInfo_NextSeqNum = FOUR_CHAR_CODE('rnsn') /* UInt16* */ +}; + +/*----------------------------------------- + RTP Statistics +-----------------------------------------*/ +enum { + kRTPTotalReceivedPktsStat = FOUR_CHAR_CODE('trcp'), + kRTPTotalLostPktsStat = FOUR_CHAR_CODE('tlsp'), + kRTPTotalProcessedPktsStat = FOUR_CHAR_CODE('tprp'), + kRTPTotalDroppedPktsStat = FOUR_CHAR_CODE('tdrp'), + kRTPBadHeaderDroppedPktsStat = FOUR_CHAR_CODE('bhdp'), + kRTPOurHeaderDroppedPktsStat = FOUR_CHAR_CODE('ohdp'), + kRTPNotReceivingSenderDroppedPktsStat = FOUR_CHAR_CODE('nsdp'), + kRTPNotProcessingDroppedPktsStat = FOUR_CHAR_CODE('npdp'), + kRTPBadSeqDroppedPktsStat = FOUR_CHAR_CODE('bsdp'), + kRTPArriveTooLatePktsStat = FOUR_CHAR_CODE('artl'), + kRTPWaitForSeqDroppedPktsStat = FOUR_CHAR_CODE('wsdp'), + kRTPBadStateDroppedPktsStat = FOUR_CHAR_CODE('stdp'), + kRTPBadPayloadDroppedPktsStat = FOUR_CHAR_CODE('bpdp'), + kRTPNoTimeScaleDroppedPktsStat = FOUR_CHAR_CODE('ntdp'), + kRTPDupSeqNumDroppedPktsStat = FOUR_CHAR_CODE('dsdp'), + kRTPLostPktsPercentStat = FOUR_CHAR_CODE('lspp'), + kRTPDroppedPktsPercentStat = FOUR_CHAR_CODE('dppp'), + kRTPTotalUnprocessedPktsPercentStat = FOUR_CHAR_CODE('tupp'), + kRTPRTCPDataRateStat = FOUR_CHAR_CODE('rrcd'), + kRTPPayloadIDStat = FOUR_CHAR_CODE('rpid'), + kRTPPayloadNameStat = FOUR_CHAR_CODE('rpnm'), + kRTPNumPktsInQueueStat = FOUR_CHAR_CODE('rnpq'), + kRTPTotalPktsInQueueStat = FOUR_CHAR_CODE('rtpq'), + kRTPTotalOutOfOrderPktsStat = FOUR_CHAR_CODE('rtoo'), + kRTPRetransmissionStat = FOUR_CHAR_CODE('rrtx') +}; + + +/*----------------------------------------- + Payload Info +-----------------------------------------*/ +enum { + kRTPPayloadSpeedTag = FOUR_CHAR_CODE('sped'), /* 0-255, 255 is fastest*/ + kRTPPayloadLossRecoveryTag = FOUR_CHAR_CODE('loss'), /* 0-255, 0 can't handle any loss, 128 can handle 50% packet loss*/ + kRTPPayloadConformanceTag = FOUR_CHAR_CODE('conf') /* more than one of these can be present*/ +}; + +struct RTPPayloadCharacteristic { + OSType tag; + long value; +}; +typedef struct RTPPayloadCharacteristic RTPPayloadCharacteristic; +/* + pass RTPPayloadSortRequest to QTSFindMediaPacketizer or QTSFindMediaPacketizerForTrack. + define the characteristics to sort by. tag is key to sort on. value is positive for ascending + sort (low value first), negative for descending sort (high value first). +*/ +struct RTPPayloadSortRequest { + long characteristicCount; + RTPPayloadCharacteristic characteristic[1]; /* tag is key to sort on, value is + for ascending, - for descending*/ +}; +typedef struct RTPPayloadSortRequest RTPPayloadSortRequest; +typedef RTPPayloadSortRequest * RTPPayloadSortRequestPtr; +/* flags for RTPPayloadInfo */ +enum { + kRTPPayloadTypeStaticFlag = 0x00000001, + kRTPPayloadTypeDynamicFlag = 0x00000002 +}; + +struct RTPPayloadInfo { + long payloadFlags; + UInt8 payloadID; + char reserved1; + char reserved2; + char reserved3; + char payloadName[1]; +}; +typedef struct RTPPayloadInfo RTPPayloadInfo; +typedef RTPPayloadInfo * RTPPayloadInfoPtr; +typedef RTPPayloadInfoPtr * RTPPayloadInfoHandle; +/*============================================================================ + RTP Reassembler +============================================================================*/ +typedef ComponentInstance RTPReassembler; +enum { + kRTPReassemblerType = FOUR_CHAR_CODE('rtpr') +}; + +enum { + kRTPBaseReassemblerType = FOUR_CHAR_CODE('gnrc'), + kRTP261ReassemblerType = FOUR_CHAR_CODE('h261'), + kRTP263ReassemblerType = FOUR_CHAR_CODE('h263'), + kRTP263PlusReassemblerType = FOUR_CHAR_CODE('263+'), + kRTPAudioReassemblerType = FOUR_CHAR_CODE('soun'), + kRTPQTReassemblerType = FOUR_CHAR_CODE('qtim'), + kRTPPureVoiceReassemblerType = FOUR_CHAR_CODE('Qclp'), + kRTPJPEGReassemblerType = FOUR_CHAR_CODE('jpeg'), + kRTPQDesign2ReassemblerType = FOUR_CHAR_CODE('QDM2'), + kRTPSorensonReassemblerType = FOUR_CHAR_CODE('SVQ1'), + kRTPMP3ReassemblerType = FOUR_CHAR_CODE('mp3 '), + kRTPMPEG4AudioReassemblerType = FOUR_CHAR_CODE('mp4a'), + kRTPMPEG4VideoReassemblerType = FOUR_CHAR_CODE('mp4v'), + kRTPAMRReassemblerType = FOUR_CHAR_CODE('amr ') +}; + +struct RTPRssmInitParams { + RTPSSRC ssrc; + UInt8 payloadType; + UInt8 reserved1; + UInt8 reserved2; + UInt8 reserved3; + TimeBase timeBase; + TimeScale timeScale; +}; +typedef struct RTPRssmInitParams RTPRssmInitParams; +struct RTPDescParams { + QTAtomContainer container; + QTAtom presentationParentAtom; + QTAtom streamParentAtom; +}; +typedef struct RTPDescParams RTPDescParams; +struct RTPRssmMoreInitParams { + RTPRssmInitParams initParams; + SInt32 version; + RTPDescParams desc; +}; +typedef struct RTPRssmMoreInitParams RTPRssmMoreInitParams; +enum { + kRTPRssmMoreInitParamsVersion1 = 1 +}; + + +/* get/set info selectors*/ +enum { + kRTPRssmInfo_MoreInitParams = FOUR_CHAR_CODE('rrmi') +}; + + +struct RTPRssmPacket { + struct RTPRssmPacket * next; + struct RTPRssmPacket * prev; + QTSStreamBuffer * streamBuffer; + Boolean paramsFilledIn; + UInt8 reserved; + UInt16 sequenceNum; + UInt32 transportHeaderLength; /* filled in by base*/ + UInt32 payloadHeaderLength; /* derived adjusts this */ + UInt32 dataLength; + SHServerEditParameters serverEditParams; + TimeValue64 timeStamp; /* lower 32 bits is original rtp timestamp*/ + SInt32 chunkFlags; /* these are or'd together*/ + SInt32 flags; + +}; +typedef struct RTPRssmPacket RTPRssmPacket; +/* flags for RTPRssmPacket struct*/ +enum { + kRTPRssmPacketHasMarkerBitSet = 0x00000001, + kRTPRssmPacketHasServerEditFlag = 0x00010000 +}; + +/* flags for RTPRssmSendStreamBufferRange*/ +enum { + kRTPRssmCanRefStreamBuffer = 0x00000001 +}; + +/* flags for RTPRssmSendPacketList*/ +enum { + kRTPRssmLostSomePackets = 0x00000001 +}; + +/* flags for RTPRssmSetFlags*/ +enum { + kRTPRssmEveryPacketAChunkFlag = 0x00000001, + kRTPRssmQueueAndUseMarkerBitFlag = 0x00000002, + kRTPRssmTrackLostPacketsFlag = 0x00010000, + kRTPRssmNoReorderingRequiredFlag = 0x00020000 +}; + + +struct RTPSendStreamBufferRangeParams { + QTSStreamBuffer * streamBuffer; + TimeValue64 presentationTime; + UInt32 chunkStartPosition; + UInt32 numDataBytes; + SInt32 chunkFlags; + SInt32 flags; + const SHServerEditParameters * serverEditParams; /* NULL if no edit*/ +}; +typedef struct RTPSendStreamBufferRangeParams RTPSendStreamBufferRangeParams; +/* characteristics*/ +enum { + kRTPCharacteristic_RequiresOrderedPackets = FOUR_CHAR_CODE('rrop'), + kRTPCharacteristic_TimeStampsNotMonoIncreasing = FOUR_CHAR_CODE('tsmi') +}; + + +enum { + kRTPReassemblerInfoResType = FOUR_CHAR_CODE('rsmi') +}; + +struct RTPReassemblerInfo { + long characteristicCount; + RTPPayloadCharacteristic characteristic[1]; + + /* after the last characteristic, the payload name (defined by the MediaPacketizerPayloadInfo*/ + /* structure) is present. */ +}; +typedef struct RTPReassemblerInfo RTPReassemblerInfo; +typedef RTPReassemblerInfo * RTPReassemblerInfoPtr; +typedef RTPReassemblerInfoPtr * RTPReassemblerInfoHandle; +#define RTPReassemblerInfoToPayloadInfo(_rsmi) ((RTPPayloadInfoPtr)(&((_rsmi)->characteristic[(_rsmi)->characteristicCount]))) +/* RTPReassemblerInfoElement structs are padded to 32 bits */ +enum { + kRTPReassemblerInfoPadUpToBytes = 4 +}; + + +/* + * QTSFindReassemblerForPayloadID() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API_C( OSErr ) +QTSFindReassemblerForPayloadID( + UInt8 inPayloadID, + RTPPayloadSortRequest * inSortInfo, + QTAtomContainer * outReassemblerList); + + +/* + * QTSFindReassemblerForPayloadName() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API_C( OSErr ) +QTSFindReassemblerForPayloadName( + const char * inPayloadName, + RTPPayloadSortRequest * inSortInfo, + QTAtomContainer * outReassemblerList); + + +/*----------------------------------------- + RTP Reassembler Selectors +-----------------------------------------*/ +enum { + kRTPRssmSetCapabilitiesSelect = 0x0100, + kRTPRssmGetCapabilitiesSelect = 0x0101, + kRTPRssmSetPayloadHeaderLengthSelect = 0x0102, + kRTPRssmGetPayloadHeaderLengthSelect = 0x0103, + kRTPRssmSetTimeScaleSelect = 0x0104, + kRTPRssmGetTimeScaleSelect = 0x0105, + kRTPRssmNewStreamHandlerSelect = 0x0106, + kRTPRssmSetStreamHandlerSelect = 0x0107, + kRTPRssmGetStreamHandlerSelect = 0x0108, + kRTPRssmSendStreamHandlerChangedSelect = 0x0109, + kRTPRssmSetSampleDescriptionSelect = 0x010A, + kRTPRssmGetChunkAndIncrRefCountSelect = 0x010D, + kRTPRssmSendChunkAndDecrRefCountSelect = 0x010E, + kRTPRssmSendLostChunkSelect = 0x010F, + kRTPRssmSendStreamBufferRangeSelect = 0x0110, + kRTPRssmClearCachedPackets = 0x0111, + kRTPRssmFillPacketListParamsSelect = 0x0113, + kRTPRssmReleasePacketListSelect = 0x0114, + kRTPRssmIncrChunkRefCountSelect = 0x0115, + kRTPRssmDecrChunkRefCountSelect = 0x0116, + kRTPRssmGetExtChunkAndIncrRefCountSelect = 0x0117, + kRTPRssmInitializeSelect = 0x0500, + kRTPRssmHandleNewPacketSelect = 0x0501, + kRTPRssmComputeChunkSizeSelect = 0x0502, + kRTPRssmAdjustPacketParamsSelect = 0x0503, + kRTPRssmCopyDataToChunkSelect = 0x0504, + kRTPRssmSendPacketListSelect = 0x0505, + kRTPRssmGetTimeScaleFromPacketSelect = 0x0506, + kRTPRssmSetInfoSelect = 0x0509, + kRTPRssmGetInfoSelect = 0x050A, + kRTPRssmHasCharacteristicSelect = 0x050B, + kRTPRssmResetSelect = 0x050C +}; + +/*----------------------------------------- + RTP Reassembler functions - base to derived +-----------------------------------------*/ + +/* + * RTPRssmInitialize() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmInitialize( + RTPReassembler rtpr, + RTPRssmInitParams * inInitParams) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0500, 0x7000, 0xA82A); + + +/* + * RTPRssmHandleNewPacket() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmHandleNewPacket( + RTPReassembler rtpr, + QTSStreamBuffer * inStreamBuffer, + SInt32 inNumWraparounds) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0501, 0x7000, 0xA82A); + + +/* + * RTPRssmComputeChunkSize() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmComputeChunkSize( + RTPReassembler rtpr, + RTPRssmPacket * inPacketListHead, + SInt32 inFlags, + UInt32 * outChunkDataSize) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0502, 0x7000, 0xA82A); + + +/* + * RTPRssmAdjustPacketParams() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmAdjustPacketParams( + RTPReassembler rtpr, + RTPRssmPacket * inPacket, + SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0503, 0x7000, 0xA82A); + + +/* + * RTPRssmCopyDataToChunk() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmCopyDataToChunk( + RTPReassembler rtpr, + RTPRssmPacket * inPacketListHead, + UInt32 inMaxChunkDataSize, + SHChunkRecord * inChunk, + SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0504, 0x7000, 0xA82A); + + +/* + * RTPRssmSendPacketList() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmSendPacketList( + RTPReassembler rtpr, + RTPRssmPacket * inPacketListHead, + const TimeValue64 * inLastChunkPresentationTime, + SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0505, 0x7000, 0xA82A); + + +/* + * RTPRssmGetTimeScaleFromPacket() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmGetTimeScaleFromPacket( + RTPReassembler rtpr, + QTSStreamBuffer * inStreamBuffer, + TimeScale * outTimeScale) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0506, 0x7000, 0xA82A); + + +/* + * RTPRssmSetInfo() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmSetInfo( + RTPReassembler rtpr, + OSType inSelector, + void * ioParams) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0509, 0x7000, 0xA82A); + + +/* + * RTPRssmGetInfo() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmGetInfo( + RTPReassembler rtpr, + OSType inSelector, + void * ioParams) FIVEWORDINLINE(0x2F3C, 0x0008, 0x050A, 0x7000, 0xA82A); + + +/* + * RTPRssmHasCharacteristic() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmHasCharacteristic( + RTPReassembler rtpr, + OSType inCharacteristic, + Boolean * outHasIt) FIVEWORDINLINE(0x2F3C, 0x0008, 0x050B, 0x7000, 0xA82A); + + +/* + * RTPRssmReset() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmReset( + RTPReassembler rtpr, + SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x050C, 0x7000, 0xA82A); + + +/*----------------------------------------- + RTP Reassembler functions - derived to base +-----------------------------------------*/ +/* ----- setup*/ +/* + * RTPRssmSetCapabilities() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmSetCapabilities( + RTPReassembler rtpr, + SInt32 inFlags, + SInt32 inFlagsMask) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0100, 0x7000, 0xA82A); + + +/* + * RTPRssmGetCapabilities() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmGetCapabilities( + RTPReassembler rtpr, + SInt32 * outFlags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0101, 0x7000, 0xA82A); + + +/* + * RTPRssmSetPayloadHeaderLength() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmSetPayloadHeaderLength( + RTPReassembler rtpr, + UInt32 inPayloadHeaderLength) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0102, 0x7000, 0xA82A); + + +/* + * RTPRssmGetPayloadHeaderLength() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmGetPayloadHeaderLength( + RTPReassembler rtpr, + UInt32 * outPayloadHeaderLength) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0103, 0x7000, 0xA82A); + + +/* + * RTPRssmSetTimeScale() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmSetTimeScale( + RTPReassembler rtpr, + TimeScale inSHTimeScale) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0104, 0x7000, 0xA82A); + + +/* + * RTPRssmGetTimeScale() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmGetTimeScale( + RTPReassembler rtpr, + TimeScale * outSHTimeScale) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0105, 0x7000, 0xA82A); + + +/* + * RTPRssmNewStreamHandler() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmNewStreamHandler( + RTPReassembler rtpr, + OSType inSHType, + SampleDescriptionHandle inSampleDescription, + TimeScale inSHTimeScale, + ComponentInstance * outHandler) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0106, 0x7000, 0xA82A); + + +/* + * RTPRssmSetStreamHandler() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmSetStreamHandler( + RTPReassembler rtpr, + ComponentInstance inStreamHandler) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0107, 0x7000, 0xA82A); + + +/* + * RTPRssmGetStreamHandler() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmGetStreamHandler( + RTPReassembler rtpr, + ComponentInstance * outStreamHandler) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0108, 0x7000, 0xA82A); + + + +/* + * RTPRssmSendStreamHandlerChanged() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmSendStreamHandlerChanged(RTPReassembler rtpr) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0109, 0x7000, 0xA82A); + + +/* + * RTPRssmSetSampleDescription() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmSetSampleDescription( + RTPReassembler rtpr, + SampleDescriptionHandle inSampleDescription) FIVEWORDINLINE(0x2F3C, 0x0004, 0x010A, 0x7000, 0xA82A); + + +/* ----- manually sending chunks*/ +/* + * RTPRssmGetChunkAndIncrRefCount() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmGetChunkAndIncrRefCount( + RTPReassembler rtpr, + UInt32 inChunkDataSize, + const TimeValue64 * inChunkPresentationTime, + SHChunkRecord ** outChunk) FIVEWORDINLINE(0x2F3C, 0x000C, 0x010D, 0x7000, 0xA82A); + + +/* + * RTPRssmGetExtChunkAndIncrRefCount() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 6.0 and later + * CarbonLib: in CarbonLib 1.6 and later + * Mac OS X: in version 10.2 and later + * Windows: in qtmlClient.lib 6.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmGetExtChunkAndIncrRefCount( + RTPReassembler rtpr, + UInt32 inChunkDataSize, + const TimeValue64 * inChunkPresentationTime, + SInt32 inFlags, + SHExtendedChunkRecord ** outChunk) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0117, 0x7000, 0xA82A); + + +/* + * RTPRssmSendChunkAndDecrRefCount() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmSendChunkAndDecrRefCount( + RTPReassembler rtpr, + SHChunkRecord * inChunk, + const SHServerEditParameters * inServerEdit) FIVEWORDINLINE(0x2F3C, 0x0008, 0x010E, 0x7000, 0xA82A); + + +/* + * RTPRssmSendLostChunk() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmSendLostChunk( + RTPReassembler rtpr, + const TimeValue64 * inChunkPresentationTime) FIVEWORDINLINE(0x2F3C, 0x0004, 0x010F, 0x7000, 0xA82A); + + +/* + * RTPRssmSendStreamBufferRange() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmSendStreamBufferRange( + RTPReassembler rtpr, + RTPSendStreamBufferRangeParams * inParams) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0110, 0x7000, 0xA82A); + + +/* + * RTPRssmClearCachedPackets() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmClearCachedPackets( + RTPReassembler rtpr, + SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0111, 0x7000, 0xA82A); + + +/* + * RTPRssmFillPacketListParams() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmFillPacketListParams( + RTPReassembler rtpr, + RTPRssmPacket * inPacketListHead, + SInt32 inNumWraparounds, + SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0113, 0x7000, 0xA82A); + + +/* + * RTPRssmReleasePacketList() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmReleasePacketList( + RTPReassembler rtpr, + RTPRssmPacket * inPacketListHead) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0114, 0x7000, 0xA82A); + + +/* + * RTPRssmIncrChunkRefCount() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmIncrChunkRefCount( + RTPReassembler rtpr, + SHChunkRecord * inChunk) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0115, 0x7000, 0xA82A); + + +/* + * RTPRssmDecrChunkRefCount() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPRssmDecrChunkRefCount( + RTPReassembler rtpr, + SHChunkRecord * inChunk) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0116, 0x7000, 0xA82A); + + +/*============================================================================ + RTP Media Packetizer +============================================================================*/ +enum { + kRTPMediaPacketizerType = FOUR_CHAR_CODE('rtpm') +}; + +typedef ComponentInstance RTPMediaPacketizer; +enum { + kRTPBaseMediaPacketizerType = FOUR_CHAR_CODE('gnrc'), + kRTP261MediaPacketizerType = FOUR_CHAR_CODE('h261'), + kRTP263PlusMediaPacketizerType = FOUR_CHAR_CODE('263+'), + kRTPAudioMediaPacketizerType = FOUR_CHAR_CODE('soun'), + kRTPQTMediaPacketizerType = FOUR_CHAR_CODE('qtim'), + kRTPPureVoiceMediaPacketizerType = FOUR_CHAR_CODE('Qclp'), + kRTPJPEGMediaPacketizerType = FOUR_CHAR_CODE('jpeg'), + kRTPQDesign2MediaPacketizerType = FOUR_CHAR_CODE('QDM2'), + kRTPSorensonMediaPacketizerType = FOUR_CHAR_CODE('SVQ1'), + kRTPMP3MediaPacketizerType = FOUR_CHAR_CODE('mp3 '), + kRTPMPEG4AudioMediaPacketizerType = FOUR_CHAR_CODE('mp4a'), + kRTPMPEG4VideoMediaPacketizerType = FOUR_CHAR_CODE('mp4v'), + kRTPAMRMediaPacketizerType = FOUR_CHAR_CODE('amr ') +}; + +typedef UInt32 RTPMPSampleRef; +typedef CALLBACK_API( void , RTPMPDataReleaseProcPtr )(UInt8 *inData, void *inRefCon); +typedef STACK_UPP_TYPE(RTPMPDataReleaseProcPtr) RTPMPDataReleaseUPP; +enum { + kMediaPacketizerCanPackEditRate = 1 << 0, + kMediaPacketizerCanPackLayer = 1 << 1, + kMediaPacketizerCanPackVolume = 1 << 2, + kMediaPacketizerCanPackBalance = 1 << 3, + kMediaPacketizerCanPackGraphicsMode = 1 << 4, + kMediaPacketizerCanPackEmptyEdit = 1 << 5 +}; + + +struct MediaPacketizerRequirements { + OSType mediaType; /* media type supported (0 for all)*/ + OSType dataFormat; /* data format (e.g., compression) supported (0 for all)*/ + UInt32 capabilityFlags; /* ability to handle non-standard track characteristics*/ + UInt8 canPackMatrixType; /* can pack any matrix type up to this (identityMatrixType for identity only)*/ + UInt8 reserved1; + UInt8 reserved2; + UInt8 reserved3; +}; +typedef struct MediaPacketizerRequirements MediaPacketizerRequirements; +typedef MediaPacketizerRequirements * MediaPacketizerRequirementsPtr; +struct MediaPacketizerInfo { + OSType mediaType; /* media type supported (0 for all)*/ + OSType dataFormat; /* data format (e.g., compression) supported (0 for all)*/ + OSType vendor; /* manufacturer of this packetizer (e.g., 'appl' for Apple)*/ + UInt32 capabilityFlags; /* ability to handle non-standard track characteristics*/ + UInt8 canPackMatrixType; /* can pack any matrix type up to this (identityMatrixType for identity only)*/ + UInt8 reserved1; + UInt8 reserved2; + UInt8 reserved3; + long characteristicCount; + RTPPayloadCharacteristic characteristic[1]; + + /* after the last characteristic, the payload name (defined by the RTPPayloadInfo*/ + /* structure) is present. */ +}; +typedef struct MediaPacketizerInfo MediaPacketizerInfo; +typedef MediaPacketizerInfo * MediaPacketizerInfoPtr; +typedef MediaPacketizerInfoPtr * MediaPacketizerInfoHandle; +#define MediaPacketizerInfoToPayloadInfo(_mpi) ((RTPPayloadInfoPtr)(&((_mpi)->characteristic[(_mpi)->characteristicCount]))) +/* MediaPacketizerInfo structs are padded to 32 bits */ +enum { + kMediaPacketizerInfoPadUpToBytes = 4 +}; + +enum { + kRTPMediaPacketizerInfoRezType = FOUR_CHAR_CODE('pcki') +}; + + +/* + * QTSFindMediaPacketizer() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API_C( OSErr ) +QTSFindMediaPacketizer( + MediaPacketizerRequirementsPtr inPacketizerinfo, + SampleDescriptionHandle inSampleDescription, + RTPPayloadSortRequestPtr inSortInfo, + QTAtomContainer * outPacketizerList); + + +/* + * QTSFindMediaPacketizerForTrack() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API_C( OSErr ) +QTSFindMediaPacketizerForTrack( + Track inTrack, + long inSampleDescriptionIndex, + RTPPayloadSortRequestPtr inSortInfo, + QTAtomContainer * outPacketizerList); + + +/* + * QTSFindMediaPacketizerForPayloadID() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API_C( OSErr ) +QTSFindMediaPacketizerForPayloadID( + long payloadID, + RTPPayloadSortRequestPtr inSortInfo, + QTAtomContainer * outPacketizerList); + + +/* + * QTSFindMediaPacketizerForPayloadName() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API_C( OSErr ) +QTSFindMediaPacketizerForPayloadName( + const char * payloadName, + RTPPayloadSortRequestPtr inSortInfo, + QTAtomContainer * outPacketizerList); + + +/* flags for RTPMPInitialize*/ +enum { + kRTPMPRealtimeModeFlag = 0x00000001 +}; + +/* flags for RTPMPSampleDataParams*/ +enum { + kRTPMPSyncSampleFlag = 0x00000001, + kRTPMPRespectDurationFlag = 0x00000002 +}; + +struct RTPMPSampleDataParams { + UInt32 version; + UInt32 timeStamp; + UInt32 duration; /* 0 = unknown duration*/ + UInt32 playOffset; + Fixed playRate; + SInt32 flags; + UInt32 sampleDescSeed; + Handle sampleDescription; + RTPMPSampleRef sampleRef; + UInt32 dataLength; + const UInt8 * data; + RTPMPDataReleaseUPP releaseProc; + void * refCon; +}; +typedef struct RTPMPSampleDataParams RTPMPSampleDataParams; +/* out flags for idle, RTPMPSetSampleData, and RTPMPFlush*/ +enum { + kRTPMPStillProcessingData = 0x00000001 /* not done with data you've got*/ +}; + +struct RTPMPPayloadTypeParams { + UInt32 flags; + UInt32 payloadNumber; + short nameLength; /* in: size of payloadName buffer (counting null terminator) -- this will be reset to needed length and paramErr returned if too small */ + char * payloadName; /* caller must provide buffer */ +}; +typedef struct RTPMPPayloadTypeParams RTPMPPayloadTypeParams; +/*----------------------------------------- + RTP Media Packetizer Info selectors +-----------------------------------------*/ +/* info selectors - get only */ +enum { + kRTPMPPayloadTypeInfo = FOUR_CHAR_CODE('rtpp'), /* RTPMPPayloadTypeParams* */ + kRTPMPRTPTimeScaleInfo = FOUR_CHAR_CODE('rtpt'), /* TimeScale* */ + kRTPMPRequiredSampleDescriptionInfo = FOUR_CHAR_CODE('sdsc'), /* SampleDescriptionHandle* */ + kRTPMPMinPayloadSize = FOUR_CHAR_CODE('mins'), /* UInt32* in bytes, does not include rtp header; default is 0 */ + kRTPMPMinPacketDuration = FOUR_CHAR_CODE('mind'), /* UInt3* in milliseconds; default is no min required */ + kRTPMPSuggestedRepeatPktCountInfo = FOUR_CHAR_CODE('srpc'), /* UInt32* */ + kRTPMPSuggestedRepeatPktSpacingInfo = FOUR_CHAR_CODE('srps'), /* UInt32* in milliseconds */ + kRTPMPMaxPartialSampleSizeInfo = FOUR_CHAR_CODE('mpss'), /* UInt32* in bytes */ + kRTPMPPreferredBufferDelayInfo = FOUR_CHAR_CODE('prbd'), /* UInt32* in milliseconds */ + kRTPMPPayloadNameInfo = FOUR_CHAR_CODE('name'), /* StringPtr */ + kRTPInfo_FormatString = FOUR_CHAR_CODE('fmtp') /* char **, caller allocates ptr, callee disposes */ +}; + +/*----------------------------------------- + RTP Media Packetizer Characteristics +-----------------------------------------*/ +/* also supports relevant ones in Movies.h and QTSToolbox.h */ +enum { + kRTPMPNoSampleDataRequiredCharacteristic = FOUR_CHAR_CODE('nsdr'), + kRTPMPHasUserSettingsDialogCharacteristic = FOUR_CHAR_CODE('sdlg'), + kRTPMPPrefersReliableTransportCharacteristic = FOUR_CHAR_CODE('rely'), + kRTPMPRequiresOutOfBandDimensionsCharacteristic = FOUR_CHAR_CODE('robd'), + kRTPMPReadsPartialSamplesCharacteristic = FOUR_CHAR_CODE('rpsp') +}; + +/*----------------------------------------- + RTP Media Packetizer selectors +-----------------------------------------*/ +enum { + kRTPMPInitializeSelect = 0x0500, + kRTPMPPreflightMediaSelect = 0x0501, + kRTPMPIdleSelect = 0x0502, + kRTPMPSetSampleDataSelect = 0x0503, + kRTPMPFlushSelect = 0x0504, + kRTPMPResetSelect = 0x0505, + kRTPMPSetInfoSelect = 0x0506, + kRTPMPGetInfoSelect = 0x0507, + kRTPMPSetTimeScaleSelect = 0x0508, + kRTPMPGetTimeScaleSelect = 0x0509, + kRTPMPSetTimeBaseSelect = 0x050A, + kRTPMPGetTimeBaseSelect = 0x050B, + kRTPMPHasCharacteristicSelect = 0x050C, + kRTPMPSetPacketBuilderSelect = 0x050E, + kRTPMPGetPacketBuilderSelect = 0x050F, + kRTPMPSetMediaTypeSelect = 0x0510, + kRTPMPGetMediaTypeSelect = 0x0511, + kRTPMPSetMaxPacketSizeSelect = 0x0512, + kRTPMPGetMaxPacketSizeSelect = 0x0513, + kRTPMPSetMaxPacketDurationSelect = 0x0514, + kRTPMPGetMaxPacketDurationSelect = 0x0515, /* for export component and apps who want to*/ + /* access dialogs for Media-specific settings*/ + /* (such as Pure Voice interleave factor)*/ + kRTPMPDoUserDialogSelect = 0x0516, + kRTPMPSetSettingsFromAtomContainerAtAtomSelect = 0x0517, + kRTPMPGetSettingsIntoAtomContainerAtAtomSelect = 0x0518, + kRTPMPGetSettingsAsTextSelect = 0x0519, + kRTPMPGetSettingsSelect = 0x051C, + kRTPMPSetSettingsSelect = 0x051D +}; + +/*----------------------------------------- + RTP Media Packetizer functions +-----------------------------------------*/ + +/* + * RTPMPInitialize() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPInitialize( + RTPMediaPacketizer rtpm, + SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0500, 0x7000, 0xA82A); + + +/* return noErr if you can handle this media */ +/* + * RTPMPPreflightMedia() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPPreflightMedia( + RTPMediaPacketizer rtpm, + OSType inMediaType, + SampleDescriptionHandle inSampleDescription) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0501, 0x7000, 0xA82A); + + +/* + do work here if you need to - give up time periodically + if you're doing time consuming operations +*/ +/* + * RTPMPIdle() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPIdle( + RTPMediaPacketizer rtpm, + SInt32 inFlags, + SInt32 * outFlags) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0502, 0x7000, 0xA82A); + + +/* + caller owns the RTPMPSampleDataParams struct + media Packetizer must copy any fields of the struct it wants to keep + media Packetizer must call release proc when done with the data + you can do the processing work here if it does not take up too + much cpu time - otherwise do it in idle +*/ +/* + * RTPMPSetSampleData() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPSetSampleData( + RTPMediaPacketizer rtpm, + const RTPMPSampleDataParams * inSampleData, + SInt32 * outFlags) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0503, 0x7000, 0xA82A); + + +/* + send everything you have buffered - you will get idles while + you set the kRTPMPStillProcessingData flag here and in idle +*/ +/* + * RTPMPFlush() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPFlush( + RTPMediaPacketizer rtpm, + SInt32 inFlags, + SInt32 * outFlags) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0504, 0x7000, 0xA82A); + + +/* + dispose of anything buffered and get rid of state + do not send the buffered data (because presumably + there is no connection for you to send on) + state should be the same as if you were just initialized +*/ +/* + * RTPMPReset() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPReset( + RTPMediaPacketizer rtpm, + SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0505, 0x7000, 0xA82A); + + +/*----------------------------------------- + RTP Media Packetizer get / set functions +-----------------------------------------*/ +/* + * RTPMPSetInfo() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPSetInfo( + RTPMediaPacketizer rtpm, + OSType inSelector, + const void * ioParams) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0506, 0x7000, 0xA82A); + + +/* + * RTPMPGetInfo() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPGetInfo( + RTPMediaPacketizer rtpm, + OSType inSelector, + void * ioParams) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0507, 0x7000, 0xA82A); + + +/* + * RTPMPSetTimeScale() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPSetTimeScale( + RTPMediaPacketizer rtpm, + TimeScale inTimeScale) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0508, 0x7000, 0xA82A); + + +/* + * RTPMPGetTimeScale() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPGetTimeScale( + RTPMediaPacketizer rtpm, + TimeScale * outTimeScale) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0509, 0x7000, 0xA82A); + + +/* + * RTPMPSetTimeBase() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPSetTimeBase( + RTPMediaPacketizer rtpm, + TimeBase inTimeBase) FIVEWORDINLINE(0x2F3C, 0x0004, 0x050A, 0x7000, 0xA82A); + + +/* + * RTPMPGetTimeBase() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPGetTimeBase( + RTPMediaPacketizer rtpm, + TimeBase * outTimeBase) FIVEWORDINLINE(0x2F3C, 0x0004, 0x050B, 0x7000, 0xA82A); + + +/* + * RTPMPHasCharacteristic() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPHasCharacteristic( + RTPMediaPacketizer rtpm, + OSType inSelector, + Boolean * outHasIt) FIVEWORDINLINE(0x2F3C, 0x0008, 0x050C, 0x7000, 0xA82A); + + +/* + * RTPMPSetPacketBuilder() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPSetPacketBuilder( + RTPMediaPacketizer rtpm, + ComponentInstance inPacketBuilder) FIVEWORDINLINE(0x2F3C, 0x0004, 0x050E, 0x7000, 0xA82A); + + +/* + * RTPMPGetPacketBuilder() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPGetPacketBuilder( + RTPMediaPacketizer rtpm, + ComponentInstance * outPacketBuilder) FIVEWORDINLINE(0x2F3C, 0x0004, 0x050F, 0x7000, 0xA82A); + + +/* + * RTPMPSetMediaType() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPSetMediaType( + RTPMediaPacketizer rtpm, + OSType inMediaType) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0510, 0x7000, 0xA82A); + + +/* + * RTPMPGetMediaType() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPGetMediaType( + RTPMediaPacketizer rtpm, + OSType * outMediaType) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0511, 0x7000, 0xA82A); + + +/* size is in bytes*/ +/* + * RTPMPSetMaxPacketSize() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPSetMaxPacketSize( + RTPMediaPacketizer rtpm, + UInt32 inMaxPacketSize) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0512, 0x7000, 0xA82A); + + +/* + * RTPMPGetMaxPacketSize() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPGetMaxPacketSize( + RTPMediaPacketizer rtpm, + UInt32 * outMaxPacketSize) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0513, 0x7000, 0xA82A); + + +/* duration is in milliseconds*/ +/* + * RTPMPSetMaxPacketDuration() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPSetMaxPacketDuration( + RTPMediaPacketizer rtpm, + UInt32 inMaxPacketDuration) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0514, 0x7000, 0xA82A); + + +/* + * RTPMPGetMaxPacketDuration() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPGetMaxPacketDuration( + RTPMediaPacketizer rtpm, + UInt32 * outMaxPacketDuration) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0515, 0x7000, 0xA82A); + + +/* + * RTPMPDoUserDialog() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPDoUserDialog( + RTPMediaPacketizer rtpm, + ModalFilterUPP inFilterUPP, + Boolean * canceled) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0516, 0x7000, 0xA82A); + + +/* + * RTPMPSetSettingsFromAtomContainerAtAtom() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPSetSettingsFromAtomContainerAtAtom( + RTPMediaPacketizer rtpm, + QTAtomContainer inContainer, + QTAtom inParentAtom) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0517, 0x7000, 0xA82A); + + +/* + * RTPMPGetSettingsIntoAtomContainerAtAtom() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPGetSettingsIntoAtomContainerAtAtom( + RTPMediaPacketizer rtpm, + QTAtomContainer inOutContainer, + QTAtom inParentAtom) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0518, 0x7000, 0xA82A); + + +/* + * RTPMPGetSettingsAsText() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPGetSettingsAsText( + RTPMediaPacketizer rtpm, + Handle * text) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0519, 0x7000, 0xA82A); + + + +/* + * RTPMPGetSettings() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 5.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPGetSettings( + RTPMediaPacketizer rtpm, + QTAtomContainer * outSettings, + SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0008, 0x051C, 0x7000, 0xA82A); + + +/* + * RTPMPSetSettings() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 5.0 and later + */ +EXTERN_API( ComponentResult ) +RTPMPSetSettings( + RTPMediaPacketizer rtpm, + QTAtomSpecPtr inSettings, + SInt32 inFlags) FIVEWORDINLINE(0x2F3C, 0x0008, 0x051D, 0x7000, 0xA82A); + + +/*============================================================================ + RTP Packet Builder +============================================================================*/ +enum { + kRTPPacketBuilderType = FOUR_CHAR_CODE('rtpb') +}; + + +typedef ComponentInstance RTPPacketBuilder; +typedef struct OpaqueRTPPacketGroupRef* RTPPacketGroupRef; +typedef struct OpaqueRTPPacketRef* RTPPacketRef; +typedef struct OpaqueRTPPacketRepeatedDataRef* RTPPacketRepeatedDataRef; +/* flags for RTPPBBegin/EndPacket, RTPPBBegin/EndPacketGroup*/ +enum { + kRTPPBSetMarkerFlag = 0x00000001, + kRTPPBRepeatPacketFlag = 0x00000002, + kRTPPBSyncSampleFlag = 0x00010000, + kRTPPBBFrameFlag = 0x00020000, + kRTPPBDontSendFlag = 0x10000000 /* when set in EndPacketGroup, will not add group*/ +}; + +enum { + kRTPPBUnknownPacketMediaDataLength = 0 +}; + +/* flags for RTPPBGetSampleData*/ +enum { + kRTPPBEndOfDataFlag = 0x00000001 +}; + + +typedef CALLBACK_API( void , RTPPBCallbackProcPtr )(OSType inSelector, void *ioParams, void *inRefCon); +typedef STACK_UPP_TYPE(RTPPBCallbackProcPtr) RTPPBCallbackUPP; +/*----------------------------------------- + RTP Packet Builder selectors +-----------------------------------------*/ +enum { + kRTPPBBeginPacketGroupSelect = 0x0500, + kRTPPBEndPacketGroupSelect = 0x0501, + kRTPPBBeginPacketSelect = 0x0502, + kRTPPBEndPacketSelect = 0x0503, + kRTPPBAddPacketLiteralDataSelect = 0x0504, + kRTPPBAddPacketSampleDataSelect = 0x0505, + kRTPPBAddPacketRepeatedDataSelect = 0x0506, + kRTPPBReleaseRepeatedDataSelect = 0x0507, + kRTPPBSetPacketSequenceNumberSelect = 0x0508, + kRTPPBGetPacketSequenceNumberSelect = 0x0509, + kRTPPBSetCallbackSelect = 0x050A, + kRTPPBGetCallbackSelect = 0x050B, + kRTPPBSetInfoSelect = 0x050C, + kRTPPBGetInfoSelect = 0x050D, + kRTPPBSetPacketTimeStampOffsetSelect = 0x050E, + kRTPPBGetPacketTimeStampOffsetSelect = 0x050F, + kRTPPBAddPacketSampleData64Select = 0x0510, + kRTPPBGetSampleDataSelect = 0x0511, + kRTPPBAddRepeatPacketSelect = 0x0512 +}; + +/*----------------------------------------- + RTP Packet Builder functions +-----------------------------------------*/ +/* + * RTPPBBeginPacketGroup() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBBeginPacketGroup( + RTPPacketBuilder rtpb, + SInt32 inFlags, + UInt32 inTimeStamp, + RTPPacketGroupRef * outPacketGroup) FIVEWORDINLINE(0x2F3C, 0x000C, 0x0500, 0x7000, 0xA82A); + + +/* + * RTPPBEndPacketGroup() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBEndPacketGroup( + RTPPacketBuilder rtpb, + SInt32 inFlags, + RTPPacketGroupRef inPacketGroup) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0501, 0x7000, 0xA82A); + + +/* + * RTPPBBeginPacket() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBBeginPacket( + RTPPacketBuilder rtpb, + SInt32 inFlags, + RTPPacketGroupRef inPacketGroup, + UInt32 inPacketMediaDataLength, + RTPPacketRef * outPacket) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0502, 0x7000, 0xA82A); + + +/* + * RTPPBEndPacket() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBEndPacket( + RTPPacketBuilder rtpb, + SInt32 inFlags, + RTPPacketGroupRef inPacketGroup, + RTPPacketRef inPacket, + UInt32 inTransmissionTimeOffset, + UInt32 inDuration) FIVEWORDINLINE(0x2F3C, 0x0014, 0x0503, 0x7000, 0xA82A); + + +/* + non-NULL RTPPacketRepeatedDataRef means this data will be repeated later + pb must return a repeated data ref +*/ +/* + * RTPPBAddPacketLiteralData() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBAddPacketLiteralData( + RTPPacketBuilder rtpb, + SInt32 inFlags, + RTPPacketGroupRef inPacketGroup, + RTPPacketRef inPacket, + UInt8 * inData, + UInt32 inDataLength, + RTPPacketRepeatedDataRef * outDataRef) FIVEWORDINLINE(0x2F3C, 0x0018, 0x0504, 0x7000, 0xA82A); + + +/* + non-NULL RTPPacketRepeatedDataRef means this data will be repeated later + pb must return a repeated data ref +*/ +/* + * RTPPBAddPacketSampleData() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBAddPacketSampleData( + RTPPacketBuilder rtpb, + SInt32 inFlags, + RTPPacketGroupRef inPacketGroup, + RTPPacketRef inPacket, + RTPMPSampleDataParams * inSampleDataParams, + UInt32 inSampleOffset, + UInt32 inSampleDataLength, + RTPPacketRepeatedDataRef * outDataRef) FIVEWORDINLINE(0x2F3C, 0x001C, 0x0505, 0x7000, 0xA82A); + + +/* + non-NULL RTPPacketRepeatedDataRef means this data will be repeated later + pb must return a repeated data ref +*/ +/* + * RTPPBAddPacketSampleData64() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 5.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBAddPacketSampleData64( + RTPPacketBuilder rtpb, + SInt32 inFlags, + RTPPacketGroupRef inPacketGroup, + RTPPacketRef inPacket, + RTPMPSampleDataParams * inSampleDataParams, + const UInt64 * inSampleOffset, + UInt32 inSampleDataLength, + RTPPacketRepeatedDataRef * outDataRef) FIVEWORDINLINE(0x2F3C, 0x001C, 0x0510, 0x7000, 0xA82A); + + +/* + call to add the repeated data using the ref you got from + RTPPBAddPacketLiteralData or RTPPBAddPacketSampleData +*/ +/* + * RTPPBAddPacketRepeatedData() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBAddPacketRepeatedData( + RTPPacketBuilder rtpb, + SInt32 inFlags, + RTPPacketGroupRef inPacketGroup, + RTPPacketRef inPacket, + RTPPacketRepeatedDataRef inDataRef) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0506, 0x7000, 0xA82A); + + +/* call when done with repeated data*/ +/* + * RTPPBReleaseRepeatedData() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBReleaseRepeatedData( + RTPPacketBuilder rtpb, + RTPPacketRepeatedDataRef inDataRef) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0507, 0x7000, 0xA82A); + + +/* + seq number is just relative seq number + don't call if you don't care when seq # is used +*/ +/* + * RTPPBSetPacketSequenceNumber() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBSetPacketSequenceNumber( + RTPPacketBuilder rtpb, + SInt32 inFlags, + RTPPacketGroupRef inPacketGroup, + RTPPacketRef inPacket, + UInt32 inSequenceNumber) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0508, 0x7000, 0xA82A); + + +/* + * RTPPBGetPacketSequenceNumber() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBGetPacketSequenceNumber( + RTPPacketBuilder rtpb, + SInt32 inFlags, + RTPPacketGroupRef inPacketGroup, + RTPPacketRef inPacket, + UInt32 * outSequenceNumber) FIVEWORDINLINE(0x2F3C, 0x0010, 0x0509, 0x7000, 0xA82A); + + +/* + * RTPPBSetPacketTimeStampOffset() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 5.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBSetPacketTimeStampOffset( + RTPPacketBuilder rtpb, + SInt32 inFlags, + RTPPacketGroupRef inPacketGroup, + RTPPacketRef inPacket, + SInt32 inTimeStampOffset) FIVEWORDINLINE(0x2F3C, 0x0010, 0x050E, 0x7000, 0xA82A); + + +/* + * RTPPBGetPacketTimeStampOffset() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 5.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBGetPacketTimeStampOffset( + RTPPacketBuilder rtpb, + SInt32 inFlags, + RTPPacketGroupRef inPacketGroup, + RTPPacketRef inPacket, + SInt32 * outTimeStampOffset) FIVEWORDINLINE(0x2F3C, 0x0010, 0x050F, 0x7000, 0xA82A); + + +/* + * RTPPBAddRepeatPacket() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 5.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBAddRepeatPacket( + RTPPacketBuilder rtpb, + SInt32 inFlags, + RTPPacketGroupRef inPacketGroup, + RTPPacketRef inPacket, + TimeValue inTransmissionOffset, + UInt32 inSequenceNumber) FIVEWORDINLINE(0x2F3C, 0x0014, 0x0512, 0x7000, 0xA82A); + + +/* + used for communicating with the caller of the media packetizers if needed + NOT used for communicating with the media packetizers themselves +*/ +/* + * RTPPBSetCallback() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBSetCallback( + RTPPacketBuilder rtpb, + RTPPBCallbackUPP inCallback, + void * inRefCon) FIVEWORDINLINE(0x2F3C, 0x0008, 0x050A, 0x7000, 0xA82A); + + +/* + * RTPPBGetCallback() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBGetCallback( + RTPPacketBuilder rtpb, + RTPPBCallbackUPP * outCallback, + void ** outRefCon) FIVEWORDINLINE(0x2F3C, 0x0008, 0x050B, 0x7000, 0xA82A); + + +/* + * RTPPBSetInfo() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBSetInfo( + RTPPacketBuilder rtpb, + OSType inSelector, + void * ioParams) FIVEWORDINLINE(0x2F3C, 0x0008, 0x050C, 0x7000, 0xA82A); + + +/* + * RTPPBGetInfo() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 4.0 and later + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 4.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBGetInfo( + RTPPacketBuilder rtpb, + OSType inSelector, + void * ioParams) FIVEWORDINLINE(0x2F3C, 0x0008, 0x050D, 0x7000, 0xA82A); + + +/* + * RTPPBGetSampleData() + * + * Availability: + * Non-Carbon CFM: in QTStreamLib 5.0 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + * Windows: in QTSClient.lib 5.0 and later + */ +EXTERN_API( ComponentResult ) +RTPPBGetSampleData( + RTPPacketBuilder rtpb, + RTPMPSampleDataParams * inParams, + const UInt64 * inStartOffset, + UInt8 * outDataBuffer, + UInt32 inBytesToRead, + UInt32 * outBytesRead, + SInt32 * outFlags) FIVEWORDINLINE(0x2F3C, 0x0018, 0x0511, 0x7000, 0xA82A); + + + +/* UPP call backs */ +/* + * NewRTPMPDataReleaseUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( RTPMPDataReleaseUPP ) +NewRTPMPDataReleaseUPP(RTPMPDataReleaseProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppRTPMPDataReleaseProcInfo = 0x000003C0 }; /* pascal no_return_value Func(4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(RTPMPDataReleaseUPP) NewRTPMPDataReleaseUPP(RTPMPDataReleaseProcPtr userRoutine) { return (RTPMPDataReleaseUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppRTPMPDataReleaseProcInfo, GetCurrentArchitecture()); } + #else + #define NewRTPMPDataReleaseUPP(userRoutine) (RTPMPDataReleaseUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppRTPMPDataReleaseProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewRTPPBCallbackUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( RTPPBCallbackUPP ) +NewRTPPBCallbackUPP(RTPPBCallbackProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppRTPPBCallbackProcInfo = 0x00000FC0 }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(RTPPBCallbackUPP) NewRTPPBCallbackUPP(RTPPBCallbackProcPtr userRoutine) { return (RTPPBCallbackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppRTPPBCallbackProcInfo, GetCurrentArchitecture()); } + #else + #define NewRTPPBCallbackUPP(userRoutine) (RTPPBCallbackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppRTPPBCallbackProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * DisposeRTPMPDataReleaseUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeRTPMPDataReleaseUPP(RTPMPDataReleaseUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeRTPMPDataReleaseUPP(RTPMPDataReleaseUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeRTPMPDataReleaseUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeRTPPBCallbackUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeRTPPBCallbackUPP(RTPPBCallbackUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeRTPPBCallbackUPP(RTPPBCallbackUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeRTPPBCallbackUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * InvokeRTPMPDataReleaseUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeRTPMPDataReleaseUPP( + UInt8 * inData, + void * inRefCon, + RTPMPDataReleaseUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) InvokeRTPMPDataReleaseUPP(UInt8 * inData, void * inRefCon, RTPMPDataReleaseUPP userUPP) { CALL_TWO_PARAMETER_UPP(userUPP, uppRTPMPDataReleaseProcInfo, inData, inRefCon); } + #else + #define InvokeRTPMPDataReleaseUPP(inData, inRefCon, userUPP) CALL_TWO_PARAMETER_UPP((userUPP), uppRTPMPDataReleaseProcInfo, (inData), (inRefCon)) + #endif +#endif + +/* + * InvokeRTPPBCallbackUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeRTPPBCallbackUPP( + OSType inSelector, + void * ioParams, + void * inRefCon, + RTPPBCallbackUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) InvokeRTPPBCallbackUPP(OSType inSelector, void * ioParams, void * inRefCon, RTPPBCallbackUPP userUPP) { CALL_THREE_PARAMETER_UPP(userUPP, uppRTPPBCallbackProcInfo, inSelector, ioParams, inRefCon); } + #else + #define InvokeRTPPBCallbackUPP(inSelector, ioParams, inRefCon, userUPP) CALL_THREE_PARAMETER_UPP((userUPP), uppRTPPBCallbackProcInfo, (inSelector), (ioParams), (inRefCon)) + #endif +#endif + +#if CALL_NOT_IN_CARBON || OLDROUTINENAMES + /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ + #define NewRTPMPDataReleaseProc(userRoutine) NewRTPMPDataReleaseUPP(userRoutine) + #define NewRTPPBCallbackProc(userRoutine) NewRTPPBCallbackUPP(userRoutine) + #define CallRTPMPDataReleaseProc(userRoutine, inData, inRefCon) InvokeRTPMPDataReleaseUPP(inData, inRefCon, userRoutine) + #define CallRTPPBCallbackProc(userRoutine, inSelector, ioParams, inRefCon) InvokeRTPPBCallbackUPP(inSelector, ioParams, inRefCon, userRoutine) +#endif /* CALL_NOT_IN_CARBON */ + + +#endif // !__LP64__ + + + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=reset +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(pop) +#elif PRAGMA_STRUCT_PACK + #pragma pack() +#endif + +#ifdef PRAGMA_IMPORT_OFF +#pragma import off +#elif PRAGMA_IMPORT +#pragma import reset +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __QTSTREAMINGCOMPONENTS__ */ + |