Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2607 lines
86 KiB

5 years ago
/*
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__ */