Leaked source code of windows server 2003
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.
 
 
 
 
 
 

481 lines
20 KiB

//*****************************************************************************
//
// Microsoft Windows Media
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// FileName: streamdescription.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 streamdescription.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_IWMSStreamHeader, 0x3309C903,0x10A4,0x11d2,0x9E,0xEE,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
cpp_quote( "EXTERN_GUID( IID_IWMSStreamHeaderList, 0x42176202,0x2B30,0x11d2,0x9E,0xF7,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
cpp_quote( "EXTERN_GUID( IID_IWMSContentDescriptionList, 0x105d6f73, 0x6df0, 0x11d2, 0x9f, 0x14, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );" )
cpp_quote( "EXTERN_GUID( IID_IWMSStreamSwitchDescriptionList, 0x75c3017c, 0x6b3a, 0x4e25, 0xbe, 0x9f, 0xa9, 0x92, 0x7f, 0x4d, 0xd0, 0x58 );")
// {52769631-38AA-11d2-9EFA-006097D2D7CF}
cpp_quote( "EXTERN_GUID( IID_IWMSUnknownStreamFormat, 0x52769631, 0x38aa, 0x11d2, 0x9e, 0xfa, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );")
// {52769632-38AA-11d2-9EFA-006097D2D7CF}
cpp_quote( "EXTERN_GUID( IID_IWMSUnknownStreamType, 0x52769632, 0x38aa, 0x11d2, 0x9e, 0xfa, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );")
// {52769631-38AA-11d2-9EFA-006097D2D7CF}
cpp_quote( "EXTERN_GUID( IID_IWMSUnknownContainerFormat, 0x52769631, 0x38aa, 0x11d2, 0x9e, 0xfa, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );")
interface IWMSContentDescriptionList;
//////////////////////////////////////////////////////////////////////////////
//
// HEADERS
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
// This describes the data format of one stream, including the codec.
//////////////////////////////////////////////////////////////////////////////
[
object,
pointer_default(unique),
uuid(3309C903-10A4-11d2-9EEE-006097D2D7CF),
version(9.0),
helpstring("Contains methods that describe the header for a specific stream.")
]
interface IWMSStreamHeader : IUnknown
{
// This identifies the stream format.
// The GUID for ASF is: { 0x75b22630,0x668e,0x11cf,0xa6,0xd9,0x00,0xaa,0x00,0x62,0xce,0x6c }
[helpstring("Retrieves the stream format.")] HRESULT
GetFormat( [out] GUID *pFormat );
[helpstring("Specifies the stream format.")] HRESULT
SetFormat( [in] GUID Format );
// This tells you whether a stream is audio/video/etc. The GUID's
// for audio and video are:
//Audio: { 0xD6E229E2,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE }
//Video: { 0xD6E229E3,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE }
//Image: {0xD6E229E4,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE }
//Text: {0xD6E229E6,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE }
//Script Commands: { 0xD6E229E8,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE }
// Other GUID's may be defined in a later release.
[helpstring("Retrieves the stream type.")] HRESULT
GetStreamType( [out] GUID *pStreamType );
[helpstring("Specifies the stream type.")] HRESULT
SetStreamType( [in] GUID StreamType );
[helpstring("Retrieves the value for an IWMSStreamHeader integer attribute.")] HRESULT
GetIntegerAttribute( [in] DWORD dwAttributeId, [out] DWORD *pdwAttribute );
[helpstring("Specifies the value for an IWMSStreamHeader integer attribute.")] HRESULT
SetIntegerAttribute( [in] DWORD dwAttributeId, [in] DWORD dwAttribute );
[helpstring("Retrieves the value for an IWMSStreamHeader string attribute.")] HRESULT
GetStringAttribute( [in] DWORD dwAttributeId, [out] BSTR *pszAttribute );
[helpstring("Specifies the value for an IWMSStreamHeader string attribute.")] HRESULT
SetStringAttribute( [in] DWORD dwAttributeId, [in] BSTR szAttribute );
[helpstring("Retrieves the value for an extended attribute defined by a plug-in.")] HRESULT
GetExtendedAttribute( [in] DWORD dwValueName, [out] VARIANT *pVariantValue );
[helpstring("Specifies the name and value for an extended attribute defined by a plug-in.")] HRESULT
SetExtendedAttribute( [in] DWORD dwValueName, [in] VARIANT VariantValue );
[helpstring("Retrieves the name and value for an extended attribute defined by a plug-in.")] HRESULT
GetNthExtendedAttribute(
[in] DWORD dwIndex,
[out] DWORD *pdwValueName,
[out] VARIANT *pVariantValue
);
[helpstring("Retrieves the number of extended attributes.")] HRESULT
GetNumExtendedAttributes( [out] DWORD *pdwValueName );
[helpstring("Creates a copy of the IWMSStreamHeader object.")] HRESULT
CloneStreamHeader( [out] IWMSStreamHeader **ppHeader );
};
// IWMSStreamHeader attributes
cpp_quote("#define WMS_STREAM_ID 0")
cpp_quote("#define WMS_STREAM_MIN_BITRATE 1")
cpp_quote("#define WMS_STREAM_MAX_BITRATE 2")
cpp_quote("#define WMS_STREAM_AVG_BITRATE 3")
cpp_quote("#define WMS_STREAM_MAX_PACKET_SIZE 4")
cpp_quote("#define WMS_STREAM_AVG_PACKET_SIZE 5")
cpp_quote("#define WMS_STREAM_PREROLL 6")
cpp_quote("#define WMS_STREAM_FLAGS 7")
cpp_quote("#define WMS_STREAM_NAME 8")
cpp_quote("#define WMS_STREAM_SHARING_GROUP 9")
cpp_quote("#define WMS_STREAM_SHARING_BANDWIDTH 10")
// Increase this value when you add a IWMSStreamHeader attribute above.
cpp_quote("#define WMS_NUM_STREAMHEADER_ATTRIBUTES 11")
// Flags stored in WMS_STREAM_FLAGS
cpp_quote("#define WMS_STREAM_HAS_NON_KEY_FRAMES 0x0001")
cpp_quote("#define WMS_STREAM_RELIABLE_FLAG 0x0002")
cpp_quote("#define WMS_STREAM_CONCEALED_FLAG 0x0004")
// Some values used for streaming decisions independent of protocol
cpp_quote("#define WMS_ASF_THRESHOLD_DURATION 500")
//////////////////////////////////////////////////////////////////////////////
[
object,
pointer_default(unique),
uuid(42176202-2B30-11d2-9EF7-006097D2D7CF),
version(9.0),
helpstring("Contains a collection of IWMSStreamHeader objects and methods that describe each stream in a multimedia stream.")
]
interface IWMSStreamHeaderList : IUnknown
{
[helpstring("Retrieves the number of IWMSStreamHeader objects in the collection")] HRESULT
GetHeaderCount( [out] DWORD *pdwNumHeaders );
[helpstring("Retrieves an IWMSStreamHeader object.")] HRESULT
GetHeader(
[in] DWORD dwHeaderNum,
[out] IWMSStreamHeader **ppHeader
);
[helpstring("Adds a new IWMSStreamHeader object to the collection.")] HRESULT
AppendHeader( [in] IWMSStreamHeader *pHeader );
[helpstring("Removes all IWMSStreamHeader objects in the collection.")] HRESULT
RemoveAllHeaders();
// This identifies the stream format.
// The GUID for ASF is: { 0x75b22630,0x668e,0x11cf,0xa6,0xd9,0x00,0xaa,0x00,0x62,0xce,0x6c }
[helpstring("Retrieves the stream format for the multimedia stream.")] HRESULT
GetContainerFormat( [out] GUID *pFormat );
[helpstring("Specifies the stream format for the multimedia stream.")] HRESULT
SetContainerFormat( [in] GUID Format );
[helpstring("Retrieves the unique identifier for the multimedia stream.")] HRESULT
GetDataVersion( [out] GUID *pFormat );
[helpstring("Specifies the unique identifier for the multimedia stream.")] HRESULT
SetDataVersion( [in] GUID Format );
[helpstring("Retrieves the actual header for the multimedia stream.")] HRESULT
GetNativeContainerHeader(
[out] INSSBuffer **ppBuffer,
[out] DWORD *pdwOffset,
[out] DWORD *pdwLength
);
[helpstring("Specifies the actual header for the multimedia stream.")] HRESULT
SetNativeContainerHeader(
[in] INSSBuffer *pBuffer,
[in] DWORD dwOffset,
[in] DWORD dwLength
);
[helpstring("Retrieves the IWMSContentDescriptionList associated with this IWMSStreamHeaderList object.")] HRESULT
GetContentDescription( [out] IWMSContentDescriptionList **ppDescription );
[helpstring("Specifies the IWMSContentDescriptionList associated with this IWMSStreamHeaderList object.")] HRESULT
SetContentDescription( [in] IWMSContentDescriptionList *pDescription );
[helpstring("Retrieves the value for an IWMSStreamHeaderList integer attribute.")] HRESULT
GetIntegerAttribute( [in] DWORD dwAttributeId, [out] DWORD *pdwAttribute );
[helpstring("Specifies the value for an IWMSStreamHeaderList integer attribute.")] HRESULT
SetIntegerAttribute( [in] DWORD dwAttributeId, [in] DWORD dwAttribute );
[helpstring("Retrieves the value for an IWMSStreamHeaderList string attribute.")] HRESULT
GetStringAttribute( [in] DWORD dwAttributeId, [out] BSTR *pszAttribute );
[helpstring("Specifies the value for an IWMSStreamHeaderList string attribute.")] HRESULT
SetStringAttribute( [in] DWORD dwAttributeId, [in] BSTR szAttribute );
[helpstring("Retrieves the value for an extended attribute defined by a plug-in for this IWMSStreamHeaderList object.")] HRESULT
GetExtendedAttribute( [in] DWORD dwValueName, [out] VARIANT *pVariantValue );
[helpstring("Specifies the name and value for an extended attribute defined by a plug-in for this IWMSStreamHeaderList object.")] HRESULT
SetExtendedAttribute( [in] DWORD dwValueName, [in] VARIANT VariantValue );
[helpstring("Retrieves the name and value for an extended attribute defined by a plug-in for this IWMSStreamHeaderList object.")] HRESULT
GetNthExtendedAttribute(
[in] DWORD dwIndex,
[out] DWORD *pdwValueName,
[out] VARIANT *pVariantValue
);
[helpstring("Retrieves the number of extended attributes.")] HRESULT
GetNumExtendedAttributes( [out] DWORD *pdwValueName );
[helpstring("Creates a copy of the IWMSStreamHeaderList object.")] HRESULT
CloneStreamHeaderList(
[in] IWMSBufferAllocator *pBufferAllocator,
[out] IWMSStreamHeaderList **ppHeader
);
[helpstring("Specifies the playlist generation ID that identifies the playlist entry that a command from a client is associated with.")] HRESULT
RecordPlaylistGenerationId(
[in] IWMSCommandContext *pCommand
);
[helpstring("Retrieves the playlist generation ID that identifies the playlist entry that a command from a client is associated with.")] HRESULT
CheckPlaylistGenerationId(
[in] IWMSCommandContext *pCommand
);
};
// Attributes used by IWMSStreamHeaderList::GetIntegerAttribute and
// IWMSStreamHeaderList::SetIntegerAttribute
cpp_quote("#define WMS_TOTAL_MIN_BITRATE 0")
cpp_quote("#define WMS_TOTAL_MAX_BITRATE 1")
cpp_quote("#define WMS_TOTAL_AVG_BITRATE 2")
cpp_quote("#define WMS_CONTAINER_FLAGS 3")
cpp_quote("#define WMS_CONTAINER_DURATION_LO 4")
cpp_quote("#define WMS_CONTAINER_DURATION_HI 5")
cpp_quote("#define WMS_CONTAINER_MAX_PACKET_SIZE 6")
cpp_quote("#define WMS_CONTAINER_PLAYLIST_ENTRY_NAME 7")
cpp_quote("#define WMS_TOTAL_PACKETS_LO 8")
cpp_quote("#define WMS_TOTAL_PACKETS_HI 9")
cpp_quote("#define WMS_STREAM_PLAYLIST_GENERATION_ID 10")
cpp_quote("#define WMS_CONTAINER_FILESIZE_LO 11")
cpp_quote("#define WMS_CONTAINER_FILESIZE_HI 12")
cpp_quote("#define WMS_STREAM_DISTRIBUTION_PLAYLIST_GENERATION_ID 13")
cpp_quote("#define WMS_CONTAINER_LOG_PHYSICAL_URL 14")
cpp_quote("#define WMS_CONTAINER_IS_VBR 15")
cpp_quote("#define WMS_STREAM_BROADCAST_GENERATION_ID 16")
cpp_quote("#define WMS_STREAM_DISTRIBUTION_BROADCAST_GENERATION_ID 17")
// Increase this value when you add an attribute to StreamheaderList.
cpp_quote("#define WMS_NUM_STREAMHEADERLIST_ATTRIBUTES 18")
// Flags stored in WMS_CONTAINER_FLAGS attribute.
cpp_quote("#define WMS_CONTAINER_BROADCAST 0x0001")
cpp_quote("#define WMS_CONTAINER_CANSEEK 0x0002")
cpp_quote("#define WMS_CONTAINER_CANSTRIDE 0x0004")
cpp_quote("#define WMS_CONTAINER_LIVE 0x0008")
cpp_quote("#define WMS_CONTAINER_RECORDABLE 0x0010")
cpp_quote("#define WMS_CONTAINER_PART_OF_PLAYLIST 0x0020")
cpp_quote("#define WMS_CONTAINER_ONDEMAND_PLAYLIST_EMULATING_BCAST 0x0040")
cpp_quote("#define WMS_CONTAINER_PART_OF_WRAPPER_PLAYLIST 0x0080")
cpp_quote("#define WMS_CONTAINER_ALLOW_PLAYLIST_SKIP_FORWARD 0x0100")
cpp_quote("#define WMS_CONTAINER_ALLOW_PLAYLIST_SKIP_BACKWARD 0x0200")
cpp_quote("#define WMS_CONTAINER_SEEKABLE_EMULATING_BROADCAST 0x0400")
cpp_quote("#define WMS_CONTAINER_LAST_ENTRY_IN_PLAYLIST 0x0800")
//////////////////////////////////////////////////////////////////////////////
//
// CONTENT DESCRIPTIONS
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
[
object,
pointer_default(unique),
uuid(105D6F73-6DF0-11d2-9F14-006097D2D7CF),
version(9.0),
helpstring("Contains a collection of content description contexts for different languages.")
]
interface IWMSContentDescriptionList : IUnknown
{
[helpstring("Retrieves the number of content descriptions contexts in the collection.")] HRESULT
GetDescriptionCount( [out] DWORD *pdwNumDescriptions );
[helpstring("Retrieves a specific content description context from the collection by index.")] HRESULT
GetIndexedDescription(
[in] DWORD dwDescriptionNum,
[out] LPWSTR *pstrLanguage,
[out] IWMSContext **ppDescription
);
[helpstring("Retrieves the content description context for a specific language.")] HRESULT
GetDescriptionInLanguage(
[in] LPCWSTR pstrLanguage,
[out] IWMSContext **ppDescription
);
[helpstring("Adds a content description context for a specific language to the collection.")] HRESULT
AppendDescription(
[in] LPCWSTR pstrLanguage,
[in] IWMSContext *pDescription
);
[helpstring("Removes all of the context description contexts in the collection.")] HRESULT
RemoveAllDescriptions();
[helpstring("Retrieves the playlist generation ID.")] HRESULT
GetPlaylistGenid( DWORD *pdwPlaylistGenerationId );
[helpstring("Specifies the playlist generation ID.")] HRESULT
SetPlaylistGenid( DWORD dwPlaylistGenerationId );
[helpstring("Retrieves the broadcast ID.")] HRESULT
GetBroadcastid( DWORD *pdwPlaylistGenerationId );
[helpstring("Specifies the broadcast ID.")] HRESULT
SetBroadcastid( DWORD dwPlaylistGenerationId );
[helpstring("Adds or sets a VARIANT value property for a specific context property in all context description contexts.")] HRESULT
SetValueOnAllDescriptions(
[in] LPCWSTR pstrName,
[in] long lNameHint,
[in] VARIANT Value,
[in] long lOptions
);
[helpstring("Removes the specified property from all context description contexts.")] HRESULT
RemoveValueFromAllDescriptions(
[in] LPCWSTR pstrName,
[in] long lNameHint,
[in] long lOptions
);
};
//////////////////////////////////////////////////////////////////////////////
//
// STREAM SWITCH DATA STRUCTURE
//
//////////////////////////////////////////////////////////////////////////////
typedef [public] enum
{
WMS_DATA_STREAM_MIN = 0x00000000,
WMS_DATA_STREAM_MAX = 0x0000FFFE,
WMS_NO_STREAM = 0x0000FFFF,
WMS_RETRANSMISSION_STREAM_MIN = 0x00010000,
WMS_RETRANSMISSION_STREAM_MAX = 0x0001FFFE,
WMS_FEC_STREAM_MIN = 0x00020000,
WMS_FEC_STREAM_MAX = 0x0002FFFE
} WMS_STREAM_CONSTANTS;
cpp_quote( "#define IS_DATA_STREAM(x) ( ( x ) >= WMS_DATA_STREAM_MIN && ( x ) <= WMS_DATA_STREAM_MAX )" )
cpp_quote( "#define IS_RETRANSMISSION_STREAM(x) ( ( x ) >= WMS_RETRANSMISSION_STREAM_MIN && ( x ) <= WMS_RETRANSMISSION_STREAM_MAX )" )
cpp_quote( "#define IS_FEC_STREAM(x) ( ( x ) >= WMS_FEC_STREAM_MIN && ( x ) <= WMS_FEC_STREAM_MAX )" )
//////////////////////////////////////////
typedef [public] enum
{
WMS_NO_MODIFIER = 0,
WMS_THINNING_MODIFIER = 1,
WMS_REMOVE_ALL_FRAMES_MODIFIER = 2
} WMS_STREAM_MODIFIERS;
//////////////////////////////////////////
// WMS_THINNING_MODIFIER
typedef [public] enum
{
WMS_NO_THINNING = 0,
WMS_INTERMEDIATE_FRAME_THINNING = 1,
WMS_REMOVE_ALL_FRAMES = 2
} WMS_THINNING_MODIFIER_TYPES;
//////////////////////////////////////////
typedef struct CWMSStreamSwitch
{
WORD wPlaylistSequenceNumber;
DWORD dwOldStreamNumber;
DWORD dwNewStreamNumber;
WMS_STREAM_MODIFIERS ModifierType;
DWORD dwModifier;
DWORD dwPredictiveStreamSelections;
} CWMSStreamSwitch;
//////////////////////////////////////////////////////////////////////////////
//
// IWMSStreamSwitchDescriptionList
//
//////////////////////////////////////////////////////////////////////////////
[
object,
pointer_default(unique),
uuid(75C3017C-6B3A-4e25-BE9F-A9927F4DD058),
version(9.0),
helpstring("Contains methods that control which streams are sent down a data path.")
]
interface IWMSStreamSwitchDescriptionList : IUnknown
{
[helpstring("Retrieves the number of streams described in the stream switch description list.")] HRESULT
GetDescriptionCount( [out] DWORD *pdwNumDescriptions );
[helpstring("Retrieves the stream switch description data structure that describes the specified stream.")] HRESULT
GetIndexedDescription(
[in] DWORD dwDescriptionNum,
[out] CWMSStreamSwitch *pStreamSwitchDesc
);
[helpstring("Specifies the stream switch description data structure that describes the specified stream.")] HRESULT
ChangeIndexedDescription(
[in] DWORD dwDescriptionNum,
[out] CWMSStreamSwitch *pStreamSwitchDesc
);
[helpstring("Removes a stream switch data structure from the collection.")] HRESULT
RemoveIndexedDescription(
[in] DWORD dwDescriptionNum
);
[helpstring("Appends a stream switch description data structure to the collection.")] HRESULT
AppendDescription(
[in] CWMSStreamSwitch * const pStreamSwitchDesc
);
[helpstring("Removes all stream switch description data structures from the collection.")] HRESULT
RemoveAllDescriptions( void );
};
//////////////////////////////////////////////////////////////////////////////
//
// STREAM SEEK OPTIONS
//
//////////////////////////////////////////////////////////////////////////////
typedef [public] enum WMS_SEEK_TYPE
{
WMS_SEEK_TO_TIME = 1,
WMS_SEEK_TO_PACKET = 2,
WMS_SEEK_TO_PLAYLIST_ENTRY = 3,
WMS_SEEK_TO_BYTE_OFFSET = 4,
} WMS_SEEK_TYPE;