home *** CD-ROM | disk | FTP | other *** search
/ Popular Software Hundred Flowers Garden / POPSOFT_BHW.iso / SOFTWARE / MPEG / MpegGator / DATA.1 / mtrif.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-26  |  20.9 KB  |  681 lines

  1. // File : MTRIF.H
  2.  
  3. #ifndef    __MTRIF__
  4. #define    __MTRIF__
  5.  
  6. #include <windows.h>
  7. #include <windowsx.h>
  8. #include <commctrl.h>           // TreeView declarations live here
  9. #include <olectl.h>
  10.  
  11. #include "def.h"
  12. #include "mtrerr.h"
  13. #include "avdef.h"
  14.  
  15. //===============================================
  16. #ifndef __IMtrCapture_FWD_DEFINED__
  17. #define __IMtrCapture_FWD_DEFINED__
  18. typedef interface IMtrCapture IMtrCapture;
  19. #endif     /* __IMtrCapture_FWD_DEFINED__ */
  20.  
  21. #ifndef __IMtrCapture2_FWD_DEFINED__
  22. #define __IMtrCapture2_FWD_DEFINED__
  23. typedef interface IMtrCapture2 IMtrCapture2;
  24. #endif     /* __IMtrCapture2_FWD_DEFINED__ */
  25.  
  26. #ifndef __IMtrStreamCapture_FWD_DEFINED__
  27. #define __IMtrStreamCapture_FWD_DEFINED__
  28. typedef interface IMtrStreamCapture IMtrStreamCapture;
  29. #endif     /* __IMtrStreamCapture_FWD_DEFINED__ */
  30.  
  31. #ifndef __IFrameCapture_FWD_DEFINED__
  32. #define __IFrameCapture_FWD_DEFINED__
  33. typedef interface IFrameCapture IFrameCapture;
  34. #endif     /* __IFrameCapture_FWD_DEFINED__ */
  35.  
  36. #ifndef __IMtrAccel_FWD_DEFINED__
  37. #define __IMtrAccel_FWD_DEFINED__
  38. typedef interface IMtrAccel IMtrAccel;
  39. #endif     /* __IMtrAccel_FWD_DEFINED__ */
  40.  
  41. #ifndef __IMuxerSetup_FWD_DEFINED__
  42. #define __IMuxerSetup_FWD_DEFINED__
  43. typedef interface IMuxerSetup IMuxerSetup;
  44. #endif     /* __IMuxerSetup_FWD_DEFINED__ */
  45.  
  46. #ifndef __IVMpegSetup_FWD_DEFINED__
  47. #define __IVMpegSetup_FWD_DEFINED__
  48. typedef interface IVMpegSetup IVMpegSetup;
  49. #endif     /* __IVMpegSetup_FWD_DEFINED__ */
  50.  
  51. #ifndef __IAMpegSetup_FWD_DEFINED__
  52. #define __IAMpegSetup_FWD_DEFINED__
  53. typedef interface IAMpegSetup IAMpegSetup;
  54. #endif     /* __IAMpegSetup_FWD_DEFINED__ */
  55.  
  56. #ifndef __IVideoSetup_FWD_DEFINED__
  57. #define __IVideoSetup_FWD_DEFINED__
  58. typedef interface IVideoSetup IVideoSetup;
  59. #endif     /* __IVideoSetup_FWD_DEFINED__ */
  60.  
  61. #ifndef __IAudioSetup_FWD_DEFINED__
  62. #define __IAudioSetup_FWD_DEFINED__
  63. typedef interface IAudioSetup IAudioSetup;
  64. #endif     /* __IAudioSetup_FWD_DEFINED__ */
  65.  
  66. #ifndef __IFilterSetup_FWD_DEFINED__
  67. #define __IFilterSetup_FWD_DEFINED__
  68. typedef interface IFilterSetup IFilterSetup;
  69. #endif     /* __IAMpegSetup_FWD_DEFINED__ */
  70.  
  71. #ifndef __IVideoPreview_FWD_DEFINED__
  72. #define __IVideoPreview_FWD_DEFINED__
  73. typedef interface IVideoPreview IVideoPreview;
  74. #endif     /* __IVideoPreview_FWD_DEFINED__ */
  75.  
  76. #ifndef __ITemplate_FWD_DEFINED__
  77. #define __ITemplate_FWD_DEFINED__
  78. typedef interface ITemplate ITemplate;
  79. #endif     /* __ITemplate_FWD_DEFINED__ */
  80.  
  81. #ifndef __IEnumSetup_FWD_DEFINED__
  82. #define __IEnumSetup_FWD_DEFINED__
  83. typedef interface IEnumSetup IEnumSetup;
  84. #endif     /* __IEnumSetup_FWD_DEFINED__ */
  85.  
  86. #define    MTR_FALSE        0
  87. #define    MTR_OK            1
  88.  
  89. //===============================================
  90. typedef    LPVOID    MTRH;
  91. typedef    LPVOID    MTRCAPH;
  92. typedef    LPVOID    MTRPLAYH;
  93. typedef    LPVOID    MTRACCH;
  94.  
  95. //===============================================
  96. typedef    long (CALLBACK *MTRIO)(LPVOID inst, LPSTR buffer, long len);
  97.  
  98. #define    MTRSTAT_IDLE        0
  99. #define    MTRSTAT_PROCESS    1
  100. #define    MTRSTAT_ERROR    2
  101. #define    MTRSTAT_STOP    3
  102. #define    MTRSTAT_PLAY    4
  103. #define    MTRSTAT_PAUSE    5
  104.  
  105. typedef struct {
  106.     int    state;
  107.  
  108.     int    framesProcessed;
  109.     int    framesSkipped;
  110.     int    numClockTics;
  111.  
  112.     LONGLONG    numBytesSaved;
  113. } MTRCAPINFO, *PMTRCAPINFO;
  114.  
  115. typedef    struct {
  116.     BOOL    isUsed;
  117.     long    actualSize;
  118.     long    bufferSize;
  119.     PSTR    bufferPtr;
  120. } MTRSTREAMPTR;
  121.  
  122. typedef    long (CALLBACK *MTRSTATUSPROC)(LPVOID pParam, int status, LPVOID info);
  123.  
  124. //==============================
  125. EXTERN_C const IID IID_IBaseSetup;
  126.  
  127. //
  128. DECLARE_INTERFACE_(IBaseSetup, IUnknown) {
  129.     STDMETHOD(Default)(THIS_ ) PURE;
  130.     STDMETHOD(RegSave)(THIS_ HKEY hKey) PURE;
  131.     STDMETHOD(RegLoad)(THIS_ HKEY hKey) PURE;
  132.  
  133.     STDMETHOD(Copy)(THIS_ IUnknown * pSetup) PURE;
  134. };
  135.  
  136. //==============================
  137. EXTERN_C const IID IID_IDuplicator;
  138.  
  139. //
  140. DECLARE_INTERFACE_(IDuplicator, IUnknown) {
  141.     STDMETHOD(Duplicate)(THIS_ IUnknown **) PURE;
  142. };
  143.  
  144. //==============================
  145. EXTERN_C const IID IID_IEnumSetup;
  146.  
  147. //
  148. DECLARE_INTERFACE_(IEnumSetup, IUnknown) {
  149.     STDMETHOD(Next)(THIS_ IBaseSetup **, LPIID) PURE;
  150.     STDMETHOD(Skip)(THIS_ int cSetup) PURE;
  151.     STDMETHOD(Reset)(THIS_ ) PURE;
  152. };
  153.  
  154. //==============================
  155. EXTERN_C const IID IID_IMuxerSetup;
  156.  
  157. //
  158. DECLARE_INTERFACE_(IMuxerSetup, IBaseSetup) {
  159.     STDMETHOD_(mpeg_stream_type, get_StreamType)(THIS_ ) PURE;
  160.     STDMETHOD(set_StreamType)(THIS_ mpeg_stream_type type) PURE;
  161. };
  162.  
  163. //==============================
  164. EXTERN_C const IID IID_IVMpegSetup;
  165.  
  166. typedef struct {
  167.     int    cbSize;
  168.     int    minQ;
  169.     int    maxQ;
  170.     int    initQ;
  171.     int    qGain;
  172.     int    qDelta;
  173. } MTRQUANT;
  174.  
  175. DECLARE_INTERFACE_(IVMpegSetup, IBaseSetup) {
  176. // main
  177.     STDMETHOD_(VSystem, get_VideoSystem)(THIS_ ) PURE;
  178.     STDMETHOD(set_VideoSystem)(THIS_ VSystem vsys) PURE;
  179.  
  180.     STDMETHOD_(DWORD, get_Bitrate)(THIS_ ) PURE;
  181.     STDMETHOD(set_Bitrate)(THIS_ DWORD bitrate) PURE;
  182.  
  183.     STDMETHOD_(mpeg_size, get_PictureSize)(THIS_ ) PURE;
  184.     STDMETHOD(set_PictureSize)(THIS_ mpeg_size size) PURE;
  185.  
  186.     STDMETHOD(get_PictureSize)(THIS_ SIZE * ) PURE;
  187.     STDMETHOD(set_PictureSize)(THIS_ SIZE * ) PURE;
  188.  
  189.     STDMETHOD_(WORD, get_N)(THIS_ ) PURE;
  190.     STDMETHOD_(WORD, get_M)(THIS_ ) PURE;
  191.     STDMETHOD(set_NM)(THIS_ WORD N, WORD M) PURE;
  192.  
  193.     STDMETHOD_(DWORD, get_PictureInterval)(THIS_ ) PURE;
  194.     STDMETHOD(set_PictureInterval)(DWORD interval) PURE;
  195.  
  196.     STDMETHOD_(DWORD, get_VBVSize)(THIS_ ) PURE;
  197.     STDMETHOD(set_VBVSize)(THIS_ DWORD size) PURE;
  198.  
  199.     STDMETHOD_(DWORD, get_VBVSizeKb)(THIS_ ) PURE;
  200.     STDMETHOD(set_VBVSizeKb)(THIS_ DWORD size) PURE;
  201.  
  202. // bitrate control
  203.     STDMETHOD_(WORD, get_IPercent)(THIS_ ) PURE;
  204.     STDMETHOD(set_IPercent)(THIS_ WORD persent) PURE;
  205.  
  206.     STDMETHOD_(WORD, get_PPercent)(THIS_ ) PURE;
  207.     STDMETHOD(set_PPercent)(THIS_ WORD persent) PURE;
  208.  
  209.     STDMETHOD_(WORD, get_BPercent)(THIS_ ) PURE;
  210.     STDMETHOD(set_BPercent)(THIS_ WORD persent) PURE;
  211.  
  212. // motion estimation
  213.     STDMETHOD_(BOOL, get_MotionDecision)(THIS_ ) PURE;
  214.     STDMETHOD(set_MotionDecision)(THIS_ BOOL isDecision) PURE;
  215.  
  216.     STDMETHOD_(WORD, get_MotionWidth)(THIS_ ) PURE;
  217.     STDMETHOD(set_MotionWidth)(THIS_ WORD width) PURE;
  218.  
  219.     STDMETHOD_(WORD, get_MotionHeight)(THIS_ ) PURE;
  220.     STDMETHOD(set_MotionHeight)(THIS_ WORD height) PURE;
  221.  
  222.     STDMETHOD_(BOOL, get_MotionPel)(THIS_ ) PURE;
  223.     STDMETHOD(set_MotionPel)(THIS_ BOOL isHalfPel) PURE;
  224.  
  225. // quality control
  226.     STDMETHOD_(int, get_PThreshold)(THIS_ ) PURE;
  227.     STDMETHOD(set_PThreshold)(THIS_ int val) PURE;
  228.  
  229.     STDMETHOD_(int, get_BThreshold)(THIS_ ) PURE;
  230.     STDMETHOD(set_BThreshold)(THIS_ int val) PURE;
  231.  
  232.     STDMETHOD_(WORD, get_QuantAlgorithm)(THIS_ ) PURE;
  233.     STDMETHOD(set_QuantAlgorithm)(THIS_ WORD qalg) PURE;
  234.  
  235. // realtime control
  236.     STDMETHOD(get_IQuant)(THIS_ MTRQUANT * q) PURE;
  237.     STDMETHOD(set_IQuant)(THIS_ MTRQUANT * q) PURE;
  238.  
  239.     STDMETHOD(get_PQuant)(THIS_ MTRQUANT * q) PURE;
  240.     STDMETHOD(set_PQuant)(THIS_ MTRQUANT * q) PURE;
  241.  
  242.     STDMETHOD(get_BQuant)(THIS_ MTRQUANT * q) PURE;
  243.     STDMETHOD(set_BQuant)(THIS_ MTRQUANT * q) PURE;
  244. };
  245.  
  246. //==============================
  247. EXTERN_C const IID IID_IAMpegSetup;
  248.  
  249. typedef    struct {
  250.     ampeg_type        bitrate;
  251.     ampeg_layer        layer;
  252.     audio_freq        freq;
  253.     ampeg_mode        mode;
  254. } MTRAMPEGFORMAT;
  255.  
  256. DECLARE_INTERFACE_(IAMpegSetup, IBaseSetup) {
  257.     STDMETHOD_(ampeg_type, get_BitrateType)(THIS_ ) PURE;
  258.     STDMETHOD(set_BitrateType)(THIS_ ampeg_type type) PURE;
  259.  
  260.     STDMETHOD_(DWORD, get_Bitrate)(THIS_ ) PURE;
  261.     STDMETHOD(set_Bitrate)(THIS_ DWORD bitrate) PURE;
  262.  
  263.     STDMETHOD_(ampeg_layer, get_Layer)(THIS_ ) PURE;
  264.     STDMETHOD(set_Layer)(THIS_ ampeg_layer layer) PURE;
  265.  
  266.     STDMETHOD_(audio_freq, get_SampleFrequency)(THIS_ ) PURE;
  267.     STDMETHOD(set_SampleFrequency)(THIS_ audio_freq freq) PURE;
  268.  
  269.     STDMETHOD_(ampeg_mode, get_Mode)(THIS_ ) PURE;
  270.     STDMETHOD(set_Mode)(THIS_ ampeg_mode mode) PURE;
  271.  
  272.     STDMETHOD_(long, EnumFormats)(MTRAMPEGFORMAT * pFormats, long cbFormats) PURE;
  273. };
  274.  
  275. //==============================
  276. EXTERN_C const IID IID_IVideoSetup;
  277.  
  278. DECLARE_INTERFACE_(IVideoSetup, IBaseSetup) {
  279.     STDMETHOD_(int, get_HUE)(THIS_ ) PURE;
  280.     STDMETHOD(set_HUE)(THIS_ int v) PURE;
  281.  
  282.     STDMETHOD_(int, get_SAT)(THIS_ ) PURE;
  283.     STDMETHOD(set_SAT)(THIS_ int v) PURE;
  284.  
  285.     STDMETHOD_(int, get_CONT)(THIS_ ) PURE;
  286.     STDMETHOD(set_CONT)(THIS_ int v) PURE;
  287.  
  288.     STDMETHOD_(int, get_BRIG)(THIS_ ) PURE;
  289.     STDMETHOD(set_BRIG)(THIS_ int v) PURE;
  290.  
  291.     STDMETHOD_(VSystem, get_System)(THIS_ ) PURE;
  292.     STDMETHOD(set_System)(THIS_ VSystem v) PURE;
  293.  
  294.     STDMETHOD_(int, get_Source)(THIS_ ) PURE;
  295.     STDMETHOD(set_Source)(THIS_ int v) PURE;
  296.  
  297.     STDMETHOD(get_Offset)(THIS_ POINT * v) PURE;
  298.     STDMETHOD(set_Offset)(THIS_ POINT * v) PURE;
  299.  
  300.     STDMETHOD(get_Size)(THIS_ SIZE * v) PURE;
  301.     STDMETHOD(set_Size)(THIS_ SIZE * v) PURE;
  302.  
  303.     STDMETHOD(get_Scale)(THIS_ POINT * v) PURE;
  304.     STDMETHOD(set_Scale)(THIS_ POINT * v) PURE;
  305.  
  306.     STDMETHOD_(int, get_HDelayShift)(THIS_ ) PURE;
  307.     STDMETHOD(set_HDelayShift)(THIS_ int shift) PURE;
  308.  
  309.     STDMETHOD_(int, get_Peaking)(THIS_ ) PURE;
  310.     STDMETHOD(set_Peaking)(THIS_ int val) PURE;
  311.  
  312.     STDMETHOD_(int, get_Delay)(THIS_ ) PURE;
  313.     STDMETHOD(set_Delay)(THIS_ int val) PURE;
  314.  
  315.     STDMETHOD_(int, get_Pre)(THIS_ ) PURE;
  316.     STDMETHOD(set_Pre)(THIS_ int val) PURE;
  317.  
  318.     STDMETHOD(Update)(THIS_ ) PURE;
  319. };
  320.  
  321. //==============================
  322. EXTERN_C const IID IID_IAudioSetup;
  323.  
  324. typedef    struct {
  325.     audio_freq        freq;
  326.     audio_mode        mode;
  327. } MTRAUDIOFORMAT;
  328.  
  329. DECLARE_INTERFACE_(IAudioSetup, IBaseSetup) {
  330.     STDMETHOD_(DWORD, get_SamplePerSecond)(THIS_ ) PURE;
  331.     STDMETHOD(set_SamplePerSecond)(THIS_ DWORD) PURE;
  332.  
  333.     STDMETHOD_(DWORD, get_NumberOfChannel)(THIS_ ) PURE;
  334.     STDMETHOD(set_NumberOfChannel)(THIS_ DWORD) PURE;
  335.  
  336.     STDMETHOD_(audio_freq, get_SampleFrequency)(THIS_ ) PURE;
  337.     STDMETHOD(set_SampleFrequency)(THIS_ audio_freq freq) PURE;
  338.  
  339.     STDMETHOD_(audio_mode, get_Mode)(THIS_ ) PURE;
  340.     STDMETHOD(set_Mode)(THIS_ audio_mode mode) PURE;
  341.  
  342.     STDMETHOD_(int, get_LineInVolume)(THIS_ ) PURE;
  343.     STDMETHOD(set_LineInVolume)(THIS_ int v) PURE;
  344.  
  345.     STDMETHOD_(int, get_LineInBalance)(THIS_ ) PURE;
  346.     STDMETHOD(set_LineInBalance)(THIS_ int v) PURE;
  347.  
  348.     STDMETHOD_(BOOL, get_LineInMute)(THIS_ ) PURE;
  349.     STDMETHOD(set_LineInMute)(THIS_ BOOL v) PURE;
  350.  
  351.     STDMETHOD_(int, get_AuxInVolume)(THIS_ ) PURE;
  352.     STDMETHOD(set_AuxInVolume)(THIS_ int v) PURE;
  353.  
  354.     STDMETHOD_(int, get_AuxInBalance)(THIS_ ) PURE;
  355.     STDMETHOD(set_AuxInBalance)(THIS_ int v) PURE;
  356.  
  357.     STDMETHOD_(BOOL, get_AuxInMute)(THIS_ ) PURE;
  358.     STDMETHOD(set_AuxInMute)(THIS_ BOOL v) PURE;
  359.  
  360.     STDMETHOD_(int, get_LoopVolume)(THIS_ ) PURE;
  361.     STDMETHOD(set_LoopVolume)(THIS_ int v) PURE;
  362.  
  363.     STDMETHOD_(int, get_LoopBalance)(THIS_ ) PURE;
  364.     STDMETHOD(set_LoopBalance)(THIS_ int v) PURE;
  365.  
  366.     STDMETHOD_(BOOL, get_LoopMute)(THIS_ ) PURE;
  367.     STDMETHOD(set_LoopMute)(THIS_ BOOL v) PURE;
  368.  
  369.     STDMETHOD_(int, get_OutVolume)(THIS_ ) PURE;
  370.     STDMETHOD(set_OutVolume)(THIS_ int v) PURE;
  371.  
  372.     STDMETHOD_(int, get_OutBalance)(THIS_ ) PURE;
  373.     STDMETHOD(set_OutBalance)(THIS_ int v) PURE;
  374.  
  375.     STDMETHOD_(BOOL, get_OutMute)(THIS_ ) PURE;
  376.     STDMETHOD(set_OutMute)(THIS_ BOOL v) PURE;
  377.  
  378.     STDMETHOD_(long, EnumFormats)(MTRAUDIOFORMAT * pFormats, long cbFormats) PURE;
  379.  
  380.     STDMETHOD(Update)(THIS_ ) PURE;
  381. };
  382.  
  383. //==============================
  384. EXTERN_C const IID IID_IFilterSetup;
  385.  
  386. //
  387. DECLARE_INTERFACE_(IFilterSetup, IBaseSetup) {
  388.     STDMETHOD_(int, get_Smooth)(THIS_ ) PURE;
  389.     STDMETHOD(set_Smooth)(THIS_ int val) PURE;
  390.  
  391.     STDMETHOD(Update)(THIS_ ) PURE;
  392. };
  393.  
  394. //==============================
  395. EXTERN_C const IID IID_ITemplate;
  396.  
  397. DECLARE_INTERFACE_(ITemplate, IUnknown) {
  398.     STDMETHOD(QueryTemplate)(THIS_ ) PURE;
  399.     STDMETHOD(NextTemplate)(THIS_ PSTR pName, long cbName) PURE;
  400.  
  401.     STDMETHOD(OpenTemplate)(THIS_ PSTR pName, HKEY * phKey) PURE;
  402.     STDMETHOD(CreateTemplate)(THIS_ PSTR pName, HKEY * phKey) PURE;
  403.     STDMETHOD(RemoveTemplate)(THIS_ PSTR pName) PURE;
  404. };
  405.  
  406. //==============================
  407. EXTERN_C const IID IID_IVideoPreview;
  408.  
  409. #define    MTRP_555    0x0001
  410. #define    MTRP_565    0x0002
  411. #define    MTRP_SIZE    0x0004
  412. #define    MTRP_MOVE    0x0008
  413. #define    MTRP_YUV2    0x0010
  414. #define    MTRP_DIRECTX 0x0020
  415.  
  416. typedef    struct {
  417.     long    cbSize;
  418.     DWORD    dwCaps;
  419.     SIZE    minSize;
  420.     SIZE    maxSize;
  421.     SIZE    defaultSize;
  422. } MTRPREVIEW_CAPS;
  423.  
  424. DECLARE_INTERFACE_(IVideoPreview, IUnknown) {
  425.     STDMETHOD(Open)(THIS_ HWND hWndParent) PURE;
  426.     STDMETHOD(Close)(THIS_) PURE;
  427.     STDMETHOD(Enable)(THIS_ BOOL flag) PURE;
  428.     STDMETHOD(GetCaps)(THIS_ MTRPREVIEW_CAPS * caps) PURE;
  429.     STDMETHOD_(DWORD, GetCapsD)(THIS_ ) PURE;
  430.     STDMETHOD_(BOOL, GetStatus)(THIS_ ) PURE;
  431.  
  432.     STDMETHOD(GetWnd)(THIS_ HWND * hWnd) PURE;
  433.     STDMETHOD(Update)(THIS_ ) PURE;
  434.  
  435.     STDMETHOD(GetSize)(THIS_ SIZE * rc) PURE;
  436.     STDMETHOD(SetSize)(THIS_ SIZE * rc) PURE;
  437.  
  438.     STDMETHOD(GetVideoSize)(THIS_ SIZE * rc) PURE;
  439.     STDMETHOD(SetVideoSize)(THIS_ SIZE * rc) PURE;
  440. };
  441.  
  442. //=================================================================
  443. // IPropertyView
  444. EXTERN_C const IID IID_IPropertyView;
  445.  
  446. DECLARE_INTERFACE_(IPropertyView, IUnknown) {
  447.     STDMETHOD(OnDataChange)(THIS_ ) PURE;
  448. };
  449.  
  450. //=================================================================
  451. // IRegPropertyPage
  452. EXTERN_C const IID IID_IPropertyViewSite;
  453.  
  454. DECLARE_INTERFACE_(IPropertyViewSite, IUnknown) {
  455.     STDMETHOD(RegView)(THIS_ IUnknown* pView) PURE;
  456.     STDMETHOD(UnregView)(THIS_ IUnknown* pView) PURE;
  457.     STDMETHOD(SetDataChange)(THIS_ ) PURE;
  458. };
  459.  
  460. //==============================
  461. EXTERN_C const IID IID_IHardwareInfo;
  462.  
  463. //
  464. DECLARE_INTERFACE_(IHardwareInfo, IUnknown) {
  465.     STDMETHOD_(int, get_ICC_version)(THIS_ ) PURE;
  466.     STDMETHOD_(int, get_MEC_version)(THIS_ ) PURE;
  467.     STDMETHOD_(int, get_HW_version)(THIS_ ) PURE;
  468.  
  469.     STDMETHOD_(int, get_version)(THIS_ ) PURE;
  470. };
  471.  
  472. //=================================================================
  473. // IMtrStreamCapture
  474. EXTERN_C const IID IID_IMtrStreamCapture;
  475.  
  476. DECLARE_INTERFACE_(IMtrStreamCapture, IUnknown) {
  477.     STDMETHOD(Open)(THIS_ ) PURE;
  478.     STDMETHOD(Close)(THIS_ ) PURE;
  479.  
  480.     STDMETHOD(Start)(THIS_ ) PURE;
  481.     STDMETHOD(Stop)(THIS_ ) PURE;
  482.     STDMETHOD(Pause)(THIS_ ) PURE;
  483.  
  484.     STDMETHOD(OpenStreamEx)(THIS_ ) PURE;
  485.     STDMETHOD(CloseStreamEx)(THIS_ ) PURE;
  486.     STDMETHOD(StreamGetPtr)(THIS_ MTRSTREAMPTR * meBuf, BOOL wait) PURE;
  487.     STDMETHOD(StreamReleasePtr)(THIS_ MTRSTREAMPTR * meBuf) PURE;
  488.     STDMETHOD_(DWORD, StreamGetLength)(THIS_ ) PURE;
  489.     STDMETHOD_(HANDLE, GetWaitHandle)(THIS_ ) PURE;
  490.     
  491.     STDMETHOD_(DWORD, StreamGetPageSize)(THIS_ ) PURE;
  492.     STDMETHOD_(DWORD, StreamGetPageCount)(THIS_ ) PURE;
  493.     STDMETHOD(StreamSetPageBuffer)(THIS_ DWORD cbPageSize, DWORD nPageCount) PURE;
  494.  
  495.     STDMETHOD(GetVMpegSetup)(THIS_ IVMpegSetup ** ppVMpeg) PURE;
  496.     STDMETHOD(GetAMpegSetup)(THIS_ IAMpegSetup ** ppAMpeg) PURE;
  497.     STDMETHOD(GetVideoSetup)(THIS_ IVideoSetup ** ppVideo) PURE;
  498.     STDMETHOD(GetAudioSetup)(THIS_ IAudioSetup ** ppAudio) PURE;
  499.     STDMETHOD(GetVideoPreview)(THIS_ IVideoPreview ** ppPreview) PURE;
  500.     STDMETHOD(GetMuxerSetup)(THIS_ IMuxerSetup ** ppMuxer) PURE;
  501.  
  502.     STDMETHOD(DefaultParam)(THIS_ ) PURE;
  503.     STDMETHOD(SaveParam)(THIS_ ) PURE;
  504.     STDMETHOD(LoadParam)(THIS_ ) PURE;
  505.  
  506.     STDMETHOD(DlgParam)(THIS_ HWND hwndParent) PURE;
  507.     STDMETHOD(GetCapInfo)(THIS_ MTRCAPINFO * capinfo) PURE;
  508.     STDMETHOD(GetLastError)(THIS_ PSTR str, int len) PURE;
  509. };
  510.  
  511. //=================================================================
  512. // IMtrCapture2
  513. EXTERN_C const IID IID_IMtrCapture2;
  514.  
  515. DECLARE_INTERFACE_(IMtrCapture2, IUnknown) {
  516.     STDMETHOD(Open)(THIS_ ) PURE;
  517.     STDMETHOD(Close)(THIS_ ) PURE;
  518.     STDMETHOD(DefaultParam)(THIS_ ) PURE;
  519.     STDMETHOD(SaveParam)(THIS_ ) PURE;
  520.     STDMETHOD(LoadParam)(THIS_ ) PURE;
  521.  
  522.     STDMETHOD(DlgParam)(THIS_ HWND hwndParent) PURE;
  523.     STDMETHOD(GetFileName)(THIS_ PSTR fileName, int fileNameLen) PURE;
  524.     STDMETHOD(SetFileName)(THIS_ PSTR fileName) PURE;
  525.     STDMETHOD(SetOutput)(THIS_ MTRIO ioproc, LPVOID ioinst) PURE;
  526.  
  527. // WM_MTRSTATUS
  528.     STDMETHOD(SetCallbackWnd)(THIS_ HWND hWnd, int statmsg) PURE;
  529.     STDMETHOD(GetCapInfo)(THIS_ MTRCAPINFO * capinfo) PURE;
  530.  
  531.     STDMETHOD(OpenStream)(THIS_ ) PURE;
  532.     STDMETHOD(CloseStream)(THIS_ ) PURE;
  533.  
  534.     STDMETHOD(OpenStreamEx)(THIS_ ) PURE;
  535.     STDMETHOD(CloseStreamEx)(THIS_ ) PURE;
  536.     STDMETHOD(StreamGetPtr)(THIS_ MTRSTREAMPTR * meBuf, BOOL wait) PURE;
  537.     STDMETHOD(StreamReleasePtr)(THIS_ MTRSTREAMPTR * meBuf) PURE;
  538.     STDMETHOD_(HANDLE, GetWaitHandle)(THIS_ ) PURE;
  539.  
  540.     STDMETHOD(Start)(THIS_ ) PURE;
  541.     STDMETHOD(Stop)(THIS_ ) PURE;
  542.     STDMETHOD(Pause)(THIS_ ) PURE;
  543.  
  544.     STDMETHOD(GetLastError)(THIS_ PSTR str, int len) PURE;
  545.  
  546.     STDMETHOD(GetVMpegSetup)(THIS_ IVMpegSetup ** ppVMpeg) PURE;
  547.     STDMETHOD(GetAMpegSetup)(THIS_ IAMpegSetup ** ppAMpeg) PURE;
  548.     STDMETHOD(GetVideoSetup)(THIS_ IVideoSetup ** ppVideo) PURE;
  549.     STDMETHOD(GetAudioSetup)(THIS_ IAudioSetup ** ppAudio) PURE;
  550.     STDMETHOD(GetVideoPreview)(THIS_ IVideoPreview ** ppPreview) PURE;
  551.     STDMETHOD(GetMuxerSetup)(THIS_ IMuxerSetup ** ppMuxer) PURE;
  552. };
  553.  
  554. //=================================================================
  555. // IMtrCapture
  556. EXTERN_C const IID IID_IMtrCapture;
  557.  
  558. DECLARE_INTERFACE_(IMtrCapture, IMtrCapture2) {
  559.     STDMETHOD(SaveParamTemplate)(THIS_ PSTR name) PURE;
  560.     STDMETHOD(LoadParamTemplate)(THIS_ PSTR name) PURE;
  561.     STDMETHOD(SaveParamEx)(THIS_ PVOID root, PSTR keyname) PURE;
  562.     STDMETHOD(LoadParamEx)(THIS_ PVOID root, PSTR keyname) PURE;
  563.  
  564.     STDMETHOD_(int, GetFileType)(THIS_ ) PURE;
  565.  
  566.     STDMETHOD(OpenPreview)(THIS_ HWND hwndParent) PURE;
  567.     STDMETHOD(OpenPreviewEx)(THIS_ HWND hwnd, BOOL isChild) PURE;
  568.     STDMETHOD_(HWND, GetPreviewWnd)(THIS_ ) PURE;
  569.     STDMETHOD(UpdatePreviewWnd)(THIS_ ) PURE;
  570.  
  571.     STDMETHOD_(DWORD, GetPreviewWndCaps)(THIS_ ) PURE;
  572.     STDMETHOD(Preview)(THIS_ BOOL flag) PURE;
  573.     STDMETHOD_(BOOL, GetPreviewStatus)(THIS_ ) PURE;
  574.     STDMETHOD(ClosePreview)(THIS_ ) PURE;
  575. };
  576.  
  577. //=================================================================
  578. // IMtrCapture
  579. EXTERN_C const IID IID_IMtrFrameCapture;
  580.  
  581. #define    MTRDATAHDR_DEFINED
  582. typedef    struct MTRDATAHDR_TAG {
  583.     BOOL    isUsed;
  584.     PVOID    pBuffer;
  585.     long    cbTotal;
  586.     long    cbUsed;
  587.     long    cbOffset;
  588.     LONGLONG    timeRef;
  589.     MTRDATAHDR_TAG * pNext;
  590.     char    Extended[32];
  591. } MTRDATAHDR;
  592.  
  593. DECLARE_INTERFACE_(IMtrFrameCapture, IUnknown) {
  594.     STDMETHOD(Open)(THIS_ ) PURE;
  595.     STDMETHOD(Close)(THIS_ ) PURE;
  596.     STDMETHOD(DefaultParam)(THIS_ ) PURE;
  597.     STDMETHOD(SaveParam)(THIS_ ) PURE;
  598.     STDMETHOD(LoadParam)(THIS_ ) PURE;
  599.     STDMETHOD(DlgParam)(THIS_ HWND hwndParent) PURE;
  600.  
  601.     STDMETHOD(OpenStreamEx)(THIS_ ) PURE;
  602.     STDMETHOD(CloseStreamEx)(THIS_ ) PURE;
  603.  
  604.     STDMETHOD_(HANDLE, GetWaitHandle)(THIS_ ) PURE;
  605.  
  606.     STDMETHOD(Start)(THIS_ ) PURE;
  607.     STDMETHOD(Stop)(THIS_ ) PURE;
  608.     STDMETHOD(Pause)(THIS_ ) PURE;
  609.  
  610.     STDMETHOD(GetLastError)(THIS_ PSTR str, int len) PURE;
  611.  
  612.     STDMETHOD(GetVMpegSetup)(THIS_ IVMpegSetup ** ppVMpeg) PURE;
  613.     STDMETHOD(GetMuxerSetup)(THIS_ IMuxerSetup ** ppMuxer) PURE;
  614.     STDMETHOD(GetVideoSetup)(THIS_ IVideoSetup ** ppVideo) PURE;
  615.     STDMETHOD(GetAudioSetup)(THIS_ IAudioSetup ** ppAudio) PURE;
  616.     STDMETHOD(GetVideoPreview)(THIS_ IVideoPreview ** ppPreview) PURE;
  617.  
  618.     STDMETHOD(GetVideoBuffer)(THIS_ MTRDATAHDR ** ppBuf) PURE;
  619.     STDMETHOD(ReleaseVideoBuffer)(THIS_ MTRDATAHDR * pBuf) PURE;
  620.     STDMETHOD(SetVideoBufferCount)(THIS_ long Count) PURE;
  621.     STDMETHOD_(long, GetVideoBufferCount)(THIS_ ) PURE;
  622.     STDMETHOD(SetVideoBufferOffset)(THIS_ long offset) PURE;
  623.     STDMETHOD_(long, GetVideoBufferOffset)(THIS_ ) PURE;
  624.  
  625.     STDMETHOD(GetAudioBuffer)(THIS_ MTRDATAHDR ** ppBuf) PURE;
  626.     STDMETHOD(ReleaseAudioBuffer)(THIS_ MTRDATAHDR * pBuf) PURE;
  627.     STDMETHOD(SetAudioBufferCount)(THIS_ long Count) PURE;
  628.     STDMETHOD_(long, GetAudioBufferCount)(THIS_ ) PURE;
  629.     STDMETHOD(SetAudioBufferLength)(THIS_ long cbSize) PURE;
  630.     STDMETHOD_(long, GetAudioBufferLength)(THIS_ ) PURE;
  631.     STDMETHOD(SetAudioBufferOffset)(THIS_ long offset) PURE;
  632.     STDMETHOD_(long, GetAudioBufferOffset)(THIS_ ) PURE;
  633. };
  634.  
  635. //=================================================================
  636. // IMtrAccel
  637.  
  638. EXTERN_C const IID IID_IMtrAccel;
  639.  
  640. DECLARE_INTERFACE_(IMtrAccel, IUnknown) {
  641.     STDMETHOD(Open)(THIS_ ) PURE;
  642.     STDMETHOD(Close)(THIS_ ) PURE;
  643.  
  644.     STDMETHOD(DefaultParam)(THIS_ ) PURE;
  645.     STDMETHOD(SaveParam)(THIS_ ) PURE;
  646.     STDMETHOD(LoadParam)(THIS_ ) PURE;
  647.     STDMETHOD(SaveParamTemplate)(THIS_ PSTR name) PURE;
  648.     STDMETHOD(LoadParamTemplate)(THIS_ PSTR name) PURE;
  649.     STDMETHOD(SaveParamEx)(THIS_ HKEY root, PSTR keyname) PURE;
  650.     STDMETHOD(LoadParamEx)(THIS_ HKEY root, PSTR keyname) PURE;
  651.  
  652.     STDMETHOD(SetSize)(THIS_ ULONG width, ULONG height) PURE;
  653.     STDMETHOD(SetBitrate)(THIS_ ULONG bitrate) PURE;
  654.     STDMETHOD_(int, GetFileType)(THIS_ ) PURE;
  655.  
  656.     STDMETHOD(DlgParam)(THIS_ HWND hwndParent) PURE;
  657.  
  658.     STDMETHOD(OpenStreamEx)(THIS_ ) PURE;
  659.     STDMETHOD(CloseStreamEx)(THIS_ ) PURE;
  660.     STDMETHOD(BeginCompression)(THIS_ ) PURE;
  661.     STDMETHOD(EndCompression)(THIS_ ) PURE;
  662.  
  663.     STDMETHOD(StreamGetPtr)(THIS_ MTRSTREAMPTR * meBuf, BOOL wait) PURE;
  664.     STDMETHOD(StreamReleasePtr)(THIS_ MTRSTREAMPTR * meBuf) PURE;
  665.     STDMETHOD_(HANDLE, GetWaitHandle)(THIS_ ) PURE;
  666.  
  667.     STDMETHOD(AddFrame)(THIS_ BITMAPINFOHEADER * biHdr, PSTR biSrc) PURE;
  668.  
  669.     STDMETHOD(AudioOpen)(THIS_ PVOID audioInHeader) PURE;
  670.     STDMETHOD(AudioClose)(THIS_ ) PURE;
  671.     STDMETHOD(AddAudio)(THIS_ PSTR pData, int length) PURE;
  672.  
  673.     STDMETHOD(GetLastError)(THIS_ PSTR str, int len) PURE;
  674.  
  675.     STDMETHOD(GetVMpegSetup)(THIS_ IVMpegSetup ** ppVMpeg) PURE;
  676.     STDMETHOD(GetAMpegSetup)(THIS_ IAMpegSetup ** ppAMpeg) PURE;
  677.     STDMETHOD(GetMuxerSetup)(THIS_ IMuxerSetup ** ppMuxer) PURE;
  678. };
  679.  
  680. #endif    //__MTRIF__
  681.