Audio and MIDI library for .NET
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.

408 lines
12 KiB

  1. using System;
  2. using System.Runtime.InteropServices;
  3. namespace NAudio.WindowsMediaFormat
  4. {
  5. [Guid("96406BD9-2B2B-11d3-B36B-00C04F6108FF"),
  6. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  7. public interface IWMMetadataEditor
  8. {
  9. uint Open([In, MarshalAs(UnmanagedType.LPWStr)] string pwszFilename);
  10. uint Close();
  11. uint Flush();
  12. }
  13. [Guid("15CC68E3-27CC-4ecd-B222-3F5D02D80BD5"),
  14. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  15. public interface IWMHeaderInfo3
  16. {
  17. uint GetAttributeCount(
  18. [In] ushort wStreamNum,
  19. [Out] out ushort pcAttributes);
  20. uint GetAttributeByIndex(
  21. [In] ushort wIndex,
  22. [Out, In] ref ushort pwStreamNum,
  23. [Out, MarshalAs(UnmanagedType.LPWStr)] string pwszName,
  24. [Out, In] ref ushort pcchNameLen,
  25. [Out] out WMT_ATTR_DATATYPE pType,
  26. [Out, MarshalAs(UnmanagedType.LPArray)] byte[] pValue,
  27. [Out, In] ref ushort pcbLength);
  28. uint GetAttributeByName(
  29. [Out, In] ref ushort pwStreamNum,
  30. [Out, MarshalAs(UnmanagedType.LPWStr)] string pszName,
  31. [Out] out WMT_ATTR_DATATYPE pType,
  32. [Out, MarshalAs(UnmanagedType.LPArray)] byte[] pValue,
  33. [Out, In] ref ushort pcbLength);
  34. uint SetAttribute(
  35. [In] ushort wStreamNum,
  36. [In, MarshalAs(UnmanagedType.LPWStr)] string pszName,
  37. [In] WMT_ATTR_DATATYPE Type,
  38. [In, MarshalAs(UnmanagedType.LPArray)] byte[] pValue,
  39. [In] ushort cbLength);
  40. uint GetMarkerCount(
  41. [Out] out ushort pcMarkers);
  42. uint GetMarker(
  43. [In] ushort wIndex,
  44. [Out, MarshalAs(UnmanagedType.LPWStr)] string pwszMarkerName,
  45. [Out, In] ref ushort pcchMarkerNameLen,
  46. [Out] out ulong pcnsMarkerTime);
  47. uint AddMarker(
  48. [In, MarshalAs(UnmanagedType.LPWStr)] string pwszMarkerName,
  49. [In] ulong cnsMarkerTime);
  50. uint RemoveMarker(
  51. [In] ushort wIndex);
  52. uint GetScriptCount(
  53. [Out] out ushort pcScripts);
  54. uint GetScript(
  55. [In] ushort wIndex,
  56. [Out, MarshalAs(UnmanagedType.LPWStr)] string pwszType,
  57. [Out, In] ref ushort pcchTypeLen,
  58. [Out, MarshalAs(UnmanagedType.LPWStr)] string pwszCommand,
  59. [Out, In] ref ushort pcchCommandLen,
  60. [Out] out ulong pcnsScriptTime);
  61. uint AddScript(
  62. [In, MarshalAs(UnmanagedType.LPWStr)] string pwszType,
  63. [In, MarshalAs(UnmanagedType.LPWStr)] string pwszCommand,
  64. [In] ulong cnsScriptTime);
  65. uint RemoveScript(
  66. [In] ushort wIndex);
  67. uint GetCodecInfoCount(
  68. [Out] out uint pcCodecInfos);
  69. uint GetCodecInfo(
  70. [In] uint wIndex,
  71. [Out, In] ref ushort pcchName,
  72. [Out, MarshalAs(UnmanagedType.LPWStr)] string pwszName,
  73. [Out, In] ref ushort pcchDescription,
  74. [Out, MarshalAs(UnmanagedType.LPWStr)] string pwszDescription,
  75. [Out] out WMT_CODEC_INFO_TYPE pCodecType,
  76. [Out, In] ref ushort pcbCodecInfo,
  77. [Out, MarshalAs(UnmanagedType.LPArray)] byte[] pbCodecInfo);
  78. uint GetAttributeCountEx(
  79. [In] ushort wStreamNum,
  80. [Out] out ushort pcAttributes);
  81. uint GetAttributeIndices(
  82. [In] ushort wStreamNum,
  83. [In, MarshalAs(UnmanagedType.LPWStr)] string pwszName,
  84. [In] ref ushort pwLangIndex,
  85. [Out, MarshalAs(UnmanagedType.LPArray)] ushort[] pwIndices,
  86. [Out, In] ref ushort pwCount);
  87. uint GetAttributeByIndexEx(
  88. [In] ushort wStreamNum,
  89. [In] ushort wIndex,
  90. [Out, MarshalAs(UnmanagedType.LPWStr)] string pwszName,
  91. [Out, In] ref ushort pwNameLen,
  92. [Out] out WMT_ATTR_DATATYPE pType,
  93. [Out] out ushort pwLangIndex,
  94. [Out, MarshalAs(UnmanagedType.LPArray)] byte[] pValue,
  95. [Out, In] ref uint pdwDataLength);
  96. uint ModifyAttribute(
  97. [In] ushort wStreamNum,
  98. [In] ushort wIndex,
  99. [In] WMT_ATTR_DATATYPE Type,
  100. [In] ushort wLangIndex,
  101. [In, MarshalAs(UnmanagedType.LPArray)] byte[] pValue,
  102. [In] uint dwLength);
  103. uint AddAttribute(
  104. [In] ushort wStreamNum,
  105. [In, MarshalAs(UnmanagedType.LPWStr)] string pszName,
  106. [Out] out ushort pwIndex,
  107. [In] WMT_ATTR_DATATYPE Type,
  108. [In] ushort wLangIndex,
  109. [In, MarshalAs(UnmanagedType.LPArray)] byte[] pValue,
  110. [In] uint dwLength);
  111. uint DeleteAttribute(
  112. [In] ushort wStreamNum,
  113. [In] ushort wIndex);
  114. uint AddCodecInfo(
  115. [In, MarshalAs(UnmanagedType.LPWStr)] string pszName,
  116. [In, MarshalAs(UnmanagedType.LPWStr)] string pwszDescription,
  117. [In] WMT_CODEC_INFO_TYPE codecType,
  118. [In] ushort cbCodecInfo,
  119. [In, MarshalAs(UnmanagedType.LPArray)] byte[] pbCodecInfo);
  120. }
  121. public enum WMT_ATTR_DATATYPE
  122. {
  123. WMT_TYPE_DWORD = 0,
  124. WMT_TYPE_STRING = 1,
  125. WMT_TYPE_BINARY = 2,
  126. WMT_TYPE_BOOL = 3,
  127. WMT_TYPE_QWORD = 4,
  128. WMT_TYPE_WORD = 5,
  129. WMT_TYPE_GUID = 6,
  130. }
  131. public enum WMT_CODEC_INFO_TYPE
  132. {
  133. WMT_CODECINFO_AUDIO = 0,
  134. WMT_CODECINFO_VIDEO = 1,
  135. WMT_CODECINFO_UNKNOWN = 0xffffff
  136. }
  137. public enum DRM_HTTP_STATUS
  138. {
  139. HTTP_NOTINITIATED = 0,
  140. HTTP_CONNECTING = 1,
  141. HTTP_REQUESTING = 2,
  142. HTTP_RECEIVING = 3,
  143. HTTP_COMPLETED = 4
  144. }
  145. public enum DRM_INDIVIDUALIZATION_STATUS
  146. {
  147. INDI_UNDEFINED = 0x0000,
  148. INDI_BEGIN = 0x0001,
  149. INDI_SUCCEED = 0x0002,
  150. INDI_FAIL = 0x0004,
  151. INDI_CANCEL = 0x0008,
  152. INDI_DOWNLOAD = 0x0010,
  153. INDI_INSTALL = 0x0020
  154. }
  155. public enum DRM_LICENSE_STATE_CATEGORY{
  156. WM_DRM_LICENSE_STATE_NORIGHT =0,
  157. WM_DRM_LICENSE_STATE_UNLIM ,
  158. WM_DRM_LICENSE_STATE_COUNT ,
  159. WM_DRM_LICENSE_STATE_FROM ,
  160. WM_DRM_LICENSE_STATE_UNTIL ,
  161. WM_DRM_LICENSE_STATE_FROM_UNTIL ,
  162. WM_DRM_LICENSE_STATE_COUNT_FROM ,
  163. WM_DRM_LICENSE_STATE_COUNT_UNTIL ,
  164. WM_DRM_LICENSE_STATE_COUNT_FROM_UNTIL ,
  165. WM_DRM_LICENSE_STATE_EXPIRATION_AFTER_FIRSTUSE // DRM_LICENSE_STATE_CATEGORY
  166. }
  167. public enum NETSOURCE_URLCREDPOLICY_SETTINGS
  168. {
  169. NETSOURCE_URLCREDPOLICY_SETTING_SILENTLOGONOK =0,
  170. NETSOURCE_URLCREDPOLICY_SETTING_MUSTPROMPTUSER =1,
  171. NETSOURCE_URLCREDPOLICY_SETTING_ANONYMOUSONLY =2
  172. }
  173. public enum WM_AETYPE
  174. {
  175. WM_AETYPE_INCLUDE = 'i',
  176. WM_AETYPE_EXCLUDE = 'e'
  177. }
  178. public enum WMT_ATTR_IMAGETYPE
  179. {
  180. WMT_IMAGETYPE_BITMAP = 1,
  181. WMT_IMAGETYPE_JPEG = 2,
  182. WMT_IMAGETYPE_GIF = 3
  183. }
  184. [Flags]
  185. enum WMT_CREDENTIAL_FLAGS
  186. {
  187. WMT_CREDENTIAL_SAVE = 0x00000001,
  188. WMT_CREDENTIAL_DONT_CACHE = 0x00000002,
  189. WMT_CREDENTIAL_CLEAR_TEXT = 0x00000004,
  190. WMT_CREDENTIAL_PROXY = 0x00000008,
  191. WMT_CREDENTIAL_ENCRYPT = 0x00000010
  192. }
  193. enum WMT_DRMLA_TRUST
  194. {
  195. WMT_DRMLA_UNTRUSTED = 0,
  196. WMT_DRMLA_TRUSTED,
  197. WMT_DRMLA_TAMPERED
  198. }
  199. enum tagWMT_FILESINK_MODE
  200. {
  201. WMT_FM_SINGLE_BUFFERS = 1,
  202. WMT_FM_FILESINK_DATA_UNITS = 2,
  203. WMT_FM_FILESINK_UNBUFFERED = 4
  204. }
  205. enum WMT_IMAGE_TYPE
  206. {
  207. WMT_IT_NONE = 0,
  208. WMT_IT_BITMAP = 1,
  209. WMT_IT_JPEG = 2,
  210. WMT_IT_GIF = 3
  211. }
  212. enum WMT_INDEX_TYPE
  213. {
  214. WMT_IT_NEAREST_DATA_UNIT = 1,
  215. WMT_IT_NEAREST_OBJECT = 2,
  216. WMT_IT_NEAREST_CLEAN_POINT = 3
  217. }
  218. enum WMT_INDEXER_TYPE
  219. {
  220. WMT_IT_PRESENTATION_TIME = 0,
  221. WMT_IT_FRAME_NUMBERS = 1,
  222. WMT_IT_TIMECODE = 2
  223. }
  224. enum WMT_NET_PROTOCOL
  225. {
  226. WMT_PROTOCOL_HTTP = 0,
  227. }
  228. enum WMT_MUSICSPEECH_CLASS_MODE
  229. {
  230. WMT_MS_CLASS_MUSIC = 0,
  231. WMT_MS_CLASS_SPEECH = 1,
  232. WMT_MS_CLASS_MIXED = 2
  233. }
  234. enum WMT_OFFSET_FORMAT
  235. {
  236. WMT_OFFSET_FORMAT_100NS = 0,
  237. WMT_OFFSET_FORMAT_FRAME_NUMBERS = 1,
  238. WMT_OFFSET_FORMAT_PLAYLIST_OFFSET = 2,
  239. WMT_OFFSET_FORMAT_TIMECODE = 3,
  240. WMT_OFFSET_FORMAT_100NS_APPROXIMATE = 4
  241. }
  242. enum WMT_PLAY_MODE
  243. {
  244. WMT_PLAY_MODE_AUTOSELECT = 0,
  245. WMT_PLAY_MODE_LOCAL = 1,
  246. WMT_PLAY_MODE_DOWNLOAD = 2,
  247. WMT_PLAY_MODE_STREAMING = 3
  248. }
  249. enum WMT_PROXY_SETTINGS
  250. {
  251. WMT_PROXY_SETTING_NONE = 0,
  252. WMT_PROXY_SETTING_MANUAL = 1,
  253. WMT_PROXY_SETTING_AUTO = 2,
  254. WMT_PROXY_SETTING_BROWSER = 3,
  255. WMT_PROXY_SETTING_MAX = 4
  256. }
  257. [Flags]
  258. public enum WMT_RIGHTS
  259. {
  260. None = 0,
  261. WMT_RIGHT_PLAYBACK = 0x00000001,
  262. WMT_RIGHT_COPY_TO_NON_SDMI_DEVICE = 0x00000002,
  263. WMT_RIGHT_COPY_TO_CD = 0x00000008,
  264. WMT_RIGHT_COPY_TO_SDMI_DEVICE = 0x00000010,
  265. WMT_RIGHT_ONE_TIME = 0x00000020,
  266. WMT_RIGHT_SAVE_STREAM_PROTECTED = 0x00000040,
  267. WMT_RIGHT_COPY = 0x00000080,
  268. WMT_RIGHT_COLLABORATIVE_PLAY = 0x00000100,
  269. WMT_RIGHT_SDMI_TRIGGER = 0x00010000,
  270. WMT_RIGHT_SDMI_NOMORECOPIES = 0x00020000
  271. }
  272. public enum WMT_STATUS
  273. {
  274. WMT_ERROR = 0,
  275. WMT_OPENED = 1,
  276. WMT_BUFFERING_START = 2,
  277. WMT_BUFFERING_STOP = 3,
  278. WMT_EOF = 4,
  279. WMT_END_OF_FILE = 4,
  280. WMT_END_OF_SEGMENT = 5,
  281. WMT_END_OF_STREAMING = 6,
  282. WMT_LOCATING = 7,
  283. WMT_CONNECTING = 8,
  284. WMT_NO_RIGHTS = 9,
  285. WMT_MISSING_CODEC = 10,
  286. WMT_STARTED = 11,
  287. WMT_STOPPED = 12,
  288. WMT_CLOSED = 13,
  289. WMT_STRIDING = 14,
  290. WMT_TIMER = 15,
  291. WMT_INDEX_PROGRESS = 16,
  292. WMT_SAVEAS_START = 17,
  293. WMT_SAVEAS_STOP = 18,
  294. WMT_NEW_SOURCEFLAGS = 19,
  295. WMT_NEW_METADATA = 20,
  296. WMT_BACKUPRESTORE_BEGIN = 21,
  297. WMT_SOURCE_SWITCH = 22,
  298. WMT_ACQUIRE_LICENSE = 23,
  299. WMT_INDIVIDUALIZE = 24,
  300. WMT_NEEDS_INDIVIDUALIZATION = 25,
  301. WMT_NO_RIGHTS_EX = 26,
  302. WMT_BACKUPRESTORE_END = 27,
  303. WMT_BACKUPRESTORE_CONNECTING = 28,
  304. WMT_BACKUPRESTORE_DISCONNECTING = 29,
  305. WMT_ERROR_WITHURL = 30,
  306. WMT_RESTRICTED_LICENSE = 31,
  307. WMT_CLIENT_CONNECT = 32,
  308. WMT_CLIENT_DISCONNECT = 33,
  309. WMT_NATIVE_OUTPUT_PROPS_CHANGED = 34,
  310. WMT_RECONNECT_START = 35,
  311. WMT_RECONNECT_END = 36,
  312. WMT_CLIENT_CONNECT_EX = 37,
  313. WMT_CLIENT_DISCONNECT_EX = 38,
  314. WMT_SET_FEC_SPAN = 39,
  315. WMT_PREROLL_READY = 40,
  316. WMT_PREROLL_COMPLETE = 41,
  317. WMT_CLIENT_PROPERTIES = 42,
  318. WMT_LICENSEURL_SIGNATURE_STATE = 43,
  319. WMT_INIT_PLAYLIST_BURN = 44,
  320. WMT_TRANSCRYPTOR_INIT = 45,
  321. WMT_TRANSCRYPTOR_SEEKED = 46,
  322. WMT_TRANSCRYPTOR_READ = 47,
  323. WMT_TRANSCRYPTOR_CLOSED = 48,
  324. WMT_PROXIMITY_RESULT = 49,
  325. WMT_PROXIMITY_COMPLETED = 50,
  326. WMT_CONTENT_ENABLER = 51
  327. }
  328. enum WMT_STORAGE_FORMAT
  329. {
  330. WMT_Storage_Format_MP3 = 0,
  331. WMT_Storage_Format_V1 = 1,
  332. }
  333. public enum WMT_STREAM_SELECTION
  334. {
  335. WMT_OFF = 0,
  336. WMT_CLEANPOINT_ONLY = 1,
  337. WMT_ON = 2
  338. }
  339. enum WMT_TRANSPORT_TYPE
  340. {
  341. WMT_Transport_Type_Unreliable = 0,
  342. WMT_Transport_Type_Reliable = 1
  343. }
  344. enum WMT_VERSION
  345. {
  346. WMT_VER_4_0 = 0x00040000,
  347. WMT_VER_7_0 = 0x00070000,
  348. WMT_VER_8_0 = 0x00080000,
  349. WMT_VER_9_0 = 0x00090000
  350. }
  351. enum WMT_WATERMARK_ENTRY_TYPE
  352. {
  353. WMT_WMETYPE_AUDIO = 1,
  354. WMT_WMETYPE_VIDEO = 2
  355. }
  356. }