You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
amarok/amarok/src/engine/helix/helix-sp/helix-include/common/include/ihxpckts.h

661 lines
17 KiB

/*
*
* This software is released under the provisions of the GPL version 2.
* see file "COPYING". If that file is not available, the full statement
* of the license can be found at
*
* http://www.fsf.org/licensing/licenses/gpl.txt
*
* Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
*
*/
#ifndef _IHXPCKTS_H_
#define _IHXPCKTS_H_
// Define IHXUtilities
// $Private
#include "hxvalue.h"
// $EndPrivate
/* ASMFlags in IHXPacket */
#define HX_ASM_SWITCH_ON 0x01
#define HX_ASM_SWITCH_OFF 0x02
#define HX_ASM_DROPPED_PKT 0x04
/****************************************************************************
*
* Interface:
*
* IHXBuffer
*
* Purpose:
*
* Basic opaque data storage buffer. Used in interfaces where
* object ownership is best managed through COM style reference
* counting.
*
* IID_IHXBuffer:
*
* {00001300-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXBuffer, 0x00001300, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
/*
* The IHXCommonClassFactory supports creating an instance
* of this object.
*/
#define CLSID_IHXBuffer IID_IHXBuffer
#undef INTERFACE
#define INTERFACE IHXBuffer
DECLARE_INTERFACE_(IHXBuffer, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXBuffer methods
*/
STDTQT_METHOD(Get) (THIS_
REF(UCHAR*) pData,
REF(ULONG32) ulLength) PURE;
STDTQT_METHOD(Set) (THIS_
const UCHAR* pData,
ULONG32 ulLength) PURE;
STDTQT_METHOD(SetSize) (THIS_
ULONG32 ulLength) PURE;
STDMETHOD_(ULONG32,GetSize) (THIS) PURE;
STDMETHOD_(UCHAR*,GetBuffer)(THIS) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXPacket
*
* Purpose:
*
* Basic data packet in the RealMedia system.
*
* IID_IHXPacket:
*
* {00001301-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXPacket, 0x00001301, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
/*
* The IHXCommonClassFactory supports creating an instance
* of this object.
*/
#define CLSID_IHXPacket IID_IHXPacket
#undef INTERFACE
#define INTERFACE IHXPacket
DECLARE_INTERFACE_(IHXPacket, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXPacket methods
*/
STDTQT_METHOD(Get) (THIS_
REF(IHXBuffer*) pBuffer,
REF(UINT32) ulTime,
REF(UINT16) unStreamNumber,
REF(UINT8) unASMFlags,
REF(UINT16) unASMRuleNumber
) PURE;
STDMETHOD_(IHXBuffer*,GetBuffer) (THIS) PURE;
STDMETHOD_(ULONG32,GetTime) (THIS) PURE;
STDMETHOD_(UINT16,GetStreamNumber) (THIS) PURE;
STDMETHOD_(UINT8,GetASMFlags) (THIS) PURE;
STDMETHOD_(UINT16,GetASMRuleNumber) (THIS) PURE;
STDMETHOD_(HXBOOL,IsLost) (THIS) PURE;
STDTQT_METHOD(SetAsLost) (THIS) PURE;
STDTQT_METHOD(Set) (THIS_
IHXBuffer* pBuffer,
UINT32 ulTime,
UINT16 uStreamNumber,
UINT8 unASMFlags,
UINT16 unASMRuleNumber
) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXPacket
*
* Purpose:
*
* RTP data packet in the RealMedia system.
*
* IID_IHXRTPPacket:
*
* {0169A731-1ED0-11d4-952B-00902742C923}
*
*/
DEFINE_GUID(IID_IHXRTPPacket, 0x169a731, 0x1ed0, 0x11d4, 0x95, 0x2b, 0x0,
0x90, 0x27, 0x42, 0xc9, 0x23);
/*
* The IHXCommonClassFactory supports creating an instance
* of this object.
*/
#define CLSID_IHXRTPPacket IID_IHXRTPPacket
#undef INTERFACE
#define INTERFACE IHXRTPPacket
DECLARE_INTERFACE_(IHXRTPPacket, IHXPacket)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXPacket methods
*/
STDTQT_METHOD(Get) (THIS_
REF(IHXBuffer*) pBuffer,
REF(UINT32) ulTime,
REF(UINT16) unStreamNumber,
REF(UINT8) unASMFlags,
REF(UINT16) unASMRuleNumber
) PURE;
STDMETHOD_(IHXBuffer*,GetBuffer) (THIS) PURE;
STDMETHOD_(ULONG32,GetTime) (THIS) PURE;
STDMETHOD_(UINT16,GetStreamNumber) (THIS) PURE;
STDMETHOD_(UINT8,GetASMFlags) (THIS) PURE;
STDMETHOD_(UINT16,GetASMRuleNumber) (THIS) PURE;
STDMETHOD_(HXBOOL,IsLost) (THIS) PURE;
STDTQT_METHOD(SetAsLost) (THIS) PURE;
STDTQT_METHOD(Set) (THIS_
IHXBuffer* pBuffer,
UINT32 ulTime,
UINT16 uStreamNumber,
UINT8 unASMFlags,
UINT16 unASMRuleNumber
) PURE;
/*
* IHXRTPPacket methods
*/
STDMETHOD_(ULONG32,GetRTPTime) (THIS) PURE;
STDTQT_METHOD(GetRTP) (THIS_
REF(IHXBuffer*) pBuffer,
REF(UINT32) ulTime,
REF(UINT32) ulRTPTime,
REF(UINT16) unStreamNumber,
REF(UINT8) unASMFlags,
REF(UINT16) unASMRuleNumber
) PURE;
STDTQT_METHOD(SetRTP) (THIS_
IHXBuffer* pBuffer,
UINT32 ulTime,
UINT32 ulRTPTime,
UINT16 uStreamNumber,
UINT8 unASMFlags,
UINT16 unASMRuleNumber
) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXRTPPacketInfo
*
* Purpose:
*
* Provides complete RTP packet header info (RFC 1889)
*
* IID_IHXPacket:
*
* {EC7D67BB-2E79-49c3-B667-BA8A938DBCE0}
*
*/
DEFINE_GUID(IID_IHXRTPPacketInfo,
0xec7d67bb, 0x2e79, 0x49c3, 0xb6, 0x67, 0xba, 0x8a, 0x93, 0x8d, 0xbc, 0xe0);
#undef INTERFACE
#define INTERFACE IHXRTPPacketInfo
DECLARE_INTERFACE_(IHXRTPPacketInfo, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXRTPPacketInfo methods
*/
STDMETHOD_(UINT8, GetVersion) (THIS) PURE;
STDTQT_METHOD(GetPaddingBit) (THIS_ REF(HXBOOL)bPadding) PURE;
STDTQT_METHOD(SetPaddingBit) (THIS_ HXBOOL bPadding) PURE;
STDTQT_METHOD(GetExtensionBit) (THIS_ REF(HXBOOL)bExtension) PURE;
STDTQT_METHOD(SetExtensionBit) (THIS_ HXBOOL bExtension) PURE;
STDTQT_METHOD(GetCSRCCount) (THIS_ REF(UINT8)unCSRCCount) PURE;
STDTQT_METHOD(SetCSRCCount) (THIS_ UINT8 unCSRCCount) PURE;
STDTQT_METHOD(GetMarkerBit) (THIS_ REF(HXBOOL)bMarker) PURE;
STDTQT_METHOD(SetMarkerBit) (THIS_ HXBOOL bMarker) PURE;
STDTQT_METHOD(GetPayloadType) (THIS_ REF(UINT8)unPayloadType) PURE;
STDTQT_METHOD(SetPayloadType) (THIS_ UINT8 unPayloadType) PURE;
STDTQT_METHOD(GetSequenceNumber) (THIS_ REF(UINT16)unSeqNo) PURE;
STDTQT_METHOD(SetSequenceNumber) (THIS_ UINT16 unSeqNo) PURE;
STDTQT_METHOD(GetTimeStamp) (THIS_ REF(UINT32)ulTS) PURE;
STDTQT_METHOD(SetTimeStamp) (THIS_ UINT32 ulTS) PURE;
STDTQT_METHOD(GetSSRC) (THIS_ REF(UINT32)ulSSRC) PURE;
STDTQT_METHOD(SetSSRC) (THIS_ UINT32 ulSSRC) PURE;
STDTQT_METHOD(GetCSRCList) (THIS_ REF(const char*) pulCSRC) PURE;
STDTQT_METHOD(SetCSRCList) (THIS_ const char* pCSRCList, UINT32 ulSize) PURE;
STDTQT_METHOD(GetPadding) (THIS_ REF(const char*) pPadding) PURE;
STDTQT_METHOD(SetPadding) (THIS_ const char* pPadding, UINT32 ulSize) PURE;
STDTQT_METHOD(GetExtension) (THIS_ REF(const char*) pExtension) PURE;
STDTQT_METHOD(SetExtension) (THIS_ const char* pExtension, UINT32 ulSize) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXValues
*
* Purpose:
*
* This is an interface to a generic name-value pair facility. This
* is used in various places (such as stream headers).
*
* IID_IHXValues:
*
* {00001302-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXValues, 0x00001302, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
/*
* The IHXCommonClassFactory supports creating an instance
* of this object.
*/
#define CLSID_IHXValues IID_IHXValues
#undef INTERFACE
#define INTERFACE IHXValues
DECLARE_INTERFACE_(IHXValues, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXValues methods
*/
/*
* Note: That strings returned as references should be copied or
* used immediately because their lifetime is only as long as the
* IHXValues's objects lifetime.
*
* Note: Your iterator will be reset once you give up control to the
* RMA core (i.e. you exit whatever function gave you a time slice).
*/
STDTQT_METHOD(SetPropertyULONG32) (THIS_
const char* pPropertyName,
ULONG32 uPropertyValue) PURE;
STDTQT_METHOD(GetPropertyULONG32) (THIS_
const char* pPropertyName,
REF(ULONG32) uPropertyName) PURE;
STDTQT_METHOD(GetFirstPropertyULONG32) (THIS_
REF(const char*) pPropertyName,
REF(ULONG32) uPropertyValue) PURE;
STDTQT_METHOD(GetNextPropertyULONG32) (THIS_
REF(const char*) pPropertyName,
REF(ULONG32) uPropertyValue) PURE;
STDTQT_METHOD(SetPropertyBuffer) (THIS_
const char* pPropertyName,
IHXBuffer* pPropertyValue) PURE;
STDTQT_METHOD(GetPropertyBuffer) (THIS_
const char* pPropertyName,
REF(IHXBuffer*) pPropertyValue) PURE;
STDTQT_METHOD(GetFirstPropertyBuffer) (THIS_
REF(const char*) pPropertyName,
REF(IHXBuffer*) pPropertyValue) PURE;
STDTQT_METHOD(GetNextPropertyBuffer) (THIS_
REF(const char*) pPropertyName,
REF(IHXBuffer*) pPropertyValue) PURE;
STDTQT_METHOD(SetPropertyCString) (THIS_
const char* pPropertyName,
IHXBuffer* pPropertyValue) PURE;
STDTQT_METHOD(GetPropertyCString) (THIS_
const char* pPropertyName,
REF(IHXBuffer*) pPropertyValue) PURE;
STDTQT_METHOD(GetFirstPropertyCString) (THIS_
REF(const char*) pPropertyName,
REF(IHXBuffer*) pPropertyValue) PURE;
STDTQT_METHOD(GetNextPropertyCString) (THIS_
REF(const char*) pPropertyName,
REF(IHXBuffer*) pPropertyValue) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXValues2
*
* Purpose:
* This is an extension to the IHXValues interface. This extension
* let's store IUnknown properties and remove values
*
* IID_IHXValues2:
*
* {7AE64D81-C5AB-4b0a-94F2-B4D6DD2BDA7A}
*
*/
DEFINE_GUID(IID_IHXValues2,
0x7ae64d81, 0xc5ab, 0x4b0a, 0x94, 0xf2, 0xb4, 0xd6, 0xdd, 0x2b, 0xda, 0x7a);
#define CLSID_IHXValues2 IID_IHXValues2
#undef INTERFACE
#define INTERFACE IHXValues2
DECLARE_INTERFACE_(IHXValues2, IHXValues)
{
/*
* IHXValues2 methods
*/
STDTQT_METHOD(SetPropertyObject) (THIS_
const char* pPropertyName,
IUnknown* pPropertyValue) PURE;
STDTQT_METHOD(GetPropertyObject) (THIS_
const char* pPropertyName,
REF(IUnknown*) pPropertyValue) PURE;
STDTQT_METHOD(GetFirstPropertyObject) (THIS_
REF(const char*) pPropertyName,
REF(IUnknown*) pPropertyValue) PURE;
STDTQT_METHOD(GetNextPropertyObject) (THIS_
REF(const char*) pPropertyName,
REF(IUnknown*) pPropertyValue) PURE;
/************************************************************************
* Method:
* IHXValues2::Remove
* Purpose:
* Remove all items matching pKey. (If you know what datatype you saved
* the key as, use the specific method.)
*/
STDTQT_METHOD(Remove) (const char* pKey) PURE;
/************************************************************************
* Method:
* IHXValues2::RemoveULONG32
* Purpose:
* Remove all ULONG32 items matching pKey.
*/
STDTQT_METHOD(RemoveULONG32) (const char* pKey) PURE;
/************************************************************************
* Method:
* IHXValues2::RemoveBuffer
* Purpose:
* Remove all Buffer items matching pKey.
*/
STDTQT_METHOD(RemoveBuffer) (const char* pKey) PURE;
/************************************************************************
* Method:
* IHXValues2::RemoveCString
* Purpose:
* Remove all CString items matching pKey.
*/
STDTQT_METHOD(RemoveCString) (const char* pKey) PURE;
/************************************************************************
* Method:
* IHXValues2::RemoveObject
* Purpose:
* Remove all IUnknown items matching pKey.
*/
STDTQT_METHOD(RemoveObject) (const char* pKey) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXValuesRemove
*
* Purpose:
*
* This interface is to add Remove methods to a class that supports
* IHXValues. All classes that support this interface will also
* support IHXValues.
*
*
*
* IID_IHXValuesRemove:
*
* {00001303-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXValuesRemove, 0x00001303, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
/*
* The IHXCommonClassFactory does not support creating an instance
* of this object.
*/
#undef INTERFACE
#define INTERFACE IHXValuesRemove
DECLARE_INTERFACE_(IHXValuesRemove, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXValuesRemove methods
*/
/************************************************************************
* Method:
* IHXKeyValuesRemove::Remove
* Purpose:
* Remove all items matching pKey. (If you know what datatype you saved
* the key as, use the specific method.)
*/
STDTQT_METHOD(Remove) (const char* pKey) PURE;
/************************************************************************
* Method:
* IHXKeyValuesRemove::RemoveULONG32
* Purpose:
* Remove all ULONG32 items matching pKey.
*/
STDTQT_METHOD(RemoveULONG32) (const char* pKey) PURE;
/************************************************************************
* Method:
* IHXKeyValuesRemove::RemoveBuffer
* Purpose:
* Remove all Buffer items matching pKey.
*/
STDTQT_METHOD(RemoveBuffer) (const char* pKey) PURE;
/************************************************************************
* Method:
* IHXKeyValuesRemove::RemoveCString
* Purpose:
* Remove all CString items matching pKey.
*/
STDTQT_METHOD(RemoveCString) (const char* pKey) PURE;
};
// $Private:
DEFINE_GUID(IID_IHXClientPacket, 0x00001304, 0x0901, 0x11d1, 0x8b, 0x06, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXClientPacket
DECLARE_INTERFACE_(IHXClientPacket, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
};
DEFINE_GUID(IID_IHXBroadcastDistPktExt, 0x3b022922, 0x94a1, 0x4be5, 0xbd, 0x25, 0x21,
0x6d, 0xa2, 0x7b, 0xd8, 0xfc);
#undef INTERFACE
#define INTERFACE IHXBroadcastDistPktExt
DECLARE_INTERFACE_(IHXBroadcastDistPktExt, IUnknown)
{
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
STDMETHOD_(UINT32,GetSeqNo) (THIS) PURE;
STDMETHOD_(UINT32,GetStreamSeqNo) (THIS) PURE;
STDMETHOD_(HXBOOL,GetIsLostRelaying) (THIS) PURE;
STDMETHOD_(HXBOOL,SupportsLowLatency) (THIS) PURE;
STDMETHOD_(UINT16,GetRuleSeqNoArraySize) (THIS) PURE;
STDMETHOD_(UINT16*,GetRuleSeqNoArray) (THIS) PURE;
STDTQT_METHOD(SetSeqNo) (THIS_ UINT32 ulSeqNo) PURE;
STDTQT_METHOD(SetStreamSeqNo) (THIS_ UINT32 ulStreamSeqNo) PURE;
STDTQT_METHOD(SetIsLostRelaying) (THIS_ HXBOOL bLostRelay) PURE;
STDTQT_METHOD(SetRuleSeqNoArray) (THIS_ UINT16* pRuleSeqNoArray, UINT16 uSize) PURE;
};
// $EndPrivate.
#endif /* _IHXPCKTS_H_ */