123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542 |
- //*****************************************************************************
- //
- // 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
- );
- };
|