chinavideoonline.com
中国视频在线(www.chinavideoonline.com)致力于收集各种流媒体相关的技术资料,以及流媒体常识和应用方案,力求为广大朋友了解学习和使用流媒体技术提供帮助

RealSystem SDK(四)

作者/来源:Real.com
3.6 使用IRMAValues 创建索引列表
  象IRMABuffer, IRMAValues 接口广泛用在RealSystem系统中。IRMAValues 接口允许RealSystem组件创建名称、数值通用列表。IRMAValues 数值类型如下:
  unsigned long
  指向任意数据缓冲区的指针
  指向以null结尾的C字符串缓冲区的指针
  RealSystem组件创建IRMAValues 对象过程如下:
    通过 IRMACommonClassFactory 创建IRMAValues接口
    调用IRMAValues::SetPropertyULONG32、IRMAValues::SetPropertyBuffer、或 IRMAValues::SetPropertyCString 方法添加名称/数值。
  传递对象指针给其他组件。
  用 IUnknown::Release释放接口。

事例如下所示:
  IRMAValues* pHeaderObj = NULL;
m_pClassFactory-    CreateInstance(CLSID_IRMAValues, (void**)&pHeaderObj);
if (pHeaderObj != NULL)
  { IRMAPluginpHeaderObj-SetPropertyULONG32(\"StreamCount\", 1);
   IRMAPluginpHeaderObj-SetPropertyBuffer(\"OpaqueData\",
   pHeaderDataReadFromFile);

  收到指向IRMAValues 接口的指针后,RealSystem组件可使用IRMAValues::GetProperty 根据名称检索数值,此处 为ULONG32、缓冲区、或 Cstring。组件可通过IRMAValues::GetFirstProperty与IRMAValues::GetNextProperty遍历列表。
3.7 使用IRMAPacket创建流数据包
  RealSystem组件使用IRMAPacket接口创建数据包。例如,文件格式插件需要此接口为服务器准备流数据包;而客户端播放插件使用系统后通道向文件格式插件发送信息包 。RealSystem组件创建包过程如下:
  通过IRMACommonClassFactory创建IRMAPacket 接口。
  调用 IRMAPacket::Set 向包传递一个指向IRMABuffer 接口的指针,并定义包属性,如发送时间、自适应智能流管理规则。包属性有助于RealSystem有效传输。
传递指向其他组件的包指针。
  以 IUnknown::Release释放包接口。
  事例如下所示:
  IRMAPacket* pPacketObj = NULL;
   m_pClassFactory-  CreateInstance(CLSID_IRMAPacket, (void**)&pPacketObj);
if (pPacketObj != NULL)
{ IRMAPluginUINT32 deliveryTime = m_NextPacketDeliveryTime;         IRMAPluginUINT16 streamNoIRMAPlugin = MY_STREAM_NO;
 IRMAPluginUINT8 ASMFlags = RMA_ASM_SWITCH_ON;
 IRMAPluginUINT16 ASMRuleNo = 0;
 IRMAPluginpPacketObj-Set(pPacketDataReadFromFile, deliveryTime, streamNo, ASMFlags, ASMRuleNo);
  收到指向包接口指针后,RealSystem组件用IRMAPacket::Get检索包数据。其他方法允许组件检索特定包属性。组件也可调用IRMAPacket::IsLost 决定包是否丢失。
发表评论:
昵称 *

邮箱 *

评论* (最长不超过500汉字)