rmapckts.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:11k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /****************************************************************************
  2.  * 
  3.  *  $Id: rmapckts.h,v 1.1 2003/05/30 02:17:36 gabest Exp $
  4.  *
  5.  *  Copyright (C) 1995-1999 RealNetworks, Inc. All rights reserved.
  6.  *  
  7.  *  http://www.real.com/devzone
  8.  *
  9.  *  This program contains proprietary 
  10.  *  information of Progressive Networks, Inc, and is licensed
  11.  *  subject to restrictions on use and distribution.
  12.  *
  13.  *
  14.  *  RealMedia Architecture Packet and Header Interface.
  15.  *
  16.  */
  17. #ifndef _RMAPCKTS_H_
  18. #define _RMAPCKTS_H_
  19. // Define IRMAUtilities
  20. /* ASMFlags in IRMAPacket */
  21. #define RMA_ASM_SWITCH_ON  0x01
  22. #define RMA_ASM_SWITCH_OFF  0x02
  23. /****************************************************************************
  24.  * 
  25.  *  Interface:
  26.  *
  27.  * IRMABuffer
  28.  *
  29.  *  Purpose:
  30.  *
  31.  * Basic opaque data storage buffer. Used in interfaces where 
  32.  * object ownership is best managed through COM style reference 
  33.  * counting.
  34.  *
  35.  *  IID_IRMABuffer:
  36.  *
  37.  * {00001300-0901-11d1-8B06-00A024406D59}
  38.  *
  39.  */
  40. DEFINE_GUID(IID_IRMABuffer, 0x00001300, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  41. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  42. /*
  43.  *  The IRMACommonClassFactory supports creating an instance
  44.  *  of this object.
  45.  */
  46. #define CLSID_IRMABuffer IID_IRMABuffer
  47. #undef  INTERFACE
  48. #define INTERFACE   IRMABuffer
  49. DECLARE_INTERFACE_(IRMABuffer, IUnknown)
  50. {
  51.     /*
  52.      * IUnknown methods
  53.      */
  54.     STDMETHOD(QueryInterface) (THIS_
  55. REFIID riid,
  56. void** ppvObj) PURE;
  57.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  58.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  59.     /*
  60.      * IRMABuffer methods
  61.      */
  62.     STDMETHOD(Get) (THIS_
  63. REF(UCHAR*) pData, 
  64. REF(ULONG32) ulLength) PURE;
  65.     STDMETHOD(Set) (THIS_
  66. const UCHAR* pData, 
  67. ULONG32 ulLength) PURE;
  68.     STDMETHOD(SetSize) (THIS_
  69. ULONG32 ulLength) PURE;
  70.     STDMETHOD_(ULONG32,GetSize) (THIS) PURE;
  71.     STDMETHOD_(UCHAR*,GetBuffer)(THIS) PURE;
  72. };
  73. /****************************************************************************
  74.  * 
  75.  *  Interface:
  76.  *
  77.  * IRMAPacket
  78.  *
  79.  *  Purpose:
  80.  *
  81.  * Basic data packet in the RealMedia system.
  82.  *
  83.  *  IID_IRMAPacket:
  84.  *
  85.  * {00001301-0901-11d1-8B06-00A024406D59}
  86.  *
  87.  */
  88. DEFINE_GUID(IID_IRMAPacket, 0x00001301, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  89. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  90. /*
  91.  *  The IRMACommonClassFactory supports creating an instance
  92.  *  of this object.
  93.  */
  94. #define CLSID_IRMAPacket IID_IRMAPacket
  95. #undef  INTERFACE
  96. #define INTERFACE   IRMAPacket
  97. DECLARE_INTERFACE_(IRMAPacket, IUnknown)
  98. {
  99.     /*
  100.      * IUnknown methods
  101.      */
  102.     STDMETHOD(QueryInterface) (THIS_
  103. REFIID riid,
  104. void** ppvObj) PURE;
  105.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  106.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  107.     /*
  108.      * IRMAPacket methods
  109.      */
  110.     STDMETHOD(Get) (THIS_
  111. REF(IRMABuffer*)    pBuffer, 
  112. REF(UINT32)     ulTime,
  113. REF(UINT16)     unStreamNumber,
  114. REF(UINT8)     unASMFlags,
  115. REF(UINT16)     unASMRuleNumber
  116. ) PURE;
  117.     STDMETHOD_(IRMABuffer*,GetBuffer) (THIS) PURE;
  118.     STDMETHOD_(ULONG32,GetTime) (THIS) PURE;
  119.     STDMETHOD_(UINT16,GetStreamNumber) (THIS) PURE;
  120.     STDMETHOD_(UINT8,GetASMFlags) (THIS) PURE;
  121.     STDMETHOD_(UINT16,GetASMRuleNumber) (THIS) PURE;
  122.     STDMETHOD_(BOOL,IsLost) (THIS) PURE;
  123.     STDMETHOD(SetAsLost) (THIS) PURE;
  124.     STDMETHOD(Set) (THIS_
  125. IRMABuffer*      pBuffer,
  126. UINT32          ulTime,
  127. UINT16          uStreamNumber,
  128. UINT8          unASMFlags,
  129. UINT16          unASMRuleNumber
  130. ) PURE;
  131. };
  132. /****************************************************************************
  133.  * 
  134.  *  Interface:
  135.  *
  136.  * IRMAPacket
  137.  *
  138.  *  Purpose:
  139.  *
  140.  * RTP data packet in the RealMedia system.
  141.  *
  142.  *  IID_IRMARTPPacket:
  143.  *
  144.  * {0169A731-1ED0-11d4-952B-00902742C923}
  145.  *
  146.  */
  147. DEFINE_GUID(IID_IRMARTPPacket, 0x169a731, 0x1ed0, 0x11d4, 0x95, 0x2b, 0x0, 
  148.     0x90, 0x27, 0x42, 0xc9, 0x23);
  149. /*
  150.  *  The IRMACommonClassFactory supports creating an instance
  151.  *  of this object.
  152.  */
  153. #define CLSID_IRMARTPPacket IID_IRMARTPPacket
  154. #undef  INTERFACE
  155. #define INTERFACE   IRMARTPPacket
  156. DECLARE_INTERFACE_(IRMARTPPacket, IRMAPacket)
  157. {
  158.     /*
  159.      * IUnknown methods
  160.      */
  161.     STDMETHOD(QueryInterface) (THIS_
  162. REFIID riid,
  163. void** ppvObj) PURE;
  164.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  165.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  166.     /*
  167.      * IRMAPacket methods
  168.      */
  169.     STDMETHOD(Get) (THIS_
  170. REF(IRMABuffer*)    pBuffer, 
  171. REF(UINT32)     ulTime,
  172. REF(UINT16)     unStreamNumber,
  173. REF(UINT8)     unASMFlags,
  174. REF(UINT16)     unASMRuleNumber
  175. ) PURE;
  176.     STDMETHOD_(IRMABuffer*,GetBuffer) (THIS) PURE;
  177.     STDMETHOD_(ULONG32,GetTime) (THIS) PURE;
  178.     STDMETHOD_(UINT16,GetStreamNumber) (THIS) PURE;
  179.     STDMETHOD_(UINT8,GetASMFlags) (THIS) PURE;
  180.     STDMETHOD_(UINT16,GetASMRuleNumber) (THIS) PURE;
  181.     STDMETHOD_(BOOL,IsLost) (THIS) PURE;
  182.     STDMETHOD(SetAsLost) (THIS) PURE;
  183.     STDMETHOD(Set) (THIS_
  184. IRMABuffer*      pBuffer,
  185. UINT32          ulTime,
  186. UINT16          uStreamNumber,
  187. UINT8          unASMFlags,
  188. UINT16          unASMRuleNumber
  189. ) PURE;
  190.     /*
  191.      * IRMARTPPacket methods
  192.      */
  193.     STDMETHOD_(ULONG32,GetRTPTime) (THIS) PURE;
  194.     STDMETHOD(GetRTP) (THIS_
  195. REF(IRMABuffer*)    pBuffer, 
  196. REF(UINT32)     ulTime,
  197. REF(UINT32)     ulRTPTime,
  198. REF(UINT16)     unStreamNumber,
  199. REF(UINT8)     unASMFlags,
  200. REF(UINT16)     unASMRuleNumber
  201. ) PURE;
  202.     STDMETHOD(SetRTP) (THIS_
  203. IRMABuffer*      pBuffer,
  204. UINT32          ulTime,
  205. UINT32     ulRTPTime,
  206. UINT16          uStreamNumber,
  207. UINT8          unASMFlags,
  208. UINT16          unASMRuleNumber
  209. ) PURE;
  210. };
  211. /****************************************************************************
  212.  * 
  213.  *  Interface:
  214.  *
  215.  * IRMAValues
  216.  *
  217.  *  Purpose:
  218.  *
  219.  *   This is an interface to a generic name-value pair facility.  This
  220.  * is used in various places (such as stream headers).
  221.  *
  222.  *  IID_IRMAValues:
  223.  *
  224.  * {00001302-0901-11d1-8B06-00A024406D59}
  225.  *
  226.  */
  227. DEFINE_GUID(IID_IRMAValues, 0x00001302, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  228. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  229. /*
  230.  *  The IRMACommonClassFactory supports creating an instance
  231.  *  of this object.
  232.  */
  233. #define CLSID_IRMAValues IID_IRMAValues
  234. #undef  INTERFACE
  235. #define INTERFACE   IRMAValues
  236. DECLARE_INTERFACE_(IRMAValues, IUnknown)
  237. {
  238.     /*
  239.      * IUnknown methods
  240.      */
  241.     STDMETHOD(QueryInterface) (THIS_
  242. REFIID riid,
  243. void** ppvObj) PURE;
  244.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  245.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  246.     /*
  247.      * IRMAValues methods
  248.      */
  249.     /*
  250.      * Note: That strings returned as references should be copied or
  251.      *       used immediately because their lifetime is only as long as the
  252.      *       IRMAValues's objects lifetime.
  253.      *
  254.      * Note: Your iterator will be reset once you give up control to the
  255.      *      RMA core (i.e. you exit whatever function gave you a time slice).
  256.      */
  257.     STDMETHOD(SetPropertyULONG32) (THIS_
  258. const char*      pPropertyName,
  259. ULONG32          uPropertyValue) PURE;
  260.     STDMETHOD(GetPropertyULONG32) (THIS_
  261. const char*      pPropertyName,
  262. REF(ULONG32)     uPropertyName) PURE;
  263.     STDMETHOD(GetFirstPropertyULONG32) (THIS_
  264. REF(const char*) pPropertyName,
  265. REF(ULONG32)     uPropertyValue) PURE;
  266.     STDMETHOD(GetNextPropertyULONG32) (THIS_
  267. REF(const char*) pPropertyName,
  268. REF(ULONG32)     uPropertyValue) PURE;
  269.     STDMETHOD(SetPropertyBuffer) (THIS_
  270. const char*      pPropertyName,
  271. IRMABuffer*      pPropertyValue) PURE;
  272.     STDMETHOD(GetPropertyBuffer) (THIS_
  273. const char*      pPropertyName,
  274. REF(IRMABuffer*) pPropertyValue) PURE;
  275.     
  276.     STDMETHOD(GetFirstPropertyBuffer) (THIS_
  277. REF(const char*) pPropertyName,
  278. REF(IRMABuffer*) pPropertyValue) PURE;
  279.     STDMETHOD(GetNextPropertyBuffer) (THIS_
  280. REF(const char*) pPropertyName,
  281. REF(IRMABuffer*) pPropertyValue) PURE;
  282.     STDMETHOD(SetPropertyCString) (THIS_
  283. const char*      pPropertyName,
  284. IRMABuffer*      pPropertyValue) PURE;
  285.     STDMETHOD(GetPropertyCString) (THIS_
  286. const char*      pPropertyName,
  287. REF(IRMABuffer*) pPropertyValue) PURE;
  288.     STDMETHOD(GetFirstPropertyCString) (THIS_
  289. REF(const char*) pPropertyName,
  290. REF(IRMABuffer*) pPropertyValue) PURE;
  291.     STDMETHOD(GetNextPropertyCString) (THIS_
  292. REF(const char*) pPropertyName,
  293. REF(IRMABuffer*) pPropertyValue) PURE;
  294. };
  295. /****************************************************************************
  296.  * 
  297.  *  Interface:
  298.  *
  299.  * IRMAValuesRemove
  300.  *
  301.  *  Purpose:
  302.  *
  303.  *      This interface is to add Remove methods to a class that supports 
  304.  *      IRMAValues.  All classes that support this interface will also 
  305.  *      support IRMAValues.
  306.  *   
  307.  *  
  308.  *
  309.  *  IID_IRMAValuesRemove:
  310.  *
  311.  * {00001303-0901-11d1-8B06-00A024406D59}
  312.  *
  313.  */
  314. DEFINE_GUID(IID_IRMAValuesRemove, 0x00001303, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  315. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  316. /*
  317.  *  The IRMACommonClassFactory does not support creating an instance
  318.  *  of this object.
  319.  */
  320. #undef  INTERFACE
  321. #define INTERFACE   IRMAValuesRemove
  322. DECLARE_INTERFACE_(IRMAValuesRemove, IUnknown)
  323. {
  324.     /*
  325.      * IUnknown methods
  326.      */
  327.     STDMETHOD(QueryInterface) (THIS_
  328. REFIID riid,
  329. void** ppvObj) PURE;
  330.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  331.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  332.     /*
  333.      * IRMAValuesRemove methods
  334.      */
  335.      /************************************************************************
  336.      * Method:
  337.      *     IRMAKeyValuesRemove::Remove
  338.      * Purpose:
  339.      *      Remove all items matching pKey.  (If you know what datatype you saved
  340.      *      the key as, use the specific method.)
  341.      */
  342.     STDMETHOD(Remove)      (const char* pKey) PURE;
  343.     
  344.      /************************************************************************
  345.      * Method:
  346.      *     IRMAKeyValuesRemove::RemoveULONG32
  347.      * Purpose:
  348.      *      Remove all ULONG32 items matching pKey. 
  349.      */
  350.     STDMETHOD(RemoveULONG32) (const char* pKey) PURE;
  351.     
  352.      /************************************************************************
  353.      * Method:
  354.      *     IRMAKeyValuesRemove::RemoveBuffer
  355.      * Purpose:
  356.      *      Remove all Buffer items matching pKey. 
  357.      */
  358.     STDMETHOD(RemoveBuffer)  (const char* pKey) PURE;
  359.     
  360.      /************************************************************************
  361.      * Method:
  362.      *     IRMAKeyValuesRemove::RemoveCString
  363.      * Purpose:
  364.      *      Remove all CString items matching pKey. 
  365.      */
  366.     STDMETHOD(RemoveCString) (const char* pKey) PURE;
  367. };
  368. #endif /* _RMAPCKTS_H_ */