home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 November / Chip_2002-11_cd1.bin / zkuste / vbasic / Data / Utils / WME71SDK.exe / RCDATA / CABINET / wmencode.idl < prev    next >
Text File  |  2000-06-13  |  75KB  |  1,422 lines

  1. // WMEncod.idl : IDL source for encengine.dll
  2. //
  3.  
  4. // This file will be processed by the MIDL tool to
  5. // produce the type library (WMEncode.tlb) and marshalling code.
  6.  
  7. import "oaidl.idl";
  8. import "ocidl.idl";
  9.  
  10. #include "..\include\wmsencid.h"
  11.  
  12. interface IWMEncPluginInfo;
  13.  
  14. //
  15. // GUIDs
  16. //
  17. cpp_quote( "EXTERN_GUID( LIBID_WMEncoderLib,            0x632B6060, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76 );" )
  18. cpp_quote( "EXTERN_GUID( DIID__IWMEncoderEvents,        0x632B6062, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76 );" )
  19. cpp_quote( "EXTERN_GUID( DIID__IWMEncoderAppEvents,     0x32B8ECC9, 0x2901, 0x11D3, 0x8F, 0xB8, 0x00, 0xC0, 0x4F, 0x61, 0x09, 0xB7 );" )
  20.  
  21. cpp_quote( "EXTERN_GUID( CLSID_WMEncoder,               0x632B606A, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76 );" )
  22. cpp_quote( "EXTERN_GUID( CLSID_WMEncoderApp,            0x632B606B, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76 );" )
  23. cpp_quote( "EXTERN_GUID( CLSID_WMEncSourcesPage,        0x247161C5, 0x995C, 0x4097, 0x9F, 0xF4, 0x65, 0x5D, 0xC6, 0xD1, 0x2D, 0xB5 );" )
  24. cpp_quote( "EXTERN_GUID( CLSID_WMEncSourcesAltPage,     0x95F57411, 0x9A21, 0x4846, 0xB1, 0x31, 0x45, 0x0A, 0xDB, 0xEA, 0xE7, 0x53 );" )
  25. cpp_quote( "EXTERN_GUID( CLSID_WMEncDisplayInfoPage,    0x4178CE3B, 0x11B1, 0x46DD, 0xA3, 0x6D, 0xBB, 0xCD, 0x36, 0xA5, 0x42, 0x5A );" )
  26. cpp_quote( "EXTERN_GUID( CLSID_WMEncAttributesPage,     0x0037AC54, 0xE32B, 0x4ACA, 0x98, 0x64, 0x09, 0xF8, 0x69, 0xAA, 0x82, 0xFE );" )
  27. cpp_quote( "EXTERN_GUID( CLSID_WMEncProfilePage,        0xFF8F1D65, 0xAD2B, 0x47F1, 0x9E, 0x71, 0x66, 0xB7, 0xD3, 0x5E, 0x38, 0x52 );" )
  28. cpp_quote( "EXTERN_GUID( CLSID_WMEncOutputPage,         0x447AC255, 0xCE81, 0x43AD, 0x98, 0x27, 0xAF, 0xDD, 0xB1, 0x56, 0x1B, 0x07 );" )
  29. cpp_quote( "EXTERN_GUID( CLSID_WMEncAdvancedPage,       0xD5DC4B7F, 0x786B, 0x42b7, 0xB8, 0x3B, 0xFE, 0x1B, 0x5F, 0xC1, 0x5E, 0x2C );" )
  30. cpp_quote( "EXTERN_GUID( CLSID_WMEncMonMainPage,        0xDF0AD8E0, 0xF91C, 0x4109, 0xAE, 0x46, 0x1E, 0xAA, 0x5C, 0xD8, 0xAB, 0x08 );" )
  31. cpp_quote( "EXTERN_GUID( CLSID_WMEncMonDisplayInfoPage, 0xA7E9EBC4, 0x4B2D, 0x44F4, 0x8D, 0xDC, 0x28, 0xBE, 0x73, 0x91, 0x1E, 0x0A );" )
  32. cpp_quote( "EXTERN_GUID( CLSID_WMEncMonConnectionsPage, 0x8D52AA2E, 0x40BE, 0x46D7, 0x8F, 0x36, 0xDB, 0x7B, 0x0F, 0x63, 0x68, 0x24 );" )
  33. cpp_quote( "EXTERN_GUID( CLSID_WMEncProfileManager,     0xA8D3AD02, 0x7508, 0x4004, 0xB2, 0xE9, 0xAD, 0x33, 0xF0, 0x87, 0xF4, 0x3C );" )
  34.  
  35. cpp_quote( "EXTERN_GUID( IID_IWMEncSourcePluginInfoManager,       0x5AE18C51, 0xDB2E, 0x11D2, 0xA3, 0x4A, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  36. cpp_quote( "EXTERN_GUID( IID_IWMEncTransformPluginInfoManager,    0x5AE18C52, 0xDB2E, 0x11D2, 0xA3, 0x4A, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  37. cpp_quote( "EXTERN_GUID( IID_IWMEncPluginInfo,                    0x5AE18C53, 0xDB2E, 0x11D2, 0xA3, 0x4A, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  38. cpp_quote( "EXTERN_GUID( IID_IWMEncTransformCollection,           0x5AE18C54, 0xDB2E, 0x11D2, 0xA3, 0x4A, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  39. cpp_quote( "EXTERN_GUID( IID_IWMEncDataViewCollection,            0x5AE18C55, 0xDB2E, 0x11D2, 0xA3, 0x4A, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  40. cpp_quote( "EXTERN_GUID( IID_IWMEncSourceGroupCollection,       0x632B606F, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  41. cpp_quote( "EXTERN_GUID( IID_IWMEncSourceGroup,         0x632B6071, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  42. cpp_quote( "EXTERN_GUID( IID_IWMEncDisplayInfo,         0x632B6073, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  43. cpp_quote( "EXTERN_GUID( IID_IWMEncAttributes,          0x632B6075, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  44. cpp_quote( "EXTERN_GUID( IID_IWMEncProfileCollection,   0x632B6077, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  45. cpp_quote( "EXTERN_GUID( IID_IWMEncProfile,             0x632B6078, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  46. cpp_quote( "EXTERN_GUID( IID_IWMEncFile,                0x632B607B, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  47. cpp_quote( "EXTERN_GUID( IID_IWMEncBroadcast,           0x632B607D, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  48. cpp_quote( "EXTERN_GUID( IID_IWMEncoder,                0x632B607F, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  49. cpp_quote( "EXTERN_GUID( IID_IWMEncoderApp,             0x632B6080, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  50. cpp_quote( "EXTERN_GUID( IID_IWMEncOutputStats,         0x2BE53BA6, 0xB726, 0x11D2, 0xA8, 0xEB, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  51. cpp_quote( "EXTERN_GUID( IID_IWMEncFileArchiveStats,    0xB12B5B14, 0xF6D2, 0x4a47, 0xAA, 0xED, 0x63, 0x74, 0x98, 0xBD, 0x49, 0xD6);" )
  52. cpp_quote( "EXTERN_GUID( IID_IWMEncIndexerStats,        0xC23F0A1E, 0x53DF, 0x4f6d, 0xB8, 0xF4, 0xEF, 0x32, 0x42, 0xD5, 0x35, 0xDE);" )
  53. cpp_quote( "EXTERN_GUID( IID_IWMEncStatistics,          0x632B6082, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  54. cpp_quote( "EXTERN_GUID( IID_IWMEncNetConnectionStats,  0x632B6083, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  55. cpp_quote( "EXTERN_GUID( IID_IWMEncSource,              0x632B6084, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  56. cpp_quote( "EXTERN_GUID( IID_IWMEncVideoSource,         0x632B6086, 0xBBC6, 0x11D2, 0xA3, 0x29, 0x00, 0x60, 0x97, 0xC4, 0xE4, 0x76);" )
  57. cpp_quote( "EXTERN_GUID( IID_IWMEncProfileManager,      0x731B9D9E, 0x6CF4, 0x4C37, 0xA6, 0xA9, 0xA8, 0x9B, 0x88, 0x0D, 0x36, 0xEC);" )
  58. cpp_quote( "EXTERN_GUID( IID_IWMEncPostViewCollection,  0x2b712593, 0xb68c, 0x40dc, 0x80, 0xc3, 0x41, 0x24, 0xbe, 0xa9, 0x21, 0x6a);" )
  59. cpp_quote( "EXTERN_GUID( IID_IWMEncTransform,           0x58441831, 0x0B0C, 0x4A19, 0xAE, 0x34, 0x54, 0x2F, 0x1D, 0x39, 0x36, 0x78);" )
  60.  
  61. cpp_quote( "////////////////////////////////////////////////////////////////" )
  62. cpp_quote( "//" )
  63. cpp_quote( "//" )
  64. cpp_quote( "#define WMENC_TOTAL     ( ( WMENC_SOURCE_TYPE ) 0x00000003 )" )
  65. cpp_quote( "#define WMENC_ANY       ( ( WMENC_SOURCE_TYPE ) 0xFFFFFFFF )" )
  66. cpp_quote( "#define WMENC_STREAMLEVEL_TRANSFORM_PLUGIN      0x00000001" )
  67. cpp_quote( "#define WMENC_GROUPLEVEL_TRANSFORM_PLUGIN       0x00000002" )
  68. cpp_quote( "#define WMENC_BOTHLEVEL_TRANSFORM_PLUGIN        0x00000003" )
  69. cpp_quote( "" )
  70.  
  71.     typedef
  72.     [
  73.         uuid(2BE53BA5-B726-11D2-A8EB-006097C4E476),
  74.         helpstring("64 bit QWORD based on Automation CURRENCY data type."),
  75.     ]
  76.     CURRENCY    WMENC_LONGLONG;    
  77.  
  78.     typedef
  79.     [
  80.         uuid(2BE53BA7-B726-11D2-A8EB-006097C4E476),
  81.         helpstring("Enumeration type that indicates the operating state of the encoder engine."),
  82.     ]
  83.     enum WMENC_ENCODER_STATE
  84.     {
  85.         [helpstring("Indicates that the encoder engine is starting.")]          WMENC_ENCODER_STARTING    = 0x00000001,
  86.         [helpstring("Indicates that the encoder engine is running.")]           WMENC_ENCODER_RUNNING     = 0x00000002,
  87.         [helpstring("Indicates that the encoder engine has been paused.")]      WMENC_ENCODER_PAUSED      = 0x00000003,
  88.         [helpstring("Indicates that the encoder engine is stopping.")]          WMENC_ENCODER_STOPPING    = 0x00000004,
  89.         [helpstring("Indicates that the encoder engine has been stopped.")]     WMENC_ENCODER_STOPPED     = 0x00000005
  90.     } WMENC_ENCODER_STATE;
  91.  
  92.     typedef
  93.     [
  94.         uuid(2BE53BA8-B726-11D2-A8EB-006097C4E476),
  95.         helpstring("Enumeration type that indicates the type of archive file."),
  96.     ]
  97.     enum WMENC_ARCHIVE_TYPE
  98.     {
  99.         [helpstring("Indicates that the archive file is located on the local computer")]    WMENC_ARCHIVE_LOCAL    = 0x00000001
  100.     } WMENC_ARCHIVE_TYPE;
  101.  
  102.     typedef
  103.     [
  104.         uuid(2BE53BA9-B726-11D2-A8EB-006097C4E476),
  105.         helpstring("Enumeration type that can be used to control the archiving operation."),
  106.     ]
  107.     enum WMENC_ARCHIVE_OPERATION
  108.     {
  109.         [helpstring("Starts the archiving operation.")]    WMENC_ARCHIVE_START    = 0x00000001,
  110.         [helpstring("Stops the archiving operation.")]     WMENC_ARCHIVE_STOP     = 0x00000002,
  111.         [helpstring("Pauses the archiving operation.")]    WMENC_ARCHIVE_PAUSE    = 0x00000003
  112.     } WMENC_ARCHIVE_OPERATION;
  113.  
  114.     typedef
  115.     [
  116.         uuid(2BE53BAA-B726-11D2-A8EB-006097C4E476),
  117.         helpstring("Enumeration type that indicates the state of the archiving operation."),
  118.     ]
  119.     enum WMENC_ARCHIVE_STATE
  120.     {
  121.         [helpstring("Indicates that the archiving operation is running.")]   WMENC_ARCHIVE_RUNNING    = 0x00000001,
  122.         [helpstring("Indicates that the archiving operation has been paused.")]    WMENC_ARCHIVE_PAUSED     = 0x00000002,
  123.         [helpstring("Indicates that the archiving operation has been stopped.")]   WMENC_ARCHIVE_STOPPED    = 0x00000003
  124.     } WMENC_ARCHIVE_STATE;
  125.  
  126.     typedef
  127.     [
  128.         uuid(2BE53BAB-B726-11D2-A8EB-006097C4E476),
  129.         helpstring("Enumeration type that indicates the type of content."),
  130.     ]
  131.     enum WMENC_SOURCE_TYPE
  132.     {
  133.         [helpstring("Indicates that the content includes audio.")]       WMENC_AUDIO    = 0x00000001,
  134.         [helpstring("Indicates that the content includes video.")]       WMENC_VIDEO    = 0x00000002,
  135.         [helpstring("Indicates that the content includes script.")]      WMENC_SCRIPT   = 0x00000004
  136.     } WMENC_SOURCE_TYPE;
  137.  
  138.     typedef
  139.     [
  140.         uuid(2BE53BAC-B726-11D2-A8EB-006097C4E476),
  141.         helpstring("Enumeration type that indicates the state of a source."),
  142.     ]
  143.     enum WMENC_SOURCE_STATE
  144.     {
  145.         [helpstring("The source is starting to stream.")]       WMENC_SOURCE_START     = 0x00000001,
  146.         [helpstring("The source is stopping streaming .")]        WMENC_SOURCE_STOP      = 0x00000002,
  147.         [helpstring("The source is being prepared.")]     WMENC_SOURCE_PREPARE   = 0x00000003,
  148.         [helpstring("The source is being unprepared.")]   WMENC_SOURCE_UNPREPARE = 0x00000004
  149.     } WMENC_SOURCE_STATE;
  150.  
  151.     typedef
  152.     [
  153.         uuid(2BE53BAE-B726-11D2-A8EB-006097C4E476),
  154.         helpstring(" "),
  155.     ]
  156.     enum WMENC_PLUGIN_TYPE
  157.     {
  158.         [helpstring(" ")]    WMENC_PLUGIN_SOURCE         = 0x00000001,
  159.         [helpstring(" ")]    WMENC_PLUGIN_TRANSFORM      = 0x00000002
  160.     } WMENC_PLUGIN_TYPE;
  161.     
  162.     typedef
  163.     [
  164.         uuid(2BE53BAF-B726-11D2-A8EB-006097C4E476),
  165.         helpstring("Enumeration type that identifies the protocol used to broadcast encoded content."),
  166.     ]
  167.     enum WMENC_BROADCAST_PROTOCOL
  168.     {
  169.         [helpstring("Indicates that HTTP is used to broadcast encoded content.")]        WMENC_PROTOCOL_HTTP     = 0x00000001
  170.     } WMENC_BROADCAST_PROTOCOL;
  171.  
  172.  
  173.     typedef
  174.     [
  175.         uuid(30298E9E-7A93-473f-9E01-625869CF382E),
  176.         helpstring("Enumeration type that identifies the content filters for profiles."),
  177.     ]
  178.     enum WMENC_MEDIA_FILTER
  179.     {
  180.         [helpstring("There are no content filters.")]                                                            WMENC_FILTER_NONE    = 0x00000000,
  181.         [helpstring("Filters for profiles that have only 1 audio stream.")]                                      WMENC_FILTER_A       = 0x00000001,
  182.         [helpstring("Filters for profiles that have any combination of 1 audio and 1 video stream.")]            WMENC_FILTER_AV      = 0x00000011,
  183.         [helpstring("Filters for profiles that have any combination of 1 audio and 1 script stream.")]           WMENC_FILTER_AS      = 0x00000101,
  184.         [helpstring("Filters for profiles that have any combination of 1 audio, 1 video, and script stream.")]   WMENC_FILTER_AVS     = 0x00000111
  185.     } WMENC_MEDIA_FILTER;
  186.  
  187.     typedef
  188.     [
  189.         uuid(EEAA5F39-A1F8-4696-B612-1022F39500BC),
  190.         helpstring("Enumeration type that identifies method used to crop images."),
  191.     ]
  192.     enum WMENC_CROPPING_MODE
  193.     {
  194.         [helpstring("Indicates that the amount to crop must be specified as an absolute number.")]   WMENC_CROPPING_ABSOLUTE     = 0x00000000
  195.     } WMENC_CROPPING_MODE;
  196.  
  197.     typedef
  198.     [
  199.         uuid(8FA09255-5B77-4da8-BE45-B756E4B80C24),
  200.         helpstring("Enumeration type that identifies the state of the archive file indexer."),
  201.     ]
  202.     enum WMENC_INDEXER_STATE
  203.     {
  204.         [helpstring("Indicates that the indexer is running.")]   WMENC_INDEXER_RUNNING    = 0x00000001,
  205.         [helpstring("Indicates that the indexer has been stopped.")]   WMENC_INDEXER_STOPPED    = 0x00000002
  206.     } WMENC_INDEXER_STATE;
  207.  
  208.     typedef
  209.     [
  210.         uuid(9514675E-2B6F-43CB-8D15-57F8E3EADDF4),
  211.         helpstring("Enumeration type that identifies the  property class for the user interface."),
  212.     ]
  213.     enum WMENCAPP_PROP_CLASS
  214.     {
  215.         [helpstring("Indicates that the property is for the end-user.")]      WMENCAPP_PROP_USER       = 0x00000001
  216.     } WMENCAPP_PROP_CLASS;
  217.  
  218.     typedef
  219.     [
  220.         uuid(E40CC379-3603-4f77-AF9B-B0F0CCF7EBDC),
  221.         helpstring("Enumeration type that identifies the optimization applied to a video stream."),
  222.     ]
  223.     enum WMENC_VIDEO_OPTIMIZATION
  224.     {
  225.         [helpstring("Indicates no optimization.")]                  WMENC_VIDEO_STANDARD        = 0x00000001,
  226.         [helpstring("Indicates deinterlace optimization.")]         WMENC_VIDEO_DEINTERLACE     = 0x00000002,
  227.         [helpstring("Indicates inverse telecine optimization.")]    WMENC_VIDEO_INVERSETELECINE = 0x00000003
  228.     } WMENC_VIDEO_OPTIMIZATION;
  229.  
  230.     typedef
  231.     [
  232.         uuid(384C1030-317C-42fc-A5A0-537FDC6FB92F),
  233.         helpstring("Enumeration type that identifies the pixel format of a video stream."),
  234.     ]
  235.     enum WMENC_PIXELFORMAT_VIDEO
  236.     {
  237.         [helpstring("Indicates that the video pixel format is automatically determined.")]    WMENC_PIXELFORMAT_AUTO   = 0x00000001,
  238.         [helpstring("Indicates that the video pixel format is IYUV.")]    WMENC_PIXELFORMAT_IYUV   = 0x56555949,
  239.         [helpstring("Indicates that the video pixel format is I420.")]    WMENC_PIXELFORMAT_I420   = 0x30323449,
  240.         [helpstring("Indicates that the video pixel format is YV12.")]    WMENC_PIXELFORMAT_YV12   = 0x32315659,
  241.         [helpstring("Indicates that the video pixel format is YUY2.")]    WMENC_PIXELFORMAT_YUY2   = 0x32595559,
  242.         [helpstring("Indicates that the video pixel format is UYVY.")]    WMENC_PIXELFORMAT_UYVY   = 0x59565955,
  243.         [helpstring("Indicates that the video pixel format is YVYU.")]    WMENC_PIXELFORMAT_YVYU   = 0x55595659,
  244.         [helpstring("Indicates that the video pixel format is YVU9.")]    WMENC_PIXELFORMAT_YVU9   = 0x39555659,
  245.         [helpstring("Indicates that the video pixel format is RGB24.")]   WMENC_PIXELFORMAT_RGB24  = 0xE436EB7D,
  246.         [helpstring("Indicates that the video pixel format is RGB32.")]   WMENC_PIXELFORMAT_RGB32  = 0xE436EB7E,
  247.         [helpstring("Indicates that the video pixel format is RGB555.")]  WMENC_PIXELFORMAT_RGB555 = 0xE436EB7C,
  248.         [helpstring("Indicates that the video pixel format is RGB565.")]  WMENC_PIXELFORMAT_RGB565 = 0xE436EB7B,
  249.         [helpstring("Indicates that the video pixel format is RGB8.")]    WMENC_PIXELFORMAT_RGB8   = 0xE436EB7A,
  250.         [helpstring("Indicates that the video pixel format is RGB4.")]    WMENC_PIXELFORMAT_RGB4   = 0xE436EB79,
  251.         [helpstring("Indicates that the video pixel format is RGB1.")]    WMENC_PIXELFORMAT_RGB1   = 0xE436EB78
  252.     } WMENC_PIXELFORMAT_VIDEO;
  253.  
  254.     typedef
  255.     [
  256.         uuid(B0FA616E-C173-45e5-BCC6-7DA3B185979E),
  257.         helpstring("Enumeration type that controls the operating state of the file indexer."),
  258.     ]
  259.     enum WMENC_INDEXER_OPERATION
  260.     {
  261.         [helpstring("Stops the file indexer.")]     WMENC_INDEXER_STOP     = 0x00000001,
  262.     } WMENC_INDEXER_OPERATION;
  263.  
  264.     typedef
  265.     [
  266.         uuid(3BE52C8E-9B0D-4f21-B237-DF76317F38EC),
  267.         helpstring("Enumeration type that identifies the units of measure for the audio level."),
  268.     ]
  269.     enum WMENC_AUDIOLEVEL_UNITS
  270.     {
  271.         [helpstring("Indicates the units of measure are decibels.")]   WMENC_AUDIOLEVEL_DB        = 0x00000001,
  272.         [helpstring("Indicates the units of measure are linear.")]       WMENC_AUDIOLEVEL_LINEAR    = 0x00000002
  273.     } WMENC_AUDIOLEVEL_UNITS;
  274.  
  275.     [   
  276.         object,
  277.         uuid(5AE18C51-DB2E-11D2-A34A-006097C4E476),
  278.         dual,
  279.         helpstring("Enumerates the available source plug-ins."),
  280.         pointer_default(unique)
  281.     ]
  282.     interface IWMEncSourcePluginInfoManager : IDispatch
  283.     {
  284.         [propget, id(DISPID_COLLECTION_LENGTH), helpstring("Retrieves the number of items in the source plug-in collection.")] 
  285.         HRESULT length([out, retval] long *plCount);
  286.  
  287.         [propget, id(DISPID_COLLECTION_COUNT), helpstring("Retrieves the number of items in the source plug-in collection.")] 
  288.         HRESULT Count([out, retval] long *plCount);
  289.  
  290.         [propget, restricted, id(DISPID_NEWENUM), helpstring("Enumerates the source plug-in collection.")] 
  291.         HRESULT _NewEnum([out, retval] LPUNKNOWN *pIUnknown);
  292.  
  293.         [id(DISPID_VALUE), helpstring("Retrieves registration information for a specific source plug-in.")] 
  294.         HRESULT Item([in] long iIndex, [out, retval] IWMEncPluginInfo** ppPluginInfo );
  295.  
  296.         [id(DISPID_SOURCEPLUGINMGR_REFRESH), helpstring("Refreshes the source plug-in collection.")] 
  297.         HRESULT Refresh();
  298.     };
  299.  
  300.     [   
  301.         object,
  302.         uuid(5AE18C52-DB2E-11D2-A34A-006097C4E476),
  303.         dual,
  304.         helpstring("Enumerates the available transform plug-ins."),
  305.         pointer_default(unique)
  306.     ]
  307.     interface IWMEncTransformPluginInfoManager : IDispatch
  308.     {
  309.         [propget, id(DISPID_COLLECTION_LENGTH), helpstring("Retrieves the number of items in the transform plug-in collection.")] 
  310.         HRESULT length([out, retval] long *plCount);
  311.  
  312.         [propget, id(DISPID_COLLECTION_COUNT), helpstring("Retrieves the number of items in the transform plug-in collection.")] 
  313.         HRESULT Count([out, retval] long *plCount);
  314.  
  315.         [propget, restricted, id(DISPID_NEWENUM), helpstring("Enumerates the transform plug-in collection.")] 
  316.         HRESULT _NewEnum([out, retval] LPUNKNOWN *pIUnknown);
  317.  
  318.         [id(DISPID_VALUE), helpstring("Retrieves registration information for a specific transform plug-in.")] 
  319.         HRESULT Item([in] long iIndex, [out, retval] IWMEncPluginInfo** ppPluginInfo );
  320.  
  321.         [id(DISPID_TRANSFORMPLUGINMGR_REFRESH), helpstring("Refreshes the transform plug-in collection.")] 
  322.         HRESULT Refresh();
  323.     };
  324.  
  325.     [   
  326.         object,
  327.         uuid(5AE18C53-DB2E-11D2-A34A-006097C4E476),
  328.         dual,
  329.         helpstring("Retrieves information about registered plug-ins."),
  330.         pointer_default(unique)
  331.     ]
  332.     interface IWMEncPluginInfo : IDispatch
  333.     {
  334.         [propget, id(DISPID_PLUGININFO_SCHEMETYPE), helpstring("Retrieves the plug-in scheme type.")] 
  335.         HRESULT SchemeType([out, retval] BSTR* pbstrSchemeType );
  336.  
  337.         [propget, id(DISPID_PLUGININFO_CLSID), helpstring("Retrieves the plug-in GUID.")] 
  338.         HRESULT CLSID([out, retval] BSTR* pbstrCLSID );
  339.  
  340.         [propget, id(DISPID_PLUGININFO_NAME), helpstring("Retrieves the name of the plug-in.")] 
  341.         HRESULT Name([out, retval] BSTR* pbstrName );
  342.  
  343.         [propget, id(DISPID_PLUGININFO_MEDIATYPE), helpstring("Retrieves the type of content supported by the plug-in.")] 
  344.         HRESULT MediaType([out, retval] WMENC_SOURCE_TYPE* penumMediaType );
  345.  
  346.         [propget, id(DISPID_PLUGININFO_TYPE), helpstring("Retrieves the plug-in type.")] 
  347.         HRESULT PluginType([out, retval] WMENC_PLUGIN_TYPE* penumType );
  348.  
  349.         [propget, id(DISPID_PLUGININFO_COPYRIGHT), helpstring("Retrieves plug-in copyright information.")] 
  350.         HRESULT Copyright([out, retval] BSTR* pbstrCopyright );
  351.  
  352.         [propget, id(DISPID_PLUGININFO_INFOURL), helpstring("Retrieves a URL for additional information about the plug-in.")] 
  353.         HRESULT InfoURL([out, retval] BSTR* pbstrInfoURL );
  354.  
  355.         [propget, id(DISPID_PLUGININFO_RESOURCES), helpstring("Indicates whether the plug-in supports resources.")] 
  356.         HRESULT Resources([out, retval] VARIANT_BOOL* pbResources);
  357.  
  358.         [propget, id(DISPID_PLUGININFO_EXCLUSIVE), helpstring("Indicates whether the plug-in can be used more than once in a source group.")] 
  359.         HRESULT Exclusive([out, retval] VARIANT_BOOL* pbExclusive);
  360.  
  361.         [propget, id(DISPID_PLUGININFO_PROPPAGE), helpstring("Indicates whether the plug-in supports property pages.")] 
  362.         HRESULT PropertyPage([out, retval] VARIANT_BOOL* pbProppage );
  363.  
  364.         [propget, id(DISPID_PLUGININFO_TRANSFORMFLAGS), helpstring("Retrieves flags indicating whether the plug-in can be applied to multiple streams.")] 
  365.         HRESULT TransformFlags([out, retval] short* piFlags);
  366.  
  367.         [propget, id(DISPID_PLUGININFO_HIDDEN), helpstring("Indicates whether the plug-in is hidden  fromin the UI.")] 
  368.         HRESULT Hidden([out, retval] VARIANT_BOOL* pbHidden );
  369.  
  370. //???        [propget, id(DISPID_PLUGININFO_INITDATA), helpstring("property InitData")] 
  371. //???        HRESULT InitData([out] Byte* pVoid, [out, retval] short* piFlags);
  372.  
  373.         // If Resources property return other than WMENC_PLUGIN_NO_RESOURCE, then
  374.         // we can get the count of the resources and get their name.
  375.         [propget, id(DISPID_COLLECTION_COUNT), helpstring("Retrieves the number of registered plug-ins.")] 
  376.         HRESULT Count([out, retval] long *plCount);
  377.  
  378.         [id(DISPID_VALUE), helpstring("Retrieves a resource for a plug-in.")] 
  379.         HRESULT Item([in] long lIndex, [out, retval] BSTR* pbstrResource );
  380.     };
  381.  
  382.     [
  383.         object,
  384.         uuid(58441831-0B0C-4a19-AE34-542F1D393678),
  385.         dual,
  386.         helpstring("Specifies and retrieves transform plug-ins."),
  387.         pointer_default(unique)
  388.     ]
  389.     interface IWMEncTransform : IDispatch
  390.     {
  391.         [id(DISPID_TRANSFORM_SETINPUT), helpstring("Specifies a transform plug-in to use.")] 
  392.         HRESULT SetInput([in] BSTR bstrInput, [in, defaultvalue("")] BSTR bstrScheme, [in, defaultvalue("")] BSTR bstrInitData);
  393.         
  394.         [id(DISPID_TRANSFORM_GETINPUT), helpstring("Retrieves the name and scheme of a transform plug-in.")] 
  395.         HRESULT GetInput([out] BSTR *pbstrScheme, [out] BSTR *pbstrInitData, [out,retval] BSTR *pbstrInput);
  396.  
  397.         [id(DISPID_TRANSFORM_TRANSFORMPLUGIN), helpstring("Retrieves a transform plug-in.")]
  398.         HRESULT GetTransformPlugin( [out, retval] IUnknown **ppUnkPlugin );
  399.     };
  400.     
  401.     [
  402.         object,
  403.         uuid(5AE18C54-DB2E-11D2-A34A-006097C4E476),
  404.         dual,
  405.         helpstring("Manages the collection of transform plug-ins used during the encoding session."),
  406.         pointer_default(unique)
  407.     ]
  408.     interface IWMEncTransformCollection : IDispatch
  409.     {
  410.         [propget, id(DISPID_COLLECTION_LENGTH), helpstring("Retrieves the number of transform plug-ins in the collection.")] 
  411.         HRESULT length([out, retval] long *plCount);
  412.  
  413.         [propget, id(DISPID_COLLECTION_COUNT), helpstring("Retrieves the number of transform plug-ins in the collection.")] 
  414.         HRESULT Count([out, retval] long *plCount);
  415.  
  416.         [propget, restricted, id(DISPID_NEWENUM), helpstring("Enumerates the transform plug-in collection.")] 
  417.         HRESULT _NewEnum([out, retval] LPUNKNOWN *pIUnknown);
  418.  
  419.         // The source string doesn't include "MIME_TYPE://string value".
  420.         [id(DISPID_VALUE), helpstring("Retrieves a specific transform plug-in.")] 
  421.         HRESULT Item([in] long lIndex, [out,retval] IWMEncTransform **ppTransform);
  422.  
  423.         [id(DISPID_TRANSFORMS_ADD), helpstring("Adds a transform plug-in to the collection.")] 
  424.         HRESULT Add([out, retval] IWMEncTransform **ppTransform);
  425.  
  426.         [id(DISPID_TRANSFORMS_REMOVE), helpstring("Removes a specific transform plug-in from the collection.")] 
  427.         HRESULT Remove([in] long lIndex);
  428.  
  429.         [id(DISPID_TRANSFORMS_REMOVEALL), helpstring("Removes all plug-ins from the collection.")] 
  430.         HRESULT RemoveAll();
  431.  
  432.         // Both variant can be index of the current position of two transform plugins,
  433.         // or can be the string value of the plugin sources.      
  434.         // This method will move varMove plugin in front of varInFrontOf plugin.
  435.         [id(DISPID_TRANSFORMS_MOVE), helpstring("Repositions transform plug-ins in the collection.")] 
  436.         HRESULT Move([in] long lMove, [in] long lInFrontOf);
  437.     };
  438.  
  439.  
  440.     [
  441.         object,
  442.         uuid(632B6073-BBC6-11D2-A329-006097C4E476),
  443.         dual,
  444.         helpstring("Manages information about the content being encoded."),
  445.         pointer_default(unique)
  446.     ]
  447.     interface IWMEncDisplayInfo : IDispatch
  448.     {
  449.         [propget, id(DISPID_DISPLAYINFO_TITLE), helpstring("Specifies and retrieves the title of the content being encoded.")] 
  450.         HRESULT Title([out, retval] BSTR *pbstrTitle);
  451.  
  452.         [propput, id(DISPID_DISPLAYINFO_TITLE), helpstring("Specifies and retrieves the title of the content being encoded.")] 
  453.         HRESULT Title([in] BSTR bstrTitle);
  454.  
  455.         [propget, id(DISPID_DISPLAYINFO_AUTHOR), helpstring("Specifies and retrieves the name of the content author.")] 
  456.         HRESULT Author([out, retval] BSTR *pbstrAuthor);
  457.  
  458.         [propput, id(DISPID_DISPLAYINFO_AUTHOR), helpstring("Specifies and retrieves the name of the content author.")] 
  459.         HRESULT Author([in] BSTR bstrAuthor);
  460.  
  461.         [propget, id(DISPID_DISPLAYINFO_COPYRIGHT), helpstring("Specifies and retrieves content copyright information.")] 
  462.         HRESULT Copyright([out, retval] BSTR *pbstrCopyright);
  463.  
  464.         [propput, id(DISPID_DISPLAYINFO_COPYRIGHT), helpstring("Specifies and retrieves content copyright information.")] 
  465.         HRESULT Copyright([in] BSTR bstrCopyright);
  466.  
  467.         [propget, id(DISPID_DISPLAYINFO_RATING), helpstring("Specifies and retrieves content rating information.")] 
  468.         HRESULT Rating([out, retval] BSTR *pbstrRating);
  469.  
  470.         [propput, id(DISPID_DISPLAYINFO_RATING), helpstring("Specifies and retrieves content rating information.")] 
  471.         HRESULT Rating([in] BSTR bstrRating);
  472.  
  473.         [propget, id(DISPID_DISPLAYINFO_DESCRIPTION), helpstring("Specifies and retrieves descriptive information about the content.")] 
  474.         HRESULT Description([out, retval] BSTR *pbstrDesc);
  475.  
  476.         [propput, id(DISPID_DISPLAYINFO_DESCRIPTION), helpstring("Specifies and retrieves descriptive information about the content.")] 
  477.         HRESULT Description([in] BSTR bstrDesc);
  478.     };
  479.  
  480.     [
  481.         object,
  482.         uuid(632B6075-BBC6-11D2-A329-006097C4E476),
  483.         dual,
  484.         helpstring("Manages a collection of name-value pairs that provide customextra information about the encoding session."),
  485.         pointer_default(unique)
  486.     ]
  487.     interface IWMEncAttributes : IDispatch
  488.     {
  489.         [propget, id(DISPID_COLLECTION_COUNT), helpstring("Retrieves the number of attributes in the collection.")] 
  490.         HRESULT Count([out, retval] long *plCount);
  491.  
  492.         [id(DISPID_VALUE), helpstring("Retrieves a specific attrribute from the collection.")] 
  493.         HRESULT Item([in] long Index, [out] BSTR *pbstrName, [out,retval] VARIANT *pVarValue );
  494.  
  495.         [id(DISPID_ATTRIBUTES_ADD), helpstring("Adds an attribute to the collection.")] 
  496.         HRESULT Add([in] BSTR bstrName, [in] VARIANT varValue );
  497.  
  498.         [id(DISPID_ATTRIBUTES_REMOVE), helpstring("Removes a specific attribute from the collection.")] 
  499.         HRESULT Remove([in] VARIANT var);
  500.  
  501.         [id(DISPID_ATTRIBUTES_REMOVEALL), helpstring("Removes all attributes from the collection.")] 
  502.         HRESULT RemoveAll();
  503.     };
  504.  
  505.    
  506.     [
  507.         object,
  508.         uuid(632B6078-BBC6-11D2-A329-006097C4E476),
  509.         dual,
  510.         helpstring("Retrieves descriptive information about a profile "),
  511.         pointer_default(unique)
  512.     ]
  513.     interface IWMEncProfile : IDispatch
  514.     {
  515.         [propget, id(DISPID_PROFILE_NAME), helpstring("Retrieves the name of a profile.")] 
  516.         HRESULT Name([out, retval] BSTR *bstrName);
  517.  
  518.         [propget, id(DISPID_PROFILE_DESC), helpstring("Retrieves descriptive information about a profile.")] 
  519.         HRESULT Description([out,retval] BSTR *bstrDescription);
  520.  
  521.         [propget, id(DISPID_PROFILE_MEDIACOUNT), helpstring("Retrieves the number of supported audio, video, and script streams.")] 
  522.         HRESULT MediaCount([in] WMENC_SOURCE_TYPE enumType, [out,retval] short* piCount);
  523.  
  524.         [propget, id(DISPID_PROFILE_MBR), helpstring("Indicates whether the profile supports multiple bit rate encoded output.")] 
  525.         HRESULT MultipleBitrate([out,retval] VARIANT_BOOL *pbMBR );
  526.  
  527.         // Return E_NOTIMPL for AudienceCollection property,
  528.         [propget, id(DISPID_PROFILE_AUDIENCE_COLLECTION), helpstring("Not implemented in this release.")] 
  529.         HRESULT AudienceCollection([out,retval] IDispatch **ppAudienceCollection );
  530.  
  531.         [propget, id(DISPID_PROFILE_MAXPACKETSIZE), helpstring("Specifies and retrieves the maximum size of a data unit.")] 
  532.         HRESULT MaxPacketSize([out,retval] long *plMaxPacketSize );
  533.  
  534.         [propput, id(DISPID_PROFILE_MAXPACKETSIZE), helpstring("Specifies and retrieves the maximum size of a data unit.")] 
  535.         HRESULT MaxPacketSize([in] long lMaxPacketSize );
  536.     };
  537.  
  538.     [
  539.         object,
  540.         uuid(632B6077-BBC6-11D2-A329-006097C4E476),
  541.         dual,
  542.         helpstring("Enumerates the profiles that are available to an encoding session."),
  543.         pointer_default(unique)
  544.     ]
  545.     interface IWMEncProfileCollection : IDispatch
  546.     {
  547.         [propget, id(DISPID_COLLECTION_LENGTH), helpstring("Retrieves the number of profiles in the collection.")] 
  548.         HRESULT length([out, retval] long *plCount);
  549.  
  550.         [propget, id(DISPID_COLLECTION_COUNT), helpstring("Retrieves the number of profiles in the collection.")] 
  551.         HRESULT Count([out, retval] long *plCount);
  552.  
  553.         [propget, id(DISPID_COLLECTION_DIRECTORY), helpstring("Specifies and retrieves the path of the custom profile directory.")]
  554.         HRESULT ProfileDirectory([out, retval] BSTR *bstrDirectory);
  555.  
  556.         [propput, id(DISPID_COLLECTION_DIRECTORY), helpstring("Specifies and retrieves the path of the custom profile directory.")]
  557.         HRESULT ProfileDirectory([in] BSTR bstrDirectory);
  558.  
  559.         [propget, restricted, id(DISPID_NEWENUM), helpstring("Enumerates the profile collection.")] 
  560.         HRESULT _NewEnum([out, retval] LPUNKNOWN *pIUnknown);
  561.  
  562.         [id(DISPID_VALUE), helpstring("Retrieves a specific profile from the collection.")] 
  563.         HRESULT Item([in] long Index, [out,retval] IWMEncProfile **ppProfile);
  564.  
  565.         [id(DISPID_PROFILECOLLECTION_REFRESH), helpstring("Refreshes the profile collection.")] 
  566.         HRESULT Refresh();
  567.     };
  568.   
  569.     
  570.     [
  571.         object,
  572.         uuid(632B607B-BBC6-11D2-A329-006097C4E476),
  573.         dual,
  574.         helpstring("Manages the files used for archiving encoded content."),
  575.         pointer_default(unique)
  576.     ]
  577.     interface IWMEncFile : IDispatch        
  578.     {
  579.         [propget, id(DISPID_FILE_LOCALFILENAME), helpstring("Specifies and retrieves the archive file path and name on this computer.")] 
  580.         HRESULT LocalFileName([out, retval] BSTR *pbstrFileName);
  581.  
  582.         [propput, id(DISPID_FILE_LOCALFILENAME), helpstring("Specifies and retrieves the archive file path and name on this computer.")] 
  583.         HRESULT LocalFileName([in] BSTR bstrFileName);
  584.  
  585.         // Nemesis doesn't support archive to remote file.  Return E_NOTIMPL.
  586.         [propget, id(DISPID_FILE_REMOTEFILENAME), helpstring("Not implemented in this release.")] 
  587.         HRESULT RemoteFileName([out, retval] BSTR *pbstrFileName);
  588.  
  589.         [propput, id(DISPID_FILE_REMOTEFILENAME), helpstring("Not implemented in this release.")] 
  590.         HRESULT RemoteFileName([in] BSTR bstrFileName);
  591.     };
  592.  
  593.  
  594.  
  595. // IWMEncBroadcast interface is defined for V4 server.  There is a very high possibility this interface 
  596. // won't be used by Titan.  We will define a new interface for Titan's networking sink.
  597.     [
  598.         object,
  599.         uuid(632B607D-BBC6-11D2-A329-006097C4E476),
  600.         dual,
  601.         helpstring("Manages broadcast options for the encoded content."),
  602.         pointer_default(unique)
  603.     ]
  604.     interface IWMEncBroadcast : IDispatch
  605.     {
  606.         // If port number is 0, that means this protocol is not used for broadcasting.
  607.         [propget, id(DISPID_BROADCAST_PORTNUMBER), helpstring("Specifies and retrieves the broadcast port number.")] 
  608.         HRESULT PortNumber([in] WMENC_BROADCAST_PROTOCOL enumProtocol, [out, retval] long *piPort);
  609.  
  610.         [propput, id(DISPID_BROADCAST_PORTNUMBER), helpstring("Specifies and retrieves the broadcast port number.")] 
  611.         HRESULT PortNumber([in] WMENC_BROADCAST_PROTOCOL enumProtocol, [in] long iPort);
  612.     };
  613.  
  614.  
  615.     [
  616.         object,
  617.         uuid(5AE18C55-DB2E-11D2-A34A-006097C4E476),
  618.         dual,
  619.         helpstring("Manages a collection of objects used to display a stream."),
  620.         pointer_default(unique)
  621.     ]
  622.     interface IWMEncDataViewCollection : IDispatch
  623.     {
  624.         [propget, id(DISPID_COLLECTION_LENGTH), helpstring("Retrieves the number of items in the collection.")] 
  625.         HRESULT length([out, retval] long *plCount);
  626.  
  627.         [propget, id(DISPID_COLLECTION_COUNT), helpstring("Retrieves the number of items in the collection.")] 
  628.         HRESULT Count([out, retval] long *plCount);
  629.  
  630.         [id(DISPID_VALUE), helpstring("Retrieves a specific data view object from the collection.")] 
  631.         HRESULT Item([in] long Index, [out] IUnknown** ppDataView, [out,retval] long *plStreamCookie);
  632.  
  633.         [id(DISPID_DATAVIEWCOLLECTION_ADD), helpstring("Adds a data view object to the collection.")]
  634.         HRESULT Add([in] IUnknown* pDataView, [out,retval] long* plStreamCookie );
  635.  
  636.         [id(DISPID_DATAVIEWCOLLECTION_REMOVE), helpstring("Removes a specific data view object from the collection.")]
  637.         HRESULT Remove([in] long lStreamCookie );
  638.  
  639.         [id(DISPID_DATAVIEWCOLLECTION_REMOVEALL), helpstring("Removes all objects from the collection.")]
  640.         HRESULT RemoveAll();        
  641.  
  642.     };
  643.  
  644. ///////////////////////////////////////////////////////////////////////////////
  645.     [
  646.         object,
  647.         uuid(2B712593-B68C-40dc-80C3-4124BEA9216A),
  648.         dual,
  649.         helpstring("Manages a collection of the multiple-bit-rate output video streams."),
  650.         pointer_default(unique)
  651.     ]
  652.     interface IWMEncPostViewCollection:IWMEncDataViewCollection
  653.     {                
  654.         [propget, id(DISPID_POSTVIEWCOLLECTION_VIEWBANDWIDTH), helpstring("Specifies and retrieves the bit rate of the preview/postview stream.")] 
  655.         HRESULT ViewBandwidth([out, retval] long* plBandwidth );
  656.         
  657.         [propput, id(DISPID_POSTVIEWCOLLECTION_VIEWBANDWIDTH), helpstring("Specifies and retrieves the bit rate of the preview/postview stream.")] 
  658.         HRESULT ViewBandwidth([in] long lBandwidth );
  659.     };
  660. ///////////////////////////////////////////////////////////////////////////////
  661.  
  662.  
  663.     [
  664.         object,
  665.         uuid(632B6084-BBC6-11D2-A329-006097C4E476),
  666.         dual,
  667.         helpstring("Manages an input source stream."),
  668.         pointer_default(unique)
  669.     ]
  670.     interface IWMEncSource : IDispatch
  671.     {
  672.         [propget, id(DISPID_SOURCE_TYPE), helpstring("Retrieves the type of the input media stream.")] 
  673.         HRESULT Type([out,retval] WMENC_SOURCE_TYPE *enumType);
  674.  
  675.         [id(DISPID_SOURCE_SETINPUT), helpstring("Specifies the stream source.")] 
  676.         HRESULT SetInput([in] BSTR bstrInput, [in, defaultvalue("")] BSTR bstrScheme, [in, defaultvalue("")] BSTR bstrStreamName);
  677.         
  678.         [id(DISPID_SOURCE_GETINPUT), helpstring("Retrieves the stream source.")] 
  679. //???        HRESULT GetInput([out,optional] BSTR *bstrStreamName, [out,retval] BSTR *pbstrInput);
  680.         HRESULT GetInput([out] BSTR *bstrStreamName, [out] BSTR *bstrScheme, [out,retval] BSTR *pbstrInput);
  681.  
  682.         [propput, id(DISPID_SOURCE_REPEAT), helpstring("Specifies and retrieves the repeat property for a stream.")] 
  683.         HRESULT Repeat([in] VARIANT_BOOL bRepeat);
  684.  
  685.         [propget, id(DISPID_SOURCE_REPEAT), helpstring("Specifies and retrieves the repeat property for a stream.")] 
  686.         HRESULT Repeat([out, retval] VARIANT_BOOL *pbRepeat);
  687.  
  688.         // MarkIn, MarkOut time is in 1 milisecond unit.
  689.         [propget, id(DISPID_SOURCE_MARKIN), helpstring("Specifies and retrieves the starting point of a stream.")] 
  690.         HRESULT MarkIn([out, retval] long *plMarkIn);
  691.         
  692.         [propput, id(DISPID_SOURCE_MARKIN), helpstring("Specifies and retrieves the starting point of a stream.")] 
  693.         HRESULT MarkIn([in] long lMarkIn);
  694.  
  695.         [propget, id(DISPID_SOURCE_MARKOUT), helpstring("Specifies and retrieves the end point of a stream.")] 
  696.         HRESULT MarkOut([out, retval] long *plMarkOut);
  697.         
  698.         [propput, id(DISPID_SOURCE_MARKOUT), helpstring("Specifies and retrieves the end point of a stream.")] 
  699.         HRESULT MarkOut([in] long lMarkOut);
  700.  
  701.         [propget, id(DISPID_SOURCE_TRANSFORMS), helpstring("Retrieves the collection of transform plug-ins applied to the source stream.")] 
  702.         HRESULT TransformCollection([out, retval] IWMEncTransformCollection** ppTransformCollection );
  703.  
  704.         //
  705.         // Caller pass in an array of IUnknown pointer and size of the array.  If the size of the array is too small,
  706.         // we will return S_FALSE.  If ppUnkTransformPlugins is NULL, then *pdwCount is the total number
  707.         // of the stream level transform plugins in the source.
  708.         //
  709.         [id(DISPID_SOURCE_TRANSFORMPLUGINCOUNT), helpstring("Retrieves the number of transform plug-ins applied to the source stream.")] 
  710.         HRESULT GetTransformPluginCount( [out] DWORD *pdwCount );
  711.  
  712.         [id(DISPID_SOURCE_TRANSFORMPLUGIN), helpstring("This is not an Automation compliant method.")] 
  713.         HRESULT GetTransformPlugin( [in] DWORD dwIndex, [out] IUnknown** ppUnkTransformPlugin );
  714.  
  715.         [propget, id(DISPID_SOURCE_PREVIEWS), helpstring("Retrieves a collection of preview objects for the source stream.")] 
  716.         HRESULT PreviewCollection([out, retval] IWMEncDataViewCollection** ppDataViewCollection );
  717.  
  718.         [propget, id(DISPID_SOURCE_POSTVIEWS), helpstring("Retrieves a collection of preview objects for the source stream.")] 
  719.         HRESULT PostviewCollection([out, retval] IWMEncDataViewCollection** ppDataViewCollection );
  720.  
  721.         [id(DISPID_SOURCE_SOURCEPLUGIN), helpstring("Retrieves the source plug-in associated with the source stream.")]
  722.         HRESULT GetSourcePlugin([out] IUnknown** ppUnkPlugin );
  723.  
  724.     };
  725.  
  726.     [
  727.         object,
  728.         uuid(632B6086-BBC6-11D2-A329-006097C4E476),
  729.         dual,
  730.         helpstring("Crops the edges of a video image."),
  731.         pointer_default(unique)
  732.     ]
  733.     interface IWMEncVideoSource : IWMEncSource
  734.     {
  735.         [propget, id(DISPID_VIDEOSOURCE_CROPMODE), helpstring("Specifies and retrieves the cropping mode.")] 
  736.         HRESULT CroppingMode( [out, retval] WMENC_CROPPING_MODE *penumCroppingMode );
  737.  
  738.         [propput, id(DISPID_VIDEOSOURCE_CROPMODE), helpstring("Specifies and retrieves the cropping mode.")] 
  739.         HRESULT CroppingMode( [in] WMENC_CROPPING_MODE enumCroppingMode );
  740.  
  741.         [propget, id(DISPID_VIDEOSOURCE_CROPLEFT), helpstring("Specifies and retrieves the number of pixels to crop from the left side.")] 
  742.         HRESULT CroppingLeftMargin([out, retval] long *plLeft);
  743.         
  744.         [propput, id(DISPID_VIDEOSOURCE_CROPLEFT), helpstring("Specifies and retrieves the number of pixels to crop from the left side.")] 
  745.         HRESULT CroppingLeftMargin([in] long lLeft);
  746.  
  747.         [propget, id(DISPID_VIDEOSOURCE_CROPTOP), helpstring("Specifies and retrieves the number of pixels to crop from the top.")] 
  748.         HRESULT CroppingTopMargin([out, retval] long *plTop);
  749.         
  750.         [propput, id(DISPID_VIDEOSOURCE_CROPTOP), helpstring("Specifies and retrieves the number of pixels to crop from the top.")] 
  751.         HRESULT CroppingTopMargin([in] long lTop);
  752.  
  753.         [propget, id(DISPID_VIDEOSOURCE_CROPRIGHT), helpstring("Specifies and retrieves the number of pixels to crop from the right side.")] 
  754.         HRESULT CroppingRightMargin([out, retval] long *plRight);
  755.         
  756.         [propput, id(DISPID_VIDEOSOURCE_CROPRIGHT), helpstring("Specifies and retrieves the number of pixels to crop from the right side.")] 
  757.         HRESULT CroppingRightMargin([in] long lRight);
  758.  
  759.         [propget, id(DISPID_VIDEOSOURCE_CROPBOTTOM), helpstring("Specifies and retrieves the number of pixels to crop from the bottom.")] 
  760.         HRESULT CroppingBottomMargin([out, retval] long *plBottom);
  761.         
  762.         [propput, id(DISPID_VIDEOSOURCE_CROPBOTTOM), helpstring("Specifies and retrieves the number of pixels to crop from the bottom.")] 
  763.         HRESULT CroppingBottomMargin([in] long lBottom);
  764.         
  765.         [propget, id(DISPID_VIDEOSOURCE_OPTIMIZATION), helpstring("Specifies and retrieves the type of video optimization.")] 
  766.         HRESULT Optimization( [out, retval] WMENC_VIDEO_OPTIMIZATION *penumOptimization );
  767.  
  768.         [propput, id(DISPID_VIDEOSOURCE_OPTIMIZATION), helpstring("Specifies and retrieves the type of video optimization.")]
  769.         HRESULT Optimization( [in] WMENC_VIDEO_OPTIMIZATION enumOptimization );
  770.  
  771.         [propget, id(DISPID_VIDEOSOURCE_PIXELFORMAT), helpstring("Specifies and retrieves the video pixel format.")] 
  772.         HRESULT PixelFormat( [out, retval] WMENC_PIXELFORMAT_VIDEO *penumPixelFormat );
  773.  
  774.         [propput, id(DISPID_VIDEOSOURCE_PIXELFORMAT), helpstring("Specifies and retrieves the video pixel format.")]
  775.         HRESULT PixelFormat( [in] WMENC_PIXELFORMAT_VIDEO enumPixelFormat );
  776.     };
  777.  
  778.  
  779.     [
  780.         object,
  781.         uuid(632B6071-BBC6-11D2-A329-006097C4E476),
  782.         dual,
  783.         helpstring("Manages a source group of multimedia streams."),
  784.         pointer_default(unique)
  785.     ]
  786.     interface IWMEncSourceGroup : IDispatch
  787.     {
  788.         [propget, id(DISPID_SOURCEGROUP_NAME), helpstring("Specifies and retrieves the source group name.")] 
  789.         HRESULT Name([out, retval] BSTR *pbstrName);
  790.         
  791.         [propput, id(DISPID_SOURCEGROUP_NAME), helpstring("Specifies and retrieves the source group name.")] 
  792.         HRESULT Name([in] BSTR bstrName);
  793.         
  794.         [propget, id(DISPID_SOURCEGROUP_SOURCECOUNT), helpstring("Retrieves the number of streams in the source group.")]
  795.         HRESULT SourceCount([in] WMENC_SOURCE_TYPE enumType, [out,retval] short *iSourceCount);
  796.  
  797.         [propget, id(DISPID_SOURCEGROUP_SOURCE), helpstring("Retrieves a specific media stream from the source group.")]
  798.         HRESULT Source([in] WMENC_SOURCE_TYPE enumType, [in] short iIndex, [out,retval] IWMEncSource **ppSource);
  799.  
  800.         [id(DISPID_SOURCEGROUP_ADDSOURCE), helpstring("Adds a media stream to the source group.")] 
  801.         HRESULT AddSource([in] WMENC_SOURCE_TYPE enumType, [out, retval] IWMEncSource **ppSource );
  802.  
  803.         [id(DISPID_SOURCEGROUP_REMOVESOURCE), helpstring("Removes a media stream from the source group.")] 
  804.         HRESULT RemoveSource([in] WMENC_SOURCE_TYPE enumType, [in] VARIANT var);
  805.  
  806.         [propget, id(DISPID_SOURCEGROUP_PROFILE), helpstring("Specifies and retrieves the profile for the source group.")] 
  807.         HRESULT Profile([out, retval] IWMEncProfile **ppProfile );
  808.  
  809.         [propput, id(DISPID_SOURCEGROUP_PROFILE), helpstring("Specifies and retrieves the profile for the source group.")] 
  810.         HRESULT Profile([in] VARIANT var );
  811.  
  812.         // return E_NOTIMPL
  813.         [propget, id(DISPID_SOURCEGROUP_AUDIENCE_COLLECTION), helpstring("Not implemented in this release.")] 
  814.         HRESULT AudienceCollection([out, retval] IDispatch **ppAudienceCollection);
  815.  
  816.         [propget, id(DISPID_SOURCEGROUP_AUTOARCHIVE), helpstring("Indicates whether the source group is automatically archived.")]
  817.         HRESULT AutoArchive([in] WMENC_ARCHIVE_TYPE enumArchiveType, [out, retval] WMENC_ARCHIVE_OPERATION *penumArchiveOp); 
  818.  
  819.         [propput, id(DISPID_SOURCEGROUP_AUTOARCHIVE), helpstring("Indicates whether the source group is automatically archived.")] 
  820.         HRESULT AutoArchive([in] WMENC_ARCHIVE_TYPE enumArchiveType, [in] WMENC_ARCHIVE_OPERATION enumArchiveOp); 
  821.  
  822.         //
  823.         // This method will automatically add upto 1 audio source and upto 1 video sources 
  824.         // to the source group.
  825.         //
  826.         [id(DISPID_SOURCEGROUP_AUTOSETFILESOURCE), helpstring("Automatically adds streams from a multimedia file to the source group.")]
  827.         HRESULT AutoSetFileSource([in] BSTR bstrFileName );
  828.  
  829.         [id(DISPID_SOURCEGROUP_PREPARETOENCODE), helpstring("Initializes the source group.")]
  830.         HRESULT PrepareToEncode(VARIANT_BOOL bPrepare);
  831.  
  832.         [propget, id(DISPID_SOURCEGROUP_TRANSFORMS), helpstring("Retrieves a collection of group transform plug-ins.")] 
  833.         HRESULT GroupTransformCollection([out, retval] IWMEncTransformCollection** ppTransformCollection );
  834.  
  835.         [id(DISPID_SOURCEGROUP_TRANSFORMPLUGINCOUNT), helpstring("Retrieves the number of group level transform plug-ins that can be applied to the source group.")]
  836.         HRESULT GetGroupTransformPluginCount([out] DWORD *pdwCount );
  837.  
  838.         [id(DISPID_SOURCEGROUP_TRANSFORMPLUGIN), helpstring("Retrieves a specific group level transform plug-in.")]
  839.         HRESULT GetGroupTransformPlugin([in] DWORD dwIndex, [out] IUnknown** ppUnkPlugin );
  840.     };
  841.  
  842.  
  843.     [
  844.         object,
  845.         uuid(632B606F-BBC6-11D2-A329-006097C4E476),
  846.         dual,
  847.         helpstring("Enumerates the source groups that are available during an encoding session."),
  848.         pointer_default(unique)
  849.     ]
  850.     interface IWMEncSourceGroupCollection : IDispatch
  851.     {
  852.         [propget, id(DISPID_COLLECTION_LENGTH), helpstring("Retrieves the number of source groups in the collection.")] 
  853.         HRESULT length([out, retval] long *plCount);
  854.  
  855.         [propget, id(DISPID_COLLECTION_COUNT), helpstring("Retrieves the number of source groups in the collection.")] 
  856.         HRESULT Count([out, retval] long *plCount);
  857.         
  858.         [propget, restricted, id(DISPID_NEWENUM), helpstring("Enumerates the source group collection.")] 
  859.         HRESULT _NewEnum([out, retval] LPUNKNOWN *pIUnknown);
  860.         
  861.         //
  862.         // var can be either index, or the sourcegroup's name.  
  863.         // If a sourcegroup name is used, the first source group which matches the name 
  864.         // is returned.
  865.         //
  866.         [id(DISPID_VALUE), helpstring("Retrieves a specific source group from the collection.")] 
  867.         HRESULT Item([in] VARIANT var, [out, retval] IWMEncSourceGroup **ppSourceGroup);
  868.         
  869.         //
  870.         // bstrName has to be a non-null string.  
  871.         // There is no checking against the duplication of the source groups' names.  
  872.         // It is user's responsibility to name their source group meaningfully.
  873.         //
  874.         [id(DISPID_SOURCEGROUP_COLLECTION_ADD), helpstring("Adds a source group to the collection.")] 
  875.         HRESULT Add([in] BSTR bstrName, [out,retval] IWMEncSourceGroup **ppSourceGroup);
  876.         
  877.         [id(DISPID_SOURCEGROUP_COLLECTION_REMOVE), helpstring("Removes a source group from the collection.")] 
  878.         HRESULT Remove([in] VARIANT var);
  879.         
  880.         [id(DISPID_SOURCEGROUP_COLLECTION_MOVE), helpstring("Repositions source groups within the collection.")] 
  881.         HRESULT Move([in] IWMEncSourceGroup *pSourceGroup, [in] IWMEncSourceGroup *pSourceGroupInfront);
  882.         
  883.         [propget, id(DISPID_SOURCEGROUP_COLLECTION_ACTIVE), helpstring("Specifies and retrieves the active source group.")] 
  884.         HRESULT Active([out,retval] IWMEncSourceGroup **ppSourceGroup);
  885.         
  886.         [propput, id(DISPID_SOURCEGROUP_COLLECTION_ACTIVE), helpstring("Specifies and retrieves the active source group.")] 
  887.         HRESULT Active([in] IWMEncSourceGroup *pSourceGroup);
  888.     };
  889.  
  890.     interface IWMEncStatistics;
  891.  
  892.     [
  893.         object,
  894.         uuid(632B607F-BBC6-11D2-A329-006097C4E476),
  895.         dual,
  896.         helpstring("Operates the encoder engine."),
  897.         pointer_default(unique)
  898.     ]
  899.     interface IWMEncoder : IDispatch
  900.     {
  901.         [id(DISPID_ENCODER_LOCALEID), helpstring("Specifies the national language used by the encoder engine.")]
  902.         HRESULT SetLocaleID( [in] long lLocaleID );
  903.  
  904.         [id(DISPID_ENCODER_LOAD), helpstring("Loads an existing configuration from a file.")] 
  905.         HRESULT Load([in] BSTR bstrFileName);
  906.  
  907.         [id(DISPID_ENCODER_SAVE), helpstring("Saves the current configuration to a file.")] 
  908.         HRESULT Save([in] BSTR bstrFileName);
  909.  
  910.         [id(DISPID_ENCODER_START), helpstring("Starts the encoder engine.")] 
  911.         HRESULT Start();
  912.  
  913.         [id(DISPID_ENCODER_STOP), helpstring("Stops the encoder engine.")] 
  914.         HRESULT Stop();
  915.  
  916.         [propget, id(DISPID_ENCODER_AUTOSTOP), helpstring("Automatically stops the encoding process at the end of a file.")] 
  917.         HRESULT AutoStop( [out,retval] VARIANT_BOOL *pbStop );
  918.  
  919.         [propput, id(DISPID_ENCODER_AUTOSTOP), helpstring("Automatically stops the encoding process at the end of a file.")] 
  920.         HRESULT AutoStop( [in] VARIANT_BOOL bStop );
  921.  
  922.         // return E_NOTIMPL;
  923.         [id(DISPID_ENCODER_PAUSE), helpstring("Not implemented in this release.")] 
  924.         HRESULT Pause();
  925.  
  926.         // bPrepare indicates prepare or unprepare encoding session.
  927.         // if bPrepare is TRUE, then a new encoding session is created.
  928.         // if bPrepare is FALSE, then all opened sources are closed and encoding session is cleaned up.
  929.         [id(DISPID_ENCODER_PREPARETOENCODE), helpstring("Initializes all souce groups in the encoder engine.")] 
  930.         HRESULT PrepareToEncode( VARIANT_BOOL bPrepare );
  931.  
  932.         //
  933.         // This function will reset the encoder to the state just after the object is instantiated.
  934.         // In other words, all the settings that set on the encoder are lost.
  935.         //
  936.         [id(DISPID_ENCODER_RESET), helpstring("Resets the encoder engine.")] 
  937.         HRESULT Reset();
  938.  
  939.         [id(DISPID_ENCODER_ARCHIVE), helpstring("Starts or stops the archiving process.")] 
  940.         HRESULT Archive( [in] WMENC_ARCHIVE_TYPE enumArchiveType, [in] WMENC_ARCHIVE_OPERATION enumArchiveOp );
  941.  
  942.         [id(DISPID_ENCODER_SENDSCRIPT), helpstring("Sends a script command to the encoder engine.")] 
  943.         HRESULT SendScript( [in] short iIndex, [in] BSTR bstrType, [in] BSTR bstrData);
  944.  
  945.         [propget, id(DISPID_ENCODER_ENABLEAUTOARCHIVE), helpstring("Indicates whether encoded content will be automatically archived.")] 
  946.         HRESULT EnableAutoArchive( [out, retval] VARIANT_BOOL *pbEnableAutoArchive );
  947.  
  948.         [propput, id(DISPID_ENCODER_ENABLEAUTOARCHIVE), helpstring("Indicates whether encoded content will be automatically archived")] 
  949.         HRESULT EnableAutoArchive( [in] VARIANT_BOOL bEnableAutoArchive );
  950.  
  951.         [propget, id(DISPID_ENCODER_RECORDINGLEVEL), helpstring("Specifies and retrieves the recoding level of an audio stream.")] 
  952.         HRESULT RecordingLevel( [in] short iIndex, [out, retval] long *lLevel );
  953.  
  954.         [propput, id(DISPID_ENCODER_RECORDINGLEVEL), helpstring("Specifies and retrieves the recoding level of an audio stream.")] 
  955.         HRESULT RecordingLevel( [in] short iIndex, [in] long lLevel );
  956.  
  957.         [propget, id(DISPID_ENCODER_RECORDINGMUTE), helpstring("Indicates whether the input audio stream is muted.")] 
  958.         HRESULT RecordingMute( [in] short iIndex, [out, retval] VARIANT_BOOL *pbRecordMute );
  959.  
  960.         [propput, id(DISPID_ENCODER_RECORDINGMUTE), helpstring("Indicates whether the input audio stream is muted.")] 
  961.         HRESULT RecordingMute( [in] short iIndex, [in] VARIANT_BOOL bRecordMute );
  962.  
  963.         [id(DISPID_ENCODER_STATS_AUDIOLEVEL), helpstring("Retrieves the audio level of the audio source stream.")] 
  964.         HRESULT GetAudioLevel( [in] WMENC_AUDIOLEVEL_UNITS units, [in] short iIndex, [in, out] long *plDuration,
  965.                                [out] double *pdLMin, [out] double *pdLAvg, [out] double *pdLMax, 
  966.                                [out] double *pdRMin, [out] double *pdRAvg, [out] double *pdRMax );
  967.  
  968.         [propget, id(DISPID_ENCODER_SOURCEGROUP_COLLECTION), helpstring("Retrieves the collection of source groups.")] 
  969.         HRESULT SourceGroupCollection( [out, retval] IWMEncSourceGroupCollection **ppSourceGroupCollection );
  970.  
  971.         [propget, id(DISPID_ENCODER_SOURCEPLUGIN_MANAGER), helpstring("Retrieves source plug-in information.")] 
  972.         HRESULT SourcePluginInfoManager([out, retval] IWMEncSourcePluginInfoManager **ppSourcePluginInfoManager);
  973.  
  974.         [propget, id(DISPID_ENCODER_TRANSFORMPLUGIN_MANAGER), helpstring("Retrieves transform plug-in information.")] 
  975.         HRESULT TransformPluginInfoManager([out, retval] IWMEncTransformPluginInfoManager **ppTransformPluginInfoManager);
  976.  
  977.         [propget, id(DISPID_ENCODER_DISPLAYINFO), helpstring("Retrieves display information options.")] 
  978.         HRESULT DisplayInfo( [out, retval] IWMEncDisplayInfo **ppDisplayInfo );
  979.  
  980.         [propget, id(DISPID_ENCODER_ATTRIBUTES), helpstring("Retrieves custom attribute options.")] 
  981.         HRESULT Attributes( [out, retval] IWMEncAttributes **ppAttributes );
  982.  
  983.         [propget, id(DISPID_ENCODER_BROADCAST), helpstring("Retrieves broadcast options.")] 
  984.         HRESULT Broadcast( [out, retval] IWMEncBroadcast **ppBroadcast );
  985.  
  986.         [propget, id(DISPID_ENCODER_FILE), helpstring("Retrieves file options.")] 
  987.         HRESULT File( [out, retval] IWMEncFile **ppFile );
  988.  
  989.         [propget, id(DISPID_ENCODER_STATISTICS), helpstring("Retrieves statistic options.")] 
  990.         HRESULT Statistics( [out, retval] IWMEncStatistics **ppStatistics );
  991.  
  992.         [propget, id(DISPID_ENCODER_PROFILE_COLLECTION), helpstring("Retrieves the collection of available profiles.")] 
  993.         HRESULT ProfileCollection( [out, retval] IWMEncProfileCollection **ppProfileCollection );
  994.  
  995.         [propget, id(DISPID_ENCODER_RUNSTATE), helpstring("Indicates whether the encoder engine is running.")] 
  996.         HRESULT RunState( [out, retval] WMENC_ENCODER_STATE *penumState );
  997.  
  998.         [propget, id(DISPID_ENCODER_ERRORSTATE), helpstring("Retrieves the error state of the encoder engine.")] 
  999.         HRESULT ErrorState( [out, retval] long *plResult);
  1000.  
  1001.         [propget, id(DISPID_ENCODER_ARCHIVESTATE), helpstring("Indicates whether the archiving process is running.")] 
  1002.         HRESULT ArchiveState( [in] WMENC_ARCHIVE_TYPE enumType, [out, retval] WMENC_ARCHIVE_STATE *penumArchiveState );
  1003.  
  1004.         [propget, id(DISPID_ENCODER_NAME), helpstring("Specifies and retrieves the encoder engine name for remote administration.")] 
  1005.         HRESULT Name( [out, retval] BSTR *pbstrName );
  1006.  
  1007.         [propput, id(DISPID_ENCODER_NAME), helpstring("Specifies and retrieves the encoder engine name for remote administration.")] 
  1008.         HRESULT Name( [in] BSTR bstrName );
  1009.  
  1010.         [propget, id(DISPID_ENCODER_REMOTEADMIN), helpstring("Indicates whether the encoder engine can be remotely controlled.")] 
  1011.         HRESULT RemoteAdmin( [out, retval] VARIANT_BOOL *pbRemoteAdmin );
  1012.  
  1013.         [propput, id(DISPID_ENCODER_REMOTEADMIN), helpstring("Indicates whether the encoder engine can be remotely controlled.")] 
  1014.         HRESULT RemoteAdmin( [in] VARIANT_BOOL bRemoteAdmin );
  1015.  
  1016.         [id(DISPID_ENCODER_GENERATEBROADCASTINFO), helpstring("Generates the Windows Media file needed for a multicast publishing point.")] 
  1017.         HRESULT GenerateBroadcastInfo( [in] BSTR bstrFileName );
  1018.  
  1019.         [propget, id(DISPID_ENCODER_INDEXERSTATE), helpstring("Retrieves the state of the indexing process.")] 
  1020.         HRESULT IndexerState( [out, retval] WMENC_INDEXER_STATE *penumIndexerState );
  1021.  
  1022.         [propget, id(DISPID_ENCODER_AUTOINDEX), helpstring("Indicates whether the archive file will be automatically indexed.")] 
  1023.         HRESULT AutoIndex( [out, retval] VARIANT_BOOL *pbAutoIndex );
  1024.  
  1025.         [propput, id(DISPID_ENCODER_AUTOINDEX), helpstring("Indicates whether the archive file will be automatically indexed.")] 
  1026.         HRESULT AutoIndex( [in] VARIANT_BOOL bAutoIndex );
  1027.  
  1028.         [id(DISPID_ENCODER_INDEXER), helpstring("Controls the indexing process.")] 
  1029.         HRESULT Indexer( [in] WMENC_INDEXER_OPERATION enumIndexerOp );
  1030.     };
  1031.  
  1032.  
  1033.     [
  1034.         object,
  1035.         uuid(731B9D9E-6CF4-4C37-A6A9-A89B880D36EC),
  1036.         dual,
  1037.         helpstring("Creates an instance of the Profile Manager to edit and create profiles."),
  1038.         pointer_default(unique)
  1039.     ]
  1040.     interface IWMEncProfileManager : IDispatch
  1041.     {
  1042.         [id(1), helpstring("Display the list of profiles.")]
  1043.         HRESULT WMEncProfileList( [in] WMENC_MEDIA_FILTER filter, [in] long lcid );
  1044.         
  1045.         [id(2), helpstring("Display the list of profiles and specify the default type of new profiles.")]
  1046.         HRESULT WMEncProfileListEx( [in] WMENC_MEDIA_FILTER filter, [in] WMENC_MEDIA_FILTER newDefault, [in] long lcid );
  1047.  
  1048.         [id(3), helpstring("Edit a profile or create a new profile.")]
  1049.         HRESULT WMEncProfileEdit( [in] BSTR bstrProfileName, [in] WMENC_MEDIA_FILTER lfilter, [in] long lcid );
  1050.         
  1051.         [id(4), helpstring("Retrieves a string containing the details of a specific profile.")]
  1052.         HRESULT GetDetailsString( [in] BSTR bstrProfileName, [in] long lcid, [out, retval] BSTR *bstrDetailsString );
  1053.  
  1054.         [propget, id(5), helpstring("Specifies and retrieves the path of the directory containing custom profiles.")]
  1055.         HRESULT ProfileDirectory([out, retval] BSTR *bstrDirectory);
  1056.  
  1057.         [propput, id(5), helpstring("Specifies and retrieves the path of the directory containing custom profiles.")]
  1058.         HRESULT ProfileDirectory([in] BSTR bstrDirectory);
  1059.  
  1060.         [propget, id(6), helpstring("Retrieves the name of the profile most recently created by the end user.")]
  1061.         HRESULT LastCreatedProfile([out, retval] BSTR *bstrProfile );
  1062.  
  1063.         [propget, id(7), helpstring("Retrieves the name of the profile most recently edited by the end user.")]
  1064.         HRESULT LastEditedProfile([out, retval] BSTR *bstrProfile );
  1065.     };
  1066.  
  1067.     [
  1068.         object,
  1069.         uuid(632B6080-BBC6-11D2-A329-006097C4E476),
  1070.         dual,
  1071.         helpstring("Displays the primary user interface built into Windows Media Encoder."),
  1072.         pointer_default(unique)
  1073.     ]
  1074.     interface IWMEncoderApp : IDispatch
  1075.     {
  1076.         [propget, id(DISPID_ENCODERAPP_ENCODER), helpstring("Retrieves the encoder engine.")] 
  1077.         HRESULT Encoder([out, retval] IWMEncoder* *ppEncoder);
  1078.         [propget, id(DISPID_ENCODERAPP_VISIBLE), helpstring("Specifies and retrieves the display state of the UI.")] 
  1079.         HRESULT Visible([out, retval] VARIANT_BOOL *pVal);
  1080.         [propput, id(DISPID_ENCODERAPP_VISIBLE), helpstring("Specifies and retrieves the display state of the UI.")] 
  1081.         HRESULT Visible([in] VARIANT_BOOL newVal);
  1082.         [propget, id(DISPID_ENCODERAPP_TOP), helpstring("Specifies and retrieves the top offset of the UI.")] 
  1083.         HRESULT Top([out, retval] long *pVal);
  1084.         [propput, id(DISPID_ENCODERAPP_TOP), helpstring("Specifies and retrieves the top offset of the UI.")] 
  1085.         HRESULT Top([in] long newVal);
  1086.         [propget, id(DISPID_ENCODERAPP_LEFT), helpstring("Specifies and retrieves the left offset of the UI.")] 
  1087.         HRESULT Left([out, retval] long *pVal);
  1088.         [propput, id(DISPID_ENCODERAPP_LEFT), helpstring("Specifies and retrieves the left offset of the UI.")] 
  1089.         HRESULT Left([in] long newVal);
  1090.         [propget, id(DISPID_ENCODERAPP_WIDTH), helpstring("Specifies and retrieves the width of the UI.")] 
  1091.         HRESULT Width([out, retval] long *pVal);
  1092.         [propput, id(DISPID_ENCODERAPP_WIDTH), helpstring("Specifies and retrieves the width of the UI.")] 
  1093.         HRESULT Width([in] long newVal);
  1094.         [propget, id(DISPID_ENCODERAPP_HEIGHT), helpstring("Specifies and retrieves the height of the UI.")] 
  1095.         HRESULT Height([out, retval] long *pVal);
  1096.         [propput, id(DISPID_ENCODERAPP_HEIGHT), helpstring("Specifies and retrieves the height of the UI.")] 
  1097.         HRESULT Height([in] long newVal);
  1098.         [propget, id(DISPID_ENCODERAPP_UILOCK), helpstring("Specifies and retrieves the lock state of the UI.")] 
  1099.         HRESULT UILock([out, retval] VARIANT_BOOL *pVal);
  1100.         [propput, id(DISPID_ENCODERAPP_UILOCK), helpstring("Specifies and retrieves the lock state of the UI.")] 
  1101.         HRESULT UILock([in] VARIANT_BOOL newVal);
  1102.         [propget, id(DISPID_ENCODERAPP_DISPLAYWIDTH), helpstring("Specifies and retrieves the display width.")] 
  1103.         HRESULT DisplayWidth([in] short iIndex, [out, retval] long *pVal);
  1104.         [propget, id(DISPID_ENCODERAPP_DISPLAYHEIGHT), helpstring("Specifies and retrieves the display width.")] 
  1105.         HRESULT DisplayHeight([in] short iIndex, [out, retval] long *pVal);
  1106.         [id(DISPID_ENCODERAPP_GETPROPERTY), helpstring("Retrieves the display state of a UI panel, property page, or window.")] 
  1107.         HRESULT GetProperty([in] WMENCAPP_PROP_CLASS enumClass, [in] BSTR bstrProperty, [out, retval] VARIANT *pValue);
  1108.         [id(DISPID_ENCODERAPP_SETPROPERTY), helpstring("Specifies the display state of a UI panel, property page, or window.")] 
  1109.         HRESULT SetProperty([in] WMENCAPP_PROP_CLASS enumClass, [in] BSTR bstrProperty, [in] VARIANT Value);
  1110.         [id(DISPID_ENCODERAPP_SAVEPROPERTIES), helpstring("Saves changes to the UI.")] 
  1111.         HRESULT SaveProperties([in] WMENCAPP_PROP_CLASS enumClass);
  1112.     };
  1113.  
  1114.     [
  1115.         object,
  1116.         uuid(2BE53BA6-B726-11D2-A8EB-006097C4E476),
  1117.         dual,
  1118.         helpstring("Retrieves status information about the encoding session."),
  1119.         pointer_default(unique)
  1120.     ]
  1121.     interface IWMEncOutputStats : IDispatch
  1122.     {
  1123.         [propget, id(DISPID_ENCODER_OUTSTATS_SAMPLECOUNT), helpstring("Retrieves the number of encoded samples.")] 
  1124.         HRESULT SampleCount([out,retval] WMENC_LONGLONG *pqwSampleCount );
  1125.  
  1126.         [propget, id(DISPID_ENCODER_OUTSTATS_BYTECOUNT), helpstring("Retrieves the number of encoded bytes.")] 
  1127.         HRESULT ByteCount([out,retval] WMENC_LONGLONG *pqwByteCount );
  1128.  
  1129.         [propget, id(DISPID_ENCODER_OUTSTATS_DROPPEDSAMPLECOUNT), helpstring("Retrieves the number of media samples not encoded.")] 
  1130.         HRESULT DroppedSampleCount([out,retval] WMENC_LONGLONG *pqwDroppedSampleCount );
  1131.  
  1132.         [propget, id(DISPID_ENCODER_OUTSTATS_DROPPEDBYTECOUNT), helpstring("Retrieves the number of bytes not encoded.")] 
  1133.         HRESULT DroppedByteCount([out,retval] WMENC_LONGLONG *pqwDroppedByteCount );
  1134.  
  1135.         [propget, id(DISPID_ENCODER_OUTSTATS_CURRENTBITRATE), helpstring("Retrieves the number of bits encoded per second.")] 
  1136.         HRESULT CurrentBitrate([out,retval] long *plCurrentBitrate );
  1137.  
  1138.         [propget, id(DISPID_ENCODER_OUTSTATS_AVERAGEBITRATE), helpstring("Retrieves the average number of bits encoded per second.")] 
  1139.         HRESULT AverageBitrate([out,retval] long *plAverageBitrate );
  1140.  
  1141.         [propget, id(DISPID_ENCODER_OUTSTATS_EXPECTEDBITRATE), helpstring("Retrieves the expected encoding bit rate.")] 
  1142.         HRESULT ExpectedBitrate([out,retval] long *plExpectedBitrate );
  1143.  
  1144.         [propget, id(DISPID_ENCODER_OUTSTATS_CURRENTSAMPLERATE), helpstring("Retrieves the number of samples encoded per second.")] 
  1145.         HRESULT CurrentSampleRate([out,retval] long *plCurrentSampleRate );
  1146.  
  1147.         [propget, id(DISPID_ENCODER_OUTSTATS_AVERAGESAMPLERATE), helpstring("Retrieves the average number of samples encoded per second.")] 
  1148.         HRESULT AverageSampleRate([out,retval] long *plAverageSampleRate );
  1149.  
  1150.         [propget, id(DISPID_ENCODER_OUTSTATS_EXPECTEDSAMPLERATE), helpstring("Retrieves the expected encoding sample rate.")] 
  1151.         HRESULT ExpectedSampleRate([out,retval] long *plExpectedSampleRate );
  1152.     };
  1153.  
  1154.     [
  1155.         object,
  1156.         uuid(B12B5B14-F6D2-4a47-AAED-637498BD49D6),
  1157.         dual,
  1158.         helpstring("Retrieves information about the archive file."),
  1159.         pointer_default(unique)
  1160.     ]
  1161.     interface IWMEncFileArchiveStats : IDispatch
  1162.     {
  1163.         [propget, id(DISPID_ENCODER_FILEARCHIVESTATS_OUTPUTFILESIZE), , helpstring("Retrieves the size, in bytes, of the archive file.")]
  1164.         HRESULT FileSize([out, retval] WMENC_LONGLONG *pqwOutputFileSize );
  1165.         
  1166.         [propget, id(DISPID_ENCODER_FILEARCHIVESTATS_OUTPUTFILEDURATION), helpstring("Retrieves the duration of archive file")] 
  1167.         HRESULT FileDuration([out, retval] WMENC_LONGLONG *pqwOutputFileDuration );    
  1168.     };
  1169.  
  1170.     [
  1171.         object,
  1172.         uuid(C23F0A1E-53DF-4f6d-B8F4-EF3242D535DE),
  1173.         dual,
  1174.         helpstring("Monitors the indexing process for a Windows Media file."),
  1175.         pointer_default(unique)
  1176.     ]
  1177.     interface IWMEncIndexerStats : IDispatch
  1178.     {
  1179.         // Total number of files waiting to be indexed in the queue.
  1180.         [propget, id(DISPID_INDEXERSTATS_FILECOUNT), helpstring("Retrieves the number of files remaining in the indexing queue.")] 
  1181.         HRESULT FileCount([out,retval] long *plCount );
  1182.  
  1183.         // Name of the ith file in the index queue
  1184.         [propget, id(DISPID_INDEXERSTATS_FILENAME), helpstring("Retrieves the name of a file in the indexing queue.")] 
  1185.         HRESULT FileName([in] long lIndex, [out,retval] BSTR *pbstrFileName );
  1186.  
  1187.         // Percentage of indexing done on the file being indexed
  1188.         [propget, id(DISPID_INDEXERSTATS_PERCENTCOMPLETE), helpstring("Retrieves the percentage of indexing completed for the current file.")] 
  1189.         HRESULT PercentComplete([out,retval] long *plPercent );
  1190.     };
  1191.  
  1192.     [
  1193.         object,
  1194.         uuid(632B6082-BBC6-11D2-A329-006097C4E476),
  1195.         dual,
  1196.         helpstring("Retrieves status information about the encoding session."),
  1197.         pointer_default(unique)
  1198.     ]
  1199.     interface IWMEncStatistics : IDispatch
  1200.     {
  1201.         // return current encoding session duration.
  1202.         [propget, id(DISPID_ENCODER_STATS_ENCODINGTIME), helpstring("Retrieves the elapsed time of the encoding session.")] 
  1203.         HRESULT EncodingTime([out,retval] WMENC_LONGLONG *plTime );
  1204.         
  1205.         // Overall output status.
  1206.         [propget, id(DISPID_ENCODER_STATS_WMFOUTPUT), helpstring("Retrieves status information for the encoded output.")] 
  1207.         HRESULT WMFOutputStats([out,retval] IDispatch **ppStats);
  1208.         
  1209.         // enumType is the type of the stream; 
  1210.         // iMediaIndex is the index in the IWMEncSource interface,
  1211.         // iStreamIndex is the index of the output MBR streams for input stream "iMediaIndex";
  1212.         // pStats is the status for the output MBR stream.  
  1213.         [propget, id(DISPID_ENCODER_STATS_STREAMOUTPUT), helpstring("Retrieves the encoding and broadcasting statistics for an output stream.")] 
  1214.         HRESULT StreamOutputStats([in] WMENC_SOURCE_TYPE enumType, [in] short iMediaIndex, [in] short iStreamIndex, [out,retval] IDispatch **pStats);
  1215.  
  1216.         [propget, id(DISPID_ENCODER_STATS_NETCONNECTION), helpstring("Retrieves a network connection object.")] 
  1217.         HRESULT NetConnectionStats([out, retval] IDispatch** ppDispNetConnectionStats);
  1218.  
  1219.         [propget, id(DISPID_ENCODER_STATS_FILEARCHIVE), helpstring("Retrieves an IWMEncFileArchiveStats object.")] 
  1220.         HRESULT FileArchiveStats([out, retval] IDispatch** ppFileArchiveStats);
  1221.  
  1222.         [propget, id(DISPID_ENCODER_STATS_STREAMOUTPUTCOUNT), helpstring("Retrieves the number of multiple bit rate output streams generated.")] 
  1223.         HRESULT StreamOutputCount([in] WMENC_SOURCE_TYPE enumType, [in] short iMediaIndex, [out,retval] short* pStreamOutputCount);
  1224.  
  1225.         [propget, id(DISPID_ENCODER_STATS_INDEXER), helpstring("Retrieves an IWMEncIndexerStats object.")] 
  1226.         HRESULT IndexerStats([out,retval] IDispatch **ppIndexerStats);
  1227.     };
  1228.  
  1229.     [
  1230.         object,
  1231.         uuid(632B6083-BBC6-11D2-A329-006097C4E476),
  1232.         dual,
  1233.         helpstring("Retrieves information about the clients connected to the encoder engine."),
  1234.         pointer_default(unique)
  1235.     ]
  1236.     interface IWMEncNetConnectionStats : IDispatch
  1237.     {
  1238.         // Total number of clients that connected to encoder.
  1239.         [propget, id(DISPID_ENCODER_NETCONNECT_CLIENTCOUNT), helpstring("Retrieves the number of clients connected to the encoder engine.")] 
  1240.         HRESULT ClientCount([out,retval] long *plCount );
  1241.  
  1242.         // Total number of clients that connected to encoder.
  1243.         [propget, id(DISPID_ENCODER_NETCONNECT_CLIENTINFO), helpstring("Retrieves the protocol and IP address of a specific client.")] 
  1244.         HRESULT ClientInfo([in] long lIndex, [out] WMENC_BROADCAST_PROTOCOL *pProtocal, [out,retval] BSTR* pbstrIP );
  1245.     };
  1246.  
  1247. [
  1248.     uuid(632B6060-BBC6-11D2-A329-006097C4E476),
  1249.     version(1.0),
  1250.     helpstring("Windows Media Encoder")
  1251. ]
  1252. library WMEncoderLib
  1253. {    
  1254.     importlib("stdole32.tlb");
  1255.     importlib("stdole2.tlb");
  1256.  
  1257.     interface IWMEncVideoSource;
  1258.     interface IWMEncNetConnectionStats;
  1259.     interface IWMEncOutputStats;
  1260.     interface IWMEncFileArchiveStats;
  1261.     interface IWMEncIndexerStats;
  1262.     interface IWMEncPostViewCollection;
  1263.  
  1264.     [
  1265.         uuid(632B6062-BBC6-11D2-A329-006097C4E476),
  1266.         helpstring("Receives Windows Media Encoder event notifications.")
  1267.     ]
  1268.     dispinterface _IWMEncoderEvents
  1269.     {
  1270.         properties:
  1271.         methods:
  1272.         [id(DISPID_ENCODEREVENT_STATECHANGE), helpstring("Indicates whether the encoder engine has been started or stopped.")] 
  1273.         HRESULT OnStateChange([in] WMENC_ENCODER_STATE enumState);
  1274.         [id(DISPID_ENCODEREVENT_ERROR), helpstring("Receives run-time error events from the encoder engine.")] 
  1275.         HRESULT OnError([in] long hResult);
  1276.         [id(DISPID_ENCODEREVENT_ARCHIVESTATECHANGE), helpstring("Indicates a change in the archiving state.")] 
  1277.         HRESULT OnArchiveStateChange([in] WMENC_ARCHIVE_TYPE enumArchive, [in] WMENC_ARCHIVE_STATE enumState );
  1278.         [id(DISPID_ENCODEREVENT_CONFIGCHANGE), helpstring("Indicates a change in the configuration of the encoder.")] 
  1279.         HRESULT OnConfigChange([in] long hResult, [in] BSTR bstr);
  1280.         [id(DISPID_ENCODEREVENT_CLIENTCONNECT), helpstring("Indicates that a client has connected to the encoder.")] 
  1281.         HRESULT OnClientConnect([in] WMENC_BROADCAST_PROTOCOL protocol, [in] BSTR bstr);
  1282.         [id(DISPID_ENCODEREVENT_CLIENTDISCONNECT), helpstring("Indicates that a client has disconnected from the encoder.")] 
  1283.         HRESULT OnClientDisconnect([in] WMENC_BROADCAST_PROTOCOL protocol, [in] BSTR bstr);
  1284.         
  1285.         [id(DISPID_ENCODEREVENT_SRCSTATECHANGE), helpstring("Indicates a change in state of an input source.")] 
  1286.         HRESULT OnSourceStateChange([in] WMENC_SOURCE_STATE enumState, [in] WMENC_SOURCE_TYPE enumType, [in] short iIndex,
  1287.                                     [in] BSTR bstrSourceGroup );
  1288.         [id(DISPID_ENCODEREVENT_INDEXERSTATECHANGE), helpstring("Indicates whether an index is being created for a Windows Media file.")] 
  1289.         HRESULT OnIndexerStateChange([in] WMENC_INDEXER_STATE enumIndexerState, [in] BSTR bstrFile );
  1290.     };
  1291.  
  1292.     [
  1293.         uuid(32B8ECC9-2901-11D3-8FB8-00C04F6109B7),
  1294.         helpstring("_IWMEncoderAppEvents Interface")
  1295.     ]
  1296.     dispinterface _IWMEncoderAppEvents
  1297.     {
  1298.         properties:
  1299.         methods:
  1300.     };
  1301.  
  1302.     [
  1303.         uuid(632B606A-BBC6-11D2-A329-006097C4E476),
  1304.         helpstring("Runs the encoder engine.")
  1305.     ]
  1306.     coclass WMEncoder
  1307.     {
  1308.         [default] interface IWMEncoder;
  1309.         [default, source] dispinterface _IWMEncoderEvents;
  1310.     };
  1311.  
  1312.     [
  1313.         uuid(632B606B-BBC6-11D2-A329-006097C4E476),
  1314.         helpstring("Creates a pre-defined user interface and retrives the encoder engine.")
  1315.     ]
  1316.     coclass WMEncoderApp
  1317.     {
  1318.         [default] interface IWMEncoderApp;
  1319.         [default , source] dispinterface _IWMEncoderAppEvents;
  1320.     };
  1321.  
  1322.     [
  1323.         uuid(247161C5-995C-4097-9FF4-655DC6D12DB5),
  1324.         helpstring("Standard UI property page to manage input source streams.")
  1325.     ]
  1326.     coclass WMEncSourcesPage
  1327.     {
  1328.         interface IUnknown;
  1329.     };
  1330.  
  1331.     [
  1332.         uuid(95F57411-9A21-4846-B131-450ADBEAE753),
  1333.         helpstring("Alternative UI property page to manage input source streams.")
  1334.     ]
  1335.     coclass WMEncSourcesAltPage
  1336.     {
  1337.         interface IUnknown;
  1338.     };
  1339.  
  1340.     [
  1341.         uuid(4178CE3B-11B1-46DD-A36D-BBCD36A5425A),
  1342.         helpstring("Standard UI property page to display information about content.")
  1343.     ]
  1344.     coclass WMEncDisplayInfoPage
  1345.     {
  1346.         interface IUnknown;
  1347.     };
  1348.  
  1349.     [
  1350.         uuid(0037AC54-E32B-4ACA-9864-09F869AA82FE),
  1351.         helpstring("Standard UI property page to list and edit user-defined name-value pairs.")
  1352.     ]
  1353.     coclass WMEncAttributesPage
  1354.     {
  1355.         interface IUnknown;
  1356.     };
  1357.  
  1358.     [
  1359.         uuid(FF8F1D65-AD2B-47F1-9E71-66B7D35E3852),
  1360.         helpstring("Standard UI property page to manage profiles.")
  1361.     ]
  1362.     coclass WMEncProfilePage
  1363.     {
  1364.         interface IUnknown;
  1365.     };
  1366.  
  1367.     [
  1368.         uuid(447AC255-CE81-43AD-9827-AFDDB1561B07),
  1369.         helpstring("Standard UI property page containing broadcast information.")
  1370.     ]
  1371.     coclass WMEncOutputPage
  1372.     {
  1373.         interface IUnknown;
  1374.     };
  1375.  
  1376.     [
  1377.         uuid(D5DC4B7F-786B-42b7-B83B-FE1B5FC15E2C),
  1378.         helpstring("Standard UI property page containing advanced options.")
  1379.     ]
  1380.     coclass WMEncAdvancedPage
  1381.     {
  1382.         interface IUnknown;
  1383.     };
  1384.  
  1385.     [
  1386.         uuid(DF0AD8E0-F91C-4109-AE46-1EAA5CD8AB08),
  1387.         helpstring("Main property page for the monitoring panel.")
  1388.     ]
  1389.     coclass WMEncMonMainPage
  1390.     {
  1391.         interface IUnknown;
  1392.     };
  1393.  
  1394.     [
  1395.         uuid(A7E9EBC4-4B2D-44F4-8DDC-28BE73911E0A),
  1396.         helpstring("Monitoring panel property page describing the content.")
  1397.     ]
  1398.     coclass WMEncMonDisplayInfoPage
  1399.     {
  1400.         interface IUnknown;
  1401.     };
  1402.  
  1403.     [
  1404.         uuid(8D52AA2E-40BE-46D7-8F36-DB7B0F636824),
  1405.         helpstring("Monitoring panel property page containing network connection statistics.")
  1406.     ]
  1407.     coclass WMEncMonConnectionsPage
  1408.     {
  1409.         interface IUnknown;
  1410.     };
  1411.  
  1412.     [
  1413.         uuid(A8D3AD02-7508-4004-B2E9-AD33F087F43C),
  1414.         helpstring("Creates the Profile Manager to edit and create profiles.")
  1415.     ]
  1416.     coclass WMEncProfileManager
  1417.     {
  1418.         [default] interface IWMEncProfileManager;
  1419.     };
  1420. };
  1421.  
  1422.