/WPFMediaKit/MediaFoundation/Interop/MFIdl.cs

http://github.com/fivesixty/StandaloneMB · C# · 4039 lines · 3158 code · 732 blank · 149 comment · 0 complexity · 4f947b2ec61b2ceec781a4da298fd813 MD5 · raw file

  1. using System;
  2. using System.Text;
  3. using System.Runtime.InteropServices;
  4. using System.Runtime.InteropServices.ComTypes;
  5. using WPFMediaKit.MediaFoundation.Interop.Misc;
  6. namespace WPFMediaKit.MediaFoundation.Interop
  7. {
  8. #region GUIDs, IIDs
  9. public sealed class MFAttributesClsid
  10. {
  11. // Audio Renderer Attributes
  12. public static readonly Guid MF_AUDIO_RENDERER_ATTRIBUTE_ENDPOINT_ID = new Guid(0xb10aaec3, 0xef71, 0x4cc3, 0xb8, 0x73, 0x5, 0xa9, 0xa0, 0x8b, 0x9f, 0x8e);
  13. public static readonly Guid MF_AUDIO_RENDERER_ATTRIBUTE_ENDPOINT_ROLE = new Guid(0x6ba644ff, 0x27c5, 0x4d02, 0x98, 0x87, 0xc2, 0x86, 0x19, 0xfd, 0xb9, 0x1b);
  14. public static readonly Guid MF_AUDIO_RENDERER_ATTRIBUTE_FLAGS = new Guid(0xede4b5e0, 0xf805, 0x4d6c, 0x99, 0xb3, 0xdb, 0x01, 0xbf, 0x95, 0xdf, 0xab);
  15. public static readonly Guid MF_AUDIO_RENDERER_ATTRIBUTE_SESSION_ID = new Guid(0xede4b5e3, 0xf805, 0x4d6c, 0x99, 0xb3, 0xdb, 0x01, 0xbf, 0x95, 0xdf, 0xab);
  16. // Byte Stream Attributes
  17. public static readonly Guid MF_BYTESTREAM_ORIGIN_NAME = new Guid(0xfc358288, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
  18. public static readonly Guid MF_BYTESTREAM_CONTENT_TYPE = new Guid(0xfc358289, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
  19. public static readonly Guid MF_BYTESTREAM_DURATION = new Guid(0xfc35828a, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
  20. public static readonly Guid MF_BYTESTREAM_LAST_MODIFIED_TIME = new Guid(0xfc35828b, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
  21. // Enhanced Video Renderer Attributes
  22. public static readonly Guid MF_ACTIVATE_CUSTOM_VIDEO_MIXER_ACTIVATE = new Guid(0xba491361, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8);
  23. public static readonly Guid MF_ACTIVATE_CUSTOM_VIDEO_MIXER_CLSID = new Guid(0xba491360, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8);
  24. public static readonly Guid MF_ACTIVATE_CUSTOM_VIDEO_MIXER_FLAGS = new Guid(0xba491362, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8);
  25. public static readonly Guid MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_ACTIVATE = new Guid(0xba491365, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8);
  26. public static readonly Guid MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_CLSID = new Guid(0xba491364, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8);
  27. public static readonly Guid MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_FLAGS = new Guid(0xba491366, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8);
  28. public static readonly Guid MF_ACTIVATE_VIDEO_WINDOW = new Guid(0x9a2dbbdd, 0xf57e, 0x4162, 0x82, 0xb9, 0x68, 0x31, 0x37, 0x76, 0x82, 0xd3);
  29. public static readonly Guid MF_SA_REQUIRED_SAMPLE_COUNT = new Guid(0x18802c61, 0x324b, 0x4952, 0xab, 0xd0, 0x17, 0x6f, 0xf5, 0xc6, 0x96, 0xff);
  30. public static readonly Guid VIDEO_ZOOM_RECT = new Guid(0x7aaa1638, 0x1b7f, 0x4c93, 0xbd, 0x89, 0x5b, 0x9c, 0x9f, 0xb6, 0xfc, 0xf0);
  31. // Event Attributes
  32. // MF_EVENT_DO_THINNING {321EA6FB-DAD9-46e4-B31D-D2EAE7090E30}
  33. public static readonly Guid MF_EVENT_DO_THINNING = new Guid(0x321ea6fb, 0xdad9, 0x46e4, 0xb3, 0x1d, 0xd2, 0xea, 0xe7, 0x9, 0xe, 0x30);
  34. // MF_EVENT_OUTPUT_NODE {830f1a8b-c060-46dd-a801-1c95dec9b107}
  35. public static readonly Guid MF_EVENT_OUTPUT_NODE = new Guid(0x830f1a8b, 0xc060, 0x46dd, 0xa8, 0x01, 0x1c, 0x95, 0xde, 0xc9, 0xb1, 0x07);
  36. // MF_EVENT_PRESENTATION_TIME_OFFSET {5AD914D1-9B45-4a8d-A2C0-81D1E50BFB07}
  37. public static readonly Guid MF_EVENT_PRESENTATION_TIME_OFFSET = new Guid(0x5ad914d1, 0x9b45, 0x4a8d, 0xa2, 0xc0, 0x81, 0xd1, 0xe5, 0xb, 0xfb, 0x7);
  38. // MF_EVENT_SCRUBSAMPLE_TIME {9AC712B3-DCB8-44d5-8D0C-37455A2782E3}
  39. public static readonly Guid MF_EVENT_SCRUBSAMPLE_TIME = new Guid(0x9ac712b3, 0xdcb8, 0x44d5, 0x8d, 0xc, 0x37, 0x45, 0x5a, 0x27, 0x82, 0xe3);
  40. // MF_EVENT_SESSIONCAPS {7E5EBCD0-11B8-4abe-AFAD-10F6599A7F42}
  41. public static readonly Guid MF_EVENT_SESSIONCAPS = new Guid(0x7e5ebcd0, 0x11b8, 0x4abe, 0xaf, 0xad, 0x10, 0xf6, 0x59, 0x9a, 0x7f, 0x42);
  42. // MF_EVENT_SESSIONCAPS_DELTA {7E5EBCD1-11B8-4abe-AFAD-10F6599A7F42}
  43. // Type: UINT32
  44. public static readonly Guid MF_EVENT_SESSIONCAPS_DELTA = new Guid(0x7e5ebcd1, 0x11b8, 0x4abe, 0xaf, 0xad, 0x10, 0xf6, 0x59, 0x9a, 0x7f, 0x42);
  45. // MF_EVENT_SOURCE_ACTUAL_START {a8cc55a9-6b31-419f-845d-ffb351a2434b}
  46. public static readonly Guid MF_EVENT_SOURCE_ACTUAL_START = new Guid(0xa8cc55a9, 0x6b31, 0x419f, 0x84, 0x5d, 0xff, 0xb3, 0x51, 0xa2, 0x43, 0x4b);
  47. // MF_EVENT_SOURCE_CHARACTERISTICS {47DB8490-8B22-4f52-AFDA-9CE1B2D3CFA8}
  48. public static readonly Guid MF_EVENT_SOURCE_CHARACTERISTICS = new Guid(0x47db8490, 0x8b22, 0x4f52, 0xaf, 0xda, 0x9c, 0xe1, 0xb2, 0xd3, 0xcf, 0xa8);
  49. // MF_EVENT_SOURCE_CHARACTERISTICS_OLD {47DB8491-8B22-4f52-AFDA-9CE1B2D3CFA8}
  50. public static readonly Guid MF_EVENT_SOURCE_CHARACTERISTICS_OLD = new Guid(0x47db8491, 0x8b22, 0x4f52, 0xaf, 0xda, 0x9c, 0xe1, 0xb2, 0xd3, 0xcf, 0xa8);
  51. // MF_EVENT_SOURCE_FAKE_START {a8cc55a7-6b31-419f-845d-ffb351a2434b}
  52. public static readonly Guid MF_EVENT_SOURCE_FAKE_START = new Guid(0xa8cc55a7, 0x6b31, 0x419f, 0x84, 0x5d, 0xff, 0xb3, 0x51, 0xa2, 0x43, 0x4b);
  53. // MF_EVENT_SOURCE_PROJECTSTART {a8cc55a8-6b31-419f-845d-ffb351a2434b}
  54. public static readonly Guid MF_EVENT_SOURCE_PROJECTSTART = new Guid(0xa8cc55a8, 0x6b31, 0x419f, 0x84, 0x5d, 0xff, 0xb3, 0x51, 0xa2, 0x43, 0x4b);
  55. // MF_EVENT_SOURCE_TOPOLOGY_CANCELED {DB62F650-9A5E-4704-ACF3-563BC6A73364}
  56. public static readonly Guid MF_EVENT_SOURCE_TOPOLOGY_CANCELED = new Guid(0xdb62f650, 0x9a5e, 0x4704, 0xac, 0xf3, 0x56, 0x3b, 0xc6, 0xa7, 0x33, 0x64);
  57. // MF_EVENT_START_PRESENTATION_TIME {5AD914D0-9B45-4a8d-A2C0-81D1E50BFB07}
  58. public static readonly Guid MF_EVENT_START_PRESENTATION_TIME = new Guid(0x5ad914d0, 0x9b45, 0x4a8d, 0xa2, 0xc0, 0x81, 0xd1, 0xe5, 0xb, 0xfb, 0x7);
  59. // MF_EVENT_START_PRESENTATION_TIME_AT_OUTPUT {5AD914D2-9B45-4a8d-A2C0-81D1E50BFB07}
  60. public static readonly Guid MF_EVENT_START_PRESENTATION_TIME_AT_OUTPUT = new Guid(0x5ad914d2, 0x9b45, 0x4a8d, 0xa2, 0xc0, 0x81, 0xd1, 0xe5, 0xb, 0xfb, 0x7);
  61. // MF_EVENT_TOPOLOGY_STATUS {30C5018D-9A53-454b-AD9E-6D5F8FA7C43B}
  62. public static readonly Guid MF_EVENT_TOPOLOGY_STATUS = new Guid(0x30c5018d, 0x9a53, 0x454b, 0xad, 0x9e, 0x6d, 0x5f, 0x8f, 0xa7, 0xc4, 0x3b);
  63. public static readonly Guid MF_SESSION_APPROX_EVENT_OCCURRENCE_TIME = new Guid(0x190e852f, 0x6238, 0x42d1, 0xb5, 0xaf, 0x69, 0xea, 0x33, 0x8e, 0xf8, 0x50);
  64. // Media Session Attributes
  65. public static readonly Guid MF_SESSION_CONTENT_PROTECTION_MANAGER = new Guid(0x1e83d482, 0x1f1c, 0x4571, 0x84, 0x5, 0x88, 0xf4, 0xb2, 0x18, 0x1f, 0x74);
  66. public static readonly Guid MF_SESSION_GLOBAL_TIME = new Guid(0x1e83d482, 0x1f1c, 0x4571, 0x84, 0x5, 0x88, 0xf4, 0xb2, 0x18, 0x1f, 0x72);
  67. public static readonly Guid MF_SESSION_QUALITY_MANAGER = new Guid(0x1e83d482, 0x1f1c, 0x4571, 0x84, 0x5, 0x88, 0xf4, 0xb2, 0x18, 0x1f, 0x73);
  68. public static readonly Guid MF_SESSION_REMOTE_SOURCE_MODE = new Guid(0xf4033ef4, 0x9bb3, 0x4378, 0x94, 0x1f, 0x85, 0xa0, 0x85, 0x6b, 0xc2, 0x44);
  69. public static readonly Guid MF_SESSION_SERVER_CONTEXT = new Guid(0xafe5b291, 0x50fa, 0x46e8, 0xb9, 0xbe, 0xc, 0xc, 0x3c, 0xe4, 0xb3, 0xa5);
  70. public static readonly Guid MF_SESSION_TOPOLOADER = new Guid(0x1e83d482, 0x1f1c, 0x4571, 0x84, 0x5, 0x88, 0xf4, 0xb2, 0x18, 0x1f, 0x71);
  71. // Media Type Attributes
  72. // {48eba18e-f8c9-4687-bf11-0a74c9f96a8f} MF_MT_MAJOR_TYPE {GUID}
  73. public static readonly Guid MF_MT_MAJOR_TYPE = new Guid(0x48eba18e, 0xf8c9, 0x4687, 0xbf, 0x11, 0x0a, 0x74, 0xc9, 0xf9, 0x6a, 0x8f);
  74. // {f7e34c9a-42e8-4714-b74b-cb29d72c35e5} MF_MT_SUBTYPE {GUID}
  75. public static readonly Guid MF_MT_SUBTYPE = new Guid(0xf7e34c9a, 0x42e8, 0x4714, 0xb7, 0x4b, 0xcb, 0x29, 0xd7, 0x2c, 0x35, 0xe5);
  76. // {c9173739-5e56-461c-b713-46fb995cb95f} MF_MT_ALL_SAMPLES_INDEPENDENT {UINT32 (BOOL)}
  77. public static readonly Guid MF_MT_ALL_SAMPLES_INDEPENDENT = new Guid(0xc9173739, 0x5e56, 0x461c, 0xb7, 0x13, 0x46, 0xfb, 0x99, 0x5c, 0xb9, 0x5f);
  78. // {b8ebefaf-b718-4e04-b0a9-116775e3321b} MF_MT_FIXED_SIZE_SAMPLES {UINT32 (BOOL)}
  79. public static readonly Guid MF_MT_FIXED_SIZE_SAMPLES = new Guid(0xb8ebefaf, 0xb718, 0x4e04, 0xb0, 0xa9, 0x11, 0x67, 0x75, 0xe3, 0x32, 0x1b);
  80. // {3afd0cee-18f2-4ba5-a110-8bea502e1f92} MF_MT_COMPRESSED {UINT32 (BOOL)}
  81. public static readonly Guid MF_MT_COMPRESSED = new Guid(0x3afd0cee, 0x18f2, 0x4ba5, 0xa1, 0x10, 0x8b, 0xea, 0x50, 0x2e, 0x1f, 0x92);
  82. // {dad3ab78-1990-408b-bce2-eba673dacc10} MF_MT_SAMPLE_SIZE {UINT32}
  83. public static readonly Guid MF_MT_SAMPLE_SIZE = new Guid(0xdad3ab78, 0x1990, 0x408b, 0xbc, 0xe2, 0xeb, 0xa6, 0x73, 0xda, 0xcc, 0x10);
  84. // 4d3f7b23-d02f-4e6c-9bee-e4bf2c6c695d MF_MT_WRAPPED_TYPE {Blob}
  85. public static readonly Guid MF_MT_WRAPPED_TYPE = new Guid(0x4d3f7b23, 0xd02f, 0x4e6c, 0x9b, 0xee, 0xe4, 0xbf, 0x2c, 0x6c, 0x69, 0x5d);
  86. // {37e48bf5-645e-4c5b-89de-ada9e29b696a} MF_MT_AUDIO_NUM_CHANNELS {UINT32}
  87. public static readonly Guid MF_MT_AUDIO_NUM_CHANNELS = new Guid(0x37e48bf5, 0x645e, 0x4c5b, 0x89, 0xde, 0xad, 0xa9, 0xe2, 0x9b, 0x69, 0x6a);
  88. // {5faeeae7-0290-4c31-9e8a-c534f68d9dba} MF_MT_AUDIO_SAMPLES_PER_SECOND {UINT32}
  89. public static readonly Guid MF_MT_AUDIO_SAMPLES_PER_SECOND = new Guid(0x5faeeae7, 0x0290, 0x4c31, 0x9e, 0x8a, 0xc5, 0x34, 0xf6, 0x8d, 0x9d, 0xba);
  90. // {fb3b724a-cfb5-4319-aefe-6e42b2406132} MF_MT_AUDIO_FLOAT_SAMPLES_PER_SECOND {double}
  91. public static readonly Guid MF_MT_AUDIO_FLOAT_SAMPLES_PER_SECOND = new Guid(0xfb3b724a, 0xcfb5, 0x4319, 0xae, 0xfe, 0x6e, 0x42, 0xb2, 0x40, 0x61, 0x32);
  92. // {1aab75c8-cfef-451c-ab95-ac034b8e1731} MF_MT_AUDIO_AVG_BYTES_PER_SECOND {UINT32}
  93. public static readonly Guid MF_MT_AUDIO_AVG_BYTES_PER_SECOND = new Guid(0x1aab75c8, 0xcfef, 0x451c, 0xab, 0x95, 0xac, 0x03, 0x4b, 0x8e, 0x17, 0x31);
  94. // {322de230-9eeb-43bd-ab7a-ff412251541d} MF_MT_AUDIO_BLOCK_ALIGNMENT {UINT32}
  95. public static readonly Guid MF_MT_AUDIO_BLOCK_ALIGNMENT = new Guid(0x322de230, 0x9eeb, 0x43bd, 0xab, 0x7a, 0xff, 0x41, 0x22, 0x51, 0x54, 0x1d);
  96. // {f2deb57f-40fa-4764-aa33-ed4f2d1ff669} MF_MT_AUDIO_BITS_PER_SAMPLE {UINT32}
  97. public static readonly Guid MF_MT_AUDIO_BITS_PER_SAMPLE = new Guid(0xf2deb57f, 0x40fa, 0x4764, 0xaa, 0x33, 0xed, 0x4f, 0x2d, 0x1f, 0xf6, 0x69);
  98. // {d9bf8d6a-9530-4b7c-9ddf-ff6fd58bbd06} MF_MT_AUDIO_VALID_BITS_PER_SAMPLE {UINT32}
  99. public static readonly Guid MF_MT_AUDIO_VALID_BITS_PER_SAMPLE = new Guid(0xd9bf8d6a, 0x9530, 0x4b7c, 0x9d, 0xdf, 0xff, 0x6f, 0xd5, 0x8b, 0xbd, 0x06);
  100. // {aab15aac-e13a-4995-9222-501ea15c6877} MF_MT_AUDIO_SAMPLES_PER_BLOCK {UINT32}
  101. public static readonly Guid MF_MT_AUDIO_SAMPLES_PER_BLOCK = new Guid(0xaab15aac, 0xe13a, 0x4995, 0x92, 0x22, 0x50, 0x1e, 0xa1, 0x5c, 0x68, 0x77);
  102. // {55fb5765-644a-4caf-8479-938983bb1588}` MF_MT_AUDIO_CHANNEL_MASK {UINT32}
  103. public static readonly Guid MF_MT_AUDIO_CHANNEL_MASK = new Guid(0x55fb5765, 0x644a, 0x4caf, 0x84, 0x79, 0x93, 0x89, 0x83, 0xbb, 0x15, 0x88);
  104. // {9d62927c-36be-4cf2-b5c4-a3926e3e8711}` MF_MT_AUDIO_FOLDDOWN_MATRIX {BLOB, MFFOLDDOWN_MATRIX}
  105. public static readonly Guid MF_MT_AUDIO_FOLDDOWN_MATRIX = new Guid(0x9d62927c, 0x36be, 0x4cf2, 0xb5, 0xc4, 0xa3, 0x92, 0x6e, 0x3e, 0x87, 0x11);
  106. // {0x9d62927d-36be-4cf2-b5c4-a3926e3e8711}` MF_MT_AUDIO_WMADRC_PEAKREF {UINT32}
  107. public static readonly Guid MF_MT_AUDIO_WMADRC_PEAKREF = new Guid(0x9d62927d, 0x36be, 0x4cf2, 0xb5, 0xc4, 0xa3, 0x92, 0x6e, 0x3e, 0x87, 0x11);
  108. // {0x9d62927e-36be-4cf2-b5c4-a3926e3e8711}` MF_MT_AUDIO_WMADRC_PEAKTARGET {UINT32}
  109. public static readonly Guid MF_MT_AUDIO_WMADRC_PEAKTARGET = new Guid(0x9d62927e, 0x36be, 0x4cf2, 0xb5, 0xc4, 0xa3, 0x92, 0x6e, 0x3e, 0x87, 0x11);
  110. // {0x9d62927f-36be-4cf2-b5c4-a3926e3e8711}` MF_MT_AUDIO_WMADRC_AVGREF {UINT32}
  111. public static readonly Guid MF_MT_AUDIO_WMADRC_AVGREF = new Guid(0x9d62927f, 0x36be, 0x4cf2, 0xb5, 0xc4, 0xa3, 0x92, 0x6e, 0x3e, 0x87, 0x11);
  112. // {0x9d629280-36be-4cf2-b5c4-a3926e3e8711}` MF_MT_AUDIO_WMADRC_AVGTARGET {UINT32}
  113. public static readonly Guid MF_MT_AUDIO_WMADRC_AVGTARGET = new Guid(0x9d629280, 0x36be, 0x4cf2, 0xb5, 0xc4, 0xa3, 0x92, 0x6e, 0x3e, 0x87, 0x11);
  114. // {a901aaba-e037-458a-bdf6-545be2074042} MF_MT_AUDIO_PREFER_WAVEFORMATEX {UINT32 (BOOL)}
  115. public static readonly Guid MF_MT_AUDIO_PREFER_WAVEFORMATEX = new Guid(0xa901aaba, 0xe037, 0x458a, 0xbd, 0xf6, 0x54, 0x5b, 0xe2, 0x07, 0x40, 0x42);
  116. // {1652c33d-d6b2-4012-b834-72030849a37d} MF_MT_FRAME_SIZE {UINT64 (HI32(Width),LO32(Height))}
  117. public static readonly Guid MF_MT_FRAME_SIZE = new Guid(0x1652c33d, 0xd6b2, 0x4012, 0xb8, 0x34, 0x72, 0x03, 0x08, 0x49, 0xa3, 0x7d);
  118. // {c459a2e8-3d2c-4e44-b132-fee5156c7bb0} MF_MT_FRAME_RATE {UINT64 (HI32(Numerator),LO32(Denominator))}
  119. public static readonly Guid MF_MT_FRAME_RATE = new Guid(0xc459a2e8, 0x3d2c, 0x4e44, 0xb1, 0x32, 0xfe, 0xe5, 0x15, 0x6c, 0x7b, 0xb0);
  120. // {c6376a1e-8d0a-4027-be45-6d9a0ad39bb6} MF_MT_PIXEL_ASPECT_RATIO {UINT64 (HI32(Numerator),LO32(Denominator))}
  121. public static readonly Guid MF_MT_PIXEL_ASPECT_RATIO = new Guid(0xc6376a1e, 0x8d0a, 0x4027, 0xbe, 0x45, 0x6d, 0x9a, 0x0a, 0xd3, 0x9b, 0xb6);
  122. // {8772f323-355a-4cc7-bb78-6d61a048ae82} MF_MT_DRM_FLAGS {UINT32 (anyof MFVideoDRMFlags)}
  123. public static readonly Guid MF_MT_DRM_FLAGS = new Guid(0x8772f323, 0x355a, 0x4cc7, 0xbb, 0x78, 0x6d, 0x61, 0xa0, 0x48, 0xae, 0x82);
  124. // {4d0e73e5-80ea-4354-a9d0-1176ceb028ea} MF_MT_PAD_CONTROL_FLAGS {UINT32 (oneof MFVideoPadFlags)}
  125. public static readonly Guid MF_MT_PAD_CONTROL_FLAGS = new Guid(0x4d0e73e5, 0x80ea, 0x4354, 0xa9, 0xd0, 0x11, 0x76, 0xce, 0xb0, 0x28, 0xea);
  126. // {68aca3cc-22d0-44e6-85f8-28167197fa38} MF_MT_SOURCE_CONTENT_HINT {UINT32 (oneof MFVideoSrcContentHintFlags)}
  127. public static readonly Guid MF_MT_SOURCE_CONTENT_HINT = new Guid(0x68aca3cc, 0x22d0, 0x44e6, 0x85, 0xf8, 0x28, 0x16, 0x71, 0x97, 0xfa, 0x38);
  128. // {65df2370-c773-4c33-aa64-843e068efb0c} MF_MT_CHROMA_SITING {UINT32 (anyof MFVideoChromaSubsampling)}
  129. public static readonly Guid MF_MT_VIDEO_CHROMA_SITING = new Guid(0x65df2370, 0xc773, 0x4c33, 0xaa, 0x64, 0x84, 0x3e, 0x06, 0x8e, 0xfb, 0x0c);
  130. // {e2724bb8-e676-4806-b4b2-a8d6efb44ccd} MF_MT_INTERLACE_MODE {UINT32 (oneof MFVideoInterlaceMode)}
  131. public static readonly Guid MF_MT_INTERLACE_MODE = new Guid(0xe2724bb8, 0xe676, 0x4806, 0xb4, 0xb2, 0xa8, 0xd6, 0xef, 0xb4, 0x4c, 0xcd);
  132. // {5fb0fce9-be5c-4935-a811-ec838f8eed93} MF_MT_TRANSFER_FUNCTION {UINT32 (oneof MFVideoTransferFunction)}
  133. public static readonly Guid MF_MT_TRANSFER_FUNCTION = new Guid(0x5fb0fce9, 0xbe5c, 0x4935, 0xa8, 0x11, 0xec, 0x83, 0x8f, 0x8e, 0xed, 0x93);
  134. // {dbfbe4d7-0740-4ee0-8192-850ab0e21935} MF_MT_VIDEO_PRIMARIES {UINT32 (oneof MFVideoPrimaries)}
  135. public static readonly Guid MF_MT_VIDEO_PRIMARIES = new Guid(0xdbfbe4d7, 0x0740, 0x4ee0, 0x81, 0x92, 0x85, 0x0a, 0xb0, 0xe2, 0x19, 0x35);
  136. // {47537213-8cfb-4722-aa34-fbc9e24d77b8} MF_MT_CUSTOM_VIDEO_PRIMARIES {BLOB (MT_CUSTOM_VIDEO_PRIMARIES)}
  137. public static readonly Guid MF_MT_CUSTOM_VIDEO_PRIMARIES = new Guid(0x47537213, 0x8cfb, 0x4722, 0xaa, 0x34, 0xfb, 0xc9, 0xe2, 0x4d, 0x77, 0xb8);
  138. // {3e23d450-2c75-4d25-a00e-b91670d12327} MF_MT_YUV_MATRIX {UINT32 (oneof MFVideoTransferMatrix)}
  139. public static readonly Guid MF_MT_YUV_MATRIX = new Guid(0x3e23d450, 0x2c75, 0x4d25, 0xa0, 0x0e, 0xb9, 0x16, 0x70, 0xd1, 0x23, 0x27);
  140. // {53a0529c-890b-4216-8bf9-599367ad6d20} MF_MT_VIDEO_LIGHTING {UINT32 (oneof MFVideoLighting)}
  141. public static readonly Guid MF_MT_VIDEO_LIGHTING = new Guid(0x53a0529c, 0x890b, 0x4216, 0x8b, 0xf9, 0x59, 0x93, 0x67, 0xad, 0x6d, 0x20);
  142. // {c21b8ee5-b956-4071-8daf-325edf5cab11} MF_MT_VIDEO_NOMINAL_RANGE {UINT32 (oneof MFNominalRange)}
  143. public static readonly Guid MF_MT_VIDEO_NOMINAL_RANGE = new Guid(0xc21b8ee5, 0xb956, 0x4071, 0x8d, 0xaf, 0x32, 0x5e, 0xdf, 0x5c, 0xab, 0x11);
  144. // {66758743-7e5f-400d-980a-aa8596c85696} MF_MT_GEOMETRIC_APERTURE {BLOB (MFVideoArea)}
  145. public static readonly Guid MF_MT_GEOMETRIC_APERTURE = new Guid(0x66758743, 0x7e5f, 0x400d, 0x98, 0x0a, 0xaa, 0x85, 0x96, 0xc8, 0x56, 0x96);
  146. // {d7388766-18fe-48c6-a177-ee894867c8c4} MF_MT_MINIMUM_DISPLAY_APERTURE {BLOB (MFVideoArea)}
  147. public static readonly Guid MF_MT_MINIMUM_DISPLAY_APERTURE = new Guid(0xd7388766, 0x18fe, 0x48c6, 0xa1, 0x77, 0xee, 0x89, 0x48, 0x67, 0xc8, 0xc4);
  148. // {79614dde-9187-48fb-b8c7-4d52689de649} MF_MT_PAN_SCAN_APERTURE {BLOB (MFVideoArea)}
  149. public static readonly Guid MF_MT_PAN_SCAN_APERTURE = new Guid(0x79614dde, 0x9187, 0x48fb, 0xb8, 0xc7, 0x4d, 0x52, 0x68, 0x9d, 0xe6, 0x49);
  150. // {4b7f6bc3-8b13-40b2-a993-abf630b8204e} MF_MT_PAN_SCAN_ENABLED {UINT32 (BOOL)}
  151. public static readonly Guid MF_MT_PAN_SCAN_ENABLED = new Guid(0x4b7f6bc3, 0x8b13, 0x40b2, 0xa9, 0x93, 0xab, 0xf6, 0x30, 0xb8, 0x20, 0x4e);
  152. // {20332624-fb0d-4d9e-bd0d-cbf6786c102e} MF_MT_AVG_BITRATE {UINT32}
  153. public static readonly Guid MF_MT_AVG_BITRATE = new Guid(0x20332624, 0xfb0d, 0x4d9e, 0xbd, 0x0d, 0xcb, 0xf6, 0x78, 0x6c, 0x10, 0x2e);
  154. // {799cabd6-3508-4db4-a3c7-569cd533deb1} MF_MT_AVG_BIT_ERROR_RATE {UINT32}
  155. public static readonly Guid MF_MT_AVG_BIT_ERROR_RATE = new Guid(0x799cabd6, 0x3508, 0x4db4, 0xa3, 0xc7, 0x56, 0x9c, 0xd5, 0x33, 0xde, 0xb1);
  156. // {c16eb52b-73a1-476f-8d62-839d6a020652} MF_MT_MAX_KEYFRAME_SPACING {UINT32}
  157. public static readonly Guid MF_MT_MAX_KEYFRAME_SPACING = new Guid(0xc16eb52b, 0x73a1, 0x476f, 0x8d, 0x62, 0x83, 0x9d, 0x6a, 0x02, 0x06, 0x52);
  158. // {644b4e48-1e02-4516-b0eb-c01ca9d49ac6} MF_MT_DEFAULT_STRIDE {UINT32 (INT32)} // in bytes
  159. public static readonly Guid MF_MT_DEFAULT_STRIDE = new Guid(0x644b4e48, 0x1e02, 0x4516, 0xb0, 0xeb, 0xc0, 0x1c, 0xa9, 0xd4, 0x9a, 0xc6);
  160. // {6d283f42-9846-4410-afd9-654d503b1a54} MF_MT_PALETTE {BLOB (array of MFPaletteEntry - usually 256)}
  161. public static readonly Guid MF_MT_PALETTE = new Guid(0x6d283f42, 0x9846, 0x4410, 0xaf, 0xd9, 0x65, 0x4d, 0x50, 0x3b, 0x1a, 0x54);
  162. // {b6bc765f-4c3b-40a4-bd51-2535b66fe09d} MF_MT_USER_DATA {BLOB}
  163. public static readonly Guid MF_MT_USER_DATA = new Guid(0xb6bc765f, 0x4c3b, 0x40a4, 0xbd, 0x51, 0x25, 0x35, 0xb6, 0x6f, 0xe0, 0x9d);
  164. // {73d1072d-1870-4174-a063-29ff4ff6c11e}
  165. public static readonly Guid MF_MT_AM_FORMAT_TYPE = new Guid(0x73d1072d, 0x1870, 0x4174, 0xa0, 0x63, 0x29, 0xff, 0x4f, 0xf6, 0xc1, 0x1e);
  166. // {91f67885-4333-4280-97cd-bd5a6c03a06e} MF_MT_MPEG_START_TIME_CODE {UINT32}
  167. public static readonly Guid MF_MT_MPEG_START_TIME_CODE = new Guid(0x91f67885, 0x4333, 0x4280, 0x97, 0xcd, 0xbd, 0x5a, 0x6c, 0x03, 0xa0, 0x6e);
  168. // {ad76a80b-2d5c-4e0b-b375-64e520137036} MF_MT_MPEG2_PROFILE {UINT32 (oneof AM_MPEG2Profile)}
  169. public static readonly Guid MF_MT_MPEG2_PROFILE = new Guid(0xad76a80b, 0x2d5c, 0x4e0b, 0xb3, 0x75, 0x64, 0xe5, 0x20, 0x13, 0x70, 0x36);
  170. // {96f66574-11c5-4015-8666-bff516436da7} MF_MT_MPEG2_LEVEL {UINT32 (oneof AM_MPEG2Level)}
  171. public static readonly Guid MF_MT_MPEG2_LEVEL = new Guid(0x96f66574, 0x11c5, 0x4015, 0x86, 0x66, 0xbf, 0xf5, 0x16, 0x43, 0x6d, 0xa7);
  172. // {31e3991d-f701-4b2f-b426-8ae3bda9e04b} MF_MT_MPEG2_FLAGS {UINT32 (anyof AMMPEG2_xxx flags)}
  173. public static readonly Guid MF_MT_MPEG2_FLAGS = new Guid(0x31e3991d, 0xf701, 0x4b2f, 0xb4, 0x26, 0x8a, 0xe3, 0xbd, 0xa9, 0xe0, 0x4b);
  174. // {3c036de7-3ad0-4c9e-9216-ee6d6ac21cb3} MF_MT_MPEG_SEQUENCE_HEADER {BLOB}
  175. public static readonly Guid MF_MT_MPEG_SEQUENCE_HEADER = new Guid(0x3c036de7, 0x3ad0, 0x4c9e, 0x92, 0x16, 0xee, 0x6d, 0x6a, 0xc2, 0x1c, 0xb3);
  176. // {84bd5d88-0fb8-4ac8-be4b-a8848bef98f3} MF_MT_DV_AAUX_SRC_PACK_0 {UINT32}
  177. public static readonly Guid MF_MT_DV_AAUX_SRC_PACK_0 = new Guid(0x84bd5d88, 0x0fb8, 0x4ac8, 0xbe, 0x4b, 0xa8, 0x84, 0x8b, 0xef, 0x98, 0xf3);
  178. // {f731004e-1dd1-4515-aabe-f0c06aa536ac} MF_MT_DV_AAUX_CTRL_PACK_0 {UINT32}
  179. public static readonly Guid MF_MT_DV_AAUX_CTRL_PACK_0 = new Guid(0xf731004e, 0x1dd1, 0x4515, 0xaa, 0xbe, 0xf0, 0xc0, 0x6a, 0xa5, 0x36, 0xac);
  180. // {720e6544-0225-4003-a651-0196563a958e} MF_MT_DV_AAUX_SRC_PACK_1 {UINT32}
  181. public static readonly Guid MF_MT_DV_AAUX_SRC_PACK_1 = new Guid(0x720e6544, 0x0225, 0x4003, 0xa6, 0x51, 0x01, 0x96, 0x56, 0x3a, 0x95, 0x8e);
  182. // {cd1f470d-1f04-4fe0-bfb9-d07ae0386ad8} MF_MT_DV_AAUX_CTRL_PACK_1 {UINT32}
  183. public static readonly Guid MF_MT_DV_AAUX_CTRL_PACK_1 = new Guid(0xcd1f470d, 0x1f04, 0x4fe0, 0xbf, 0xb9, 0xd0, 0x7a, 0xe0, 0x38, 0x6a, 0xd8);
  184. // {41402d9d-7b57-43c6-b129-2cb997f15009} MF_MT_DV_VAUX_SRC_PACK {UINT32}
  185. public static readonly Guid MF_MT_DV_VAUX_SRC_PACK = new Guid(0x41402d9d, 0x7b57, 0x43c6, 0xb1, 0x29, 0x2c, 0xb9, 0x97, 0xf1, 0x50, 0x09);
  186. // {2f84e1c4-0da1-4788-938e-0dfbfbb34b48} MF_MT_DV_VAUX_CTRL_PACK {UINT32}
  187. public static readonly Guid MF_MT_DV_VAUX_CTRL_PACK = new Guid(0x2f84e1c4, 0x0da1, 0x4788, 0x93, 0x8e, 0x0d, 0xfb, 0xfb, 0xb3, 0x4b, 0x48);
  188. // Sample Attributes
  189. // {941ce0a3-6ae3-4dda-9a08-a64298340617} MFSampleExtension_BottomFieldFirst
  190. public static readonly Guid MFSampleExtension_BottomFieldFirst = new Guid(0x941ce0a3, 0x6ae3, 0x4dda, 0x9a, 0x08, 0xa6, 0x42, 0x98, 0x34, 0x06, 0x17);
  191. // MFSampleExtension_CleanPoint {9cdf01d8-a0f0-43ba-b077-eaa06cbd728a}
  192. public static readonly Guid MFSampleExtension_CleanPoint = new Guid(0x9cdf01d8, 0xa0f0, 0x43ba, 0xb0, 0x77, 0xea, 0xa0, 0x6c, 0xbd, 0x72, 0x8a);
  193. // {6852465a-ae1c-4553-8e9b-c3420fcb1637} MFSampleExtension_DerivedFromTopField
  194. public static readonly Guid MFSampleExtension_DerivedFromTopField = new Guid(0x6852465a, 0xae1c, 0x4553, 0x8e, 0x9b, 0xc3, 0x42, 0x0f, 0xcb, 0x16, 0x37);
  195. // MFSampleExtension_Discontinuity {9cdf01d9-a0f0-43ba-b077-eaa06cbd728a}
  196. public static readonly Guid MFSampleExtension_Discontinuity = new Guid(0x9cdf01d9, 0xa0f0, 0x43ba, 0xb0, 0x77, 0xea, 0xa0, 0x6c, 0xbd, 0x72, 0x8a);
  197. // {b1d5830a-deb8-40e3-90fa-389943716461} MFSampleExtension_Interlaced
  198. public static readonly Guid MFSampleExtension_Interlaced = new Guid(0xb1d5830a, 0xdeb8, 0x40e3, 0x90, 0xfa, 0x38, 0x99, 0x43, 0x71, 0x64, 0x61);
  199. // {304d257c-7493-4fbd-b149-9228de8d9a99} MFSampleExtension_RepeatFirstField
  200. public static readonly Guid MFSampleExtension_RepeatFirstField = new Guid(0x304d257c, 0x7493, 0x4fbd, 0xb1, 0x49, 0x92, 0x28, 0xde, 0x8d, 0x9a, 0x99);
  201. // {9d85f816-658b-455a-bde0-9fa7e15ab8f9} MFSampleExtension_SingleField
  202. public static readonly Guid MFSampleExtension_SingleField = new Guid(0x9d85f816, 0x658b, 0x455a, 0xbd, 0xe0, 0x9f, 0xa7, 0xe1, 0x5a, 0xb8, 0xf9);
  203. // MFSampleExtension_Token {8294da66-f328-4805-b551-00deb4c57a61}
  204. public static readonly Guid MFSampleExtension_Token = new Guid(0x8294da66, 0xf328, 0x4805, 0xb5, 0x51, 0x00, 0xde, 0xb4, 0xc5, 0x7a, 0x61);
  205. // Sample Grabber Sink Attributes
  206. public static readonly Guid MF_SAMPLEGRABBERSINK_SAMPLE_TIME_OFFSET = new Guid(0x62e3d776, 0x8100, 0x4e03, 0xa6, 0xe8, 0xbd, 0x38, 0x57, 0xac, 0x9c, 0x47);
  207. // Stream descriptor Attributes
  208. public static readonly Guid MF_SD_LANGUAGE = new Guid(0xaf2180, 0xbdc2, 0x423c, 0xab, 0xca, 0xf5, 0x3, 0x59, 0x3b, 0xc1, 0x21);
  209. public static readonly Guid MF_SD_PROTECTED = new Guid(0xaf2181, 0xbdc2, 0x423c, 0xab, 0xca, 0xf5, 0x3, 0x59, 0x3b, 0xc1, 0x21);
  210. public static readonly Guid MF_SD_SAMI_LANGUAGE = new Guid(0x36fcb98a, 0x6cd0, 0x44cb, 0xac, 0xb9, 0xa8, 0xf5, 0x60, 0xd, 0xd0, 0xbb);
  211. // Topology Attributes
  212. public static readonly Guid MF_TOPOLOGY_NO_MARKIN_MARKOUT = new Guid(0x7ed3f804, 0x86bb, 0x4b3f, 0xb7, 0xe4, 0x7c, 0xb4, 0x3a, 0xfd, 0x4b, 0x80);
  213. public static readonly Guid MF_TOPOLOGY_PROJECTSTART = new Guid(0x7ed3f802, 0x86bb, 0x4b3f, 0xb7, 0xe4, 0x7c, 0xb4, 0x3a, 0xfd, 0x4b, 0x80);
  214. public static readonly Guid MF_TOPOLOGY_PROJECTSTOP = new Guid(0x7ed3f803, 0x86bb, 0x4b3f, 0xb7, 0xe4, 0x7c, 0xb4, 0x3a, 0xfd, 0x4b, 0x80);
  215. public static readonly Guid MF_TOPOLOGY_RESOLUTION_STATUS = new Guid(0x494bbcde, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  216. // Topology Node Attributes
  217. public static readonly Guid MF_TOPONODE_CONNECT_METHOD = new Guid(0x494bbcf1, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  218. public static readonly Guid MF_TOPONODE_D3DAWARE = new Guid(0x494bbced, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  219. public static readonly Guid MF_TOPONODE_DECODER = new Guid(0x494bbd02, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  220. public static readonly Guid MF_TOPONODE_DECRYPTOR = new Guid(0x494bbcfa, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  221. public static readonly Guid MF_TOPONODE_DISABLE_PREROLL = new Guid(0x14932f9e, 0x9087, 0x4bb4, 0x84, 0x12, 0x51, 0x67, 0x14, 0x5c, 0xbe, 0x04);
  222. public static readonly Guid MF_TOPONODE_DISCARDABLE = new Guid(0x494bbcfb, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  223. public static readonly Guid MF_TOPONODE_DRAIN = new Guid(0x494bbce9, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  224. public static readonly Guid MF_TOPONODE_ERROR_MAJORTYPE = new Guid(0x494bbcfd, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  225. public static readonly Guid MF_TOPONODE_ERROR_SUBTYPE = new Guid(0x494bbcfe, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  226. public static readonly Guid MF_TOPONODE_ERRORCODE = new Guid(0x494bbcee, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  227. public static readonly Guid MF_TOPONODE_FLUSH = new Guid(0x494bbce8, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  228. public static readonly Guid MF_TOPONODE_LOCKED = new Guid(0x494bbcf7, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  229. public static readonly Guid MF_TOPONODE_MARKIN_HERE = new Guid(0x494bbd00, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  230. public static readonly Guid MF_TOPONODE_MARKOUT_HERE = new Guid(0x494bbd01, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  231. public static readonly Guid MF_TOPONODE_MEDIASTART = new Guid(0x835c58ea, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
  232. public static readonly Guid MF_TOPONODE_MEDIASTOP = new Guid(0x835c58eb, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
  233. public static readonly Guid MF_TOPONODE_NOSHUTDOWN_ON_REMOVE = new Guid(0x14932f9c, 0x9087, 0x4bb4, 0x84, 0x12, 0x51, 0x67, 0x14, 0x5c, 0xbe, 0x04);
  234. public static readonly Guid MF_TOPONODE_PRESENTATION_DESCRIPTOR = new Guid(0x835c58ed, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
  235. public static readonly Guid MF_TOPONODE_PRIMARYOUTPUT = new Guid(0x6304ef99, 0x16b2, 0x4ebe, 0x9d, 0x67, 0xe4, 0xc5, 0x39, 0xb3, 0xa2, 0x59);
  236. public static readonly Guid MF_TOPONODE_RATELESS = new Guid(0x14932f9d, 0x9087, 0x4bb4, 0x84, 0x12, 0x51, 0x67, 0x14, 0x5c, 0xbe, 0x04);
  237. public static readonly Guid MF_TOPONODE_SEQUENCE_ELEMENTID = new Guid(0x835c58ef, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
  238. public static readonly Guid MF_TOPONODE_SOURCE = new Guid(0x835c58ec, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
  239. public static readonly Guid MF_TOPONODE_STREAM_DESCRIPTOR = new Guid(0x835c58ee, 0xe075, 0x4bc7, 0xbc, 0xba, 0x4d, 0xe0, 0x00, 0xdf, 0x9a, 0xe6);
  240. public static readonly Guid MF_TOPONODE_STREAMID = new Guid(0x14932f9b, 0x9087, 0x4bb4, 0x84, 0x12, 0x51, 0x67, 0x14, 0x5c, 0xbe, 0x04);
  241. public static readonly Guid MF_TOPONODE_TRANSFORM_OBJECTID = new Guid(0x88dcc0c9, 0x293e, 0x4e8b, 0x9a, 0xeb, 0xa, 0xd6, 0x4c, 0xc0, 0x16, 0xb0);
  242. public static readonly Guid MF_TOPONODE_WORKQUEUE_ID = new Guid(0x494bbcf8, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  243. public static readonly Guid MF_TOPONODE_WORKQUEUE_MMCSS_CLASS = new Guid(0x494bbcf9, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  244. public static readonly Guid MF_TOPONODE_WORKQUEUE_MMCSS_TASKID = new Guid(0x494bbcff, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
  245. // Transform Attributes
  246. public static readonly Guid MF_ACTIVATE_MFT_LOCKED = new Guid(0xc1f6093c, 0x7f65, 0x4fbd, 0x9e, 0x39, 0x5f, 0xae, 0xc3, 0xc4, 0xfb, 0xd7);
  247. public static readonly Guid MF_SA_D3D_AWARE = new Guid(0xeaa35c29, 0x775e, 0x488e, 0x9b, 0x61, 0xb3, 0x28, 0x3e, 0x49, 0x58, 0x3b);
  248. // {53476A11-3F13-49fb-AC42-EE2733C96741} MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE {UINT32 (BOOL)}
  249. public static readonly Guid MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE = new Guid(0x53476a11, 0x3f13, 0x49fb, 0xac, 0x42, 0xee, 0x27, 0x33, 0xc9, 0x67, 0x41);
  250. // Presentation Descriptor Attributes
  251. public static readonly Guid MF_PD_APP_CONTEXT = new Guid(0x6c990d32, 0xbb8e, 0x477a, 0x85, 0x98, 0xd, 0x5d, 0x96, 0xfc, 0xd8, 0x8a);
  252. public static readonly Guid MF_PD_DURATION = new Guid(0x6c990d33, 0xbb8e, 0x477a, 0x85, 0x98, 0xd, 0x5d, 0x96, 0xfc, 0xd8, 0x8a);
  253. public static readonly Guid MF_PD_LAST_MODIFIED_TIME = new Guid(0x6c990d38, 0xbb8e, 0x477a, 0x85, 0x98, 0xd, 0x5d, 0x96, 0xfc, 0xd8, 0x8a);
  254. public static readonly Guid MF_PD_MIME_TYPE = new Guid(0x6c990d37, 0xbb8e, 0x477a, 0x85, 0x98, 0xd, 0x5d, 0x96, 0xfc, 0xd8, 0x8a);
  255. public static readonly Guid MF_PD_PMPHOST_CONTEXT = new Guid(0x6c990d31, 0xbb8e, 0x477a, 0x85, 0x98, 0xd, 0x5d, 0x96, 0xfc, 0xd8, 0x8a);
  256. public static readonly Guid MF_PD_SAMI_STYLELIST = new Guid(0xe0b73c7f, 0x486d, 0x484e, 0x98, 0x72, 0x4d, 0xe5, 0x19, 0x2a, 0x7b, 0xf8);
  257. public static readonly Guid MF_PD_TOTAL_FILE_SIZE = new Guid(0x6c990d34, 0xbb8e, 0x477a, 0x85, 0x98, 0xd, 0x5d, 0x96, 0xfc, 0xd8, 0x8a);
  258. public static readonly Guid MF_PD_AUDIO_ENCODING_BITRATE = new Guid(0x6c990d35, 0xbb8e, 0x477a, 0x85, 0x98, 0xd, 0x5d, 0x96, 0xfc, 0xd8, 0x8a);
  259. public static readonly Guid MF_PD_VIDEO_ENCODING_BITRATE = new Guid(0x6c990d36, 0xbb8e, 0x477a, 0x85, 0x98, 0xd, 0x5d, 0x96, 0xfc, 0xd8, 0x8a);
  260. // wmcontainer.h Attributes
  261. public static readonly Guid MF_PD_ASF_FILEPROPERTIES_FILE_ID = new Guid(0x3de649b4, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
  262. public static readonly Guid MF_PD_ASF_FILEPROPERTIES_CREATION_TIME = new Guid(0x3de649b6, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
  263. public static readonly Guid MF_PD_ASF_FILEPROPERTIES_PACKETS = new Guid(0x3de649b7, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
  264. public static readonly Guid MF_PD_ASF_FILEPROPERTIES_PLAY_DURATION = new Guid(0x3de649b8, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
  265. public static readonly Guid MF_PD_ASF_FILEPROPERTIES_SEND_DURATION = new Guid(0x3de649b9, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
  266. public static readonly Guid MF_PD_ASF_FILEPROPERTIES_PREROLL = new Guid(0x3de649ba, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
  267. public static readonly Guid MF_PD_ASF_FILEPROPERTIES_FLAGS = new Guid(0x3de649bb, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
  268. public static readonly Guid MF_PD_ASF_FILEPROPERTIES_MIN_PACKET_SIZE = new Guid(0x3de649bc, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
  269. public static readonly Guid MF_PD_ASF_FILEPROPERTIES_MAX_PACKET_SIZE = new Guid(0x3de649bd, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
  270. public static readonly Guid MF_PD_ASF_FILEPROPERTIES_MAX_BITRATE = new Guid(0x3de649be, 0xd76d, 0x4e66, 0x9e, 0xc9, 0x78, 0x12, 0xf, 0xb4, 0xc7, 0xe3);
  271. public static readonly Guid MF_PD_ASF_CONTENTENCRYPTION_TYPE = new Guid(0x8520fe3d, 0x277e, 0x46ea, 0x99, 0xe4, 0xe3, 0xa, 0x86, 0xdb, 0x12, 0xbe);
  272. public static readonly Guid MF_PD_ASF_CONTENTENCRYPTION_KEYID = new Guid(0x8520fe3e, 0x277e, 0x46ea, 0x99, 0xe4, 0xe3, 0xa, 0x86, 0xdb, 0x12, 0xbe);
  273. public static readonly Guid MF_PD_ASF_CONTENTENCRYPTION_SECRET_DATA = new Guid(0x8520fe3f, 0x277e, 0x46ea, 0x99, 0xe4, 0xe3, 0xa, 0x86, 0xdb, 0x12, 0xbe);
  274. public static readonly Guid MF_PD_ASF_CONTENTENCRYPTION_LICENSE_URL = new Guid(0x8520fe40, 0x277e, 0x46ea, 0x99, 0xe4, 0xe3, 0xa, 0x86, 0xdb, 0x12, 0xbe);
  275. public static readonly Guid MF_PD_ASF_CONTENTENCRYPTIONEX_ENCRYPTION_DATA = new Guid(0x62508be5, 0xecdf, 0x4924, 0xa3, 0x59, 0x72, 0xba, 0xb3, 0x39, 0x7b, 0x9d);
  276. public static readonly Guid MF_PD_ASF_LANGLIST = new Guid(0xf23de43c, 0x9977, 0x460d, 0xa6, 0xec, 0x32, 0x93, 0x7f, 0x16, 0xf, 0x7d);
  277. public static readonly Guid MF_PD_ASF_MARKER = new Guid(0x5134330e, 0x83a6, 0x475e, 0xa9, 0xd5, 0x4f, 0xb8, 0x75, 0xfb, 0x2e, 0x31);
  278. public static readonly Guid MF_PD_ASF_SCRIPT = new Guid(0xe29cd0d7, 0xd602, 0x4923, 0xa7, 0xfe, 0x73, 0xfd, 0x97, 0xec, 0xc6, 0x50);
  279. public static readonly Guid MF_PD_ASF_CODECLIST = new Guid(0xe4bb3509, 0xc18d, 0x4df1, 0xbb, 0x99, 0x7a, 0x36, 0xb3, 0xcc, 0x41, 0x19);
  280. public static readonly Guid MF_PD_ASF_METADATA_IS_VBR = new Guid(0x5fc6947a, 0xef60, 0x445d, 0xb4, 0x49, 0x44, 0x2e, 0xcc, 0x78, 0xb4, 0xc1);
  281. public static readonly Guid MF_PD_ASF_METADATA_V8_VBRPEAK = new Guid(0x5fc6947b, 0xef60, 0x445d, 0xb4, 0x49, 0x44, 0x2e, 0xcc, 0x78, 0xb4, 0xc1);
  282. public static readonly Guid MF_PD_ASF_METADATA_V8_BUFFERAVERAGE = new Guid(0x5fc6947c, 0xef60, 0x445d, 0xb4, 0x49, 0x44, 0x2e, 0xcc, 0x78, 0xb4, 0xc1);
  283. public static readonly Guid MF_PD_ASF_METADATA_LEAKY_BUCKET_PAIRS = new Guid(0x5fc6947d, 0xef60, 0x445d, 0xb4, 0x49, 0x44, 0x2e, 0xcc, 0x78, 0xb4, 0xc1);
  284. public static readonly Guid MF_PD_ASF_DATA_START_OFFSET = new Guid(0xe7d5b3e7, 0x1f29, 0x45d3, 0x88, 0x22, 0x3e, 0x78, 0xfa, 0xe2, 0x72, 0xed);
  285. public static readonly Guid MF_PD_ASF_DATA_LENGTH = new Guid(0xe7d5b3e8, 0x1f29, 0x45d3, 0x88, 0x22, 0x3e, 0x78, 0xfa, 0xe2, 0x72, 0xed);
  286. public static readonly Guid MF_SD_ASF_EXTSTRMPROP_LANGUAGE_ID_INDEX = new Guid(0x48f8a522, 0x305d, 0x422d, 0x85, 0x24, 0x25, 0x2, 0xdd, 0xa3, 0x36, 0x80);
  287. public static readonly Guid MF_SD_ASF_EXTSTRMPROP_AVG_DATA_BITRATE = new Guid(0x48f8a523, 0x305d, 0x422d, 0x85, 0x24, 0x25, 0x2, 0xdd, 0xa3, 0x36, 0x80);
  288. public static readonly Guid MF_SD_ASF_EXTSTRMPROP_AVG_BUFFERSIZE = new Guid(0x48f8a524, 0x305d, 0x422d, 0x85, 0x24, 0x25, 0x2, 0xdd, 0xa3, 0x36, 0x80);
  289. public static readonly Guid MF_SD_ASF_EXTSTRMPROP_MAX_DATA_BITRATE = new Guid(0x48f8a525, 0x305d, 0x422d, 0x85, 0x24, 0x25, 0x2, 0xdd, 0xa3, 0x36, 0x80);
  290. public static readonly Guid MF_SD_ASF_EXTSTRMPROP_MAX_BUFFERSIZE = new Guid(0x48f8a526, 0x305d, 0x422d, 0x85, 0x24, 0x25, 0x2, 0xdd, 0xa3, 0x36, 0x80);
  291. public static readonly Guid MF_SD_ASF_STREAMBITRATES_BITRATE = new Guid(0xa8e182ed, 0xafc8, 0x43d0, 0xb0, 0xd1, 0xf6, 0x5b, 0xad, 0x9d, 0xa5, 0x58);
  292. public static readonly Guid MF_SD_ASF_METADATA_DEVICE_CONFORMANCE_TEMPLATE = new Guid(0x245e929d, 0xc44e, 0x4f7e, 0xbb, 0x3c, 0x77, 0xd4, 0xdf, 0xd2, 0x7f, 0x8a);
  293. public static readonly Guid MF_PD_ASF_INFO_HAS_AUDIO = new Guid(0x80e62295, 0x2296, 0x4a44, 0xb3, 0x1c, 0xd1, 0x3, 0xc6, 0xfe, 0xd2, 0x3c);
  294. public static readonly Guid MF_PD_ASF_INFO_HAS_VIDEO = new Guid(0x80e62296, 0x2296, 0x4a44, 0xb3, 0x1c, 0xd1, 0x3, 0xc6, 0xfe, 0xd2, 0x3c);
  295. public static readonly Guid MF_PD_ASF_INFO_HAS_NON_AUDIO_VIDEO = new Guid(0x80e62297, 0x2296, 0x4a44, 0xb3, 0x1c, 0xd1, 0x3, 0xc6, 0xfe, 0xd2, 0x3c);
  296. public static readonly Guid MF_ASFSTREAMCONFIG_LEAKYBUCKET1 = new Guid(0xc69b5901, 0xea1a, 0x4c9b, 0xb6, 0x92, 0xe2, 0xa0, 0xd2, 0x9a, 0x8a, 0xdd);
  297. public static readonly Guid MF_ASFSTREAMCONFIG_LEAKYBUCKET2 = new Guid(0xc69b5902, 0xea1a, 0x4c9b, 0xb6, 0x92, 0xe2, 0xa0, 0xd2, 0x9a, 0x8a, 0xdd);
  298. }
  299. public sealed class MFConnector
  300. {
  301. public static readonly Guid MFCONNECTOR_AGP = new Guid(0xac3aef60, 0xce43, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  302. public static readonly Guid MFCONNECTOR_COMPONENT = new Guid(0x57cd596b, 0xce47, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  303. public static readonly Guid MFCONNECTOR_COMPOSITE = new Guid(0x57cd596a, 0xce47, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  304. public static readonly Guid MFCONNECTOR_D_JPN = new Guid(0x57cd5970, 0xce47, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  305. public static readonly Guid MFCONNECTOR_DISPLAYPORT_EMBEDDED = new Guid(0x57cd5973, 0xce47, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  306. public static readonly Guid MFCONNECTOR_DISPLAYPORT_EXTERNAL = new Guid(0x57cd5972, 0xce47, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  307. public static readonly Guid MFCONNECTOR_DVI = new Guid(0x57cd596c, 0xce47, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  308. public static readonly Guid MFCONNECTOR_HDMI = new Guid(0x57cd596d, 0xce47, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  309. public static readonly Guid MFCONNECTOR_LVDS = new Guid(0x57cd596e, 0xce47, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  310. public static readonly Guid MFCONNECTOR_PCI = new Guid(0xac3aef5d, 0xce43, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  311. public static readonly Guid MFCONNECTOR_PCI_Express = new Guid(0xac3aef5f, 0xce43, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  312. public static readonly Guid MFCONNECTOR_PCIX = new Guid(0xac3aef5e, 0xce43, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  313. public static readonly Guid MFCONNECTOR_SPDIF = new Guid(0xb94a712, 0xad3e, 0x4cee, 0x83, 0xce, 0xce, 0x32, 0xe3, 0xdb, 0x65, 0x22);
  314. public static readonly Guid MFCONNECTOR_SVIDEO = new Guid(0x57cd5969, 0xce47, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  315. public static readonly Guid MFCONNECTOR_UDI_EMBEDDED = new Guid(0x57cd5975, 0xce47, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  316. public static readonly Guid MFCONNECTOR_UDI_EXTERNAL = new Guid(0x57cd5974, 0xce47, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  317. public static readonly Guid MFCONNECTOR_UNKNOWN = new Guid(0xac3aef5c, 0xce43, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  318. public static readonly Guid MFCONNECTOR_VGA = new Guid(0x57cd5968, 0xce47, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  319. }
  320. public sealed class MFTransformCategory
  321. {
  322. // {d6c02d4b-6833-45b4-971a-05a4b04bab91} MFT_CATEGORY_VIDEO_DECODER
  323. public static readonly Guid MFT_CATEGORY_VIDEO_DECODER = new Guid(0xd6c02d4b, 0x6833, 0x45b4, 0x97, 0x1a, 0x05, 0xa4, 0xb0, 0x4b, 0xab, 0x91);
  324. // {f79eac7d-e545-4387-bdee-d647d7bde42a} MFT_CATEGORY_VIDEO_ENCODER
  325. public static readonly Guid MFT_CATEGORY_VIDEO_ENCODER = new Guid(0xf79eac7d, 0xe545, 0x4387, 0xbd, 0xee, 0xd6, 0x47, 0xd7, 0xbd, 0xe4, 0x2a);
  326. // {12e17c21-532c-4a6e-8a1c-40825a736397} MFT_CATEGORY_VIDEO_EFFECT
  327. public static readonly Guid MFT_CATEGORY_VIDEO_EFFECT = new Guid(0x12e17c21, 0x532c, 0x4a6e, 0x8a, 0x1c, 0x40, 0x82, 0x5a, 0x73, 0x63, 0x97);
  328. // {059c561e-05ae-4b61-b69d-55b61ee54a7b} MFT_CATEGORY_MULTIPLEXER
  329. public static readonly Guid MFT_CATEGORY_MULTIPLEXER = new Guid(0x059c561e, 0x05ae, 0x4b61, 0xb6, 0x9d, 0x55, 0xb6, 0x1e, 0xe5, 0x4a, 0x7b);
  330. // {a8700a7a-939b-44c5-99d7-76226b23b3f1} MFT_CATEGORY_DEMULTIPLEXER
  331. public static readonly Guid MFT_CATEGORY_DEMULTIPLEXER = new Guid(0xa8700a7a, 0x939b, 0x44c5, 0x99, 0xd7, 0x76, 0x22, 0x6b, 0x23, 0xb3, 0xf1);
  332. // {9ea73fb4-ef7a-4559-8d5d-719d8f0426c7} MFT_CATEGORY_AUDIO_DECODER
  333. public static readonly Guid MFT_CATEGORY_AUDIO_DECODER = new Guid(0x9ea73fb4, 0xef7a, 0x4559, 0x8d, 0x5d, 0x71, 0x9d, 0x8f, 0x04, 0x26, 0xc7);
  334. // {91c64bd0-f91e-4d8c-9276-db248279d975} MFT_CATEGORY_AUDIO_ENCODER
  335. public static readonly Guid MFT_CATEGORY_AUDIO_ENCODER = new Guid(0x91c64bd0, 0xf91e, 0x4d8c, 0x92, 0x76, 0xdb, 0x24, 0x82, 0x79, 0xd9, 0x75);
  336. // {11064c48-3648-4ed0-932e-05ce8ac811b7} MFT_CATEGORY_AUDIO_EFFECT
  337. public static readonly Guid MFT_CATEGORY_AUDIO_EFFECT = new Guid(0x11064c48, 0x3648, 0x4ed0, 0x93, 0x2e, 0x05, 0xce, 0x8a, 0xc8, 0x11, 0xb7);
  338. // {90175d57-b7ea-4901-aeb3-933a8747756f} MFT_CATEGORY_OTHER
  339. public static readonly Guid MFT_CATEGORY_OTHER = new Guid(0x90175d57, 0xb7ea, 0x4901, 0xae, 0xb3, 0x93, 0x3a, 0x87, 0x47, 0x75, 0x6f);
  340. }
  341. public sealed class MFEnabletype
  342. {
  343. public static readonly Guid MFENABLETYPE_MF_RebootRequired = new Guid(0x6d4d3d4b, 0x0ece, 0x4652, 0x8b, 0x3a, 0xf2, 0xd2, 0x42, 0x60, 0xd8, 0x87);
  344. public static readonly Guid MFENABLETYPE_MF_UpdateRevocationInformation = new Guid(0xe558b0b5, 0xb3c4, 0x44a0, 0x92, 0x4c, 0x50, 0xd1, 0x78, 0x93, 0x23, 0x85);
  345. public static readonly Guid MFENABLETYPE_MF_UpdateUntrustedComponent = new Guid(0x9879f3d6, 0xcee2, 0x48e6, 0xb5, 0x73, 0x97, 0x67, 0xab, 0x17, 0x2f, 0x16);
  346. public static readonly Guid MFENABLETYPE_WMDRMV1_LicenseAcquisition = new Guid(0x4ff6eeaf, 0xb43, 0x4797, 0x9b, 0x85, 0xab, 0xf3, 0x18, 0x15, 0xe7, 0xb0);
  347. public static readonly Guid MFENABLETYPE_WMDRMV7_Individualization = new Guid(0xacd2c84a, 0xb303, 0x4f65, 0xbc, 0x2c, 0x2c, 0x84, 0x8d, 0x1, 0xa9, 0x89);
  348. public static readonly Guid MFENABLETYPE_WMDRMV7_LicenseAcquisition = new Guid(0x3306df, 0x4a06, 0x4884, 0xa0, 0x97, 0xef, 0x6d, 0x22, 0xec, 0x84, 0xa3);
  349. }
  350. public sealed class MFRepresentation
  351. {
  352. /// <summary> AM_MEDIA_TYPE_REPRESENTATION </summary>
  353. public static readonly Guid AMMediaType = new Guid(0xe2e42ad2, 0x132c, 0x491e, 0xa2, 0x68, 0x3c, 0x7c, 0x2d, 0xca, 0x18, 0x1f);
  354. /// <summary> FORMAT_MFVideoFormat </summary>
  355. public static readonly Guid MFVideoFormat = new Guid(0xaed4ab2d, 0x7326, 0x43cb, 0x94, 0x64, 0xc8, 0x79, 0xca, 0xb9, 0xc4, 0x3d);
  356. /// <summary> FORMAT_VideoInfo </summary>
  357. public static readonly Guid VideoInfo = new Guid(0x05589f80, 0xc356, 0x11ce, 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a);
  358. /// <summary> FORMAT_VideoInfo2 </summary>
  359. public static readonly Guid VideoInfo2 = new Guid(0xf72a76A0, 0xeb0a, 0x11d0, 0xac, 0xe4, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba);
  360. }
  361. public sealed class MFProperties
  362. {
  363. // Media Foundation Properties
  364. public static readonly Guid MFNETSOURCE_ACCELERATEDSTREAMINGDURATION = new Guid(0x3cb1f277, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  365. public static readonly Guid MFNETSOURCE_AUTORECONNECTLIMIT = new Guid(0x3cb1f27a, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  366. public static readonly Guid MFNETSOURCE_AUTORECONNECTPROGRESS = new Guid(0x3cb1f282, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  367. public static readonly Guid MFNETSOURCE_BROWSERUSERAGENT = new Guid(0x3cb1f28b, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  368. public static readonly Guid MFNETSOURCE_BROWSERWEBPAGE = new Guid(0x3cb1f28c, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  369. public static readonly Guid MFNETSOURCE_BUFFERINGTIME = new Guid(0x3cb1f276, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  370. public static readonly Guid MFNETSOURCE_CACHEENABLED = new Guid(0x3cb1f279, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  371. public static readonly Guid MFNETSOURCE_CONNECTIONBANDWIDTH = new Guid(0x3cb1f278, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  372. public static readonly Guid MFNETSOURCE_CREDENTIAL_MANAGER = new Guid(0x3cb1f280, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  373. public static readonly Guid MFNETSOURCE_DRMNET_LICENSE_REPRESENTATION = new Guid(0x47eae1bd, 0xbdfe, 0x42e2, 0x82, 0xf3, 0x54, 0xa4, 0x8c, 0x17, 0x96, 0x2d);
  374. public static readonly Guid MFNETSOURCE_ENABLE_DOWNLOAD = new Guid(0x3cb1f29d, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  375. public static readonly Guid MFNETSOURCE_ENABLE_HTTP = new Guid(0x3cb1f299, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  376. public static readonly Guid MFNETSOURCE_ENABLE_RTSP = new Guid(0x3cb1f298, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  377. public static readonly Guid MFNETSOURCE_ENABLE_STREAMING = new Guid(0x3cb1f29c, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  378. public static readonly Guid MFNETSOURCE_ENABLE_TCP = new Guid(0x3cb1f295, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  379. public static readonly Guid MFNETSOURCE_ENABLE_UDP = new Guid(0x3cb1f294, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  380. public static readonly Guid MFNETSOURCE_HOSTEXE = new Guid(0x3cb1f28f, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  381. public static readonly Guid MFNETSOURCE_HOSTVERSION = new Guid(0x3cb1f291, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  382. public static readonly Guid MFNETSOURCE_LOGURL = new Guid(0x3cb1f293, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  383. public static readonly Guid MFNETSOURCE_MAXBUFFERTIMEMS = new Guid(0x408b24e6, 0x4038, 0x4401, 0xb5, 0xb2, 0xfe, 0x70, 0x1a, 0x9e, 0xbf, 0x10);
  384. public static readonly Guid MFNETSOURCE_MAXUDPACCELERATEDSTREAMINGDURATION = new Guid(0x4aab2879, 0xbbe1, 0x4994, 0x9f, 0xf0, 0x54, 0x95, 0xbd, 0x25, 0x1, 0x29);
  385. public static readonly Guid MFNETSOURCE_PLAYERID = new Guid(0x3cb1f28e, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  386. public static readonly Guid MFNETSOURCE_PLAYERUSERAGENT = new Guid(0x3cb1f292, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  387. public static readonly Guid MFNETSOURCE_PLAYERVERSION = new Guid(0x3cb1f28d, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  388. public static readonly Guid MFNETSOURCE_PPBANDWIDTH = new Guid(0x3cb1f281, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  389. public static readonly Guid MFNETSOURCE_PROTOCOL = new Guid(0x3cb1f27d, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  390. public static readonly Guid MFNETSOURCE_PROXYBYPASSFORLOCAL = new Guid(0x3cb1f286, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  391. public static readonly Guid MFNETSOURCE_PROXYEXCEPTIONLIST = new Guid(0x3cb1f285, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  392. public static readonly Guid MFNETSOURCE_PROXYHOSTNAME = new Guid(0x3cb1f284, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  393. public static readonly Guid MFNETSOURCE_PROXYINFO = new Guid(0x3cb1f29b, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  394. public static readonly Guid MFNETSOURCE_PROXYLOCATORFACTORY = new Guid(0x3cb1f283, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  395. public static readonly Guid MFNETSOURCE_PROXYPORT = new Guid(0x3cb1f288, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  396. public static readonly Guid MFNETSOURCE_PROXYRERUNAUTODETECTION = new Guid(0x3cb1f289, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  397. public static readonly Guid MFNETSOURCE_PROXYSETTINGS = new Guid(0x3cb1f287, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  398. public static readonly Guid MFNETSOURCE_RESENDSENABLED = new Guid(0x3cb1f27b, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  399. public static readonly Guid MFNETSOURCE_STATISTICS = new Guid(0x3cb1f274, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  400. public static readonly Guid MFNETSOURCE_THINNINGENABLED = new Guid(0x3cb1f27c, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  401. public static readonly Guid MFNETSOURCE_TRANSPORT = new Guid(0x3cb1f27e, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  402. public static readonly Guid MFNETSOURCE_UDP_PORT_RANGE = new Guid(0x3cb1f29a, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  403. public static readonly Guid MFPKEY_CATEGORY = new Guid(0xc57a84c0, 0x1a80, 0x40a3, 0x97, 0xb5, 0x92, 0x72, 0xa4, 0x3, 0xc8, 0xae); // , 0x02
  404. public static readonly Guid MFPKEY_CLSID = new Guid(0xc57a84c0, 0x1a80, 0x40a3, 0x97, 0xb5, 0x92, 0x72, 0xa4, 0x3, 0xc8, 0xae); // , 0x01
  405. public static readonly Guid MFPKEY_EXATTRIBUTE_SUPPORTED = new Guid(0x456fe843, 0x3c87, 0x40c0, 0x94, 0x9d, 0x14, 0x9, 0xc9, 0x7d, 0xab, 0x2c); // , 0x01
  406. public static readonly Guid MFPKEY_SourceOpenMonitor = new Guid(0x074d4637, 0xb5ae, 0x465d, 0xaf, 0x17, 0x1a, 0x53, 0x8d, 0x28, 0x59, 0xdd); // , 0x02
  407. }
  408. public sealed class MFServices
  409. {
  410. public static readonly Guid MF_METADATA_PROVIDER_SERVICE = new Guid(0xdb214084, 0x58a4, 0x4d2e, 0xb8, 0x4f, 0x6f, 0x75, 0x5b, 0x2f, 0x7a, 0xd);
  411. public static readonly Guid MF_PMP_SERVER_CONTEXT = new Guid(0x2f00c910, 0xd2cf, 0x4278, 0x8b, 0x6a, 0xd0, 0x77, 0xfa, 0xc3, 0xa2, 0x5f);
  412. public static readonly Guid MF_QUALITY_SERVICES = new Guid(0xb7e2be11, 0x2f96, 0x4640, 0xb5, 0x2c, 0x28, 0x23, 0x65, 0xbd, 0xf1, 0x6c);
  413. public static readonly Guid MF_RATE_CONTROL_SERVICE = new Guid(0x866fa297, 0xb802, 0x4bf8, 0x9d, 0xc9, 0x5e, 0x3b, 0x6a, 0x9f, 0x53, 0xc9);
  414. public static readonly Guid MF_REMOTE_PROXY = new Guid(0x2f00c90e, 0xd2cf, 0x4278, 0x8b, 0x6a, 0xd0, 0x77, 0xfa, 0xc3, 0xa2, 0x5f);
  415. public static readonly Guid MF_SAMI_SERVICE = new Guid(0x49a89ae7, 0xb4d9, 0x4ef2, 0xaa, 0x5c, 0xf6, 0x5a, 0x3e, 0x5, 0xae, 0x4e);
  416. public static readonly Guid MF_SOURCE_PRESENTATION_PROVIDER_SERVICE = new Guid(0xe002aadc, 0xf4af, 0x4ee5, 0x98, 0x47, 0x05, 0x3e, 0xdf, 0x84, 0x04, 0x26);
  417. public static readonly Guid MF_TOPONODE_ATTRIBUTE_EDITOR_SERVICE = new Guid(0x65656e1a, 0x077f, 0x4472, 0x83, 0xef, 0x31, 0x6f, 0x11, 0xd5, 0x08, 0x7a);
  418. public static readonly Guid MF_WORKQUEUE_SERVICES = new Guid(0x8e37d489, 0x41e0, 0x413a, 0x90, 0x68, 0x28, 0x7c, 0x88, 0x6d, 0x8d, 0xda);
  419. public static readonly Guid MFNET_SAVEJOB_SERVICE = new Guid(0xb85a587f, 0x3d02, 0x4e52, 0x95, 0x65, 0x55, 0xd3, 0xec, 0x1e, 0x7f, 0xf7);
  420. public static readonly Guid MFNETSOURCE_STATISTICS_SERVICE = new Guid(0x3cb1f275, 0x0505, 0x4c5d, 0xae, 0x71, 0x0a, 0x55, 0x63, 0x44, 0xef, 0xa1);
  421. public static readonly Guid MR_AUDIO_POLICY_SERVICE = new Guid(0x911fd737, 0x6775, 0x4ab0, 0xa6, 0x14, 0x29, 0x78, 0x62, 0xfd, 0xac, 0x88);
  422. public static readonly Guid MR_POLICY_VOLUME_SERVICE = new Guid(0x1abaa2ac, 0x9d3b, 0x47c6, 0xab, 0x48, 0xc5, 0x95, 0x6, 0xde, 0x78, 0x4d);
  423. public static readonly Guid MR_STREAM_VOLUME_SERVICE = new Guid(0xf8b5fa2f, 0x32ef, 0x46f5, 0xb1, 0x72, 0x13, 0x21, 0x21, 0x2f, 0xb2, 0xc4);
  424. public static readonly Guid MR_VIDEO_RENDER_SERVICE = new Guid(0x1092a86c, 0xab1a, 0x459a, 0xa3, 0x36, 0x83, 0x1f, 0xbc, 0x4d, 0x11, 0xff);
  425. public static readonly Guid MR_VIDEO_MIXER_SERVICE = new Guid(0x73cd2fc, 0x6cf4, 0x40b7, 0x88, 0x59, 0xe8, 0x95, 0x52, 0xc8, 0x41, 0xf8);
  426. public static readonly Guid MR_VIDEO_ACCELERATION_SERVICE = new Guid(0xefef5175, 0x5c7d, 0x4ce2, 0xbb, 0xbd, 0x34, 0xff, 0x8b, 0xca, 0x65, 0x54);
  427. public static readonly Guid MR_BUFFER_SERVICE = new Guid(0xa562248c, 0x9ac6, 0x4ffc, 0x9f, 0xba, 0x3a, 0xf8, 0xf8, 0xad, 0x1a, 0x4d);
  428. }
  429. public sealed class CLSID
  430. {
  431. // Unknown
  432. public static readonly Guid MFPKEY_MULTICHANNEL_CHANNEL_MASK = new Guid(0x58bdaf8c, 0x3224, 0x4692, 0x86, 0xd0, 0x44, 0xd6, 0x5c, 0x5b, 0xf8, 0x2b); // , 0x01
  433. public static readonly Guid MFCONNECTOR_SDI = new Guid(0x57cd5971, 0xce47, 0x11d9, 0x92, 0xdb, 0x00, 0x0b, 0xdb, 0x28, 0xff, 0x98);
  434. public static readonly Guid MFPROTECTION_ACP = new Guid(0xc3fd11c6, 0xf8b7, 0x4d20, 0xb0, 0x08, 0x1d, 0xb1, 0x7d, 0x61, 0xf2, 0xda);
  435. public static readonly Guid MFPROTECTION_CGMSA = new Guid(0xE57E69E9, 0x226B, 0x4d31, 0xB4, 0xE3, 0xD3, 0xDB, 0x00, 0x87, 0x36, 0xDD);
  436. public static readonly Guid MFPROTECTION_CONSTRICTAUDIO = new Guid(0xffc99b44, 0xdf48, 0x4e16, 0x8e, 0x66, 0x09, 0x68, 0x92, 0xc1, 0x57, 0x8a);
  437. public static readonly Guid MFPROTECTION_CONSTRICTVIDEO = new Guid(0x193370ce, 0xc5e4, 0x4c3a, 0x8a, 0x66, 0x69, 0x59, 0xb4, 0xda, 0x44, 0x42);
  438. public static readonly Guid MFPROTECTION_DISABLE = new Guid(0x8cc6d81b, 0xfec6, 0x4d8f, 0x96, 0x4b, 0xcf, 0xba, 0x0b, 0x0d, 0xad, 0x0d);
  439. public static readonly Guid MFPROTECTION_FFT = new Guid(0x462a56b2, 0x2866, 0x4bb6, 0x98, 0x0d, 0x6d, 0x8d, 0x9e, 0xdb, 0x1a, 0x8c);
  440. public static readonly Guid MFPROTECTION_HDCP = new Guid(0xAE7CC03D, 0xC828, 0x4021, 0xac, 0xb7, 0xd5, 0x78, 0xd2, 0x7a, 0xaf, 0x13);
  441. public static readonly Guid MFPROTECTION_TRUSTEDAUDIODRIVERS = new Guid(0x65bdf3d2, 0x0168, 0x4816, 0xa5, 0x33, 0x55, 0xd4, 0x7b, 0x02, 0x71, 0x01);
  442. public static readonly Guid MFPROTECTION_WMDRMOTA = new Guid(0xa267a6a1, 0x362e, 0x47d0, 0x88, 0x05, 0x46, 0x28, 0x59, 0x8a, 0x23, 0xe4);
  443. public static readonly Guid MFPROTECTIONATTRIBUTE_CONSTRICTVIDEO_IMAGESIZE = new Guid(0x8476fc, 0x4b58, 0x4d80, 0xa7, 0x90, 0xe7, 0x29, 0x76, 0x73, 0x16, 0x1d);
  444. public static readonly Guid MFPROTECTIONATTRIBUTE_HDCP_SRM = new Guid(0x6f302107, 0x3477, 0x4468, 0x8a, 0x8, 0xee, 0xf9, 0xdb, 0x10, 0xe2, 0xf);
  445. public static readonly Guid MFSampleExtension_DescrambleData = new Guid(0x43483be6, 0x4903, 0x4314, 0xb0, 0x32, 0x29, 0x51, 0x36, 0x59, 0x36, 0xfc);
  446. public static readonly Guid MFSampleExtension_SampleKeyID = new Guid(0x9ed713c8, 0x9b87, 0x4b26, 0x82, 0x97, 0xa9, 0x3b, 0x0c, 0x5a, 0x8a, 0xcc);
  447. public static readonly Guid MFSampleExtension_GenKeyFunc = new Guid(0x441ca1ee, 0x6b1f, 0x4501, 0x90, 0x3a, 0xde, 0x87, 0xdf, 0x42, 0xf6, 0xed);
  448. public static readonly Guid MFSampleExtension_GenKeyCtx = new Guid(0x188120cb, 0xd7da, 0x4b59, 0x9b, 0x3e, 0x92, 0x52, 0xfd, 0x37, 0x30, 0x1c);
  449. public static readonly Guid MFSampleExtension_PacketCrossOffsets = new Guid(0x2789671d, 0x389f, 0x40bb, 0x90, 0xd9, 0xc2, 0x82, 0xf7, 0x7f, 0x9a, 0xbd);
  450. public static readonly Guid MF_SampleProtectionSalt = new Guid(0x5403deee, 0xb9ee, 0x438f, 0xaa, 0x83, 0x38, 0x4, 0x99, 0x7e, 0x56, 0x9d);
  451. public static readonly Guid CLSID_MFSourceResolver = new Guid(0x90eab60f, 0xe43a, 0x4188, 0xbc, 0xc4, 0xe4, 0x7f, 0xdf, 0x04, 0x86, 0x8c);
  452. // EVR stuff
  453. public static readonly Guid CLSID_EnhancedVideoRenderer = new Guid(0xfa10746c, 0x9b63, 0x4b6c, 0xbc, 0x49, 0xfc, 0x30, 0xe, 0xa5, 0xf2, 0x56);
  454. public static readonly Guid CLSID_MFVideoMixer9 = new Guid(0xE474E05A, 0xAB65, 0x4f6a, 0x82, 0x7C, 0x21, 0x8B, 0x1B, 0xAA, 0xF3, 0x1F);
  455. public static readonly Guid CLSID_MFVideoPresenter9 = new Guid(0x98455561, 0x5136, 0x4d28, 0xab, 0x8, 0x4c, 0xee, 0x40, 0xea, 0x27, 0x81);
  456. public static readonly Guid CLSID_EVRTearlessWindowPresenter9 = new Guid(0xa0a7a57b, 0x59b2, 0x4919, 0xa6, 0x94, 0xad, 0xd0, 0xa5, 0x26, 0xc3, 0x73);
  457. // Generic
  458. public static readonly Guid MF_QUALITY_NOTIFY_PROCESSING_LATENCY = new Guid(0xf6b44af8, 0x604d, 0x46fe, 0xa9, 0x5d, 0x45, 0x47, 0x9b, 0x10, 0xc9, 0xbc);
  459. public static readonly Guid MF_QUALITY_NOTIFY_SAMPLE_LAG = new Guid(0x30d15206, 0xed2a, 0x4760, 0xbe, 0x17, 0xeb, 0x4a, 0x9f, 0x12, 0x29, 0x5c);
  460. public static readonly Guid MF_TIME_FORMAT_SEGMENT_OFFSET = new Guid(0xc8b8be77, 0x869c, 0x431d, 0x81, 0x2e, 0x16, 0x96, 0x93, 0xf6, 0x5a, 0x39);
  461. }
  462. public sealed class MFMediaType
  463. {
  464. /// <summary> From MFMediaType_Default </summary>
  465. public static readonly Guid Default = new Guid(0x81A412E6, 0x8103, 0x4B06, 0x85, 0x7F, 0x18, 0x62, 0x78, 0x10, 0x24, 0xAC);
  466. /// <summary> From MFMediaType_Audio </summary>
  467. public static readonly Guid Audio = new Guid(0x73647561, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71);
  468. /// <summary> From MFMediaType_Video </summary>
  469. public static readonly Guid Video = new Guid(0x73646976, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71);
  470. /// <summary> From MFMediaType_Protected </summary>
  471. public static readonly Guid Protected = new Guid(0x7b4b6fe6, 0x9d04, 0x4494, 0xbe, 0x14, 0x7e, 0x0b, 0xd0, 0x76, 0xc8, 0xe4);
  472. /// <summary> From MFMediaType_SAMI </summary>
  473. public static readonly Guid SAMI = new Guid(0xe69669a0, 0x3dcd, 0x40cb, 0x9e, 0x2e, 0x37, 0x08, 0x38, 0x7c, 0x06, 0x16);
  474. /// <summary> From MFMediaType_Script </summary>
  475. public static readonly Guid Script = new Guid(0x72178C22, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
  476. /// <summary> From MFMediaType_Image </summary>
  477. public static readonly Guid Image = new Guid(0x72178C23, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
  478. /// <summary> From MFMediaType_HTML </summary>
  479. public static readonly Guid HTML = new Guid(0x72178C24, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
  480. /// <summary> From MFMediaType_Binary </summary>
  481. public static readonly Guid Binary = new Guid(0x72178C25, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
  482. /// <summary> From MFMediaType_FileTransfer </summary>
  483. public static readonly Guid FileTransfer = new Guid(0x72178C26, 0xE45B, 0x11D5, 0xBC, 0x2A, 0x00, 0xB0, 0xD0, 0xF3, 0xF4, 0xAB);
  484. public static readonly Guid Base = new Guid(0x00000000, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  485. public static readonly Guid PCM = new Guid(0x00000001, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  486. public static readonly Guid Float = new Guid(0x0003, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  487. public static readonly Guid DTS = new Guid(0x0008, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  488. public static readonly Guid Dolby_AC3_SPDIF = new Guid(0x0092, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  489. public static readonly Guid DRM = new Guid(0x0009, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  490. public static readonly Guid WMAudioV8 = new Guid(0x0161, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  491. public static readonly Guid WMAudioV9 = new Guid(0x0162, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  492. public static readonly Guid WMAudio_Lossless = new Guid(0x0163, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  493. public static readonly Guid WMASPDIF = new Guid(0x0164, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  494. public static readonly Guid MSP1 = new Guid(0x000A, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  495. public static readonly Guid MP3 = new Guid(0x0055, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  496. public static readonly Guid MPEG = new Guid(0x0050, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  497. public static readonly Guid RGB32 = new Guid(22, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  498. public static readonly Guid ARGB32 = new Guid(21, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  499. public static readonly Guid RGB24 = new Guid(20, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  500. public static readonly Guid RGB555 = new Guid(24, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  501. public static readonly Guid RGB565 = new Guid(23, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  502. public static readonly Guid AI44 = new Guid(new FourCC("AI44").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  503. public static readonly Guid AYUV = new Guid(new FourCC("AYUV").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  504. public static readonly Guid YUY2 = new Guid(new FourCC("YUY2").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  505. public static readonly Guid UYVY = new Guid(new FourCC("UYVY").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  506. public static readonly Guid NV11 = new Guid(new FourCC("NV11").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  507. public static readonly Guid NV12 = new Guid(new FourCC("NV12").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  508. public static readonly Guid YV12 = new Guid(new FourCC("YV12").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  509. public static readonly Guid IYUV = new Guid(new FourCC("IYUV").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  510. public static readonly Guid Y210 = new Guid(new FourCC("Y210").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  511. public static readonly Guid Y216 = new Guid(new FourCC("Y216").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  512. public static readonly Guid Y410 = new Guid(new FourCC("Y410").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  513. public static readonly Guid Y416 = new Guid(new FourCC("Y416").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  514. public static readonly Guid P210 = new Guid(new FourCC("P210").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  515. public static readonly Guid P216 = new Guid(new FourCC("P216").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  516. public static readonly Guid P010 = new Guid(new FourCC("P010").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  517. public static readonly Guid P016 = new Guid(new FourCC("P016").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  518. public static readonly Guid v210 = new Guid(new FourCC("v210").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  519. public static readonly Guid v410 = new Guid(new FourCC("v410").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  520. public static readonly Guid MP43 = new Guid(new FourCC("MP43").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  521. public static readonly Guid MP4S = new Guid(new FourCC("MP4S").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  522. public static readonly Guid WMV1 = new Guid(new FourCC("WMV1").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  523. public static readonly Guid WMV2 = new Guid(new FourCC("WMV2").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  524. public static readonly Guid WMV3 = new Guid(new FourCC("WMV3").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  525. public static readonly Guid MSS1 = new Guid(new FourCC("MSS1").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  526. public static readonly Guid MSS2 = new Guid(new FourCC("MSS2").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  527. public static readonly Guid MPG1 = new Guid(new FourCC("MPG1").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  528. public static readonly Guid DVSL = new Guid(new FourCC("dvsl").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  529. public static readonly Guid DVSD = new Guid(new FourCC("dvsd").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  530. public static readonly Guid DV25 = new Guid(new FourCC("dv25").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  531. public static readonly Guid DV50 = new Guid(new FourCC("dv50").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  532. public static readonly Guid DVH1 = new Guid(new FourCC("dvh1").ToInt32(), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  533. public static readonly Guid MPEG2 = new Guid(0xe06d8026, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea);
  534. }
  535. #endregion
  536. #region Declarations
  537. #if ALLOW_UNTESTED_INTERFACES
  538. [Flags, UnmanagedName("MFOUTPUTATTRIBUTE_ *")]
  539. public enum MFOutputAttribute
  540. {
  541. None = 0,
  542. Digital = 0x00000001,
  543. NonstandardImplementation = 0x00000002,
  544. Video = 0x00000004,
  545. Compressed = 0x00000008,
  546. Software = 0x00000010,
  547. Bus = 0x00000020,
  548. BusImplementation = 0x0000FF00
  549. }
  550. [Flags, UnmanagedName("MFNetAuthenticationFlags")]
  551. public enum MFNetAuthenticationFlags
  552. {
  553. None = 0,
  554. Proxy = 0x00000001,
  555. ClearText = 0x00000002,
  556. LoggedOnUser = 0x00000004
  557. }
  558. [Flags, UnmanagedName("MFNetCredentialOptions")]
  559. public enum MFNetCredentialOptions
  560. {
  561. None = 0,
  562. Save = 0x00000001,
  563. DontCache = 0x00000002,
  564. AllowClearText = 0x00000004,
  565. }
  566. [UnmanagedName("MFStandardVideoFormat")]
  567. public enum MFStandardVideoFormat
  568. {
  569. reserved = 0,
  570. NTSC = (reserved + 1),
  571. PAL = (NTSC + 1),
  572. DVD_NTSC = (PAL + 1),
  573. DVD_PAL = (DVD_NTSC + 1),
  574. DV_PAL = (DVD_PAL + 1),
  575. DV_NTSC = (DV_PAL + 1),
  576. ATSC_SD480i = (DV_NTSC + 1),
  577. ATSC_HD1080i = (ATSC_SD480i + 1),
  578. ATSC_HD720p = (ATSC_HD1080i + 1)
  579. }
  580. [UnmanagedName("MFNetCredentialRequirements")]
  581. public enum MFNetCredentialRequirements
  582. {
  583. None = 0,
  584. RequirePrompt = 0x00000001
  585. }
  586. [Flags, UnmanagedName("MFTIMER_FLAGS")]
  587. public enum MFTimeFlags
  588. {
  589. None = 0,
  590. Relative = 0x00000001
  591. }
  592. [UnmanagedName("MF_QUALITY_DROP_MODE")]
  593. public enum MFQualitydropMode
  594. {
  595. None,
  596. Mode1,
  597. Mode2,
  598. Mode3,
  599. Mode4,
  600. Mode5,
  601. NumDropModes
  602. }
  603. [UnmanagedName("MF_QUALITY_LEVEL")]
  604. public enum MFQualityLevel
  605. {
  606. Normal,
  607. NormalMinus1,
  608. NormalMinus2,
  609. NormalMinus3,
  610. NormalMinus4,
  611. NormalMinus5,
  612. NumQualityLevels
  613. }
  614. [UnmanagedName("MFNETSOURCE_PROTOCOL_TYPE")]
  615. public enum MFNetSourceProtocolType
  616. {
  617. Undefined,
  618. Http,
  619. Rtsp,
  620. File
  621. }
  622. [UnmanagedName("MFPolicyManagerAction")]
  623. public enum MFPolicyManagerAction
  624. {
  625. Copy = 2,
  626. Export = 3,
  627. Extract = 4,
  628. Last = 7,
  629. No = 0,
  630. Play = 1,
  631. Reserved1 = 5,
  632. Reserved2 = 6,
  633. Reserved3 = 7
  634. }
  635. [UnmanagedName("MFRATE_DIRECTION")]
  636. public enum MFRateDirection
  637. {
  638. Forward,
  639. Reverse
  640. }
  641. [UnmanagedName("MFSHUTDOWN_STATUS")]
  642. public enum MFShutdownStatus
  643. {
  644. Initiated,
  645. Completed
  646. }
  647. [StructLayout(LayoutKind.Sequential), UnmanagedName("MPEG2VIDEOINFO")]
  648. public struct Mpeg2VideoInfo
  649. {
  650. VideoInfoHeader2 hdr;
  651. int dwStartTimeCode; // ?? not used for DVD ??
  652. int cbSequenceHeader; // is 0 for DVD (no sequence header)
  653. int dwProfile; // use enum MPEG2Profile
  654. int dwLevel; // use enum MPEG2Level
  655. int dwFlags; // use AMMPEG2_* defines. Reject connection if undefined bits are not 0
  656. int[] dwSequenceHeader; // DWORD instead of Byte for alignment purposes
  657. // For MPEG-2, if a sequence_header is included, the sequence_extension
  658. // should also be included
  659. }
  660. [StructLayout(LayoutKind.Explicit, Pack = 8), UnmanagedName("unnamed internal struct")]
  661. public struct Unnamed1
  662. {
  663. [FieldOffset(0)]
  664. public double d;
  665. [FieldOffset(0)]
  666. public int u32;
  667. [FieldOffset(0)]
  668. public long u64;
  669. }
  670. [StructLayout(LayoutKind.Sequential, Pack = 4), UnmanagedName("MF_LEAKY_BUCKET_PAIR")]
  671. public struct MF_LeakyBucketPair
  672. {
  673. public int dwBitrate;
  674. public int msBufferWindow;
  675. }
  676. [StructLayout(LayoutKind.Sequential), UnmanagedName("MFBYTESTREAM_BUFFERING_PARAMS")]
  677. public struct MFByteStreamBufferingParams
  678. {
  679. public long cbTotalFileSize;
  680. public long cbPlayableDataSize;
  681. public IntPtr prgBuckets;
  682. public int cBuckets;
  683. public long qwNetBufferingTime;
  684. public long qwExtraBufferingTimeDuringSeek;
  685. public long qwPlayDuration;
  686. public float dRate;
  687. }
  688. [StructLayout(LayoutKind.Sequential, Pack = 4), UnmanagedName("MFINPUTTRUSTAUTHORITY_ACCESS_PARAMS")]
  689. public struct MFInputTrustAuthorityAccessParams
  690. {
  691. public int dwSize;
  692. public int dwVer;
  693. public int cbSignatureOffset;
  694. public int cbSignatureSize;
  695. public int cbExtensionOffset;
  696. public int cbExtensionSize;
  697. public int cActions;
  698. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
  699. public MFInputTrustAuthorityAction[] rgOutputActions;
  700. }
  701. [StructLayout(LayoutKind.Sequential), UnmanagedName("MFINPUTTRUSTAUTHORITY_ACTION")]
  702. public struct MFInputTrustAuthorityAction
  703. {
  704. public MFPolicyManagerAction Action;
  705. public IntPtr pbTicket;
  706. public int cbTicket;
  707. }
  708. [StructLayout(LayoutKind.Sequential), UnmanagedName("MFNetCredentialManagerGetParam")]
  709. public struct MFNetCredentialManagerGetParam
  710. {
  711. [MarshalAs(UnmanagedType.Error)]
  712. public int hrOp;
  713. public int fAllowLoggedOnUser;
  714. public int fClearTextPackage;
  715. [MarshalAs(UnmanagedType.LPWStr)]
  716. public string pszUrl;
  717. [MarshalAs(UnmanagedType.LPWStr)]
  718. public string pszSite;
  719. [MarshalAs(UnmanagedType.LPWStr)]
  720. public string pszRealm;
  721. [MarshalAs(UnmanagedType.LPWStr)]
  722. public string pszPackage;
  723. public int nRetries;
  724. }
  725. [StructLayout(LayoutKind.Sequential, Pack = 8), UnmanagedName("MFTOPONODE_ATTRIBUTE_UPDATE")]
  726. public struct MFTopoNodeAttributeUpdate
  727. {
  728. public long NodeId;
  729. public Guid guidAttributeKey;
  730. public MFAttributeType attrType;
  731. public Unnamed1 u1;
  732. }
  733. #endif
  734. [UnmanagedName("MFSTREAMSINK_MARKER_TYPE")]
  735. public enum MFStreamSinkMarkerType
  736. {
  737. Default,
  738. EndOfSegment,
  739. Tick,
  740. Event
  741. }
  742. [Flags, UnmanagedName("MFSequencerTopologyFlags")]
  743. public enum MFSequencerTopologyFlags
  744. {
  745. None = 0,
  746. Last = 0x00000001
  747. }
  748. [Flags, UnmanagedName("MFSESSION_GETFULLTOPOLOGY_FLAGS")]
  749. public enum MFSessionGetFullTopologyFlags
  750. {
  751. None = 0x0,
  752. Current = 0x1
  753. }
  754. [Flags, UnmanagedName("MFSESSIONCAP_* defines")]
  755. public enum MFSessionCapabilities
  756. {
  757. None = 0x00000000,
  758. Start = 0x00000001,
  759. Seek = 0x00000002,
  760. Pause = 0x00000004,
  761. RateForward = 0x00000010,
  762. RateReverse = 0x00000020
  763. }
  764. [Flags, UnmanagedName("MFSESSION_SETTOPOLOGY_FLAGS")]
  765. public enum MFSessionSetTopologyFlags
  766. {
  767. None = 0x0,
  768. Immediate = 0x1,
  769. NoResolution = 0x2
  770. }
  771. [UnmanagedName("MFWaveFormatExConvertFlags")]
  772. public enum MFWaveFormatExConvertFlags
  773. {
  774. Normal = 0,
  775. ForceExtensible = 1
  776. }
  777. [UnmanagedName("MF_OBJECT_TYPE")]
  778. public enum MFObjectType
  779. {
  780. MediaSource,
  781. ByteStream,
  782. Invalid
  783. }
  784. [Flags, UnmanagedName("unnamed enum")]
  785. public enum MFResolution
  786. {
  787. None = 0x0,
  788. MediaSource = 0x00000001,
  789. ByteStream = 0x00000002,
  790. ContentDoesNotHaveToMatchExtensionOrMimeType = 0x00000010,
  791. KeepByteStreamAliveOnFail = 0x00000020,
  792. Read = 0x00010000,
  793. Write = 0x00020000
  794. }
  795. [UnmanagedName("MF_TOPOSTATUS")]
  796. public enum MFTopoStatus
  797. {
  798. // MF_TOPOSTATUS_INVALID: Invalid value; will not be sent
  799. Invalid = 0,
  800. // READY: The topology has been put in place and is
  801. // ready to start. All GetService calls to the Media Session will use
  802. // this topology.
  803. Ready = 100,
  804. // STARTED_SOURCE: The Media Session has started to read
  805. // and process data from the Media Source(s) in this topology.
  806. StartedSource = 200,
  807. // SINK_SWITCHED: The Media Sinks in the pipeline have
  808. // switched from a previous topology to this topology.
  809. // Note that this status does not get sent for the first topology;
  810. // applications can assume that the sinks are playing the first
  811. // topology when they receive MESessionStarted.
  812. SinkSwitched = 300,
  813. // ENDED: Playback of this topology is complete.
  814. // Before deleting this topology, however, the application should wait
  815. // for either MESessionEnded or the STARTED_SOURCE status
  816. // on the next topology to ensure that the Media Session is no longer
  817. // using this topology.
  818. Ended = 400,
  819. }
  820. [UnmanagedName("MFSTARTUP_* defines")]
  821. public enum MFStartup
  822. {
  823. NoSocket = 0x1,
  824. Lite = 0x1,
  825. Full = 0
  826. }
  827. [UnmanagedName("MFCLOCK_STATE")]
  828. public enum MFClockState
  829. {
  830. Invalid,
  831. Running,
  832. Stopped,
  833. Paused
  834. }
  835. [Flags, UnmanagedName("MFCLOCK_CHARACTERISTICS_FLAGS")]
  836. public enum MFClockCharacteristicsFlags
  837. {
  838. None = 0,
  839. Frequency10Mhz = 0x2,
  840. AlwaysRunning = 0x4,
  841. IsSystemClock = 0x8
  842. }
  843. [UnmanagedName("MF_TOPOLOGY_TYPE")]
  844. public enum MFTopologyType
  845. {
  846. Max = -1,
  847. OutputNode = 0,
  848. SourcestreamNode = 1,
  849. TeeNode = 3,
  850. TransformNode = 2
  851. }
  852. [Flags, UnmanagedName("MFMEDIASOURCE_CHARACTERISTICS")]
  853. public enum MFMediaSourceCharacteristics
  854. {
  855. None = 0,
  856. IsLive = 0x1,
  857. CanSeek = 0x2,
  858. CanPause = 0x4,
  859. HasSlowSeek = 0x8
  860. }
  861. [Flags, UnmanagedName("MEDIASINK_ defines")]
  862. public enum MFMediaSinkCharacteristics
  863. {
  864. None = 0,
  865. FixedStreams = 0x00000001,
  866. CannotMatchClock = 0x00000002,
  867. Rateless = 0x00000004,
  868. ClockRequired = 0x00000008,
  869. CanPreroll = 0x00000010,
  870. RequireReferenceMediaType = 0x00000020
  871. }
  872. [UnmanagedName("MF_ATTRIBUTE_SERIALIZE_OPTIONS"), Flags]
  873. public enum MFAttributeSerializeOptions
  874. {
  875. None = 0,
  876. UnknownByRef = 0x00000001
  877. }
  878. [UnmanagedName("MF_FILE_ACCESSMODE")]
  879. public enum MFFileAccessMode
  880. {
  881. None = 0,
  882. Read = 1,
  883. Write = 2,
  884. ReadWrite = 3
  885. }
  886. [UnmanagedName("MF_FILE_OPENMODE")]
  887. public enum MFFileOpenMode
  888. {
  889. FailIfNotExist = 0,
  890. FailIfExist = 1,
  891. ResetIfExist = 2,
  892. AppendIfExist = 3,
  893. DeleteIfExist = 4
  894. }
  895. [Flags, UnmanagedName("MF_FILE_FLAGS")]
  896. public enum MFFileFlags
  897. {
  898. None = 0,
  899. NoBuffering = 0x1
  900. }
  901. [UnmanagedName("MF_URL_TRUST_STATUS")]
  902. public enum MFURLTrustStatus
  903. {
  904. Untrusted,
  905. Trusted,
  906. Tampered
  907. }
  908. [Flags, UnmanagedName("MFPMPSESSION_CREATION_FLAGS")]
  909. public enum MFPMPSessionCreationFlags
  910. {
  911. None = 0,
  912. UnprotectedProcess = 0x1
  913. }
  914. [Flags, UnmanagedName("MFCLOCK_RELATIONAL_FLAGS")]
  915. public enum MFClockRelationalFlags
  916. {
  917. None = 0,
  918. JitterNeverAhead = 0x1
  919. }
  920. [StructLayout(LayoutKind.Sequential, Pack = 1), UnmanagedName("MFAYUVSample")]
  921. public struct MFAYUVSample
  922. {
  923. public byte bCrValue;
  924. public byte bCbValue;
  925. public byte bYValue;
  926. public byte bSampleAlpha8;
  927. }
  928. [StructLayout(LayoutKind.Sequential, Pack = 1), UnmanagedName("MFARGB")]
  929. public struct MFARGB
  930. {
  931. public byte rgbBlue;
  932. public byte rgbGreen;
  933. public byte rgbRed;
  934. public byte rgbAlpha;
  935. }
  936. [StructLayout(LayoutKind.Explicit, Pack = 1), UnmanagedName("MFPaletteEntry")]
  937. public struct MFPaletteEntry
  938. {
  939. [FieldOffset(0)]
  940. public MFARGB ARGB;
  941. [FieldOffset(0)]
  942. public MFAYUVSample AYCbCr;
  943. }
  944. [StructLayout(LayoutKind.Sequential, Pack = 8), UnmanagedName("MFCLOCK_PROPERTIES")]
  945. public struct MFClockProperties
  946. {
  947. public long qwCorrelationRate;
  948. public Guid guidClockId;
  949. public MFClockRelationalFlags dwClockFlags;
  950. public long qwClockFrequency;
  951. public int dwClockTolerance;
  952. public int dwClockJitter;
  953. }
  954. #endregion
  955. #region Interfaces
  956. #if ALLOW_UNTESTED_INTERFACES
  957. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  958. Guid("86CBC910-E533-4751-8E3B-F19B5B806A03"),
  959. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  960. public interface IMFVideoSampleAllocator
  961. {
  962. void SetDirectXManager(
  963. [In, MarshalAs(UnmanagedType.IUnknown)] object pManager
  964. );
  965. void UninitializeSampleAllocator();
  966. void InitializeSampleAllocator(
  967. [In] int cRequestedFrames,
  968. [In, MarshalAs(UnmanagedType.Interface)] IMFMediaType pMediaType
  969. );
  970. void AllocateSample(
  971. [MarshalAs(UnmanagedType.Interface)] out IMFSample ppSample
  972. );
  973. }
  974. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  975. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  976. Guid("A0638C2B-6465-4395-9AE7-A321A9FD2856")]
  977. public interface IMFAudioPolicy
  978. {
  979. void SetGroupingParam(
  980. [In, MarshalAs(UnmanagedType.LPStruct)] Guid rguidClass
  981. );
  982. void GetGroupingParam(
  983. out Guid pguidClass
  984. );
  985. void SetDisplayName(
  986. [In, MarshalAs(UnmanagedType.LPWStr)] string pszName
  987. );
  988. void GetDisplayName(
  989. [MarshalAs(UnmanagedType.LPWStr)] out string pszName
  990. );
  991. void SetIconPath(
  992. [In, MarshalAs(UnmanagedType.LPWStr)] string pszPath
  993. );
  994. void GetIconPath(
  995. [MarshalAs(UnmanagedType.LPWStr)] out string pszPath
  996. );
  997. }
  998. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  999. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1000. Guid("76B1BBDB-4EC8-4F36-B106-70A9316DF593")]
  1001. public interface IMFAudioStreamVolume
  1002. {
  1003. void GetChannelCount(
  1004. out int pdwCount
  1005. );
  1006. void SetChannelVolume(
  1007. [In] int dwIndex,
  1008. [In] float fLevel
  1009. );
  1010. void GetChannelVolume(
  1011. [In] int dwIndex,
  1012. out float pfLevel
  1013. );
  1014. void SetAllVolumes(
  1015. [In] int dwCount,
  1016. [In] ref float pfVolumes
  1017. );
  1018. void GetAllVolumes(
  1019. [In] int dwCount,
  1020. out float pfVolumes
  1021. );
  1022. }
  1023. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1024. Guid("6D66D782-1D4F-4DB7-8C63-CB8C77F1EF5E"),
  1025. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1026. public interface IMFByteStreamBuffering
  1027. {
  1028. void SetBufferingParams(
  1029. [In] ref MFByteStreamBufferingParams pParams
  1030. );
  1031. void EnableBuffering(
  1032. [In] int fEnable
  1033. );
  1034. void StopBuffering();
  1035. }
  1036. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1037. Guid("D19F8E98-B126-4446-890C-5DCB7AD71453"),
  1038. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1039. public interface IMFInputTrustAuthority
  1040. {
  1041. void GetDecrypter(
  1042. [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  1043. [MarshalAs(UnmanagedType.Interface)] out object ppv
  1044. );
  1045. void RequestAccess(
  1046. [In] MFPolicyManagerAction Action,
  1047. [MarshalAs(UnmanagedType.Interface)] out IMFActivate ppContentEnablerActivate
  1048. );
  1049. void GetPolicy(
  1050. [In] MFPolicyManagerAction Action,
  1051. [MarshalAs(UnmanagedType.Interface)] out IMFOutputPolicy ppPolicy
  1052. );
  1053. void BindAccess(
  1054. [In] ref MFInputTrustAuthorityAccessParams pParam
  1055. );
  1056. void UpdateAccess(
  1057. [In] ref MFInputTrustAuthorityAccessParams pParam
  1058. );
  1059. void Reset();
  1060. }
  1061. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1062. Guid("5DFD4B2A-7674-4110-A4E6-8A68FD5F3688"),
  1063. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1064. public interface IMFMediaSinkPreroll
  1065. {
  1066. void NotifyPreroll(
  1067. [In] long hnsUpcomingStartTime
  1068. );
  1069. }
  1070. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1071. Guid("0E1D600A-C9F3-442D-8C51-A42D2D49452F"),
  1072. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1073. public interface IMFMediaSourcePresentationProvider
  1074. {
  1075. void ForceEndOfPresentation(
  1076. [In, MarshalAs(UnmanagedType.Interface)] IMFPresentationDescriptor pPresentationDescriptor
  1077. );
  1078. }
  1079. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1080. Guid("F88CFB8C-EF16-4991-B450-CB8C69E51704"),
  1081. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1082. public interface IMFMetadata
  1083. {
  1084. void SetLanguage(
  1085. [In, MarshalAs(UnmanagedType.LPWStr)] string pwszRFC1766
  1086. );
  1087. void GetLanguage(
  1088. [MarshalAs(UnmanagedType.LPWStr)] out string ppwszRFC1766
  1089. );
  1090. void GetAllLanguages(
  1091. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant ppvLanguages
  1092. );
  1093. void SetProperty(
  1094. [In, MarshalAs(UnmanagedType.LPWStr)] string pwszName,
  1095. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant ppvValue
  1096. );
  1097. void GetProperty(
  1098. [In, MarshalAs(UnmanagedType.LPWStr)] string pwszName,
  1099. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant ppvValue
  1100. );
  1101. void DeleteProperty(
  1102. [In, MarshalAs(UnmanagedType.LPWStr)] string pwszName
  1103. );
  1104. void GetAllPropertyNames(
  1105. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant ppvNames
  1106. );
  1107. }
  1108. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1109. Guid("56181D2D-E221-4ADB-B1C8-3CEE6A53F76F"),
  1110. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1111. public interface IMFMetadataProvider
  1112. {
  1113. void GetMFMetadata(
  1114. [In, MarshalAs(UnmanagedType.Interface)]
  1115. IMFPresentationDescriptor pPresentationDescriptor,
  1116. [In] int dwStreamIdentifier,
  1117. [In] int dwFlags, // must be zero
  1118. [MarshalAs(UnmanagedType.Interface)] out IMFMetadata ppMFMetadata
  1119. );
  1120. }
  1121. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1122. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1123. Guid("5B87EF6A-7ED8-434F-BA0E-184FAC1628D1")]
  1124. public interface IMFNetCredential
  1125. {
  1126. void SetUser(
  1127. [In] ref byte pbData,
  1128. [In] int cbData,
  1129. [In] int fDataIsEncrypted
  1130. );
  1131. void SetPassword(
  1132. [In] ref byte pbData,
  1133. [In] int cbData,
  1134. [In] int fDataIsEncrypted
  1135. );
  1136. void GetUser(
  1137. out byte pbData,
  1138. [In, Out] ref int pcbData,
  1139. [In] int fEncryptData
  1140. );
  1141. void GetPassword(
  1142. out byte pbData,
  1143. [In, Out] ref int pcbData,
  1144. [In, MarshalAs(UnmanagedType.Bool)] bool fEncryptData
  1145. );
  1146. void LoggedOnUser(
  1147. [MarshalAs(UnmanagedType.Bool)] out bool pfLoggedOnUser
  1148. );
  1149. }
  1150. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1151. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1152. Guid("5B87EF6C-7ED8-434F-BA0E-184FAC1628D1")]
  1153. public interface IMFNetCredentialCache
  1154. {
  1155. void GetCredential(
  1156. [In, MarshalAs(UnmanagedType.LPWStr)] string pszUrl,
  1157. [In, MarshalAs(UnmanagedType.LPWStr)] string pszRealm,
  1158. [In] MFNetAuthenticationFlags dwAuthenticationFlags,
  1159. [MarshalAs(UnmanagedType.Interface)] out IMFNetCredential ppCred,
  1160. out MFNetCredentialRequirements pdwRequirementsFlags
  1161. );
  1162. void SetGood(
  1163. [In, MarshalAs(UnmanagedType.Interface)] IMFNetCredential pCred,
  1164. [In] bool fGood
  1165. );
  1166. void SetUserOptions(
  1167. [In, MarshalAs(UnmanagedType.Interface)] IMFNetCredential pCred,
  1168. [In] MFNetCredentialOptions dwOptionsFlags
  1169. );
  1170. }
  1171. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1172. Guid("5B87EF6B-7ED8-434F-BA0E-184FAC1628D1"),
  1173. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1174. public interface IMFNetCredentialManager
  1175. {
  1176. void BeginGetCredentials(
  1177. [In] ref MFNetCredentialManagerGetParam pParam,
  1178. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncCallback pCallback,
  1179. [In, MarshalAs(UnmanagedType.IUnknown)] object pState
  1180. );
  1181. void EndGetCredentials(
  1182. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncResult pResult,
  1183. [MarshalAs(UnmanagedType.Interface)] out IMFNetCredential ppCred
  1184. );
  1185. void SetGood(
  1186. [In, MarshalAs(UnmanagedType.Interface)] IMFNetCredential pCred,
  1187. [In] bool fGood
  1188. );
  1189. }
  1190. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1191. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1192. Guid("E9CD0383-A268-4BB4-82DE-658D53574D41")]
  1193. public interface IMFNetProxyLocator
  1194. {
  1195. void FindFirstProxy(
  1196. [In, MarshalAs(UnmanagedType.LPWStr)] string pszHost,
  1197. [In, MarshalAs(UnmanagedType.LPWStr)] string pszUrl,
  1198. [In, MarshalAs(UnmanagedType.Bool)] bool fReserved
  1199. );
  1200. void FindNextProxy();
  1201. void RegisterProxyResult(
  1202. [In, MarshalAs(UnmanagedType.Error)] int hrOp
  1203. );
  1204. void GetCurrentProxy(
  1205. [Out, MarshalAs(UnmanagedType.LPWStr)] string pszStr,
  1206. [In, Out] ref int pcchStr
  1207. );
  1208. void Clone(
  1209. [MarshalAs(UnmanagedType.Interface)] out IMFNetProxyLocator ppProxyLocator
  1210. );
  1211. }
  1212. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1213. Guid("E9CD0384-A268-4BB4-82DE-658D53574D41"),
  1214. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1215. public interface IMFNetProxyLocatorFactory
  1216. {
  1217. void CreateProxyLocator(
  1218. [In, MarshalAs(UnmanagedType.LPWStr)] string pszProtocol,
  1219. [MarshalAs(UnmanagedType.Interface)] out IMFNetProxyLocator ppProxyLocator
  1220. );
  1221. }
  1222. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1223. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1224. Guid("7BE19E73-C9BF-468A-AC5A-A5E8653BEC87")]
  1225. public interface IMFNetSchemeHandlerConfig
  1226. {
  1227. void GetNumberOfSupportedProtocols(
  1228. out int pcProtocols
  1229. );
  1230. void GetSupportedProtocolType(
  1231. [In] int nProtocolIndex,
  1232. out MFNetSourceProtocolType pnProtocolType
  1233. );
  1234. void ResetProtocolRolloverSettings();
  1235. }
  1236. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1237. Guid("09EF5BE3-C8A7-469E-8B70-73BF25BB193F"),
  1238. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1239. public interface IMFObjectReferenceStream
  1240. {
  1241. void SaveReference(
  1242. [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  1243. [In, MarshalAs(UnmanagedType.IUnknown)] object pUnk
  1244. );
  1245. void LoadReference(
  1246. [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  1247. [MarshalAs(UnmanagedType.Interface)] out object ppv
  1248. );
  1249. }
  1250. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1251. Guid("7F00F10A-DAED-41AF-AB26-5FDFA4DFBA3C"),
  1252. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1253. public interface IMFOutputPolicy : IMFAttributes
  1254. {
  1255. #region IMFAttributes methods
  1256. new void GetItem(
  1257. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1258. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant pValue
  1259. );
  1260. new void GetItemType(
  1261. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1262. out MFAttributeType pType
  1263. );
  1264. new void CompareItem(
  1265. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1266. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant Value,
  1267. [MarshalAs(UnmanagedType.Bool)] out bool pbResult
  1268. );
  1269. new void Compare(
  1270. [MarshalAs(UnmanagedType.Interface)] IMFAttributes pTheirs,
  1271. MFAttributesMatchType MatchType,
  1272. [MarshalAs(UnmanagedType.Bool)] out bool pbResult
  1273. );
  1274. new void GetUINT32(
  1275. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1276. out int punValue
  1277. );
  1278. new void GetUINT64(
  1279. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1280. out long punValue
  1281. );
  1282. new void GetDouble(
  1283. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1284. out double pfValue
  1285. );
  1286. new void GetGUID(
  1287. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1288. out Guid pguidValue
  1289. );
  1290. new void GetStringLength(
  1291. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1292. out int pcchLength
  1293. );
  1294. new void GetString(
  1295. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1296. [Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pwszValue,
  1297. int cchBufSize,
  1298. out int pcchLength
  1299. );
  1300. new void GetAllocatedString(
  1301. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1302. [MarshalAs(UnmanagedType.LPWStr)] out string ppwszValue,
  1303. out int pcchLength
  1304. );
  1305. new void GetBlobSize(
  1306. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1307. out int pcbBlobSize
  1308. );
  1309. new void GetBlob(
  1310. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1311. [Out, MarshalAs(UnmanagedType.LPArray)] byte[] pBuf,
  1312. int cbBufSize,
  1313. out int pcbBlobSize
  1314. );
  1315. // Use GetBlob instead of this
  1316. new void GetAllocatedBlob(
  1317. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1318. out IntPtr ip, // Read w/Marshal.Copy, Free w/Marshal.FreeCoTaskMem
  1319. out int pcbSize
  1320. );
  1321. new void GetUnknown(
  1322. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1323. [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  1324. [MarshalAs(UnmanagedType.IUnknown)] out object ppv
  1325. );
  1326. new void SetItem(
  1327. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1328. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant Value
  1329. );
  1330. new void DeleteItem(
  1331. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey
  1332. );
  1333. new void DeleteAllItems();
  1334. new void SetUINT32(
  1335. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1336. int unValue
  1337. );
  1338. new void SetUINT64(
  1339. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1340. long unValue
  1341. );
  1342. new void SetDouble(
  1343. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1344. double fValue
  1345. );
  1346. new void SetGUID(
  1347. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1348. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidValue
  1349. );
  1350. new void SetString(
  1351. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1352. [In, MarshalAs(UnmanagedType.LPWStr)] string wszValue
  1353. );
  1354. new void SetBlob(
  1355. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1356. [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pBuf,
  1357. int cbBufSize
  1358. );
  1359. new void SetUnknown(
  1360. [MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1361. [In, MarshalAs(UnmanagedType.IUnknown)] object pUnknown
  1362. );
  1363. new void LockStore();
  1364. new void UnlockStore();
  1365. new void GetCount(
  1366. out int pcItems
  1367. );
  1368. new void GetItemByIndex(
  1369. int unIndex,
  1370. out Guid pguidKey,
  1371. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant pValue
  1372. );
  1373. new void CopyAllItems(
  1374. [In, MarshalAs(UnmanagedType.Interface)] IMFAttributes pDest
  1375. );
  1376. #endregion
  1377. void GenerateRequiredSchemas(
  1378. [In] MFOutputAttribute dwAttributes,
  1379. [In, MarshalAs(UnmanagedType.Struct)] Guid guidOutputSubType,
  1380. [In, MarshalAs(UnmanagedType.LPStruct)] Guid rgGuidProtectionSchemasSupported,
  1381. [In] int cProtectionSchemasSupported,
  1382. [MarshalAs(UnmanagedType.Interface)] out IMFCollection ppRequiredProtectionSchemas
  1383. );
  1384. void GetOriginatorID(
  1385. out Guid pguidOriginatorID
  1386. );
  1387. void GetMinimumGRLVersion(
  1388. out int pdwMinimumGRLVersion
  1389. );
  1390. }
  1391. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1392. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1393. Guid("7BE0FC5B-ABD9-44FB-A5C8-F50136E71599")]
  1394. public interface IMFOutputSchema : IMFAttributes
  1395. {
  1396. #region IMFAttributes methods
  1397. new void GetItem(
  1398. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1399. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant pValue
  1400. );
  1401. new void GetItemType(
  1402. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1403. out MFAttributeType pType
  1404. );
  1405. new void CompareItem(
  1406. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1407. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant Value,
  1408. [MarshalAs(UnmanagedType.Bool)] out bool pbResult
  1409. );
  1410. new void Compare(
  1411. [MarshalAs(UnmanagedType.Interface)] IMFAttributes pTheirs,
  1412. MFAttributesMatchType MatchType,
  1413. [MarshalAs(UnmanagedType.Bool)] out bool pbResult
  1414. );
  1415. new void GetUINT32(
  1416. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1417. out int punValue
  1418. );
  1419. new void GetUINT64(
  1420. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1421. out long punValue
  1422. );
  1423. new void GetDouble(
  1424. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1425. out double pfValue
  1426. );
  1427. new void GetGUID(
  1428. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1429. out Guid pguidValue
  1430. );
  1431. new void GetStringLength(
  1432. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1433. out int pcchLength
  1434. );
  1435. new void GetString(
  1436. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1437. [Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pwszValue,
  1438. int cchBufSize,
  1439. out int pcchLength
  1440. );
  1441. new void GetAllocatedString(
  1442. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1443. [MarshalAs(UnmanagedType.LPWStr)] out string ppwszValue,
  1444. out int pcchLength
  1445. );
  1446. new void GetBlobSize(
  1447. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1448. out int pcbBlobSize
  1449. );
  1450. new void GetBlob(
  1451. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1452. [Out, MarshalAs(UnmanagedType.LPArray)] byte[] pBuf,
  1453. int cbBufSize,
  1454. out int pcbBlobSize
  1455. );
  1456. // Use GetBlob instead of this
  1457. new void GetAllocatedBlob(
  1458. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1459. out IntPtr ip, // Read w/Marshal.Copy, Free w/Marshal.FreeCoTaskMem
  1460. out int pcbSize
  1461. );
  1462. new void GetUnknown(
  1463. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1464. [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  1465. [MarshalAs(UnmanagedType.IUnknown)] out object ppv
  1466. );
  1467. new void SetItem(
  1468. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1469. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant Value
  1470. );
  1471. new void DeleteItem(
  1472. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey
  1473. );
  1474. new void DeleteAllItems();
  1475. new void SetUINT32(
  1476. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1477. int unValue
  1478. );
  1479. new void SetUINT64(
  1480. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1481. long unValue
  1482. );
  1483. new void SetDouble(
  1484. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1485. double fValue
  1486. );
  1487. new void SetGUID(
  1488. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1489. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidValue
  1490. );
  1491. new void SetString(
  1492. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1493. [In, MarshalAs(UnmanagedType.LPWStr)] string wszValue
  1494. );
  1495. new void SetBlob(
  1496. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1497. [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pBuf,
  1498. int cbBufSize
  1499. );
  1500. new void SetUnknown(
  1501. [MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  1502. [In, MarshalAs(UnmanagedType.IUnknown)] object pUnknown
  1503. );
  1504. new void LockStore();
  1505. new void UnlockStore();
  1506. new void GetCount(
  1507. out int pcItems
  1508. );
  1509. new void GetItemByIndex(
  1510. int unIndex,
  1511. out Guid pguidKey,
  1512. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant pValue
  1513. );
  1514. new void CopyAllItems(
  1515. [In, MarshalAs(UnmanagedType.Interface)] IMFAttributes pDest
  1516. );
  1517. #endregion
  1518. void GetSchemaType(
  1519. out Guid pguidSchemaType
  1520. );
  1521. void GetConfigurationData(
  1522. out int pdwVal
  1523. );
  1524. void GetOriginatorID(
  1525. out Guid pguidOriginatorID
  1526. );
  1527. }
  1528. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1529. Guid("D19F8E94-B126-4446-890C-5DCB7AD71453"),
  1530. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1531. public interface IMFOutputTrustAuthority
  1532. {
  1533. void GetAction(
  1534. out MFPolicyManagerAction pAction
  1535. );
  1536. void SetPolicy(
  1537. [In, MarshalAs(UnmanagedType.Interface)] ref IMFOutputPolicy ppPolicy,
  1538. [In] int nPolicy,
  1539. [Out] IntPtr ppbTicket,
  1540. out int pcbTicket
  1541. );
  1542. }
  1543. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1544. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1545. Guid("6C4E655D-EAD8-4421-B6B9-54DCDBBDF820")]
  1546. public interface IMFPMPClient
  1547. {
  1548. void SetPMPHost(
  1549. [In, MarshalAs(UnmanagedType.Interface)] IMFPMPHost pPMPHost
  1550. );
  1551. }
  1552. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1553. Guid("F70CA1A9-FDC7-4782-B994-ADFFB1C98606"),
  1554. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1555. public interface IMFPMPHost
  1556. {
  1557. void LockProcess();
  1558. void UnlockProcess();
  1559. void CreateObjectByCLSID(
  1560. [MarshalAs(UnmanagedType.LPStruct)] Guid clsid,
  1561. IStream pStream,
  1562. [MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  1563. [MarshalAs(UnmanagedType.Interface)] object ppv
  1564. );
  1565. }
  1566. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1567. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1568. Guid("994E23AF-1CC2-493C-B9FA-46F1CB040FA4")]
  1569. public interface IMFPMPServer
  1570. {
  1571. void LockProcess();
  1572. void UnlockProcess();
  1573. void CreateObjectByCLSID(
  1574. [In, MarshalAs(UnmanagedType.LPStruct)] Guid clsid,
  1575. [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  1576. [MarshalAs(UnmanagedType.Interface)] out object ppObject
  1577. );
  1578. }
  1579. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1580. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1581. Guid("EC15E2E9-E36B-4F7C-8758-77D452EF4CE7")]
  1582. public interface IMFQualityAdvise
  1583. {
  1584. void SetDropMode(
  1585. [In] MFQualitydropMode eDropMode
  1586. );
  1587. void SetQualityLevel(
  1588. [In] MFQualityLevel eQualityLevel
  1589. );
  1590. void GetDropMode(
  1591. out MFQualitydropMode peDropMode
  1592. );
  1593. void GetQualityLevel(
  1594. out MFQualityLevel peQualityLevel
  1595. );
  1596. void DropTime(
  1597. [In] long hnsAmountToDrop
  1598. );
  1599. }
  1600. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1601. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1602. Guid("8D009D86-5B9F-4115-B1FC-9F80D52AB8AB")]
  1603. public interface IMFQualityManager
  1604. {
  1605. void NotifyTopology(
  1606. [In, MarshalAs(UnmanagedType.Interface)] IMFTopology pTopology
  1607. );
  1608. void NotifyPresentationClock(
  1609. [In, MarshalAs(UnmanagedType.Interface)] IMFPresentationClock pClock
  1610. );
  1611. void NotifyProcessInput(
  1612. [In, MarshalAs(UnmanagedType.Interface)] IMFTopologyNode pNode,
  1613. [In] int lInputIndex,
  1614. [In, MarshalAs(UnmanagedType.Interface)] IMFSample pSample
  1615. );
  1616. void NotifyProcessOutput(
  1617. [In, MarshalAs(UnmanagedType.Interface)] IMFTopologyNode pNode,
  1618. [In] int lOutputIndex,
  1619. [In, MarshalAs(UnmanagedType.Interface)] IMFSample pSample
  1620. );
  1621. void NotifyQualityEvent(
  1622. [In, MarshalAs(UnmanagedType.IUnknown)] object pObject,
  1623. [In, MarshalAs(UnmanagedType.Interface)] IMFMediaEvent pEvent
  1624. );
  1625. void Shutdown();
  1626. }
  1627. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1628. Guid("88DDCD21-03C3-4275-91ED-55EE3929328F"),
  1629. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1630. public interface IMFRateControl
  1631. {
  1632. void SetRate(
  1633. [In, MarshalAs(UnmanagedType.Bool)] bool fThin,
  1634. [In] float flRate
  1635. );
  1636. void GetRate(
  1637. [In, Out, MarshalAs(UnmanagedType.Bool)] ref bool pfThin,
  1638. [In, Out] ref float pflRate
  1639. );
  1640. }
  1641. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1642. Guid("0A9CCDBC-D797-4563-9667-94EC5D79292D"),
  1643. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1644. public interface IMFRateSupport
  1645. {
  1646. void GetSlowestRate(
  1647. [In] MFRateDirection eDirection,
  1648. [In, MarshalAs(UnmanagedType.Bool)] bool fThin,
  1649. out float pflRate
  1650. );
  1651. void GetFastestRate(
  1652. [In] MFRateDirection eDirection,
  1653. [In, MarshalAs(UnmanagedType.Bool)] bool fThin,
  1654. out float pflRate
  1655. );
  1656. void IsRateSupported(
  1657. [In, MarshalAs(UnmanagedType.Bool)] bool fThin,
  1658. [In] float flRate,
  1659. [In, Out] ref float pflNearestSupportedRate
  1660. );
  1661. }
  1662. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1663. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1664. Guid("2347D60B-3FB5-480C-8803-8DF3ADCD3EF0")]
  1665. public interface IMFRealTimeClient
  1666. {
  1667. void RegisterThreads(
  1668. [In] int dwTaskIndex,
  1669. [In, MarshalAs(UnmanagedType.LPWStr)] string wszClass
  1670. );
  1671. void UnregisterThreads();
  1672. void SetWorkQueue(
  1673. [In] int dwWorkQueueId
  1674. );
  1675. }
  1676. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1677. Guid("1CDE6309-CAE0-4940-907E-C1EC9C3D1D4A"),
  1678. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1679. public interface IMFRemoteDesktopPlugin
  1680. {
  1681. void UpdateTopology(
  1682. [In, Out, MarshalAs(UnmanagedType.Interface)] IMFTopology pTopology
  1683. );
  1684. }
  1685. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1686. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1687. Guid("994E23AD-1CC2-493C-B9FA-46F1CB040FA4")]
  1688. public interface IMFRemoteProxy
  1689. {
  1690. void GetRemoteObject(
  1691. [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  1692. [MarshalAs(UnmanagedType.Interface)] out object ppv
  1693. );
  1694. void GetRemoteHost(
  1695. [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  1696. [MarshalAs(UnmanagedType.Interface)] out object ppv
  1697. );
  1698. }
  1699. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1700. Guid("A7E025DD-5303-4A62-89D6-E747E1EFAC73"),
  1701. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1702. public interface IMFSAMIStyle
  1703. {
  1704. void GetStyleCount(
  1705. out int pdwCount
  1706. );
  1707. void GetStyles(
  1708. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant pPropVarStyleArray
  1709. );
  1710. void SetSelectedStyle(
  1711. [In, MarshalAs(UnmanagedType.LPWStr)] string pwszStyle
  1712. );
  1713. void GetSelectedStyle(
  1714. [MarshalAs(UnmanagedType.LPWStr)] out string ppwszStyle
  1715. );
  1716. }
  1717. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1718. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1719. Guid("8C7B80BF-EE42-4B59-B1DF-55668E1BDCA8")]
  1720. public interface IMFSampleGrabberSinkCallback : IMFClockStateSink
  1721. {
  1722. #region IMFClockStateSink methods
  1723. new void OnClockStart(
  1724. [In] long hnsSystemTime,
  1725. [In] long llClockStartOffset
  1726. );
  1727. new void OnClockStop(
  1728. [In] long hnsSystemTime
  1729. );
  1730. new void OnClockPause(
  1731. [In] long hnsSystemTime
  1732. );
  1733. new void OnClockRestart(
  1734. [In] long hnsSystemTime
  1735. );
  1736. new void OnClockSetRate(
  1737. [In] long hnsSystemTime,
  1738. [In] float flRate
  1739. );
  1740. #endregion
  1741. void OnSetPresentationClock(
  1742. [In, MarshalAs(UnmanagedType.Interface)] IMFPresentationClock pPresentationClock
  1743. );
  1744. void OnProcessSample(
  1745. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidMajorMediaType,
  1746. [In] int dwSampleFlags, // must be zero
  1747. [In] long llSampleTime,
  1748. [In] long llSampleDuration,
  1749. [In] ref byte pSampleBuffer,
  1750. [In] int dwSampleSize
  1751. );
  1752. void OnShutdown();
  1753. }
  1754. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1755. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1756. Guid("8E36395F-C7B9-43C4-A54D-512B4AF63C95")]
  1757. public interface IMFSampleProtection
  1758. {
  1759. void GetInputProtectionVersion(
  1760. out int pdwVersion
  1761. );
  1762. void GetOutputProtectionVersion(
  1763. out int pdwVersion
  1764. );
  1765. void GetProtectionCertificate(
  1766. [In] int dwVersion,
  1767. [Out] IntPtr ppCert,
  1768. out int pcbCert
  1769. );
  1770. void InitOutputProtection(
  1771. [In] int dwVersion,
  1772. [In] int dwOutputId,
  1773. [In] ref byte pbCert,
  1774. [In] int cbCert,
  1775. [Out] IntPtr ppbSeed,
  1776. out int pcbSeed
  1777. );
  1778. void InitInputProtection(
  1779. [In] int dwVersion,
  1780. [In] int dwInputId,
  1781. [In] ref byte pbSeed,
  1782. [In] int cbSeed
  1783. );
  1784. }
  1785. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1786. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1787. Guid("E9931663-80BF-4C6E-98AF-5DCF58747D1F")]
  1788. public interface IMFSaveJob
  1789. {
  1790. void BeginSave(
  1791. [In, MarshalAs(UnmanagedType.Interface)] IMFByteStream pStream,
  1792. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncCallback pCallback,
  1793. [In, MarshalAs(UnmanagedType.IUnknown)] object pState
  1794. );
  1795. void EndSave(
  1796. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncResult pResult
  1797. );
  1798. void CancelSave();
  1799. void GetProgress(
  1800. out int pdwPercentComplete
  1801. );
  1802. }
  1803. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1804. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1805. Guid("6D4C7B74-52A0-4BB7-B0DB-55F29F47A668")]
  1806. public interface IMFSchemeHandler
  1807. {
  1808. void BeginCreateObject(
  1809. [In, MarshalAs(UnmanagedType.LPWStr)] string pwszURL,
  1810. [In] MFResolution dwFlags,
  1811. [In, MarshalAs(UnmanagedType.Interface)] IPropertyStore pProps,
  1812. [MarshalAs(UnmanagedType.IUnknown)] out object ppIUnknownCancelCookie,
  1813. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncCallback pCallback,
  1814. [In, MarshalAs(UnmanagedType.IUnknown)] object pUnkState
  1815. );
  1816. void EndCreateObject(
  1817. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncResult pResult,
  1818. out MFObjectType pObjectType,
  1819. [MarshalAs(UnmanagedType.IUnknown)] out object ppObject
  1820. );
  1821. void CancelObjectCreation(
  1822. [In, MarshalAs(UnmanagedType.IUnknown)] object pIUnknownCancelCookie
  1823. );
  1824. }
  1825. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1826. Guid("D0AE555D-3B12-4D97-B060-0990BC5AEB67"),
  1827. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1828. public interface IMFSecureChannel
  1829. {
  1830. void GetCertificate(
  1831. [Out] IntPtr ppCert,
  1832. out int pcbCert
  1833. );
  1834. void SetupSession(
  1835. [In] ref byte pbEncryptedSessionKey,
  1836. [In] int cbSessionKey
  1837. );
  1838. }
  1839. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1840. Guid("97EC2EA4-0E42-4937-97AC-9D6D328824E1"),
  1841. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1842. public interface IMFShutdown
  1843. {
  1844. void Shutdown();
  1845. void GetShutdownStatus(
  1846. out MFShutdownStatus pStatus
  1847. );
  1848. }
  1849. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1850. Guid("089EDF13-CF71-4338-8D13-9E569DBDC319"),
  1851. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1852. public interface IMFSimpleAudioVolume
  1853. {
  1854. void SetMasterVolume(
  1855. [In] float fLevel
  1856. );
  1857. void GetMasterVolume(
  1858. out float pfLevel
  1859. );
  1860. void SetMute(
  1861. [In, MarshalAs(UnmanagedType.Bool)] bool bMute
  1862. );
  1863. void GetMute(
  1864. [MarshalAs(UnmanagedType.Bool)] out bool pbMute
  1865. );
  1866. }
  1867. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1868. Guid("059054B3-027C-494C-A27D-9113291CF87F"),
  1869. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1870. public interface IMFSourceOpenMonitor
  1871. {
  1872. void OnSourceEvent(
  1873. [In, MarshalAs(UnmanagedType.Interface)] IMFMediaEvent pEvent
  1874. );
  1875. }
  1876. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1877. Guid("E56E4CBD-8F70-49D8-A0F8-EDB3D6AB9BF2"),
  1878. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1879. public interface IMFTimer
  1880. {
  1881. void SetTimer(
  1882. [In] MFTimeFlags dwFlags,
  1883. [In] long llClockTime,
  1884. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncCallback pCallback,
  1885. [In, MarshalAs(UnmanagedType.IUnknown)] object pUnkState,
  1886. [MarshalAs(UnmanagedType.IUnknown)] out object ppunkKey
  1887. );
  1888. void CancelTimer(
  1889. [In, MarshalAs(UnmanagedType.IUnknown)] object punkKey
  1890. );
  1891. }
  1892. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1893. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1894. Guid("DE9A6157-F660-4643-B56A-DF9F7998C7CD")]
  1895. public interface IMFTopoLoader
  1896. {
  1897. void Load(
  1898. [In, MarshalAs(UnmanagedType.Interface)] IMFTopology pInputTopo,
  1899. [MarshalAs(UnmanagedType.Interface)] out IMFTopology ppOutputTopo,
  1900. [In, MarshalAs(UnmanagedType.Interface)] IMFTopology pCurrentTopo
  1901. );
  1902. }
  1903. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1904. Guid("676AA6DD-238A-410D-BB99-65668D01605A"),
  1905. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1906. public interface IMFTopologyNodeAttributeEditor
  1907. {
  1908. void UpdateNodeAttributes(
  1909. [In] long TopoId,
  1910. [In] int cUpdates,
  1911. [In] ref MFTopoNodeAttributeUpdate pUpdates
  1912. );
  1913. }
  1914. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1915. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  1916. Guid("542612C4-A1B8-4632-B521-DE11EA64A0B0")]
  1917. public interface IMFTrustedInput
  1918. {
  1919. void GetInputTrustAuthority(
  1920. [In] int dwStreamID,
  1921. [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  1922. [MarshalAs(UnmanagedType.IUnknown)] out object ppunkObject
  1923. );
  1924. }
  1925. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1926. Guid("D19F8E95-B126-4446-890C-5DCB7AD71453"),
  1927. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1928. public interface IMFTrustedOutput
  1929. {
  1930. void GetOutputTrustAuthorityCount(
  1931. out int pcOutputTrustAuthorities
  1932. );
  1933. void GetOutputTrustAuthorityByIndex(
  1934. [In] int dwIndex,
  1935. [MarshalAs(UnmanagedType.Interface)] out IMFOutputTrustAuthority ppauthority
  1936. );
  1937. void IsFinal(
  1938. [MarshalAs(UnmanagedType.Bool)] out bool pfIsFinal
  1939. );
  1940. }
  1941. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1942. Guid("35FE1BB8-A3A9-40FE-BBEC-EB569C9CCCA3"),
  1943. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  1944. public interface IMFWorkQueueServices
  1945. {
  1946. void BeginRegisterTopologyWorkQueuesWithMMCSS(
  1947. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncCallback pCallback,
  1948. [MarshalAs(UnmanagedType.IUnknown)] object pState
  1949. );
  1950. void EndRegisterTopologyWorkQueuesWithMMCSS(
  1951. IMFAsyncResult pResult
  1952. );
  1953. void BeginUnregisterTopologyWorkQueuesWithMMCSS(
  1954. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncCallback pCallback,
  1955. [MarshalAs(UnmanagedType.IUnknown)] object pState
  1956. );
  1957. void EndUnregisterTopologyWorkQueuesWithMMCSS(
  1958. IMFAsyncResult pResult
  1959. );
  1960. void GetTopologyWorkQueueMMCSSClass(
  1961. [In] int dwTopologyWorkQueueId,
  1962. [Out, MarshalAs(UnmanagedType.LPWStr)] string pwszClass,
  1963. [In, Out] ref int pcchClass
  1964. );
  1965. void GetTopologyWorkQueueMMCSSTaskId(
  1966. [In] int dwTopologyWorkQueueId,
  1967. out int pdwTaskId
  1968. );
  1969. void BeginRegisterPlatformWorkQueueWithMMCSS(
  1970. [In] int dwPlatformWorkQueue,
  1971. [In, MarshalAs(UnmanagedType.LPWStr)] string wszClass,
  1972. [In] int dwTaskId,
  1973. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncCallback pCallback,
  1974. [MarshalAs(UnmanagedType.IUnknown)] object pState
  1975. );
  1976. void EndRegisterPlatformWorkQueueWithMMCSS(
  1977. IMFAsyncResult pResult,
  1978. out int pdwTaskId
  1979. );
  1980. void BeginUnregisterPlatformWorkQueueWithMMCSS(
  1981. [In] int dwPlatformWorkQueue,
  1982. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncCallback pCallback,
  1983. [MarshalAs(UnmanagedType.IUnknown)] object pState
  1984. );
  1985. void EndUnregisterPlatformWorkQueueWithMMCSS(
  1986. IMFAsyncResult pResult
  1987. );
  1988. void GetPlaftormWorkQueueMMCSSClass(
  1989. [In] int dwPlatformWorkQueueId,
  1990. [Out, MarshalAs(UnmanagedType.LPWStr)] string pwszClass,
  1991. [In, Out] ref int pcchClass);
  1992. void GetPlatformWorkQueueMMCSSTaskId(
  1993. [In] int dwPlatformWorkQueueId,
  1994. out int pdwTaskId
  1995. );
  1996. }
  1997. #endif
  1998. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  1999. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  2000. Guid("279A808D-AEC7-40C8-9C6B-A6B492C78A66")]
  2001. public interface IMFMediaSource : IMFMediaEventGenerator
  2002. {
  2003. #region IMFMediaEventGenerator methods
  2004. new void GetEvent(
  2005. [In] MFEventFlag dwFlags,
  2006. [MarshalAs(UnmanagedType.Interface)] out IMFMediaEvent ppEvent
  2007. );
  2008. new void BeginGetEvent(
  2009. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncCallback pCallback,
  2010. [In, MarshalAs(UnmanagedType.IUnknown)] object o
  2011. );
  2012. new void EndGetEvent(
  2013. IMFAsyncResult pResult,
  2014. out IMFMediaEvent ppEvent
  2015. );
  2016. new void QueueEvent(
  2017. [In] MediaEventType met,
  2018. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidExtendedType,
  2019. [In] int hrStatus,
  2020. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant pvValue
  2021. );
  2022. #endregion
  2023. void GetCharacteristics(
  2024. out MFMediaSourceCharacteristics pdwCharacteristics
  2025. );
  2026. void CreatePresentationDescriptor(
  2027. out IMFPresentationDescriptor ppPresentationDescriptor
  2028. );
  2029. void Start(
  2030. [In, MarshalAs(UnmanagedType.Interface)] IMFPresentationDescriptor pPresentationDescriptor,
  2031. [In, MarshalAs(UnmanagedType.LPStruct)] Guid pguidTimeFormat,
  2032. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant pvarStartPosition
  2033. );
  2034. void Stop();
  2035. void Pause();
  2036. void Shutdown();
  2037. }
  2038. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  2039. Guid("03CB2711-24D7-4DB6-A17F-F3A7A479A536"),
  2040. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  2041. public interface IMFPresentationDescriptor : IMFAttributes
  2042. {
  2043. #region IMFAttributes methods
  2044. new void GetItem(
  2045. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2046. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant pValue
  2047. );
  2048. new void GetItemType(
  2049. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2050. out MFAttributeType pType
  2051. );
  2052. new void CompareItem(
  2053. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2054. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant Value,
  2055. [MarshalAs(UnmanagedType.Bool)] out bool pbResult
  2056. );
  2057. new void Compare(
  2058. [MarshalAs(UnmanagedType.Interface)] IMFAttributes pTheirs,
  2059. MFAttributesMatchType MatchType,
  2060. [MarshalAs(UnmanagedType.Bool)] out bool pbResult
  2061. );
  2062. new void GetUINT32(
  2063. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2064. out int punValue
  2065. );
  2066. new void GetUINT64(
  2067. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2068. out long punValue
  2069. );
  2070. new void GetDouble(
  2071. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2072. out double pfValue
  2073. );
  2074. new void GetGUID(
  2075. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2076. out Guid pguidValue
  2077. );
  2078. new void GetStringLength(
  2079. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2080. out int pcchLength
  2081. );
  2082. new void GetString(
  2083. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2084. [Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pwszValue,
  2085. int cchBufSize,
  2086. out int pcchLength
  2087. );
  2088. new void GetAllocatedString(
  2089. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2090. [MarshalAs(UnmanagedType.LPWStr)] out string ppwszValue,
  2091. out int pcchLength
  2092. );
  2093. new void GetBlobSize(
  2094. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2095. out int pcbBlobSize
  2096. );
  2097. new void GetBlob(
  2098. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2099. [Out, MarshalAs(UnmanagedType.LPArray)] byte[] pBuf,
  2100. int cbBufSize,
  2101. out int pcbBlobSize
  2102. );
  2103. // Use GetBlob instead of this
  2104. new void GetAllocatedBlob(
  2105. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2106. out IntPtr ip, // Read w/Marshal.Copy, Free w/Marshal.FreeCoTaskMem
  2107. out int pcbSize
  2108. );
  2109. new void GetUnknown(
  2110. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2111. [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  2112. [MarshalAs(UnmanagedType.IUnknown)] out object ppv
  2113. );
  2114. new void SetItem(
  2115. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2116. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant Value
  2117. );
  2118. new void DeleteItem(
  2119. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey
  2120. );
  2121. new void DeleteAllItems();
  2122. new void SetUINT32(
  2123. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2124. int unValue
  2125. );
  2126. new void SetUINT64(
  2127. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2128. long unValue
  2129. );
  2130. new void SetDouble(
  2131. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2132. double fValue
  2133. );
  2134. new void SetGUID(
  2135. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2136. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidValue
  2137. );
  2138. new void SetString(
  2139. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2140. [In, MarshalAs(UnmanagedType.LPWStr)] string wszValue
  2141. );
  2142. new void SetBlob(
  2143. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2144. [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pBuf,
  2145. int cbBufSize
  2146. );
  2147. new void SetUnknown(
  2148. [MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2149. [In, MarshalAs(UnmanagedType.IUnknown)] object pUnknown
  2150. );
  2151. new void LockStore();
  2152. new void UnlockStore();
  2153. new void GetCount(
  2154. out int pcItems
  2155. );
  2156. new void GetItemByIndex(
  2157. int unIndex,
  2158. out Guid pguidKey,
  2159. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant pValue
  2160. );
  2161. new void CopyAllItems(
  2162. [In, MarshalAs(UnmanagedType.Interface)] IMFAttributes pDest
  2163. );
  2164. #endregion
  2165. void GetStreamDescriptorCount(
  2166. out int pdwDescriptorCount
  2167. );
  2168. void GetStreamDescriptorByIndex(
  2169. [In] int dwIndex,
  2170. [MarshalAs(UnmanagedType.Bool)] out bool pfSelected,
  2171. [MarshalAs(UnmanagedType.Interface)] out IMFStreamDescriptor ppDescriptor
  2172. );
  2173. void SelectStream(
  2174. [In] int dwDescriptorIndex
  2175. );
  2176. void DeselectStream(
  2177. [In] int dwDescriptorIndex
  2178. );
  2179. void Clone(
  2180. [MarshalAs(UnmanagedType.Interface)] out IMFPresentationDescriptor ppPresentationDescriptor
  2181. );
  2182. }
  2183. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  2184. Guid("56C03D9C-9DBB-45F5-AB4B-D80F47C05938"),
  2185. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  2186. public interface IMFStreamDescriptor : IMFAttributes
  2187. {
  2188. #region IMFAttributes methods
  2189. new void GetItem(
  2190. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2191. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant pValue
  2192. );
  2193. new void GetItemType(
  2194. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2195. out MFAttributeType pType
  2196. );
  2197. new void CompareItem(
  2198. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2199. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant Value,
  2200. [MarshalAs(UnmanagedType.Bool)] out bool pbResult
  2201. );
  2202. new void Compare(
  2203. [MarshalAs(UnmanagedType.Interface)] IMFAttributes pTheirs,
  2204. MFAttributesMatchType MatchType,
  2205. [MarshalAs(UnmanagedType.Bool)] out bool pbResult
  2206. );
  2207. new void GetUINT32(
  2208. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2209. out int punValue
  2210. );
  2211. new void GetUINT64(
  2212. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2213. out long punValue
  2214. );
  2215. new void GetDouble(
  2216. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2217. out double pfValue
  2218. );
  2219. new void GetGUID(
  2220. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2221. out Guid pguidValue
  2222. );
  2223. new void GetStringLength(
  2224. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2225. out int pcchLength
  2226. );
  2227. new void GetString(
  2228. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2229. [Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pwszValue,
  2230. int cchBufSize,
  2231. out int pcchLength
  2232. );
  2233. new void GetAllocatedString(
  2234. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2235. [MarshalAs(UnmanagedType.LPWStr)] out string ppwszValue,
  2236. out int pcchLength
  2237. );
  2238. new void GetBlobSize(
  2239. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2240. out int pcbBlobSize
  2241. );
  2242. new void GetBlob(
  2243. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2244. [Out, MarshalAs(UnmanagedType.LPArray)] byte[] pBuf,
  2245. int cbBufSize,
  2246. out int pcbBlobSize
  2247. );
  2248. // Use GetBlob instead of this
  2249. new void GetAllocatedBlob(
  2250. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2251. out IntPtr ip, // Read w/Marshal.Copy, Free w/Marshal.FreeCoTaskMem
  2252. out int pcbSize
  2253. );
  2254. new void GetUnknown(
  2255. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2256. [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  2257. [MarshalAs(UnmanagedType.IUnknown)] out object ppv
  2258. );
  2259. new void SetItem(
  2260. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2261. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant Value
  2262. );
  2263. new void DeleteItem(
  2264. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey
  2265. );
  2266. new void DeleteAllItems();
  2267. new void SetUINT32(
  2268. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2269. int unValue
  2270. );
  2271. new void SetUINT64(
  2272. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2273. long unValue
  2274. );
  2275. new void SetDouble(
  2276. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2277. double fValue
  2278. );
  2279. new void SetGUID(
  2280. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2281. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidValue
  2282. );
  2283. new void SetString(
  2284. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2285. [In, MarshalAs(UnmanagedType.LPWStr)] string wszValue
  2286. );
  2287. new void SetBlob(
  2288. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2289. [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pBuf,
  2290. int cbBufSize
  2291. );
  2292. new void SetUnknown(
  2293. [MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2294. [In, MarshalAs(UnmanagedType.IUnknown)] object pUnknown
  2295. );
  2296. new void LockStore();
  2297. new void UnlockStore();
  2298. new void GetCount(
  2299. out int pcItems
  2300. );
  2301. new void GetItemByIndex(
  2302. int unIndex,
  2303. out Guid pguidKey,
  2304. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant pValue
  2305. );
  2306. new void CopyAllItems(
  2307. [In, MarshalAs(UnmanagedType.Interface)] IMFAttributes pDest
  2308. );
  2309. #endregion
  2310. void GetStreamIdentifier(
  2311. out int pdwStreamIdentifier
  2312. );
  2313. void GetMediaTypeHandler(
  2314. [MarshalAs(UnmanagedType.Interface)] out IMFMediaTypeHandler ppMediaTypeHandler
  2315. );
  2316. }
  2317. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  2318. Guid("E93DCF6C-4B07-4E1E-8123-AA16ED6EADF5"),
  2319. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  2320. public interface IMFMediaTypeHandler
  2321. {
  2322. void IsMediaTypeSupported(
  2323. [In, MarshalAs(UnmanagedType.Interface)] IMFMediaType pMediaType,
  2324. IntPtr ppMediaType //[MarshalAs(UnmanagedType.Interface)] out IMFMediaType ppMediaType
  2325. );
  2326. void GetMediaTypeCount(
  2327. out int pdwTypeCount
  2328. );
  2329. void GetMediaTypeByIndex(
  2330. [In] int dwIndex,
  2331. [MarshalAs(UnmanagedType.Interface)] out IMFMediaType ppType
  2332. );
  2333. void SetCurrentMediaType(
  2334. [In, MarshalAs(UnmanagedType.Interface)] IMFMediaType pMediaType
  2335. );
  2336. void GetCurrentMediaType(
  2337. [MarshalAs(UnmanagedType.Interface)] out IMFMediaType ppMediaType
  2338. );
  2339. void GetMajorType(
  2340. out Guid pguidMajorType
  2341. );
  2342. }
  2343. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  2344. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  2345. Guid("83CF873A-F6DA-4BC8-823F-BACFD55DC433")]
  2346. public interface IMFTopology : IMFAttributes
  2347. {
  2348. #region IMFAttributes methods
  2349. new void GetItem(
  2350. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2351. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant pValue
  2352. );
  2353. new void GetItemType(
  2354. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2355. out MFAttributeType pType
  2356. );
  2357. new void CompareItem(
  2358. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2359. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant Value,
  2360. [MarshalAs(UnmanagedType.Bool)] out bool pbResult
  2361. );
  2362. new void Compare(
  2363. [MarshalAs(UnmanagedType.Interface)] IMFAttributes pTheirs,
  2364. MFAttributesMatchType MatchType,
  2365. [MarshalAs(UnmanagedType.Bool)] out bool pbResult
  2366. );
  2367. new void GetUINT32(
  2368. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2369. out int punValue
  2370. );
  2371. new void GetUINT64(
  2372. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2373. out long punValue
  2374. );
  2375. new void GetDouble(
  2376. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2377. out double pfValue
  2378. );
  2379. new void GetGUID(
  2380. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2381. out Guid pguidValue
  2382. );
  2383. new void GetStringLength(
  2384. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2385. out int pcchLength
  2386. );
  2387. new void GetString(
  2388. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2389. [Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pwszValue,
  2390. int cchBufSize,
  2391. out int pcchLength
  2392. );
  2393. new void GetAllocatedString(
  2394. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2395. [MarshalAs(UnmanagedType.LPWStr)] out string ppwszValue,
  2396. out int pcchLength
  2397. );
  2398. new void GetBlobSize(
  2399. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2400. out int pcbBlobSize
  2401. );
  2402. new void GetBlob(
  2403. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2404. [Out, MarshalAs(UnmanagedType.LPArray)] byte[] pBuf,
  2405. int cbBufSize,
  2406. out int pcbBlobSize
  2407. );
  2408. // Use GetBlob instead of this
  2409. new void GetAllocatedBlob(
  2410. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2411. out IntPtr ip, // Read w/Marshal.Copy, Free w/Marshal.FreeCoTaskMem
  2412. out int pcbSize
  2413. );
  2414. new void GetUnknown(
  2415. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2416. [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  2417. [MarshalAs(UnmanagedType.IUnknown)] out object ppv
  2418. );
  2419. new void SetItem(
  2420. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2421. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant Value
  2422. );
  2423. new void DeleteItem(
  2424. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey
  2425. );
  2426. new void DeleteAllItems();
  2427. new void SetUINT32(
  2428. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2429. int unValue
  2430. );
  2431. new void SetUINT64(
  2432. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2433. long unValue
  2434. );
  2435. new void SetDouble(
  2436. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2437. double fValue
  2438. );
  2439. new void SetGUID(
  2440. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2441. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidValue
  2442. );
  2443. new void SetString(
  2444. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2445. [In, MarshalAs(UnmanagedType.LPWStr)] string wszValue
  2446. );
  2447. new void SetBlob(
  2448. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2449. [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pBuf,
  2450. int cbBufSize
  2451. );
  2452. new void SetUnknown(
  2453. [MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2454. [In, MarshalAs(UnmanagedType.IUnknown)] object pUnknown
  2455. );
  2456. new void LockStore();
  2457. new void UnlockStore();
  2458. new void GetCount(
  2459. out int pcItems
  2460. );
  2461. new void GetItemByIndex(
  2462. int unIndex,
  2463. out Guid pguidKey,
  2464. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant pValue
  2465. );
  2466. new void CopyAllItems(
  2467. [In, MarshalAs(UnmanagedType.Interface)] IMFAttributes pDest
  2468. );
  2469. #endregion
  2470. void GetTopologyID(
  2471. out long pID
  2472. );
  2473. void AddNode(
  2474. [In, MarshalAs(UnmanagedType.Interface)] IMFTopologyNode pNode
  2475. );
  2476. void RemoveNode(
  2477. [In, MarshalAs(UnmanagedType.Interface)] IMFTopologyNode pNode
  2478. );
  2479. void GetNodeCount(
  2480. out short pwNodes
  2481. );
  2482. void GetNode(
  2483. [In] short wIndex,
  2484. [MarshalAs(UnmanagedType.Interface)] out IMFTopologyNode ppNode
  2485. );
  2486. void Clear();
  2487. void CloneFrom(
  2488. [In, MarshalAs(UnmanagedType.Interface)] IMFTopology pTopology
  2489. );
  2490. void GetNodeByID(
  2491. [In] long qwTopoNodeID,
  2492. [MarshalAs(UnmanagedType.Interface)] out IMFTopologyNode ppNode
  2493. );
  2494. void GetSourceNodeCollection(
  2495. [MarshalAs(UnmanagedType.Interface)] out IMFCollection ppCollection
  2496. );
  2497. void GetOutputNodeCollection(
  2498. [MarshalAs(UnmanagedType.Interface)] out IMFCollection ppCollection
  2499. );
  2500. }
  2501. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  2502. Guid("83CF873A-F6DA-4BC8-823F-BACFD55DC430"),
  2503. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  2504. public interface IMFTopologyNode : IMFAttributes
  2505. {
  2506. #region IMFAttributes methods
  2507. new void GetItem(
  2508. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2509. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant pValue
  2510. );
  2511. new void GetItemType(
  2512. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2513. out MFAttributeType pType
  2514. );
  2515. new void CompareItem(
  2516. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2517. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant Value,
  2518. [MarshalAs(UnmanagedType.Bool)] out bool pbResult
  2519. );
  2520. new void Compare(
  2521. [MarshalAs(UnmanagedType.Interface)] IMFAttributes pTheirs,
  2522. MFAttributesMatchType MatchType,
  2523. [MarshalAs(UnmanagedType.Bool)] out bool pbResult
  2524. );
  2525. new void GetUINT32(
  2526. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2527. out int punValue
  2528. );
  2529. new void GetUINT64(
  2530. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2531. out long punValue
  2532. );
  2533. new void GetDouble(
  2534. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2535. out double pfValue
  2536. );
  2537. new void GetGUID(
  2538. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2539. out Guid pguidValue
  2540. );
  2541. new void GetStringLength(
  2542. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2543. out int pcchLength
  2544. );
  2545. new void GetString(
  2546. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2547. [Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pwszValue,
  2548. int cchBufSize,
  2549. out int pcchLength
  2550. );
  2551. new void GetAllocatedString(
  2552. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2553. [MarshalAs(UnmanagedType.LPWStr)] out string ppwszValue,
  2554. out int pcchLength
  2555. );
  2556. new void GetBlobSize(
  2557. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2558. out int pcbBlobSize
  2559. );
  2560. new void GetBlob(
  2561. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2562. [Out, MarshalAs(UnmanagedType.LPArray)] byte[] pBuf,
  2563. int cbBufSize,
  2564. out int pcbBlobSize
  2565. );
  2566. // Use GetBlob instead of this
  2567. new void GetAllocatedBlob(
  2568. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2569. out IntPtr ip, // Read w/Marshal.Copy, Free w/Marshal.FreeCoTaskMem
  2570. out int pcbSize
  2571. );
  2572. new void GetUnknown(
  2573. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2574. [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  2575. [MarshalAs(UnmanagedType.IUnknown)] out object ppv
  2576. );
  2577. new void SetItem(
  2578. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2579. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant Value
  2580. );
  2581. new void DeleteItem(
  2582. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey
  2583. );
  2584. new void DeleteAllItems();
  2585. new void SetUINT32(
  2586. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2587. int unValue
  2588. );
  2589. new void SetUINT64(
  2590. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2591. long unValue
  2592. );
  2593. new void SetDouble(
  2594. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2595. double fValue
  2596. );
  2597. new void SetGUID(
  2598. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2599. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidValue
  2600. );
  2601. new void SetString(
  2602. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2603. [In, MarshalAs(UnmanagedType.LPWStr)] string wszValue
  2604. );
  2605. new void SetBlob(
  2606. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2607. [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pBuf,
  2608. int cbBufSize
  2609. );
  2610. new void SetUnknown(
  2611. [MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2612. [In, MarshalAs(UnmanagedType.IUnknown)] object pUnknown
  2613. );
  2614. new void LockStore();
  2615. new void UnlockStore();
  2616. new void GetCount(
  2617. out int pcItems
  2618. );
  2619. new void GetItemByIndex(
  2620. int unIndex,
  2621. out Guid pguidKey,
  2622. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant pValue
  2623. );
  2624. new void CopyAllItems(
  2625. [In, MarshalAs(UnmanagedType.Interface)] IMFAttributes pDest
  2626. );
  2627. #endregion
  2628. void SetObject(
  2629. [In, MarshalAs(UnmanagedType.IUnknown)] object pObject
  2630. );
  2631. void GetObject(
  2632. [MarshalAs(UnmanagedType.IUnknown)] out object ppObject
  2633. );
  2634. void GetNodeType(
  2635. out MFTopologyType pType
  2636. );
  2637. void GetTopoNodeID(
  2638. out long pID
  2639. );
  2640. void SetTopoNodeID(
  2641. [In] long ullTopoID
  2642. );
  2643. void GetInputCount(
  2644. out int pcInputs
  2645. );
  2646. void GetOutputCount(
  2647. out int pcOutputs
  2648. );
  2649. void ConnectOutput(
  2650. [In] int dwOutputIndex,
  2651. [In, MarshalAs(UnmanagedType.Interface)] IMFTopologyNode pDownstreamNode,
  2652. [In] int dwInputIndexOnDownstreamNode
  2653. );
  2654. void DisconnectOutput(
  2655. [In] int dwOutputIndex
  2656. );
  2657. void GetInput(
  2658. [In] int dwInputIndex,
  2659. [MarshalAs(UnmanagedType.Interface)] out IMFTopologyNode ppUpstreamNode,
  2660. out int pdwOutputIndexOnUpstreamNode
  2661. );
  2662. void GetOutput(
  2663. [In] int dwOutputIndex,
  2664. [MarshalAs(UnmanagedType.Interface)] out IMFTopologyNode ppDownstreamNode,
  2665. out int pdwInputIndexOnDownstreamNode
  2666. );
  2667. void SetOutputPrefType(
  2668. [In] int dwOutputIndex,
  2669. [In, MarshalAs(UnmanagedType.Interface)] IMFMediaType pType
  2670. );
  2671. void GetOutputPrefType(
  2672. [In] int dwOutputIndex,
  2673. out IMFMediaType ppType
  2674. );
  2675. void SetInputPrefType(
  2676. [In] int dwInputIndex,
  2677. [In, MarshalAs(UnmanagedType.Interface)] IMFMediaType pType
  2678. );
  2679. void GetInputPrefType(
  2680. [In] int dwInputIndex,
  2681. out IMFMediaType ppType
  2682. );
  2683. void CloneFrom(
  2684. [In, MarshalAs(UnmanagedType.Interface)] IMFTopologyNode pNode
  2685. );
  2686. }
  2687. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  2688. Guid("90377834-21D0-4DEE-8214-BA2E3E6C1127"),
  2689. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  2690. public interface IMFMediaSession : IMFMediaEventGenerator
  2691. {
  2692. #region IMFMediaEventGenerator methods
  2693. new void GetEvent(
  2694. [In] MFEventFlag dwFlags,
  2695. [MarshalAs(UnmanagedType.Interface)] out IMFMediaEvent ppEvent
  2696. );
  2697. new void BeginGetEvent(
  2698. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncCallback pCallback,
  2699. [In, MarshalAs(UnmanagedType.IUnknown)] object o);
  2700. new void EndGetEvent(
  2701. IMFAsyncResult pResult,
  2702. out IMFMediaEvent ppEvent);
  2703. new void QueueEvent(
  2704. [In] MediaEventType met,
  2705. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidExtendedType,
  2706. [In] int hrStatus,
  2707. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant pvValue
  2708. );
  2709. #endregion
  2710. void SetTopology(
  2711. [In] MFSessionSetTopologyFlags dwSetTopologyFlags,
  2712. [In, MarshalAs(UnmanagedType.Interface)] IMFTopology pTopology
  2713. );
  2714. void ClearTopologies();
  2715. void Start(
  2716. [In, MarshalAs(UnmanagedType.LPStruct)] Guid pguidTimeFormat,
  2717. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant pvarStartPosition
  2718. );
  2719. void Pause();
  2720. void Stop();
  2721. void Close();
  2722. void Shutdown();
  2723. void GetClock(
  2724. [MarshalAs(UnmanagedType.Interface)] out IMFClock ppClock
  2725. );
  2726. void GetSessionCapabilities(
  2727. out MFSessionCapabilities pdwCaps
  2728. );
  2729. void GetFullTopology(
  2730. [In] MFSessionGetFullTopologyFlags dwGetFullTopologyFlags,
  2731. [In] long TopoId,
  2732. [MarshalAs(UnmanagedType.Interface)] out IMFTopology ppFullTopology
  2733. );
  2734. }
  2735. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  2736. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  2737. Guid("D182108F-4EC6-443F-AA42-A71106EC825F")]
  2738. public interface IMFMediaStream : IMFMediaEventGenerator
  2739. {
  2740. #region IMFMediaEventGenerator methods
  2741. new void GetEvent(
  2742. [In] MFEventFlag dwFlags,
  2743. [MarshalAs(UnmanagedType.Interface)] out IMFMediaEvent ppEvent
  2744. );
  2745. new void BeginGetEvent(
  2746. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncCallback pCallback,
  2747. [In, MarshalAs(UnmanagedType.IUnknown)] object o
  2748. );
  2749. new void EndGetEvent(
  2750. IMFAsyncResult pResult,
  2751. out IMFMediaEvent ppEvent);
  2752. new void QueueEvent(
  2753. [In] MediaEventType met,
  2754. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidExtendedType,
  2755. [In] int hrStatus,
  2756. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant pvValue
  2757. );
  2758. #endregion
  2759. void GetMediaSource(
  2760. [MarshalAs(UnmanagedType.Interface)] out IMFMediaSource ppMediaSource
  2761. );
  2762. void GetStreamDescriptor(
  2763. [MarshalAs(UnmanagedType.Interface)] out IMFStreamDescriptor ppStreamDescriptor
  2764. );
  2765. void RequestSample(
  2766. [In, MarshalAs(UnmanagedType.IUnknown)] object pToken
  2767. );
  2768. }
  2769. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  2770. Guid("FBE5A32D-A497-4B61-BB85-97B1A848A6E3"),
  2771. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  2772. public interface IMFSourceResolver
  2773. {
  2774. void CreateObjectFromURL(
  2775. [In, MarshalAs(UnmanagedType.LPWStr)] string pwszURL,
  2776. [In] MFResolution dwFlags,
  2777. IPropertyStore pProps,
  2778. out MFObjectType pObjectType,
  2779. [MarshalAs(UnmanagedType.IUnknown)] out object ppObject
  2780. );
  2781. void CreateObjectFromByteStream(
  2782. [In, MarshalAs(UnmanagedType.Interface)] IMFByteStream pByteStream,
  2783. [In, MarshalAs(UnmanagedType.LPWStr)] string pwszURL,
  2784. [In] MFResolution dwFlags,
  2785. [In, MarshalAs(UnmanagedType.Interface)] IPropertyStore pProps,
  2786. out MFObjectType pObjectType,
  2787. [MarshalAs(UnmanagedType.IUnknown)] out object ppObject
  2788. );
  2789. void BeginCreateObjectFromURL(
  2790. [In, MarshalAs(UnmanagedType.LPWStr)] string pwszURL,
  2791. MFResolution dwFlags,
  2792. IPropertyStore pProps,
  2793. [MarshalAs(UnmanagedType.IUnknown)] out object ppIUnknownCancelCookie,
  2794. IMFAsyncCallback pCallback,
  2795. [In, MarshalAs(UnmanagedType.IUnknown)] object punkState
  2796. );
  2797. void EndCreateObjectFromURL(
  2798. IMFAsyncResult pResult,
  2799. out MFObjectType pObjectType,
  2800. [MarshalAs(UnmanagedType.Interface)] out object ppObject
  2801. );
  2802. void BeginCreateObjectFromByteStream(
  2803. [In, MarshalAs(UnmanagedType.Interface)] IMFByteStream pByteStream,
  2804. [In, MarshalAs(UnmanagedType.LPWStr)] string pwszURL,
  2805. [In] MFResolution dwFlags,
  2806. IPropertyStore pProps,
  2807. [MarshalAs(UnmanagedType.IUnknown)] out object ppIUnknownCancelCookie,
  2808. IMFAsyncCallback pCallback,
  2809. [MarshalAs(UnmanagedType.IUnknown)] object punkState
  2810. );
  2811. void EndCreateObjectFromByteStream(
  2812. IMFAsyncResult pResult,
  2813. out MFObjectType pObjectType,
  2814. [MarshalAs(UnmanagedType.IUnknown)] out object ppObject
  2815. );
  2816. void CancelObjectCreation(
  2817. [In, MarshalAs(UnmanagedType.IUnknown)] object pIUnknownCancelCookie
  2818. );
  2819. }
  2820. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  2821. Guid("7FEE9E9A-4A89-47A6-899C-B6A53A70FB67"),
  2822. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  2823. public interface IMFActivate : IMFAttributes
  2824. {
  2825. #region IMFAttributes methods
  2826. new void GetItem(
  2827. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2828. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant pValue
  2829. );
  2830. new void GetItemType(
  2831. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2832. out MFAttributeType pType
  2833. );
  2834. new void CompareItem(
  2835. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2836. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant Value,
  2837. [MarshalAs(UnmanagedType.Bool)] out bool pbResult
  2838. );
  2839. new void Compare(
  2840. [MarshalAs(UnmanagedType.Interface)] IMFAttributes pTheirs,
  2841. MFAttributesMatchType MatchType,
  2842. [MarshalAs(UnmanagedType.Bool)] out bool pbResult
  2843. );
  2844. new void GetUINT32(
  2845. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2846. out int punValue
  2847. );
  2848. new void GetUINT64(
  2849. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2850. out long punValue
  2851. );
  2852. new void GetDouble(
  2853. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2854. out double pfValue
  2855. );
  2856. new void GetGUID(
  2857. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2858. out Guid pguidValue
  2859. );
  2860. new void GetStringLength(
  2861. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2862. out int pcchLength
  2863. );
  2864. new void GetString(
  2865. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2866. [Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pwszValue,
  2867. int cchBufSize,
  2868. out int pcchLength
  2869. );
  2870. new void GetAllocatedString(
  2871. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2872. [MarshalAs(UnmanagedType.LPWStr)] out string ppwszValue,
  2873. out int pcchLength
  2874. );
  2875. new void GetBlobSize(
  2876. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2877. out int pcbBlobSize
  2878. );
  2879. new void GetBlob(
  2880. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2881. [Out, MarshalAs(UnmanagedType.LPArray)] byte[] pBuf,
  2882. int cbBufSize,
  2883. out int pcbBlobSize
  2884. );
  2885. // Use GetBlob instead of this
  2886. new void GetAllocatedBlob(
  2887. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2888. out IntPtr ip, // Read w/Marshal.Copy, Free w/Marshal.FreeCoTaskMem
  2889. out int pcbSize
  2890. );
  2891. new void GetUnknown(
  2892. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2893. [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  2894. [MarshalAs(UnmanagedType.IUnknown)] out object ppv
  2895. );
  2896. new void SetItem(
  2897. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2898. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant Value
  2899. );
  2900. new void DeleteItem(
  2901. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey
  2902. );
  2903. new void DeleteAllItems();
  2904. new void SetUINT32(
  2905. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2906. int unValue
  2907. );
  2908. new void SetUINT64(
  2909. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2910. long unValue
  2911. );
  2912. new void SetDouble(
  2913. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2914. double fValue
  2915. );
  2916. new void SetGUID(
  2917. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2918. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidValue
  2919. );
  2920. new void SetString(
  2921. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2922. [In, MarshalAs(UnmanagedType.LPWStr)] string wszValue
  2923. );
  2924. new void SetBlob(
  2925. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2926. [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pBuf,
  2927. int cbBufSize
  2928. );
  2929. new void SetUnknown(
  2930. [MarshalAs(UnmanagedType.LPStruct)] Guid guidKey,
  2931. [In, MarshalAs(UnmanagedType.IUnknown)] object pUnknown
  2932. );
  2933. new void LockStore();
  2934. new void UnlockStore();
  2935. new void GetCount(
  2936. out int pcItems
  2937. );
  2938. new void GetItemByIndex(
  2939. int unIndex,
  2940. out Guid pguidKey,
  2941. [In, Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PVMarshaler))] PropVariant pValue
  2942. );
  2943. new void CopyAllItems(
  2944. [In, MarshalAs(UnmanagedType.Interface)] IMFAttributes pDest
  2945. );
  2946. #endregion
  2947. void ActivateObject(
  2948. [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  2949. [MarshalAs(UnmanagedType.Interface)] out object ppv
  2950. );
  2951. void ShutdownObject();
  2952. void DetachObject();
  2953. }
  2954. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  2955. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  2956. Guid("FA993888-4383-415A-A930-DD472A8CF6F7")]
  2957. public interface IMFGetService
  2958. {
  2959. void GetService(
  2960. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidService,
  2961. [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid,
  2962. [MarshalAs(UnmanagedType.Interface)] out object ppvObject
  2963. );
  2964. }
  2965. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  2966. Guid("BB420AA4-765B-4A1F-91FE-D6A8A143924C"),
  2967. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  2968. public interface IMFByteStreamHandler
  2969. {
  2970. void BeginCreateObject(
  2971. [In, MarshalAs(UnmanagedType.Interface)] IMFByteStream pByteStream,
  2972. [In, MarshalAs(UnmanagedType.LPWStr)] string pwszURL,
  2973. [In] MFResolution dwFlags,
  2974. [In, MarshalAs(UnmanagedType.Interface)] IPropertyStore pProps,
  2975. [MarshalAs(UnmanagedType.IUnknown)] out object ppIUnknownCancelCookie,
  2976. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncCallback pCallback,
  2977. [In, MarshalAs(UnmanagedType.IUnknown)] object pUnkState
  2978. );
  2979. void EndCreateObject(
  2980. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncResult pResult,
  2981. out MFObjectType pObjectType,
  2982. [MarshalAs(UnmanagedType.IUnknown)] out object ppObject
  2983. );
  2984. void CancelObjectCreation(
  2985. [In, MarshalAs(UnmanagedType.IUnknown)] object pIUnknownCancelCookie
  2986. );
  2987. void GetMaxNumberOfBytesRequiredForResolution(
  2988. out long pqwBytes
  2989. );
  2990. }
  2991. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  2992. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  2993. Guid("F6696E82-74F7-4F3D-A178-8A5E09C3659F")]
  2994. public interface IMFClockStateSink
  2995. {
  2996. void OnClockStart(
  2997. [In] long hnsSystemTime,
  2998. [In] long llClockStartOffset
  2999. );
  3000. void OnClockStop(
  3001. [In] long hnsSystemTime
  3002. );
  3003. void OnClockPause(
  3004. [In] long hnsSystemTime
  3005. );
  3006. void OnClockRestart(
  3007. [In] long hnsSystemTime
  3008. );
  3009. void OnClockSetRate(
  3010. [In] long hnsSystemTime,
  3011. [In] float flRate
  3012. );
  3013. }
  3014. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  3015. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  3016. Guid("2EB1E945-18B8-4139-9B1A-D5D584818530")]
  3017. public interface IMFClock
  3018. {
  3019. void GetClockCharacteristics(
  3020. out MFClockCharacteristicsFlags pdwCharacteristics
  3021. );
  3022. void GetCorrelatedTime(
  3023. [In] int dwReserved,
  3024. out long pllClockTime,
  3025. out long phnsSystemTime
  3026. );
  3027. void GetContinuityKey(
  3028. out int pdwContinuityKey
  3029. );
  3030. void GetState(
  3031. [In] int dwReserved,
  3032. out MFClockState peClockState
  3033. );
  3034. void GetProperties(
  3035. out MFClockProperties pClockProperties
  3036. );
  3037. }
  3038. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  3039. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  3040. Guid("868CE85C-8EA9-4F55-AB82-B009A910A805")]
  3041. public interface IMFPresentationClock : IMFClock
  3042. {
  3043. #region IMFClock methods
  3044. new void GetClockCharacteristics(
  3045. out MFClockCharacteristicsFlags pdwCharacteristics
  3046. );
  3047. new void GetCorrelatedTime(
  3048. [In] int dwReserved,
  3049. out long pllClockTime,
  3050. out long phnsSystemTime
  3051. );
  3052. new void GetContinuityKey(
  3053. out int pdwContinuityKey
  3054. );
  3055. new void GetState(
  3056. [In] int dwReserved,
  3057. out MFClockState peClockState
  3058. );
  3059. new void GetProperties(
  3060. out MFClockProperties pClockProperties
  3061. );
  3062. #endregion
  3063. void SetTimeSource(
  3064. [In, MarshalAs(UnmanagedType.Interface)] IMFPresentationTimeSource pTimeSource
  3065. );
  3066. void GetTimeSource(
  3067. [MarshalAs(UnmanagedType.Interface)] out IMFPresentationTimeSource ppTimeSource
  3068. );
  3069. void GetTime(
  3070. out long phnsClockTime
  3071. );
  3072. void AddClockStateSink(
  3073. [In, MarshalAs(UnmanagedType.Interface)] IMFClockStateSink pStateSink
  3074. );
  3075. void RemoveClockStateSink(
  3076. [In, MarshalAs(UnmanagedType.Interface)] IMFClockStateSink pStateSink
  3077. );
  3078. void Start(
  3079. [In] long llClockStartOffset
  3080. );
  3081. void Stop();
  3082. void Pause();
  3083. }
  3084. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  3085. Guid("7FF12CCE-F76F-41C2-863B-1666C8E5E139"),
  3086. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  3087. public interface IMFPresentationTimeSource : IMFClock
  3088. {
  3089. #region IMFClock methods
  3090. new void GetClockCharacteristics(
  3091. out MFClockCharacteristicsFlags pdwCharacteristics
  3092. );
  3093. new void GetCorrelatedTime(
  3094. [In] int dwReserved,
  3095. out long pllClockTime,
  3096. out long phnsSystemTime
  3097. );
  3098. new void GetContinuityKey(
  3099. out int pdwContinuityKey
  3100. );
  3101. new void GetState(
  3102. [In] int dwReserved,
  3103. out MFClockState peClockState
  3104. );
  3105. new void GetProperties(
  3106. out MFClockProperties pClockProperties
  3107. );
  3108. #endregion
  3109. void GetUnderlyingClock(
  3110. [MarshalAs(UnmanagedType.Interface)] out IMFClock ppClock
  3111. );
  3112. }
  3113. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  3114. InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
  3115. Guid("0E1D6009-C9F3-442D-8C51-A42D2D49452F")]
  3116. public interface IMFMediaSourceTopologyProvider
  3117. {
  3118. void GetMediaSourceTopology(
  3119. [In, MarshalAs(UnmanagedType.Interface)] IMFPresentationDescriptor pPresentationDescriptor,
  3120. [MarshalAs(UnmanagedType.Interface)] out IMFTopology ppTopology
  3121. );
  3122. }
  3123. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  3124. Guid("197CD219-19CB-4DE1-A64C-ACF2EDCBE59E"),
  3125. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  3126. public interface IMFSequencerSource
  3127. {
  3128. void AppendTopology(
  3129. [In, MarshalAs(UnmanagedType.Interface)] IMFTopology pTopology,
  3130. [In] MFSequencerTopologyFlags dwFlags,
  3131. out int pdwId
  3132. );
  3133. void DeleteTopology(
  3134. [In] int dwId
  3135. );
  3136. void GetPresentationContext(
  3137. [In, MarshalAs(UnmanagedType.Interface)] IMFPresentationDescriptor pPD,
  3138. out int pID,
  3139. [MarshalAs(UnmanagedType.Interface)] out IMFTopology ppTopology
  3140. );
  3141. void UpdateTopology(
  3142. [In] int dwId,
  3143. [In, MarshalAs(UnmanagedType.Interface)] IMFTopology pTopology
  3144. );
  3145. void UpdateTopologyFlags(
  3146. [In] int dwId,
  3147. [In] MFSequencerTopologyFlags dwFlags
  3148. );
  3149. }
  3150. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  3151. Guid("ACF92459-6A61-42BD-B57C-B43E51203CB0"),
  3152. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  3153. public interface IMFContentProtectionManager
  3154. {
  3155. void BeginEnableContent(
  3156. IMFActivate pEnablerActivate,
  3157. IMFTopology pTopo,
  3158. IMFAsyncCallback pCallback,
  3159. [MarshalAs(UnmanagedType.Interface)] object punkState
  3160. );
  3161. void EndEnableContent(
  3162. IMFAsyncResult pResult
  3163. );
  3164. }
  3165. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  3166. Guid("D3C4EF59-49CE-4381-9071-D5BCD044C770"),
  3167. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  3168. public interface IMFContentEnabler
  3169. {
  3170. void GetEnableType(out Guid pType);
  3171. void GetEnableURL(
  3172. [MarshalAs(UnmanagedType.LPWStr)] out string ppwszURL,
  3173. out int pcchURL,
  3174. out MFURLTrustStatus pTrustStatus
  3175. );
  3176. void GetEnableData(
  3177. [Out] out IntPtr ppbData,
  3178. out int pcbData);
  3179. void IsAutomaticSupported(
  3180. [MarshalAs(UnmanagedType.Bool)] out bool pfAutomatic
  3181. );
  3182. void AutomaticEnable();
  3183. void MonitorEnable();
  3184. void Cancel();
  3185. }
  3186. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  3187. Guid("6EF2A660-47C0-4666-B13D-CBB717F2FA2C"),
  3188. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  3189. public interface IMFMediaSink
  3190. {
  3191. void GetCharacteristics(
  3192. out MFMediaSinkCharacteristics pdwCharacteristics
  3193. );
  3194. void AddStreamSink(
  3195. [In] int dwStreamSinkIdentifier,
  3196. [In, MarshalAs(UnmanagedType.Interface)] IMFMediaType pMediaType,
  3197. [MarshalAs(UnmanagedType.Interface)] out IMFStreamSink ppStreamSink
  3198. );
  3199. void RemoveStreamSink(
  3200. [In] int dwStreamSinkIdentifier
  3201. );
  3202. void GetStreamSinkCount(
  3203. out int pcStreamSinkCount
  3204. );
  3205. void GetStreamSinkByIndex(
  3206. [In] int dwIndex,
  3207. [MarshalAs(UnmanagedType.Interface)] out IMFStreamSink ppStreamSink
  3208. );
  3209. void GetStreamSinkById(
  3210. [In] int dwStreamSinkIdentifier,
  3211. [MarshalAs(UnmanagedType.Interface)] out IMFStreamSink ppStreamSink
  3212. );
  3213. void SetPresentationClock(
  3214. [In, MarshalAs(UnmanagedType.Interface)] IMFPresentationClock pPresentationClock
  3215. );
  3216. void GetPresentationClock(
  3217. [MarshalAs(UnmanagedType.Interface)] out IMFPresentationClock ppPresentationClock
  3218. );
  3219. void Shutdown();
  3220. }
  3221. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  3222. Guid("0A97B3CF-8E7C-4A3D-8F8C-0C843DC247FB"),
  3223. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  3224. public interface IMFStreamSink : IMFMediaEventGenerator
  3225. {
  3226. #region IMFMediaEventGenerator methods
  3227. new void GetEvent(
  3228. [In] MFEventFlag dwFlags,
  3229. [MarshalAs(UnmanagedType.Interface)] out IMFMediaEvent ppEvent
  3230. );
  3231. new void BeginGetEvent(
  3232. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncCallback pCallback,
  3233. [In, MarshalAs(UnmanagedType.IUnknown)] object o);
  3234. new void EndGetEvent(
  3235. IMFAsyncResult pResult,
  3236. out IMFMediaEvent ppEvent);
  3237. new void QueueEvent(
  3238. [In] MediaEventType met,
  3239. [In, MarshalAs(UnmanagedType.LPStruct)] Guid guidExtendedType,
  3240. [In] int hrStatus,
  3241. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant pvValue
  3242. );
  3243. #endregion
  3244. void GetMediaSink(
  3245. [MarshalAs(UnmanagedType.Interface)] out IMFMediaSink ppMediaSink
  3246. );
  3247. void GetIdentifier(
  3248. out int pdwIdentifier
  3249. );
  3250. void GetMediaTypeHandler(
  3251. [MarshalAs(UnmanagedType.Interface)] out IMFMediaTypeHandler ppHandler
  3252. );
  3253. void ProcessSample(
  3254. [In, MarshalAs(UnmanagedType.Interface)] IMFSample pSample
  3255. );
  3256. void PlaceMarker(
  3257. [In] MFStreamSinkMarkerType eMarkerType,
  3258. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant pvarMarkerValue,
  3259. [In, MarshalAs(UnmanagedType.LPStruct)] ConstPropVariant pvarContextValue
  3260. );
  3261. void Flush();
  3262. }
  3263. [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
  3264. Guid("EAECB74A-9A50-42CE-9541-6A7F57AA4AD7"),
  3265. InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  3266. public interface IMFFinalizableMediaSink : IMFMediaSink
  3267. {
  3268. #region IMFMediaSink methods
  3269. new void GetCharacteristics(
  3270. out MFMediaSinkCharacteristics pdwCharacteristics);
  3271. new void AddStreamSink(
  3272. [In] int dwStreamSinkIdentifier,
  3273. [In, MarshalAs(UnmanagedType.Interface)] IMFMediaType pMediaType,
  3274. [MarshalAs(UnmanagedType.Interface)] out IMFStreamSink ppStreamSink
  3275. );
  3276. new void RemoveStreamSink(
  3277. [In] int dwStreamSinkIdentifier
  3278. );
  3279. new void GetStreamSinkCount(
  3280. out int pcStreamSinkCount
  3281. );
  3282. new void GetStreamSinkByIndex(
  3283. [In] int dwIndex,
  3284. [MarshalAs(UnmanagedType.Interface)] out IMFStreamSink ppStreamSink
  3285. );
  3286. new void GetStreamSinkById(
  3287. [In] int dwStreamSinkIdentifier,
  3288. [MarshalAs(UnmanagedType.Interface)] out IMFStreamSink ppStreamSink
  3289. );
  3290. new void SetPresentationClock(
  3291. [In, MarshalAs(UnmanagedType.Interface)] IMFPresentationClock pPresentationClock
  3292. );
  3293. new void GetPresentationClock(
  3294. [MarshalAs(UnmanagedType.Interface)] out IMFPresentationClock ppPresentationClock
  3295. );
  3296. new void Shutdown();
  3297. #endregion
  3298. void BeginFinalize(
  3299. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncCallback pCallback,
  3300. [In, MarshalAs(UnmanagedType.IUnknown)] object pUnkState
  3301. );
  3302. void EndFinalize(
  3303. [In, MarshalAs(UnmanagedType.Interface)] IMFAsyncResult pResult
  3304. );
  3305. }
  3306. #endregion
  3307. }