📄 hxformt.h
字号:
/************************************************************************
* Method:
* IHXLiveFileFormatInfo::GetResendBitrate
* Purpose:
* If periodic live resends are required for this stream, this
* method returns the rate at which we should resend packets. The
* resend rate is measured in bits per second.
*/
STDMETHOD(GetResendBitrate) (THIS_
UINT16 unStreamNumber,
REF(UINT32) ulBitrate) PURE;
/************************************************************************
* Method:
* IHXLiveFileFormatInfo::GetResendDuration
* Purpose:
* If periodic live resends are required for this stream, this
* method returns the number of milliseconds for which this packet
* should be resent.
*/
STDMETHOD(GetResendDuration) (THIS_
IHXPacket* pPacket,
REF(UINT32) ulDuration) PURE;
/************************************************************************
* Method:
* IHXLiveFileFormatInfo::FormResendPacket
* Purpose:
* Forms a live resend packet based upon the original packet passed
* as the first parameter. This allows the file format plugin to
* make resend packets distinguishable from original packets.
*/
STDMETHOD(FormResendPacket) (THIS_
IHXPacket* pOriginalPacket,
REF(IHXPacket*) pResendPacket) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXSyncFileFormatObject
*
* Purpose:
*
* Simple syncronized file format interface
*
* IID_IHXSyncFileFormatObject:
*
* {00000F0C-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXSyncFileFormatObject, 0x00000F0C, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#define CLSID_IHXSyncFileFormatObject IID_IHXSyncFileFormatObject
#undef INTERFACE
#define INTERFACE IHXSyncFileFormatObject
DECLARE_INTERFACE_(IHXSyncFileFormatObject, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXSyncFileFormatObject methods
*/
STDMETHOD(GetFileFormatInfo) (THIS_
REF(const char**) /*OUT*/ pFileMimeTypes,
REF(const char**) /*OUT*/ pFileExtensions,
REF(const char**) /*OUT*/ pFileOpenNames
) PURE;
STDMETHOD(InitFileFormat)
(THIS_
IHXRequest* /*IN*/ pRequest) PURE;
STDMETHOD(GetFileHeader) (THIS_
REF(IHXValues*) /*OUT*/ pHeader) PURE;
STDMETHOD(GetStreamHeader) (THIS_
REF(IHXValues*) /*OUT*/ pStreamHeader,
UINT16 /*IN*/ unStreamNumber) PURE;
STDMETHOD(GetPacket) (THIS_
REF(IHXPacket*) /*OUT*/ pPacket) PURE;
STDMETHOD(Seek) (THIS_
ULONG32 /*IN*/ ulSeekTime) PURE;
STDMETHOD(Close) (THIS) PURE;
};
// $Private:
/****************************************************************************
*
* Interface:
*
* IHXBroadcastLatency
*
* Purpose:
*
* Provides information on latency requirements of broadcast streams.
* Optionally implemented by the broadcast format objec.
*
* IID_IHXBroadcastLatency:
*
* {00000F08-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXBroadcastLatency, 0x00000F08, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXBroadcastLatency
DECLARE_INTERFACE_(IHXBroadcastLatency, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXBroadcastLatency methods
*/
/************************************************************************
* Method:
* IHXBroadcastLatency::GetLatencyRequirements
* Purpose:
* Get latency reqruirements from broadcast format object.
*
* ulBackOff: the amount of time in mS that packet flow from
* the broadcast format object should backoff when no data is available.
*
* bUsePreBuffer: TRUE means that there will be some realtime latency
* between the packets sent to clients at time now, and the live packets
* that are available at time now. FALSE means there will be no realtime
* latency.
*/
STDMETHOD(GetLatencyRequirements) (THIS_
REF(UINT32) ulBackoff,
REF(BOOL) bUsePreBuffer) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXPayloadFormatObject
*
* Purpose:
*
* Object that knows how to properly convert data into a particular
* payload format
*
* IID_IHXPayloadFormatObject:
*
* {00000F07-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXPayloadFormatObject, 0x00000F07, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXPayloadFormatObject
DECLARE_INTERFACE_(IHXPayloadFormatObject, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXPayloadFormatObject methods
*/
STDMETHOD(Init) (THIS_
IUnknown* pContext,
BOOL bPacketize) PURE;
STDMETHOD(Close) (THIS) PURE;
STDMETHOD(Reset) (THIS) PURE;
STDMETHOD(SetStreamHeader) (THIS_
IHXValues* pHeader) PURE;
STDMETHOD(GetStreamHeader) (THIS_
REF(IHXValues*) pHeader) PURE;
STDMETHOD(SetPacket) (THIS_
IHXPacket* pPacket) PURE;
STDMETHOD(GetPacket) (THIS_
REF(IHXPacket*) pPacket) PURE;
STDMETHOD(Flush) (THIS) PURE;
};
// $EndPrivate.
// $Private:
/****************************************************************************
*
* Interface:
*
* IHXBlockFormatObject
*
* Purpose:
*
* Object that knows how to properly convert data into a particular
* payload format
*
* IID_IHXBlockFormatObject:
*
* {00000F08-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXBlockFormatObject, 0x00000F09, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXBlockFormatObject
DECLARE_INTERFACE_(IHXBlockFormatObject, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXBlockFormatObject methods
*/
STDMETHOD(SetByteRange) (THIS_
UINT64 ulFrom,
UINT64 ulTo) PURE;
};
typedef enum _HX_CLIENT_MESSAGE_TYPE
{
CM_RTSP_UNKNOWN,
CM_RTSP_OPTIONS,
CM_RTSP_DESCRIBE,
CM_RTSP_ANNOUNCE,
CM_RTSP_SETUP,
CM_RTSP_PLAY,
CM_RTSP_PAUSE,
CM_RTSP_TEARDOWN,
CM_RTSP_GET_PARAMETER,
CM_RTSP_SET_PARAMETER,
CM_RTSP_REDIRECT,
CM_RTSP_RECORD
} HX_CLIENT_MESSAGE_TYPE;
/****************************************************************************
*
* Interface:
*
* IHXFileFormatHeaderAdvise
*
* Purpose:
*
* File format wants notification when headers arrive from client.
*
* IID_IHXFileFormatHeaderAdvise:
*
* {00000F0A-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXFileFormatHeaderAdvise, 0x00000F0A, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXFileFormatHeaderAdvise
DECLARE_INTERFACE_(IHXFileFormatHeaderAdvise, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXFileFormatHeaderAdvise methods
*
* Only implemented for SETUP, other messages may be added later.
*/
STDMETHOD(OnHeaders) (THIS_
HX_CLIENT_MESSAGE_TYPE pMessageType,
IHXValues* pRequestHeaders,
IHXFileFormatHeaderAdviseResponse* pResp
) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXFileFormatHeaderAdviseResponse
*
* Purpose:
*
* Response for RTSP header advise.
*
* IID_IHXFileFormatHeaderAdviseResponse:
*
* {00000F0B-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXFileFormatHeaderAdviseResponse, 0x00000F0B, 0x901, 0x11d1,
0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXFileFormatHeaderAdviseResponse
DECLARE_INTERFACE_(IHXFileFormatHeaderAdviseResponse, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXFileFormatHeaderAdviseResponse methods
*
* If file format returns error in status, server will disconnect
* from client. Optional RTSP error code will be returned to client,
* if non-zero; else 461 will be used.
*/
STDMETHOD(OnHeadersDone) (THIS_
HX_RESULT status,
UINT32 ulErrNo) PURE;
};
typedef enum _HX_PLAY_PARAM
{
HX_PLAYPARAM_SCALE // cast ulValues to FIXED32 and use macro
} HX_PLAY_PARAM;
/****************************************************************************
*
* Interface:
*
* IHXSetPlayParam
*
* Purpose:
*
*
*
* IID_IHXSetPlayParam:
*
* {0x503c212c-413f-478b-9fc8daa7b145b8a9}
*
*/
DEFINE_GUID(IID_IHXSetPlayParam,
0x503c212c, 0x413f, 0x478b, 0x9f, 0xc8, 0xda, 0xa7, 0xb1, 0x45, 0xb8, 0xa9);
#undef INTERFACE
#define INTERFACE IHXSetPlayParam
DECLARE_INTERFACE_(IHXSetPlayParam, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXSetPlayParam methods
*/
STDMETHOD(SetParam) (THIS_
HX_PLAY_PARAM param,
UINT32 ulValue,
IHXSetPlayParamResponse* pResp) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXSetPlayParamResponse
*
* Purpose:
*
*
*
* IID_IHXSetPlayParamResponse:
*
* {0x750008af-5588-4838-85faaa203a32c799}
*
*/
DEFINE_GUID(IID_IHXSetPlayParamResponse,
0x750008af, 0x5588, 0x4838, 0x85, 0xfa, 0xaa, 0x20, 0x3a, 0x32, 0xc7, 0x99);
#undef INTERFACE
#define INTERFACE IHXSetPlayParamResponse
DECLARE_INTERFACE_(IHXSetPlayParamResponse, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXSetPlayParamResponse methods
*/
STDMETHOD(SetParamDone) (THIS_
HX_RESULT status,
HX_PLAY_PARAM param,
UINT32 ulValue) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXSeekByPacket
*
* Purpose:
*
*
*
* IID_IHXSeekByPacket:
*
* {0x171c3c4e-c4ea-46fd-b47b-c3b82dbb9517}
*
*/
DEFINE_GUID(IID_IHXSeekByPacket,
0x171c3c4e, 0xc4ea, 0x46fd, 0xb4, 0x7b, 0xc3, 0xb8, 0x2d, 0xbb, 0x95, 0x17);
#undef INTERFACE
#define INTERFACE IHXSeekByPacket
DECLARE_INTERFACE_(IHXSeekByPacket, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXSeekByPacket methods
*/
STDMETHOD(SeekToPacket) (THIS_
UINT32 ulPacketNumber,
IHXSeekByPacketResponse* pResp) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXSeekByPacketResponse
*
* Purpose:
*
*
*
* IID_IHXSeekByPacketResponse:
*
* {0xe978476d-6c99-4dc6-9279-7525c693dc34}
*
*/
DEFINE_GUID(IID_IIHXSeekByPacketResponse,
0xe978476d, 0x6c99, 0x4dc6, 0x92, 0x79, 0x75, 0x25, 0xc6, 0x93, 0xdc, 0x34);
#undef INTERFACE
#define INTERFACE IHXSeekByPacketResponse
DECLARE_INTERFACE_(IHXSeekByPacketResponse, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXSeekByPacketResponse methods
*/
STDMETHOD(SeekToPacketDone) (THIS_
HX_RESULT status,
UINT32 ulStartingTimestamp) PURE;
};
// $EndPrivate.
#endif /* _HXFORMT_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -