精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
服务器一旦从客户端接收到RTCP接收方报告,就会调用模块的RTCP Process角色。
RTCP接收方报告中包含客户端对流品质的反馈信息。这个反馈信息包括丢包率,音频脱包(run dry)的次数,以及每秒的帧数。QTSS_RTPStreamObject中的很多属性直接和接收方报告中的各个字段相对应。
在被调用的时候,RTP Process角色会收到一个QTSS_RTCPProcess_Params结构,该结构定义如下:
typedef struct
{
QTSS_RTPStreamObject inRTPStream;
QTSS_ClientSessionObject inClientSession;
void* inRTCPPacketData;
UInt32 inRTCPPacketDataLen;
} QTSS_RTCPProcess_Params;
inRTPStream
这是一个QTSS_RTPStreamObject对象,代表当前这个RTCP包所属的RTP流。如果需要RTP流对象的属性信息,请参见“qtssRTPStreamObjectType” 部分。
inClientSession
这是一个QTSS_ClientSessionObject对象,代表客户会话。如果需要客户会话对象的属性信息,请参见“qtssClientSessionObjectType”部分。
inRTCPPacketData
这是一个指针,指向含有即将被处理的数据包缓冲区。
inRTCPPacketDataLen
inRTCPPacketData指向的缓冲区中正当数据的长度。
处理RTCP Process角色的模块通常会监视连接的状态。举例来说,它可能需要跟踪每个连接客户的丢包率,以及更新相应的计数器。
在模块处理RTCP Process角色的时候,服务器保证不会调用该模块中引用RTP流的其它角色,这里的RTP流由inRTPStream来表示。
希望自己的RTCP Process角色被调用的模块必须在其Register角色中调用QTSS_AddRole函数,并将角色的实参指定为QTSS_RTCPProcess_Role常数。
在处理完成这个角色之后,模块通常应该返回QTSS_NoErr。