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.
542 lines
22 KiB
542 lines
22 KiB
//*****************************************************************************
|
|
//
|
|
// Microsoft Windows Media
|
|
// Copyright (C) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// FileName: wmspacket.idl
|
|
//
|
|
// Abstract:
|
|
//
|
|
//*****************************************************************************
|
|
|
|
cpp_quote("//*****************************************************************************")
|
|
cpp_quote("//")
|
|
cpp_quote("// Microsoft Windows Media")
|
|
cpp_quote("// Copyright (C) Microsoft Corporation. All rights reserved.")
|
|
cpp_quote("//")
|
|
cpp_quote("// Automatically generated by Midl from wmspacket.idl" )
|
|
cpp_quote("//")
|
|
cpp_quote("// DO NOT EDIT THIS FILE.")
|
|
cpp_quote("//")
|
|
cpp_quote("//*****************************************************************************")
|
|
|
|
cpp_quote("#if _MSC_VER > 1000")
|
|
cpp_quote("#pragma once")
|
|
cpp_quote("#endif // _MSC_VER > 1000")
|
|
|
|
import "objidl.idl";
|
|
|
|
import "WMSBuffer.idl";
|
|
import "WMSContext.idl";
|
|
|
|
cpp_quote( "EXTERN_GUID( IID_IWMSPacket, 0x3309C901,0x10A4,0x11d2,0x9E,0xEE,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
|
|
cpp_quote( "EXTERN_GUID( IID_IWMSPacketList, 0x3309C902,0x10A4,0x11d2,0x9E,0xEE,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
|
|
cpp_quote( "EXTERN_GUID( IID_IWMSPacketParser, 0x8b59f7e1, 0x5411, 0x11d2, 0x9e, 0xff, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );" )
|
|
cpp_quote( "EXTERN_GUID( IID_IWMSPacketListCallback, 0x49c2a6f1, 0x64b8, 0x11d2, 0x9f, 0xe, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );" )
|
|
cpp_quote( "EXTERN_GUID( IID_IWMSStreamSignalHandler, 0x7B10F261,0x26AA,0x11d2,0x9E,0xF2,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
|
|
|
|
|
|
// These are the defined packet attributes.
|
|
// WMSPACKETDESC structure is using the fact that first N fields have exact order.
|
|
// DO NOT MODIFY ORDER ON ENUM WITHOUT UPDATING WMSPACKETDESC
|
|
typedef [public] enum WMS_PACKET_ATTRIBUTES
|
|
{
|
|
WMS_PACKET_PACKET_NUM = 0,
|
|
WMS_PACKET_NUM_BUFFERS,
|
|
WMS_PACKET_LENGTH,
|
|
WMS_PACKET_SEND_TIME_HI,
|
|
WMS_PACKET_SEND_TIME,
|
|
WMS_PACKET_STREAM_NUM,
|
|
WMS_PACKET_FLAGS,
|
|
WMS_PACKET_NET_SEQUENCE_NUMBER,
|
|
WMS_PACKET_PRESENT_TIME_HI,
|
|
WMS_PACKET_PRESENT_TIME,
|
|
WMS_PACKET_RECV_TIME,
|
|
WMS_PACKET_NUM_NACKS,
|
|
WMS_PACKET_DURATION,
|
|
WMS_PACKET_ERASURES_DETECTED,
|
|
WMS_PACKET_SEND_TIME_ADJUSTMENT,
|
|
WMS_PACKET_PACKETIZED_HDRLEN,
|
|
[hidden] WMS_LAST_PACKET_ATTRIBUTE = WMS_PACKET_PACKETIZED_HDRLEN,
|
|
} WMS_PACKET_ATTRIBUTES;
|
|
|
|
|
|
// These are the packet flags.
|
|
typedef [public] enum WMS_PACKET_FLAG_TYPES
|
|
{
|
|
WMS_KEY_FRAME_PACKET = 0x0001, // used by server, intrinsic media packet property
|
|
WMS_RETRANSMITTED_PACKET = 0x0002, // used by network receiver and netsource
|
|
WMS_PACKET_REPORTED = 0x0004, // used by netsource
|
|
WMS_PACKET_PACKETIZED = 0x0008, // used by network sender
|
|
WMS_RECOVERED_PACKET = 0x0010, // used by fec protocol parser and netsource
|
|
WMS_FEC_PACKET = 0x0020, // used by networksender
|
|
WMS_FEC_ENCODED_PACKET = 0x0040, // used by network sender and makes sense only if it is a fecpacket
|
|
WMS_PACKET_BURST_FLAG = 0x0080, // used by network sender and control protocol packetizer
|
|
WMS_PACKET_FIRST_PAYLOAD_FLAG = 0x0100, // used by server, intrinsic media packet property
|
|
} WMS_PACKET_FLAG_TYPES;
|
|
|
|
|
|
// These are the defined packet list attributes.
|
|
typedef [public] enum WMS_PACKET_LIST_ATTRIBUTES
|
|
{
|
|
WMS_PACKET_LIST_FLAGS = 0,
|
|
WMS_STREAM_SIGNAL = 1,
|
|
WMS_PACKET_LIST_GENID = 2,
|
|
WMS_PACKET_LIST_SEND_TIME = 3,
|
|
WMS_PACKET_LIST_SEND_TIME_HI = 4,
|
|
WMS_PACKET_LIST_PLAYLIST_GEN_ID = 5,
|
|
[hidden] WMS_LAST_PACKET_LIST_ATTRIBUTE = WMS_PACKET_LIST_PLAYLIST_GEN_ID
|
|
} WMS_PACKET_LIST_ATTRIBUTES;
|
|
|
|
|
|
// These are the packet list flags.
|
|
typedef [public] enum WMS_PACKET_LIST_FLAG_TYPES
|
|
{
|
|
WMS_PACKET_LIST_NEEDS_FIXUP = 0x0001,
|
|
WMS_PACKET_LIST_UDP_RESEND = 0x0002,
|
|
WMS_PACKET_LIST_PRESTUFF = 0x0004,
|
|
WMS_PACKET_LIST_PLAYLIST_CHANGE_RECEDING = 0x0008,
|
|
} WMS_PACKET_LIST_FLAG_TYPES;
|
|
|
|
typedef [public] enum WMS_PACKET_LIST_EX_FLAGS
|
|
{
|
|
WMS_NO_ADDREF = 0x80000000,
|
|
WMS_PACKET_NO_ADDREF = 0x80000000,
|
|
WMS_PACKET_NO_RELEASE = 0x40000000,
|
|
WMS_PLIST_BUFFER_NO_ADDREF = 0x80000000,
|
|
WMS_PLIST_BUFFER_NO_RELEASE = 0x40000000,
|
|
WMS_PLIST_NO_ADDREF = 0x80000000,
|
|
} WMS_PACKET_LIST_EX_FLAGS;
|
|
|
|
typedef [public] enum WMS_PACKET_BUFFER_FLAGS
|
|
{
|
|
WMS_INSERT_BUFFER_AT_END = 0xFFFFFFFF
|
|
} WMS_PACKET_BUFFER_FLAGS;
|
|
|
|
typedef [public] enum WMS_PACKET_BUFFER_EX_FLAGS
|
|
{
|
|
WMS_BUFFER_NO_ADDREF = 0x80000000,
|
|
WMS_BUFFER_NO_RELEASE = 0x40000000,
|
|
WMS_BUFFER_NO_REFCOUNT = 0x20000000,
|
|
WMS_BUFFER_COMBINE = 0x10000000,
|
|
} WMS_PACKET_BUFFER_EX_FLAGS;
|
|
|
|
typedef [public] enum WMS_PACKET_STATUS_FLAGS
|
|
{
|
|
WMS_START_NEXT_READ = 0x0001,
|
|
WMS_WRITE_COMPLETED = 0x0002,
|
|
WMS_REQUEST_BUFFER = 0x0004,
|
|
WMS_HEADER_BUFFER = 0x0008,
|
|
} WMS_PACKET_STATUS_FLAGS;
|
|
|
|
typedef [public] enum WMS_PARSER_FLAG_TYPES
|
|
{
|
|
WMS_PARSER_PRESERVE_PADDING = 0x0001,
|
|
} WMS_PARSER_FLAG_TYPES;
|
|
|
|
typedef unsigned __int64 QWORD;
|
|
|
|
interface IWMSPacketParser;
|
|
interface IWMSPacketList;
|
|
interface IWMSPacketListCallback;
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// PACKETS
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
[
|
|
object,
|
|
pointer_default(unique),
|
|
uuid(3309C901-10A4-11d2-9EEE-006097D2D7CF),
|
|
version(9.0),
|
|
helpstring("Contains methods for managing the buffers, attributes, and headers associated with a packet.")
|
|
]
|
|
interface IWMSPacket : IUnknown
|
|
{
|
|
typedef struct
|
|
{
|
|
INSSBuffer * pBuffer;
|
|
DWORD dwBufferOffset;
|
|
DWORD dwBufferLen;
|
|
WORD wFlags;
|
|
} WMSBUFFERDESC;
|
|
|
|
// Every packet can be a scatter/gather list. Packets
|
|
// are variable size, but the raw IO reads fixed sized
|
|
// buffers. Note, the buffer pointer is not marshalled,
|
|
// so this won't work over dcom.
|
|
|
|
[helpstring("Retrieves an array of WMSBUFFERDESC structures. Each WMSBUFFERDESC structure contains the location and size of a specific buffer region that contains the packet's data.")] HRESULT
|
|
GetAllBuffers(
|
|
[in] DWORD dwMaxNumBuffers,
|
|
[out] WMSBUFFERDESC *pDesc,
|
|
[out] DWORD *pdwNumBuffers,
|
|
[in] DWORD dwExFlags
|
|
);
|
|
[helpstring("Retrieves the location of a specific buffer region that contains the packet's data.")] HRESULT
|
|
GetBuffer(
|
|
[in] DWORD dwBufferNum,
|
|
[out] INSSBuffer **ppBuffer,
|
|
[out] DWORD *pdwBufferOffset,
|
|
[out] DWORD *pdwBufferLen,
|
|
[out] WORD *pwFlags,
|
|
[in, defaultvalue(0)] DWORD dwExFlags
|
|
);
|
|
[helpstring("Adds a new region in a buffer to the collection of buffer regions associated with the packet.")] HRESULT
|
|
InsertBuffer(
|
|
[in] DWORD dwBufferNum, // -1 means at the end
|
|
[in] INSSBuffer *pBuffer,
|
|
[in] DWORD dwBufferOffset,
|
|
[in] DWORD dwBufferLen,
|
|
[in] WORD wFlags,
|
|
[in, defaultvalue(0)] DWORD dwExFlags
|
|
);
|
|
[helpstring("Removes the specified region in a buffer from the collection of buffer regions associated with the packet.")] HRESULT
|
|
RemoveBuffer( [in] DWORD dwBufferNum);
|
|
[helpstring("Removes all of the buffer regions associated with the packet.")] HRESULT
|
|
RemoveAllBuffers();
|
|
|
|
// Packet attributes. Different parts of the server may read
|
|
// and write these attributes.
|
|
[helpstring("Retrieves the value for a packet attribute defined by WMS_PACKET_ATTRIBUTES.")] HRESULT
|
|
GetAttribute( [in] DWORD dwValueName, [out] DWORD *pdwValue );
|
|
[helpstring("Specifies the value for a packet attribute defined by WMS_PACKET_ATTRIBUTES.")] HRESULT
|
|
SetAttribute( [in] DWORD dwValueName, [in] DWORD dwValue );
|
|
|
|
[helpstring("Retrieves the value for an extended packet attribute defined by a plug-in.")] HRESULT
|
|
GetExtendedAttribute(
|
|
[in] DWORD dwValueName,
|
|
[out] VARIANT *pVariantValue );
|
|
|
|
[helpstring("Retrieves the name and value for an extended packet attribute defined by a plug-in.")] HRESULT
|
|
GetExtendedAttributeByIndex(
|
|
[in] DWORD dwIndex,
|
|
[out] DWORD * pdwValueName,
|
|
[out] VARIANT *pVariantValue );
|
|
|
|
[helpstring("Specifies the name and value for an extended packet attribute defined by a plug-in.")] HRESULT
|
|
SetExtendedAttribute(
|
|
[in] DWORD dwValueName,
|
|
[in] VARIANT VariantValue );
|
|
|
|
[helpstring("Retrieves the number of extended packet attributes.")] HRESULT
|
|
GetExtendedAttributeCount(
|
|
[out] DWORD * pdwAttrs );
|
|
|
|
[helpstring("Copies the specified attributes to another packet.")] HRESULT
|
|
CopyAttributes(
|
|
[in] IWMSPacket * pDest,
|
|
[in, defaultvalue(NULL)] DWORD * pdwAttrNames,
|
|
[in, defaultvalue(0)] DWORD dwNumAttr,
|
|
[in, defaultvalue(FALSE)] BOOL fCopyExtAttr );
|
|
|
|
// Packet header manipulation. Appends header to first buffer in packet or creates new buffer and writes header to it
|
|
[helpstring("Appends header data to the first buffer region associated with the packet or to a new buffer.")] HRESULT
|
|
AppendHeader(
|
|
[in] IWMSBufferAllocator * pAlloc,
|
|
[in] DWORD dwHeaderLen,
|
|
[in] BYTE * pbHeader );
|
|
|
|
// Packet header manipulation. Copies data to specific location within packet header
|
|
[helpstring("Copies data to specific location within packet header.")] HRESULT
|
|
SetInHeader(
|
|
[in] DWORD cbOffset,
|
|
[in] BYTE * pbData,
|
|
[in] DWORD cbData );
|
|
};
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// PACKET LISTS
|
|
//
|
|
// Each packet lists contains data from exactly one buffer.
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
[
|
|
object,
|
|
pointer_default(unique),
|
|
uuid(49C2A6F1-64B8-11d2-9F0E-006097D2D7CF),
|
|
version(9.0),
|
|
helpstring("Contains a method to respond to the IWMSPacketList::ReportStatus method call.")
|
|
]
|
|
interface IWMSPacketListCallback : IUnknown
|
|
{
|
|
[helpstring("Specifies the results of the the IWMSPacketList::ReportStatus method call.")] HRESULT
|
|
OnReportPacketListStatus( [in] IWMSPacketList *pBuffer,
|
|
[in] DWORD dwStatus );
|
|
};
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
[
|
|
object,
|
|
pointer_default(unique),
|
|
uuid(3309C902-10A4-11d2-9EEE-006097D2D7CF),
|
|
version(9.0),
|
|
helpstring("Contains methods for managing the packets, attributes, and buffers associated with a packet list.")
|
|
]
|
|
interface IWMSPacketList : IWMSBufferAllocator
|
|
{
|
|
typedef struct
|
|
{
|
|
IWMSPacket * pPacket;
|
|
struct {
|
|
DWORD dwPacketNum; // WMS_PACKET_PACKET_NUM = 0,
|
|
DWORD dwPacketNumBuffers; //WMS_PACKET_NUM_BUFFERS,
|
|
DWORD dwPacketLength; //WMS_PACKET_LENGTH,
|
|
DWORD dwPacketSendTimeHi; //WMS_PACKET_SEND_TIME_HI,
|
|
DWORD dwPacketSendTime; //WMS_PACKET_SEND_TIME,
|
|
DWORD dwPacketStreamNum;//WMS_PACKET_STREAM_NUM,
|
|
DWORD dwPacketFlags; //WMS_PACKET_FLAGS,
|
|
DWORD dwPacketNetSequenceNum;//WMS_PACKET_NET_SEQUENCE_NUMBER,
|
|
} Attrs;
|
|
} WMSPACKETDESC;
|
|
[helpstring("Retrieves the number of packets in the packet list.")] HRESULT
|
|
GetPacketCount(
|
|
[out] DWORD *pdwNumPackets );
|
|
|
|
[helpstring("Retrieves a specific packet.")] HRESULT
|
|
GetPacket(
|
|
[in] DWORD dwPacketNum,
|
|
[out] IWMSPacket **ppPacket,
|
|
[in, defaultvalue(0)] DWORD dwExFlags );
|
|
|
|
[helpstring("Retrieves either an array of WMSPACKETDESC structures or an array of packets in the packet list.")] HRESULT
|
|
GetAllPackets(
|
|
[in] DWORD dwFirstPacket,
|
|
[in] DWORD dwMaxNumPackets,
|
|
[out] WMSPACKETDESC * pPacketDesc,
|
|
[out] IWMSPacket ** ppPacket,
|
|
[out] DWORD * pdwDescNum,
|
|
[in] DWORD dwExFlags );
|
|
|
|
[helpstring("Adds a packet to the packet list at the specified location.")] HRESULT
|
|
InsertPacket(
|
|
[in] DWORD dwPacketNum,
|
|
[in] IWMSPacket *pPacket,
|
|
[in, defaultvalue(0)] DWORD dwExFlags );
|
|
|
|
[helpstring("Adds a packet to the end of the packet list.")] HRESULT
|
|
AppendPacket(
|
|
[in] IWMSPacket *pPacket,
|
|
[in, defaultvalue(0)] DWORD dwExFlags );
|
|
|
|
[helpstring("Removes the specified packet from the packet list.")] HRESULT
|
|
RemovePacket(
|
|
[in] DWORD dwPacketNum );
|
|
|
|
[helpstring("Removes all of the packets from the packet list.")] HRESULT
|
|
RemoveAllPackets(
|
|
[in, defaultvalue(0)] DWORD dwExFlags );
|
|
|
|
// Packet list attributes. Different parts of the server may read
|
|
// and write these attributes.
|
|
[helpstring("Retrieves the value for a packet list attribute defined by WMS_PACKET_LIST_ATTRIBUTES.")] HRESULT
|
|
GetAttribute( [in] DWORD dwValueName, [in] DWORD *pdwValue );
|
|
[helpstring("Specifies the value for a packet list attribute defined by WMS_PACKET_LIST_ATTRIBUTES.")] HRESULT
|
|
SetAttribute( [in] DWORD dwValueName, [in] DWORD dwValue );
|
|
|
|
[helpstring("Retrieves the stream signal defined by WMS_STREAM_SIGNAL_TYPE.")] HRESULT
|
|
GetStreamSignalParam( [out] VARIANT *pParameter );
|
|
[helpstring("Specifies the stream signal defined by WMS_STREAM_SIGNAL_TYPE.")] HRESULT
|
|
SetStreamSignalParam( [in] VARIANT *pParameter );
|
|
|
|
[helpstring("Retrieves the packet parser object that created the packet list.")] HRESULT
|
|
GetPacketParser(
|
|
[out] IWMSPacketParser **ppSource,
|
|
[in, defaultvalue(0)] DWORD dwExFlags );
|
|
|
|
[helpstring("Specifies the packet parser object that created the packet list.")] HRESULT
|
|
SetPacketParser(
|
|
[in] IWMSPacketParser *pSource );
|
|
|
|
[helpstring("Retrieves the buffer associated with this packet list.")] HRESULT
|
|
GetBuffer(
|
|
[out] INSSBuffer **ppBuffer,
|
|
[in, defaultvalue(0)] DWORD dwExFlags );
|
|
|
|
[helpstring("Specifies the buffer associated with this packet list.")] HRESULT
|
|
SetBuffer(
|
|
[in] INSSBuffer *pBuffer );
|
|
|
|
[helpstring("Specifies the callback object that is used to respond to the ReportStatus method call.")] HRESULT
|
|
SetCompletionCallback( [in] IWMSPacketListCallback *pCallback );
|
|
[helpstring("Retrieves the callback object that is used to respond to the ReportStatus method call.")] HRESULT
|
|
GetCompletionCallback( [out] IWMSPacketListCallback **ppCallback );
|
|
|
|
[helpstring("Retrieves the value for an extended packet list attribute defined by a plug-in.")] HRESULT
|
|
GetExtendedAttribute(
|
|
[in] DWORD dwValueName,
|
|
[out] VARIANT *pVariantValue );
|
|
|
|
[helpstring("Retrieves the name and value for an extended packet attribute defined by a plug-in.")] HRESULT
|
|
GetExtendedAttributeByIndex(
|
|
[in] DWORD dwIndex,
|
|
[out] DWORD * pdwValueName,
|
|
[out] VARIANT *pVariantValue );
|
|
|
|
[helpstring("Specifies the value for an extended packet attribute defined by a plug-in.")] HRESULT
|
|
SetExtendedAttribute(
|
|
[in] DWORD dwValueName,
|
|
[in] VARIANT VariantValue );
|
|
|
|
[helpstring("Retrieves the number of extended attributes.")] HRESULT
|
|
GetExtendedAttributeCount(
|
|
[out] DWORD * pdwAttrs );
|
|
|
|
[helpstring("Requests the status for a packet list.")] HRESULT
|
|
ReportStatus( [in] DWORD dwStatus );
|
|
|
|
[helpstring("Creates a copy of the packet list.")] HRESULT
|
|
ClonePacketList( [out] IWMSPacketList **ppClonedPacketList );
|
|
|
|
[helpstring("Allocates a new packet.")] HRESULT
|
|
AllocPacket( [out] IWMSPacket **ppPacket );
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// PACKET PARSERS
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
[
|
|
object,
|
|
pointer_default(unique),
|
|
uuid(8B59F7E1-5411-11d2-9EFF-006097D2D7CF),
|
|
version(9.0),
|
|
helpstring("Provides methods to manipulate individual packets. This interface is implemented by a media parser plug-in.")
|
|
]
|
|
interface IWMSPacketParser : IUnknown
|
|
{
|
|
// Call this if you change packet attributes.
|
|
[helpstring("Updates the packet data to reflect the packets attribute values.")] HRESULT
|
|
UpdatePacket( [in] IWMSPacket *pPacket );
|
|
|
|
[helpstring("Adds an array of packets to a packet list.")] HRESULT
|
|
CombinePackets(
|
|
[in] DWORD dwNumInputPackets,
|
|
[in] IWMSPacket **pInputPacketArray,
|
|
[in] IWMSPacketList *pPacketList,
|
|
[in] DWORD dwFlags
|
|
);
|
|
}
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// STREAM EVENT INTERFACES
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
// These specify types of stream signals
|
|
typedef [public] enum WMS_STREAM_SIGNAL_TYPE
|
|
{
|
|
WMS_NO_STREAM_CHANGE, // 0x0
|
|
|
|
// Param: None
|
|
// There are different errors passed in hr:
|
|
// 1. the source crashed
|
|
// 2. we hit the last packet, but the source is still
|
|
// running so it may be seeked back to the beginning.
|
|
WMS_STREAM_ERROR, // 0x1
|
|
|
|
// Param: None
|
|
// This happens when a stream error causes a fail-over in
|
|
// a playlist. This will be followed by a playlistchange.
|
|
WMS_STREAM_ERROR_HANDLED_BY_PLAYLIST, // 0x2
|
|
|
|
// Param: The header of the new stream
|
|
// This happens when a playlist changes its active entry.
|
|
WMS_PLAYLIST_CHANGED, // 0x3
|
|
|
|
// Param: see below for EOS type or none
|
|
WMS_END_OF_STREAM, // 0x4
|
|
|
|
// Param: The header of the queued stream
|
|
WMS_PLAYLIST_STREAM_QUEUED, // 0x5
|
|
|
|
// Param: The expected amount of dead air in milliseconds
|
|
WMS_BEGIN_NO_DATA_PERIOD, // 0x6
|
|
|
|
// Param: The name of the event as a BSTR
|
|
WMS_PLAYLIST_EVENT, // 0x7
|
|
|
|
// Param: The name of the event as a BSTR
|
|
WMS_PLAYLIST_CUE_EVENT, // 0x8
|
|
|
|
// Param: The name of the event as a BSTR
|
|
WMS_PLAYLIST_UNCUE_EVENT, // 0x9
|
|
|
|
// Param: The name of the element as a BSTR
|
|
WMS_PLAYLIST_BEGIN_ELEMENT_EVENT, // 0xA
|
|
|
|
// Param: The name of the element as a BSTR
|
|
WMS_PLAYLIST_END_ELEMENT_EVENT, // 0xB
|
|
|
|
// Param: None
|
|
WMS_STREAM_SWITCH_DONE, // 0xC
|
|
|
|
// Param: None
|
|
WMS_RESET_TO_REAL_TIME, // 0xD
|
|
|
|
// Param : QWORD, first DWORD contains the number of packets lost
|
|
// while second DWORD contains the total packets recieved so far
|
|
WMS_DATA_LOSS_DETECTED, // 0xE
|
|
|
|
WMS_REUSE_ACCEL_PARAMS // 0xf
|
|
} WMS_STREAM_SIGNAL_TYPE;
|
|
|
|
// These are the EOS types.
|
|
typedef [public] enum WMS_STREAM_SIGNAL_EOS_TYPE
|
|
{
|
|
WMS_STREAM_SIGNAL_EOS_RESERVED = 1, // internal type don't use
|
|
WMS_STREAM_SIGNAL_EOS_RECEDING = 2,
|
|
|
|
}WMS_STREAM_SIGNAL_EOS_TYPE;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
[
|
|
object,
|
|
pointer_default(unique),
|
|
uuid(7B10F261-26AA-11d2-9EF2-006097D2D7CF),
|
|
version(9.0),
|
|
helpstring("Contains a method to provide notification of stream signals defined by WMS_STREAM_SIGNAL_TYPE.")
|
|
]
|
|
interface IWMSStreamSignalHandler : IUnknown
|
|
{
|
|
//
|
|
// The input parameter dwSignalType should have one of the enumerated values
|
|
// in WMS_STREAM_SIGNAL_TYPE.
|
|
//
|
|
[helpstring("Provides notification of a stream signal defined by WMS_STREAM_SIGNAL_TYPE.")] HRESULT
|
|
OnStreamSignal(
|
|
[in] DWORD dwSignalType, // WMS_STREAM_SIGNAL_TYPE
|
|
[in] VARIANT *pSignalParameter,
|
|
[in] IWMSContext *pPresentation
|
|
);
|
|
};
|
|
|
|
|