streamdescription.idl 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481
  1. //*****************************************************************************
  2. //
  3. // Microsoft Windows Media
  4. // Copyright (C) Microsoft Corporation. All rights reserved.
  5. //
  6. // FileName: streamdescription.idl
  7. //
  8. // Abstract:
  9. //
  10. //*****************************************************************************
  11. cpp_quote("//*****************************************************************************")
  12. cpp_quote("//")
  13. cpp_quote("// Microsoft Windows Media")
  14. cpp_quote("// Copyright (C) Microsoft Corporation. All rights reserved.")
  15. cpp_quote("//")
  16. cpp_quote("// Automatically generated by Midl from streamdescription.idl" )
  17. cpp_quote("//")
  18. cpp_quote("// DO NOT EDIT THIS FILE.")
  19. cpp_quote("//")
  20. cpp_quote("//*****************************************************************************")
  21. cpp_quote("#if _MSC_VER > 1000")
  22. cpp_quote("#pragma once")
  23. cpp_quote("#endif // _MSC_VER > 1000")
  24. import "objidl.idl";
  25. import "WMSBuffer.idl";
  26. import "WMSContext.idl";
  27. cpp_quote( "EXTERN_GUID( IID_IWMSStreamHeader, 0x3309C903,0x10A4,0x11d2,0x9E,0xEE,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
  28. cpp_quote( "EXTERN_GUID( IID_IWMSStreamHeaderList, 0x42176202,0x2B30,0x11d2,0x9E,0xF7,0x00,0x60,0x97,0xD2,0xD7,0xCF );" )
  29. cpp_quote( "EXTERN_GUID( IID_IWMSContentDescriptionList, 0x105d6f73, 0x6df0, 0x11d2, 0x9f, 0x14, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );" )
  30. cpp_quote( "EXTERN_GUID( IID_IWMSStreamSwitchDescriptionList, 0x75c3017c, 0x6b3a, 0x4e25, 0xbe, 0x9f, 0xa9, 0x92, 0x7f, 0x4d, 0xd0, 0x58 );")
  31. // {52769631-38AA-11d2-9EFA-006097D2D7CF}
  32. cpp_quote( "EXTERN_GUID( IID_IWMSUnknownStreamFormat, 0x52769631, 0x38aa, 0x11d2, 0x9e, 0xfa, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );")
  33. // {52769632-38AA-11d2-9EFA-006097D2D7CF}
  34. cpp_quote( "EXTERN_GUID( IID_IWMSUnknownStreamType, 0x52769632, 0x38aa, 0x11d2, 0x9e, 0xfa, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );")
  35. // {52769631-38AA-11d2-9EFA-006097D2D7CF}
  36. cpp_quote( "EXTERN_GUID( IID_IWMSUnknownContainerFormat, 0x52769631, 0x38aa, 0x11d2, 0x9e, 0xfa, 0x0, 0x60, 0x97, 0xd2, 0xd7, 0xcf );")
  37. interface IWMSContentDescriptionList;
  38. //////////////////////////////////////////////////////////////////////////////
  39. //
  40. // HEADERS
  41. //
  42. //////////////////////////////////////////////////////////////////////////////
  43. //////////////////////////////////////////////////////////////////////////////
  44. //
  45. // This describes the data format of one stream, including the codec.
  46. //////////////////////////////////////////////////////////////////////////////
  47. [
  48. object,
  49. pointer_default(unique),
  50. uuid(3309C903-10A4-11d2-9EEE-006097D2D7CF),
  51. version(9.0),
  52. helpstring("Contains methods that describe the header for a specific stream.")
  53. ]
  54. interface IWMSStreamHeader : IUnknown
  55. {
  56. // This identifies the stream format.
  57. // The GUID for ASF is: { 0x75b22630,0x668e,0x11cf,0xa6,0xd9,0x00,0xaa,0x00,0x62,0xce,0x6c }
  58. [helpstring("Retrieves the stream format.")] HRESULT
  59. GetFormat( [out] GUID *pFormat );
  60. [helpstring("Specifies the stream format.")] HRESULT
  61. SetFormat( [in] GUID Format );
  62. // This tells you whether a stream is audio/video/etc. The GUID's
  63. // for audio and video are:
  64. //Audio: { 0xD6E229E2,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE }
  65. //Video: { 0xD6E229E3,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE }
  66. //Image: {0xD6E229E4,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE }
  67. //Text: {0xD6E229E6,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE }
  68. //Script Commands: { 0xD6E229E8,0x35DA,0x11D1,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE }
  69. // Other GUID's may be defined in a later release.
  70. [helpstring("Retrieves the stream type.")] HRESULT
  71. GetStreamType( [out] GUID *pStreamType );
  72. [helpstring("Specifies the stream type.")] HRESULT
  73. SetStreamType( [in] GUID StreamType );
  74. [helpstring("Retrieves the value for an IWMSStreamHeader integer attribute.")] HRESULT
  75. GetIntegerAttribute( [in] DWORD dwAttributeId, [out] DWORD *pdwAttribute );
  76. [helpstring("Specifies the value for an IWMSStreamHeader integer attribute.")] HRESULT
  77. SetIntegerAttribute( [in] DWORD dwAttributeId, [in] DWORD dwAttribute );
  78. [helpstring("Retrieves the value for an IWMSStreamHeader string attribute.")] HRESULT
  79. GetStringAttribute( [in] DWORD dwAttributeId, [out] BSTR *pszAttribute );
  80. [helpstring("Specifies the value for an IWMSStreamHeader string attribute.")] HRESULT
  81. SetStringAttribute( [in] DWORD dwAttributeId, [in] BSTR szAttribute );
  82. [helpstring("Retrieves the value for an extended attribute defined by a plug-in.")] HRESULT
  83. GetExtendedAttribute( [in] DWORD dwValueName, [out] VARIANT *pVariantValue );
  84. [helpstring("Specifies the name and value for an extended attribute defined by a plug-in.")] HRESULT
  85. SetExtendedAttribute( [in] DWORD dwValueName, [in] VARIANT VariantValue );
  86. [helpstring("Retrieves the name and value for an extended attribute defined by a plug-in.")] HRESULT
  87. GetNthExtendedAttribute(
  88. [in] DWORD dwIndex,
  89. [out] DWORD *pdwValueName,
  90. [out] VARIANT *pVariantValue
  91. );
  92. [helpstring("Retrieves the number of extended attributes.")] HRESULT
  93. GetNumExtendedAttributes( [out] DWORD *pdwValueName );
  94. [helpstring("Creates a copy of the IWMSStreamHeader object.")] HRESULT
  95. CloneStreamHeader( [out] IWMSStreamHeader **ppHeader );
  96. };
  97. // IWMSStreamHeader attributes
  98. cpp_quote("#define WMS_STREAM_ID 0")
  99. cpp_quote("#define WMS_STREAM_MIN_BITRATE 1")
  100. cpp_quote("#define WMS_STREAM_MAX_BITRATE 2")
  101. cpp_quote("#define WMS_STREAM_AVG_BITRATE 3")
  102. cpp_quote("#define WMS_STREAM_MAX_PACKET_SIZE 4")
  103. cpp_quote("#define WMS_STREAM_AVG_PACKET_SIZE 5")
  104. cpp_quote("#define WMS_STREAM_PREROLL 6")
  105. cpp_quote("#define WMS_STREAM_FLAGS 7")
  106. cpp_quote("#define WMS_STREAM_NAME 8")
  107. cpp_quote("#define WMS_STREAM_SHARING_GROUP 9")
  108. cpp_quote("#define WMS_STREAM_SHARING_BANDWIDTH 10")
  109. // Increase this value when you add a IWMSStreamHeader attribute above.
  110. cpp_quote("#define WMS_NUM_STREAMHEADER_ATTRIBUTES 11")
  111. // Flags stored in WMS_STREAM_FLAGS
  112. cpp_quote("#define WMS_STREAM_HAS_NON_KEY_FRAMES 0x0001")
  113. cpp_quote("#define WMS_STREAM_RELIABLE_FLAG 0x0002")
  114. cpp_quote("#define WMS_STREAM_CONCEALED_FLAG 0x0004")
  115. // Some values used for streaming decisions independent of protocol
  116. cpp_quote("#define WMS_ASF_THRESHOLD_DURATION 500")
  117. //////////////////////////////////////////////////////////////////////////////
  118. [
  119. object,
  120. pointer_default(unique),
  121. uuid(42176202-2B30-11d2-9EF7-006097D2D7CF),
  122. version(9.0),
  123. helpstring("Contains a collection of IWMSStreamHeader objects and methods that describe each stream in a multimedia stream.")
  124. ]
  125. interface IWMSStreamHeaderList : IUnknown
  126. {
  127. [helpstring("Retrieves the number of IWMSStreamHeader objects in the collection")] HRESULT
  128. GetHeaderCount( [out] DWORD *pdwNumHeaders );
  129. [helpstring("Retrieves an IWMSStreamHeader object.")] HRESULT
  130. GetHeader(
  131. [in] DWORD dwHeaderNum,
  132. [out] IWMSStreamHeader **ppHeader
  133. );
  134. [helpstring("Adds a new IWMSStreamHeader object to the collection.")] HRESULT
  135. AppendHeader( [in] IWMSStreamHeader *pHeader );
  136. [helpstring("Removes all IWMSStreamHeader objects in the collection.")] HRESULT
  137. RemoveAllHeaders();
  138. // This identifies the stream format.
  139. // The GUID for ASF is: { 0x75b22630,0x668e,0x11cf,0xa6,0xd9,0x00,0xaa,0x00,0x62,0xce,0x6c }
  140. [helpstring("Retrieves the stream format for the multimedia stream.")] HRESULT
  141. GetContainerFormat( [out] GUID *pFormat );
  142. [helpstring("Specifies the stream format for the multimedia stream.")] HRESULT
  143. SetContainerFormat( [in] GUID Format );
  144. [helpstring("Retrieves the unique identifier for the multimedia stream.")] HRESULT
  145. GetDataVersion( [out] GUID *pFormat );
  146. [helpstring("Specifies the unique identifier for the multimedia stream.")] HRESULT
  147. SetDataVersion( [in] GUID Format );
  148. [helpstring("Retrieves the actual header for the multimedia stream.")] HRESULT
  149. GetNativeContainerHeader(
  150. [out] INSSBuffer **ppBuffer,
  151. [out] DWORD *pdwOffset,
  152. [out] DWORD *pdwLength
  153. );
  154. [helpstring("Specifies the actual header for the multimedia stream.")] HRESULT
  155. SetNativeContainerHeader(
  156. [in] INSSBuffer *pBuffer,
  157. [in] DWORD dwOffset,
  158. [in] DWORD dwLength
  159. );
  160. [helpstring("Retrieves the IWMSContentDescriptionList associated with this IWMSStreamHeaderList object.")] HRESULT
  161. GetContentDescription( [out] IWMSContentDescriptionList **ppDescription );
  162. [helpstring("Specifies the IWMSContentDescriptionList associated with this IWMSStreamHeaderList object.")] HRESULT
  163. SetContentDescription( [in] IWMSContentDescriptionList *pDescription );
  164. [helpstring("Retrieves the value for an IWMSStreamHeaderList integer attribute.")] HRESULT
  165. GetIntegerAttribute( [in] DWORD dwAttributeId, [out] DWORD *pdwAttribute );
  166. [helpstring("Specifies the value for an IWMSStreamHeaderList integer attribute.")] HRESULT
  167. SetIntegerAttribute( [in] DWORD dwAttributeId, [in] DWORD dwAttribute );
  168. [helpstring("Retrieves the value for an IWMSStreamHeaderList string attribute.")] HRESULT
  169. GetStringAttribute( [in] DWORD dwAttributeId, [out] BSTR *pszAttribute );
  170. [helpstring("Specifies the value for an IWMSStreamHeaderList string attribute.")] HRESULT
  171. SetStringAttribute( [in] DWORD dwAttributeId, [in] BSTR szAttribute );
  172. [helpstring("Retrieves the value for an extended attribute defined by a plug-in for this IWMSStreamHeaderList object.")] HRESULT
  173. GetExtendedAttribute( [in] DWORD dwValueName, [out] VARIANT *pVariantValue );
  174. [helpstring("Specifies the name and value for an extended attribute defined by a plug-in for this IWMSStreamHeaderList object.")] HRESULT
  175. SetExtendedAttribute( [in] DWORD dwValueName, [in] VARIANT VariantValue );
  176. [helpstring("Retrieves the name and value for an extended attribute defined by a plug-in for this IWMSStreamHeaderList object.")] HRESULT
  177. GetNthExtendedAttribute(
  178. [in] DWORD dwIndex,
  179. [out] DWORD *pdwValueName,
  180. [out] VARIANT *pVariantValue
  181. );
  182. [helpstring("Retrieves the number of extended attributes.")] HRESULT
  183. GetNumExtendedAttributes( [out] DWORD *pdwValueName );
  184. [helpstring("Creates a copy of the IWMSStreamHeaderList object.")] HRESULT
  185. CloneStreamHeaderList(
  186. [in] IWMSBufferAllocator *pBufferAllocator,
  187. [out] IWMSStreamHeaderList **ppHeader
  188. );
  189. [helpstring("Specifies the playlist generation ID that identifies the playlist entry that a command from a client is associated with.")] HRESULT
  190. RecordPlaylistGenerationId(
  191. [in] IWMSCommandContext *pCommand
  192. );
  193. [helpstring("Retrieves the playlist generation ID that identifies the playlist entry that a command from a client is associated with.")] HRESULT
  194. CheckPlaylistGenerationId(
  195. [in] IWMSCommandContext *pCommand
  196. );
  197. };
  198. // Attributes used by IWMSStreamHeaderList::GetIntegerAttribute and
  199. // IWMSStreamHeaderList::SetIntegerAttribute
  200. cpp_quote("#define WMS_TOTAL_MIN_BITRATE 0")
  201. cpp_quote("#define WMS_TOTAL_MAX_BITRATE 1")
  202. cpp_quote("#define WMS_TOTAL_AVG_BITRATE 2")
  203. cpp_quote("#define WMS_CONTAINER_FLAGS 3")
  204. cpp_quote("#define WMS_CONTAINER_DURATION_LO 4")
  205. cpp_quote("#define WMS_CONTAINER_DURATION_HI 5")
  206. cpp_quote("#define WMS_CONTAINER_MAX_PACKET_SIZE 6")
  207. cpp_quote("#define WMS_CONTAINER_PLAYLIST_ENTRY_NAME 7")
  208. cpp_quote("#define WMS_TOTAL_PACKETS_LO 8")
  209. cpp_quote("#define WMS_TOTAL_PACKETS_HI 9")
  210. cpp_quote("#define WMS_STREAM_PLAYLIST_GENERATION_ID 10")
  211. cpp_quote("#define WMS_CONTAINER_FILESIZE_LO 11")
  212. cpp_quote("#define WMS_CONTAINER_FILESIZE_HI 12")
  213. cpp_quote("#define WMS_STREAM_DISTRIBUTION_PLAYLIST_GENERATION_ID 13")
  214. cpp_quote("#define WMS_CONTAINER_LOG_PHYSICAL_URL 14")
  215. cpp_quote("#define WMS_CONTAINER_IS_VBR 15")
  216. cpp_quote("#define WMS_STREAM_BROADCAST_GENERATION_ID 16")
  217. cpp_quote("#define WMS_STREAM_DISTRIBUTION_BROADCAST_GENERATION_ID 17")
  218. // Increase this value when you add an attribute to StreamheaderList.
  219. cpp_quote("#define WMS_NUM_STREAMHEADERLIST_ATTRIBUTES 18")
  220. // Flags stored in WMS_CONTAINER_FLAGS attribute.
  221. cpp_quote("#define WMS_CONTAINER_BROADCAST 0x0001")
  222. cpp_quote("#define WMS_CONTAINER_CANSEEK 0x0002")
  223. cpp_quote("#define WMS_CONTAINER_CANSTRIDE 0x0004")
  224. cpp_quote("#define WMS_CONTAINER_LIVE 0x0008")
  225. cpp_quote("#define WMS_CONTAINER_RECORDABLE 0x0010")
  226. cpp_quote("#define WMS_CONTAINER_PART_OF_PLAYLIST 0x0020")
  227. cpp_quote("#define WMS_CONTAINER_ONDEMAND_PLAYLIST_EMULATING_BCAST 0x0040")
  228. cpp_quote("#define WMS_CONTAINER_PART_OF_WRAPPER_PLAYLIST 0x0080")
  229. cpp_quote("#define WMS_CONTAINER_ALLOW_PLAYLIST_SKIP_FORWARD 0x0100")
  230. cpp_quote("#define WMS_CONTAINER_ALLOW_PLAYLIST_SKIP_BACKWARD 0x0200")
  231. cpp_quote("#define WMS_CONTAINER_SEEKABLE_EMULATING_BROADCAST 0x0400")
  232. cpp_quote("#define WMS_CONTAINER_LAST_ENTRY_IN_PLAYLIST 0x0800")
  233. //////////////////////////////////////////////////////////////////////////////
  234. //
  235. // CONTENT DESCRIPTIONS
  236. //
  237. //////////////////////////////////////////////////////////////////////////////
  238. //////////////////////////////////////////////////////////////////////////////
  239. [
  240. object,
  241. pointer_default(unique),
  242. uuid(105D6F73-6DF0-11d2-9F14-006097D2D7CF),
  243. version(9.0),
  244. helpstring("Contains a collection of content description contexts for different languages.")
  245. ]
  246. interface IWMSContentDescriptionList : IUnknown
  247. {
  248. [helpstring("Retrieves the number of content descriptions contexts in the collection.")] HRESULT
  249. GetDescriptionCount( [out] DWORD *pdwNumDescriptions );
  250. [helpstring("Retrieves a specific content description context from the collection by index.")] HRESULT
  251. GetIndexedDescription(
  252. [in] DWORD dwDescriptionNum,
  253. [out] LPWSTR *pstrLanguage,
  254. [out] IWMSContext **ppDescription
  255. );
  256. [helpstring("Retrieves the content description context for a specific language.")] HRESULT
  257. GetDescriptionInLanguage(
  258. [in] LPCWSTR pstrLanguage,
  259. [out] IWMSContext **ppDescription
  260. );
  261. [helpstring("Adds a content description context for a specific language to the collection.")] HRESULT
  262. AppendDescription(
  263. [in] LPCWSTR pstrLanguage,
  264. [in] IWMSContext *pDescription
  265. );
  266. [helpstring("Removes all of the context description contexts in the collection.")] HRESULT
  267. RemoveAllDescriptions();
  268. [helpstring("Retrieves the playlist generation ID.")] HRESULT
  269. GetPlaylistGenid( DWORD *pdwPlaylistGenerationId );
  270. [helpstring("Specifies the playlist generation ID.")] HRESULT
  271. SetPlaylistGenid( DWORD dwPlaylistGenerationId );
  272. [helpstring("Retrieves the broadcast ID.")] HRESULT
  273. GetBroadcastid( DWORD *pdwPlaylistGenerationId );
  274. [helpstring("Specifies the broadcast ID.")] HRESULT
  275. SetBroadcastid( DWORD dwPlaylistGenerationId );
  276. [helpstring("Adds or sets a VARIANT value property for a specific context property in all context description contexts.")] HRESULT
  277. SetValueOnAllDescriptions(
  278. [in] LPCWSTR pstrName,
  279. [in] long lNameHint,
  280. [in] VARIANT Value,
  281. [in] long lOptions
  282. );
  283. [helpstring("Removes the specified property from all context description contexts.")] HRESULT
  284. RemoveValueFromAllDescriptions(
  285. [in] LPCWSTR pstrName,
  286. [in] long lNameHint,
  287. [in] long lOptions
  288. );
  289. };
  290. //////////////////////////////////////////////////////////////////////////////
  291. //
  292. // STREAM SWITCH DATA STRUCTURE
  293. //
  294. //////////////////////////////////////////////////////////////////////////////
  295. typedef [public] enum
  296. {
  297. WMS_DATA_STREAM_MIN = 0x00000000,
  298. WMS_DATA_STREAM_MAX = 0x0000FFFE,
  299. WMS_NO_STREAM = 0x0000FFFF,
  300. WMS_RETRANSMISSION_STREAM_MIN = 0x00010000,
  301. WMS_RETRANSMISSION_STREAM_MAX = 0x0001FFFE,
  302. WMS_FEC_STREAM_MIN = 0x00020000,
  303. WMS_FEC_STREAM_MAX = 0x0002FFFE
  304. } WMS_STREAM_CONSTANTS;
  305. cpp_quote( "#define IS_DATA_STREAM(x) ( ( x ) >= WMS_DATA_STREAM_MIN && ( x ) <= WMS_DATA_STREAM_MAX )" )
  306. cpp_quote( "#define IS_RETRANSMISSION_STREAM(x) ( ( x ) >= WMS_RETRANSMISSION_STREAM_MIN && ( x ) <= WMS_RETRANSMISSION_STREAM_MAX )" )
  307. cpp_quote( "#define IS_FEC_STREAM(x) ( ( x ) >= WMS_FEC_STREAM_MIN && ( x ) <= WMS_FEC_STREAM_MAX )" )
  308. //////////////////////////////////////////
  309. typedef [public] enum
  310. {
  311. WMS_NO_MODIFIER = 0,
  312. WMS_THINNING_MODIFIER = 1,
  313. WMS_REMOVE_ALL_FRAMES_MODIFIER = 2
  314. } WMS_STREAM_MODIFIERS;
  315. //////////////////////////////////////////
  316. // WMS_THINNING_MODIFIER
  317. typedef [public] enum
  318. {
  319. WMS_NO_THINNING = 0,
  320. WMS_INTERMEDIATE_FRAME_THINNING = 1,
  321. WMS_REMOVE_ALL_FRAMES = 2
  322. } WMS_THINNING_MODIFIER_TYPES;
  323. //////////////////////////////////////////
  324. typedef struct CWMSStreamSwitch
  325. {
  326. WORD wPlaylistSequenceNumber;
  327. DWORD dwOldStreamNumber;
  328. DWORD dwNewStreamNumber;
  329. WMS_STREAM_MODIFIERS ModifierType;
  330. DWORD dwModifier;
  331. DWORD dwPredictiveStreamSelections;
  332. } CWMSStreamSwitch;
  333. //////////////////////////////////////////////////////////////////////////////
  334. //
  335. // IWMSStreamSwitchDescriptionList
  336. //
  337. //////////////////////////////////////////////////////////////////////////////
  338. [
  339. object,
  340. pointer_default(unique),
  341. uuid(75C3017C-6B3A-4e25-BE9F-A9927F4DD058),
  342. version(9.0),
  343. helpstring("Contains methods that control which streams are sent down a data path.")
  344. ]
  345. interface IWMSStreamSwitchDescriptionList : IUnknown
  346. {
  347. [helpstring("Retrieves the number of streams described in the stream switch description list.")] HRESULT
  348. GetDescriptionCount( [out] DWORD *pdwNumDescriptions );
  349. [helpstring("Retrieves the stream switch description data structure that describes the specified stream.")] HRESULT
  350. GetIndexedDescription(
  351. [in] DWORD dwDescriptionNum,
  352. [out] CWMSStreamSwitch *pStreamSwitchDesc
  353. );
  354. [helpstring("Specifies the stream switch description data structure that describes the specified stream.")] HRESULT
  355. ChangeIndexedDescription(
  356. [in] DWORD dwDescriptionNum,
  357. [out] CWMSStreamSwitch *pStreamSwitchDesc
  358. );
  359. [helpstring("Removes a stream switch data structure from the collection.")] HRESULT
  360. RemoveIndexedDescription(
  361. [in] DWORD dwDescriptionNum
  362. );
  363. [helpstring("Appends a stream switch description data structure to the collection.")] HRESULT
  364. AppendDescription(
  365. [in] CWMSStreamSwitch * const pStreamSwitchDesc
  366. );
  367. [helpstring("Removes all stream switch description data structures from the collection.")] HRESULT
  368. RemoveAllDescriptions( void );
  369. };
  370. //////////////////////////////////////////////////////////////////////////////
  371. //
  372. // STREAM SEEK OPTIONS
  373. //
  374. //////////////////////////////////////////////////////////////////////////////
  375. typedef [public] enum WMS_SEEK_TYPE
  376. {
  377. WMS_SEEK_TO_TIME = 1,
  378. WMS_SEEK_TO_PACKET = 2,
  379. WMS_SEEK_TO_PLAYLIST_ENTRY = 3,
  380. WMS_SEEK_TO_BYTE_OFFSET = 4,
  381. } WMS_SEEK_TYPE;