ihxpckts.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:16k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. #ifndef _IHXPCKTS_H_
  36. #define _IHXPCKTS_H_
  37. // Define IHXUtilities
  38. // $Private
  39. #include "hxvalue.h"
  40. // $EndPrivate
  41. /* ASMFlags in IHXPacket */
  42. #define HX_ASM_SWITCH_ON  0x01
  43. #define HX_ASM_SWITCH_OFF  0x02
  44. #define HX_ASM_DROPPED_PKT  0x04
  45. /****************************************************************************
  46.  * 
  47.  *  Interface:
  48.  *
  49.  * IHXBuffer
  50.  *
  51.  *  Purpose:
  52.  *
  53.  * Basic opaque data storage buffer. Used in interfaces where 
  54.  * object ownership is best managed through COM style reference 
  55.  * counting.
  56.  *
  57.  *  IID_IHXBuffer:
  58.  *
  59.  * {00001300-0901-11d1-8B06-00A024406D59}
  60.  *
  61.  */
  62. DEFINE_GUID(IID_IHXBuffer, 0x00001300, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  63. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  64. /*
  65.  *  The IHXCommonClassFactory supports creating an instance
  66.  *  of this object.
  67.  */
  68. #define CLSID_IHXBuffer IID_IHXBuffer
  69. #undef  INTERFACE
  70. #define INTERFACE   IHXBuffer
  71. DECLARE_INTERFACE_(IHXBuffer, IUnknown)
  72. {
  73.     /*
  74.      * IUnknown methods
  75.      */
  76.     STDMETHOD(QueryInterface) (THIS_
  77. REFIID riid,
  78. void** ppvObj) PURE;
  79.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  80.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  81.     /*
  82.      * IHXBuffer methods
  83.      */
  84.     STDMETHOD(Get) (THIS_
  85. REF(UCHAR*) pData, 
  86. REF(ULONG32) ulLength) PURE;
  87.     STDMETHOD(Set) (THIS_
  88. const UCHAR* pData, 
  89. ULONG32 ulLength) PURE;
  90.     STDMETHOD(SetSize) (THIS_
  91. ULONG32 ulLength) PURE;
  92.     STDMETHOD_(ULONG32,GetSize) (THIS) PURE;
  93.     STDMETHOD_(UCHAR*,GetBuffer)(THIS) PURE;
  94. };
  95. /****************************************************************************
  96.  * 
  97.  *  Interface:
  98.  *
  99.  * IHXPacket
  100.  *
  101.  *  Purpose:
  102.  *
  103.  * Basic data packet in the RealMedia system.
  104.  *
  105.  *  IID_IHXPacket:
  106.  *
  107.  * {00001301-0901-11d1-8B06-00A024406D59}
  108.  *
  109.  */
  110. DEFINE_GUID(IID_IHXPacket, 0x00001301, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  111. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  112. /*
  113.  *  The IHXCommonClassFactory supports creating an instance
  114.  *  of this object.
  115.  */
  116. #define CLSID_IHXPacket IID_IHXPacket
  117. #undef  INTERFACE
  118. #define INTERFACE   IHXPacket
  119. DECLARE_INTERFACE_(IHXPacket, IUnknown)
  120. {
  121.     /*
  122.      * IUnknown methods
  123.      */
  124.     STDMETHOD(QueryInterface) (THIS_
  125. REFIID riid,
  126. void** ppvObj) PURE;
  127.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  128.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  129.     /*
  130.      * IHXPacket methods
  131.      */
  132.     STDMETHOD(Get) (THIS_
  133. REF(IHXBuffer*)    pBuffer, 
  134. REF(UINT32)     ulTime,
  135. REF(UINT16)     unStreamNumber,
  136. REF(UINT8)     unASMFlags,
  137. REF(UINT16)     unASMRuleNumber
  138. ) PURE;
  139.     STDMETHOD_(IHXBuffer*,GetBuffer) (THIS) PURE;
  140.     STDMETHOD_(ULONG32,GetTime) (THIS) PURE;
  141.     STDMETHOD_(UINT16,GetStreamNumber) (THIS) PURE;
  142.     STDMETHOD_(UINT8,GetASMFlags) (THIS) PURE;
  143.     STDMETHOD_(UINT16,GetASMRuleNumber) (THIS) PURE;
  144.     STDMETHOD_(BOOL,IsLost) (THIS) PURE;
  145.     STDMETHOD(SetAsLost) (THIS) PURE;
  146.     STDMETHOD(Set) (THIS_
  147. IHXBuffer*      pBuffer,
  148. UINT32          ulTime,
  149. UINT16          uStreamNumber,
  150. UINT8          unASMFlags,
  151. UINT16          unASMRuleNumber
  152. ) PURE;
  153. };
  154. /****************************************************************************
  155.  * 
  156.  *  Interface:
  157.  *
  158.  * IHXPacket
  159.  *
  160.  *  Purpose:
  161.  *
  162.  * RTP data packet in the RealMedia system.
  163.  *
  164.  *  IID_IHXRTPPacket:
  165.  *
  166.  * {0169A731-1ED0-11d4-952B-00902742C923}
  167.  *
  168.  */
  169. DEFINE_GUID(IID_IHXRTPPacket, 0x169a731, 0x1ed0, 0x11d4, 0x95, 0x2b, 0x0, 
  170.     0x90, 0x27, 0x42, 0xc9, 0x23);
  171. /*
  172.  *  The IHXCommonClassFactory supports creating an instance
  173.  *  of this object.
  174.  */
  175. #define CLSID_IHXRTPPacket IID_IHXRTPPacket
  176. #undef  INTERFACE
  177. #define INTERFACE   IHXRTPPacket
  178. DECLARE_INTERFACE_(IHXRTPPacket, IHXPacket)
  179. {
  180.     /*
  181.      * IUnknown methods
  182.      */
  183.     STDMETHOD(QueryInterface) (THIS_
  184. REFIID riid,
  185. void** ppvObj) PURE;
  186.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  187.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  188.     /*
  189.      * IHXPacket methods
  190.      */
  191.     STDMETHOD(Get) (THIS_
  192. REF(IHXBuffer*)    pBuffer, 
  193. REF(UINT32)     ulTime,
  194. REF(UINT16)     unStreamNumber,
  195. REF(UINT8)     unASMFlags,
  196. REF(UINT16)     unASMRuleNumber
  197. ) PURE;
  198.     STDMETHOD_(IHXBuffer*,GetBuffer) (THIS) PURE;
  199.     STDMETHOD_(ULONG32,GetTime) (THIS) PURE;
  200.     STDMETHOD_(UINT16,GetStreamNumber) (THIS) PURE;
  201.     STDMETHOD_(UINT8,GetASMFlags) (THIS) PURE;
  202.     STDMETHOD_(UINT16,GetASMRuleNumber) (THIS) PURE;
  203.     STDMETHOD_(BOOL,IsLost) (THIS) PURE;
  204.     STDMETHOD(SetAsLost) (THIS) PURE;
  205.     STDMETHOD(Set) (THIS_
  206. IHXBuffer*      pBuffer,
  207. UINT32          ulTime,
  208. UINT16          uStreamNumber,
  209. UINT8          unASMFlags,
  210. UINT16          unASMRuleNumber
  211. ) PURE;
  212.     /*
  213.      * IHXRTPPacket methods
  214.      */
  215.     STDMETHOD_(ULONG32,GetRTPTime) (THIS) PURE;
  216.     STDMETHOD(GetRTP) (THIS_
  217. REF(IHXBuffer*)    pBuffer, 
  218. REF(UINT32)     ulTime,
  219. REF(UINT32)     ulRTPTime,
  220. REF(UINT16)     unStreamNumber,
  221. REF(UINT8)     unASMFlags,
  222. REF(UINT16)     unASMRuleNumber
  223. ) PURE;
  224.     STDMETHOD(SetRTP) (THIS_
  225. IHXBuffer*      pBuffer,
  226. UINT32          ulTime,
  227. UINT32     ulRTPTime,
  228. UINT16          uStreamNumber,
  229. UINT8          unASMFlags,
  230. UINT16          unASMRuleNumber
  231. ) PURE;
  232. };
  233. /****************************************************************************
  234.  * 
  235.  *  Interface:
  236.  *
  237.  * IHXRTPPacketInfo
  238.  *
  239.  *  Purpose:
  240.  *
  241.  * Provides complete RTP packet header info (RFC 1889)
  242.  *
  243.  *  IID_IHXPacket:
  244.  *
  245.  * {EC7D67BB-2E79-49c3-B667-BA8A938DBCE0}
  246.  *
  247.  */
  248. DEFINE_GUID(IID_IHXRTPPacketInfo, 
  249.     0xec7d67bb, 0x2e79, 0x49c3, 0xb6, 0x67, 0xba, 0x8a, 0x93, 0x8d, 0xbc, 0xe0);
  250. #undef  INTERFACE
  251. #define INTERFACE   IHXRTPPacketInfo
  252. DECLARE_INTERFACE_(IHXRTPPacketInfo, IUnknown)
  253. {
  254.     /*
  255.      * IUnknown methods
  256.      */
  257.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE;
  258.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  259.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  260.     /*
  261.      * IHXRTPPacketInfo methods
  262.      */
  263.     STDMETHOD_(UINT8, GetVersion)   (THIS) PURE;
  264.     
  265.     STDMETHOD(GetPaddingBit)     (THIS_ REF(BOOL)bPadding) PURE;
  266.     STDMETHOD(SetPaddingBit)     (THIS_ BOOL bPadding) PURE;
  267.     STDMETHOD(GetExtensionBit)     (THIS_ REF(BOOL)bExtension) PURE;
  268.     STDMETHOD(SetExtensionBit)     (THIS_ BOOL bExtension) PURE;
  269.     STDMETHOD(GetCSRCCount)     (THIS_ REF(UINT8)unCSRCCount) PURE;
  270.     STDMETHOD(SetCSRCCount)     (THIS_ UINT8 unCSRCCount) PURE;
  271.     STDMETHOD(GetMarkerBit)     (THIS_ REF(BOOL)bMarker) PURE;
  272.     STDMETHOD(SetMarkerBit)     (THIS_ BOOL bMarker) PURE;
  273.     STDMETHOD(GetPayloadType)     (THIS_ REF(UINT8)unPayloadType) PURE;
  274.     STDMETHOD(SetPayloadType)     (THIS_ UINT8 unPayloadType) PURE;
  275.     STDMETHOD(GetSequenceNumber)    (THIS_ REF(UINT16)unSeqNo) PURE;
  276.     STDMETHOD(SetSequenceNumber)    (THIS_ UINT16 unSeqNo) PURE;
  277.     STDMETHOD(GetTimeStamp)     (THIS_ REF(UINT32)ulTS) PURE;
  278.     STDMETHOD(SetTimeStamp)     (THIS_ UINT32 ulTS) PURE;
  279.     STDMETHOD(GetSSRC)     (THIS_ REF(UINT32)ulSSRC) PURE;
  280.     STDMETHOD(SetSSRC)     (THIS_ UINT32 ulSSRC) PURE;
  281.     
  282.     STDMETHOD(GetCSRCList)     (THIS_ REF(const char*) pulCSRC) PURE;
  283.     STDMETHOD(SetCSRCList)     (THIS_ const char* pCSRCList, UINT32 ulSize) PURE;
  284.     STDMETHOD(GetPadding)     (THIS_ REF(const char*) pPadding) PURE;
  285.     STDMETHOD(SetPadding)     (THIS_ const char* pPadding, UINT32 ulSize) PURE;
  286.     STDMETHOD(GetExtension)     (THIS_ REF(const char*) pExtension) PURE;
  287.     STDMETHOD(SetExtension)     (THIS_ const char* pExtension, UINT32 ulSize) PURE;
  288. };
  289. /****************************************************************************
  290.  * 
  291.  *  Interface:
  292.  *
  293.  * IHXValues
  294.  *
  295.  *  Purpose:
  296.  *
  297.  *   This is an interface to a generic name-value pair facility.  This
  298.  * is used in various places (such as stream headers).
  299.  *
  300.  *  IID_IHXValues:
  301.  *
  302.  * {00001302-0901-11d1-8B06-00A024406D59}
  303.  *
  304.  */
  305. DEFINE_GUID(IID_IHXValues, 0x00001302, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  306. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  307. /*
  308.  *  The IHXCommonClassFactory supports creating an instance
  309.  *  of this object.
  310.  */
  311. #define CLSID_IHXValues IID_IHXValues
  312. #undef  INTERFACE
  313. #define INTERFACE   IHXValues
  314. DECLARE_INTERFACE_(IHXValues, IUnknown)
  315. {
  316.     /*
  317.      * IUnknown methods
  318.      */
  319.     STDMETHOD(QueryInterface) (THIS_
  320. REFIID riid,
  321. void** ppvObj) PURE;
  322.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  323.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  324.     /*
  325.      * IHXValues methods
  326.      */
  327.     /*
  328.      * Note: That strings returned as references should be copied or
  329.      *       used immediately because their lifetime is only as long as the
  330.      *       IHXValues's objects lifetime.
  331.      *
  332.      * Note: Your iterator will be reset once you give up control to the
  333.      *      RMA core (i.e. you exit whatever function gave you a time slice).
  334.      */
  335.     STDMETHOD(SetPropertyULONG32) (THIS_
  336. const char*      pPropertyName,
  337. ULONG32          uPropertyValue) PURE;
  338.     STDMETHOD(GetPropertyULONG32) (THIS_
  339. const char*      pPropertyName,
  340. REF(ULONG32)     uPropertyName) PURE;
  341.     STDMETHOD(GetFirstPropertyULONG32) (THIS_
  342. REF(const char*) pPropertyName,
  343. REF(ULONG32)     uPropertyValue) PURE;
  344.     STDMETHOD(GetNextPropertyULONG32) (THIS_
  345. REF(const char*) pPropertyName,
  346. REF(ULONG32)     uPropertyValue) PURE;
  347.     STDMETHOD(SetPropertyBuffer) (THIS_
  348. const char*      pPropertyName,
  349. IHXBuffer*      pPropertyValue) PURE;
  350.     STDMETHOD(GetPropertyBuffer) (THIS_
  351. const char*      pPropertyName,
  352. REF(IHXBuffer*) pPropertyValue) PURE;
  353.     
  354.     STDMETHOD(GetFirstPropertyBuffer) (THIS_
  355. REF(const char*) pPropertyName,
  356. REF(IHXBuffer*) pPropertyValue) PURE;
  357.     STDMETHOD(GetNextPropertyBuffer) (THIS_
  358. REF(const char*) pPropertyName,
  359. REF(IHXBuffer*) pPropertyValue) PURE;
  360.     STDMETHOD(SetPropertyCString) (THIS_
  361. const char*      pPropertyName,
  362. IHXBuffer*      pPropertyValue) PURE;
  363.     STDMETHOD(GetPropertyCString) (THIS_
  364. const char*      pPropertyName,
  365. REF(IHXBuffer*) pPropertyValue) PURE;
  366.     STDMETHOD(GetFirstPropertyCString) (THIS_
  367. REF(const char*) pPropertyName,
  368. REF(IHXBuffer*) pPropertyValue) PURE;
  369.     STDMETHOD(GetNextPropertyCString) (THIS_
  370. REF(const char*) pPropertyName,
  371. REF(IHXBuffer*) pPropertyValue) PURE;
  372. };
  373. /****************************************************************************
  374.  * 
  375.  *  Interface:
  376.  *
  377.  * IHXValuesRemove
  378.  *
  379.  *  Purpose:
  380.  *
  381.  *      This interface is to add Remove methods to a class that supports 
  382.  *      IHXValues.  All classes that support this interface will also 
  383.  *      support IHXValues.
  384.  *   
  385.  *  
  386.  *
  387.  *  IID_IHXValuesRemove:
  388.  *
  389.  * {00001303-0901-11d1-8B06-00A024406D59}
  390.  *
  391.  */
  392. DEFINE_GUID(IID_IHXValuesRemove, 0x00001303, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  393. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  394. /*
  395.  *  The IHXCommonClassFactory does not support creating an instance
  396.  *  of this object.
  397.  */
  398. #undef  INTERFACE
  399. #define INTERFACE   IHXValuesRemove
  400. DECLARE_INTERFACE_(IHXValuesRemove, IUnknown)
  401. {
  402.     /*
  403.      * IUnknown methods
  404.      */
  405.     STDMETHOD(QueryInterface) (THIS_
  406. REFIID riid,
  407. void** ppvObj) PURE;
  408.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  409.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  410.     /*
  411.      * IHXValuesRemove methods
  412.      */
  413.      /************************************************************************
  414.      * Method:
  415.      *     IHXKeyValuesRemove::Remove
  416.      * Purpose:
  417.      *      Remove all items matching pKey.  (If you know what datatype you saved
  418.      *      the key as, use the specific method.)
  419.      */
  420.     STDMETHOD(Remove)      (const char* pKey) PURE;
  421.     
  422.      /************************************************************************
  423.      * Method:
  424.      *     IHXKeyValuesRemove::RemoveULONG32
  425.      * Purpose:
  426.      *      Remove all ULONG32 items matching pKey. 
  427.      */
  428.     STDMETHOD(RemoveULONG32) (const char* pKey) PURE;
  429.     
  430.      /************************************************************************
  431.      * Method:
  432.      *     IHXKeyValuesRemove::RemoveBuffer
  433.      * Purpose:
  434.      *      Remove all Buffer items matching pKey. 
  435.      */
  436.     STDMETHOD(RemoveBuffer)  (const char* pKey) PURE;
  437.     
  438.      /************************************************************************
  439.      * Method:
  440.      *     IHXKeyValuesRemove::RemoveCString
  441.      * Purpose:
  442.      *      Remove all CString items matching pKey. 
  443.      */
  444.     STDMETHOD(RemoveCString) (const char* pKey) PURE;
  445. };
  446. // $Private:
  447. DEFINE_GUID(IID_IHXClientPacket,   0x00001304, 0x0901, 0x11d1, 0x8b, 0x06, 0x0, 
  448.     0xa0, 0x24, 0x40, 0x6d, 0x59);
  449. #undef  INTERFACE
  450. #define INTERFACE   IHXClientPacket
  451. DECLARE_INTERFACE_(IHXClientPacket, IUnknown)
  452. {
  453.     /*
  454.      * IUnknown methods
  455.      */
  456.     STDMETHOD(QueryInterface) (THIS_
  457. REFIID riid,
  458. void** ppvObj) PURE;
  459.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  460.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  461. };
  462. DEFINE_GUID(IID_IHXBroadcastDistPktExt, 0x00001305, 0x0901, 0x11d1, 0x8b, 0x06, 0x0, 
  463.     0xa0, 0x24, 0x40, 0x6d, 0x59);
  464. #undef  INTERFACE
  465. #define INTERFACE   IHXBroadcastDistPktExt
  466. DECLARE_INTERFACE_(IHXBroadcastDistPktExt, IUnknown)
  467. {
  468.     /*
  469.      * IUnknown methods
  470.      */
  471.     STDMETHOD(QueryInterface) (THIS_
  472. REFIID riid,
  473. void** ppvObj) PURE;
  474.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  475.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  476.     STDMETHOD_(UINT32,GetSeqNo)  (THIS) PURE;
  477.     STDMETHOD_(UINT32,GetStreamSeqNo)  (THIS) PURE;
  478.     STDMETHOD_(BOOL,GetIsLostRelaying)  (THIS) PURE;
  479.     STDMETHOD(SetSeqNo)  (THIS_ UINT32 ulSeqNo) PURE;
  480.     STDMETHOD(SetStreamSeqNo)  (THIS_ UINT32 ulStreamSeqNo) PURE;
  481.     STDMETHOD(SetIsLostRelaying)  (THIS_ BOOL bLostRelay) PURE;
  482. };
  483. // $EndPrivate.
  484. #endif /* _IHXPCKTS_H_ */