ihxpckts.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:16k
源码类别:

Symbian

开发平台:

Visual C++

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