home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / C++ / FreeCommandLineTools.exe / Include / cutlist.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-31  |  5.7 KB  |  202 lines

  1. //==========================================================================;
  2. //
  3. //  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  4. //  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  5. //  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
  6. //  PURPOSE.
  7. //
  8. //  Copyright (c) 1992 - 1997  Microsoft Corporation.  All Rights Reserved.
  9. //
  10. //--------------------------------------------------------------------------;
  11.  
  12. // CutList related definitions and interfaces for ActiveMovie
  13.  
  14. #ifndef __CUTLIST__
  15. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  16. #define __CUTLIST__
  17.  
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif // __cplusplus
  21.  
  22. #define CL_DEFAULT_TIME            (-1L)
  23.  
  24. enum CL_ELEM_STATUS {
  25.     CL_NOT_PLAYED = 0,
  26.     CL_PLAYING = 1,
  27.     CL_FINISHED = 2,
  28.     CL_STATE_INVALID = 3,
  29.     CL_STATE_MASK = CL_STATE_INVALID,
  30.     CL_WAIT_FOR_STATE = 0xF0000000
  31. };
  32.  
  33. enum CL_ELEM_FLAGS{
  34.     CL_ELEM_FIRST = 1,
  35.     CL_ELEM_LAST = 2,
  36.     CL_ELEM_NULL = 4,
  37.     CL_ELEM_ALL  = 0xFFFFFFFF,
  38.     CL_ELEM_NONE = 0x0L
  39. };
  40.  
  41.  
  42. #ifndef __IAMCutListElement_INTERFACE_DEFINED__
  43. #define __IAMCutListElement_INTERFACE_DEFINED__
  44. #define __IAMFileCutListElement_INTERFACE_DEFINED__
  45. #define __IAMVideoCutListElement_INTERFACE_DEFINED__
  46. #define __IAMAudioCutListElement_INTERFACE_DEFINED__
  47.  
  48. interface IAMCutListElement : public IUnknown
  49. {
  50. public:
  51.         virtual HRESULT __stdcall GetElementStartPosition( 
  52.             /* [out] */ REFERENCE_TIME *pmtStart) = 0;
  53.         
  54.         virtual HRESULT __stdcall GetElementDuration( 
  55.             /* [out] */ REFERENCE_TIME *pmtDuration) = 0;
  56.         
  57.         virtual HRESULT __stdcall IsFirstElement( void ) = 0;
  58.         
  59.         virtual HRESULT __stdcall IsLastElement( void ) = 0; 
  60.         
  61.         virtual HRESULT __stdcall IsNull( void ) = 0;
  62.         
  63.         virtual HRESULT __stdcall ElementStatus( 
  64.             DWORD *pdwStatus,
  65.             DWORD dwTimeoutMs) = 0;
  66.         
  67. };
  68.  
  69.  
  70. interface IAMFileCutListElement : public IUnknown
  71. {
  72. public:
  73.         virtual HRESULT __stdcall GetFileName( 
  74.             /* [out] */ LPWSTR *ppwstrFileName) = 0;
  75.         
  76.         virtual HRESULT __stdcall GetTrimInPosition( 
  77.             /* [out] */ REFERENCE_TIME *pmtTrimIn) = 0;
  78.         
  79.         virtual HRESULT __stdcall GetTrimOutPosition( 
  80.             /* [out] */ REFERENCE_TIME *pmtTrimOut) = 0;
  81.         
  82.         virtual HRESULT __stdcall GetOriginPosition( 
  83.             /* [out] */ REFERENCE_TIME *pmtOrigin) = 0;
  84.         
  85.         virtual HRESULT __stdcall GetTrimLength( 
  86.             /* [out] */ REFERENCE_TIME *pmtLength) = 0;
  87.         
  88.         virtual HRESULT __stdcall GetElementSplitOffset( 
  89.             /* [out] */ REFERENCE_TIME *pmtOffset) = 0;
  90.         
  91. };
  92.  
  93.  
  94. interface IAMVideoCutListElement : public IUnknown
  95. {
  96. public:
  97.         virtual HRESULT __stdcall IsSingleFrame( void) = 0;
  98.         
  99.         virtual HRESULT __stdcall GetStreamIndex( 
  100.             /* [out] */ DWORD *piStream) = 0;
  101.         
  102. };
  103.     
  104.  
  105. interface IAMAudioCutListElement : public IUnknown
  106. {
  107. public:
  108.         virtual HRESULT __stdcall GetStreamIndex( 
  109.             /* [out] */ DWORD *piStream) = 0;
  110.         
  111.         virtual HRESULT __stdcall HasFadeIn( void) = 0;
  112.         
  113.         virtual HRESULT __stdcall HasFadeOut( void) = 0;
  114.         
  115. };
  116.  
  117. #endif        // #ifndef IAMCutListElement
  118.  
  119.  
  120. interface IStandardCutList : public IUnknown
  121. {
  122.     public:
  123.         virtual HRESULT __stdcall AddElement(
  124.             /* [in] */        IAMCutListElement    *pElement,
  125.             /* [in] */        REFERENCE_TIME    mtStart,
  126.             /* [in] */        REFERENCE_TIME    mtDuration)=0;
  127.  
  128.         virtual HRESULT __stdcall RemoveElement(
  129.             /* [in] */        IAMCutListElement    *pElement) = 0;
  130.  
  131.         virtual HRESULT __stdcall GetFirstElement(
  132.             /* [out] */        IAMCutListElement    **ppElement)=0;
  133.         virtual HRESULT __stdcall GetLastElement(
  134.             /* [out] */        IAMCutListElement    **ppElement)=0;
  135.         virtual HRESULT __stdcall GetNextElement(
  136.             /* [out] */        IAMCutListElement    **ppElement)=0;
  137.         virtual HRESULT __stdcall GetPreviousElement(
  138.             /* [out] */        IAMCutListElement    **ppElement)=0;
  139.         
  140.         virtual HRESULT __stdcall GetMediaType(
  141.             /* [out] */        AM_MEDIA_TYPE *pmt)=0;
  142.         virtual HRESULT __stdcall SetMediaType(
  143.             /* [in] */        AM_MEDIA_TYPE *pmt)=0;
  144. };
  145.  
  146.  
  147. interface IFileClip : public IUnknown
  148. {
  149.     public:
  150.         virtual HRESULT __stdcall SetFileAndStream(
  151.             /* [in] */        LPWSTR    wstrFileName,
  152.             /* [in] */        DWORD    streamNum) = 0;
  153.         
  154.         virtual HRESULT __stdcall CreateCut(
  155.             /* [out] */        IAMCutListElement    **ppElement,
  156.             /* [in] */        REFERENCE_TIME    mtTrimIn,
  157.             /* [in] */        REFERENCE_TIME    mtTrimOut,
  158.             /* [in] */        REFERENCE_TIME    mtOrigin,
  159.             /* [in] */        REFERENCE_TIME    mtLength,
  160.             /* [in] */        REFERENCE_TIME    mtOffset) = 0;
  161.  
  162.         virtual HRESULT __stdcall GetMediaType(
  163.             /* [out] */        AM_MEDIA_TYPE    *pmt) = 0;
  164. };
  165.  
  166. interface ICutListGraphBuilder : public IUnknown
  167. {
  168. public:
  169.         virtual HRESULT __stdcall SetFilterGraph(
  170.             /*[in]*/    IGraphBuilder    *pFilterGraph)=0;
  171.  
  172.         virtual HRESULT __stdcall GetFilterGraph(
  173.             /*[out]*/    IGraphBuilder    **ppFilterGraph)=0;
  174.         
  175.         virtual HRESULT __stdcall AddCutList(
  176.             /*[in]*/    IStandardCutList     *pCutList,
  177.             /*[out]*/    IPin            **ppPin)=0;
  178.         
  179.         virtual HRESULT __stdcall RemoveCutList(
  180.             /*[in]*/    IStandardCutList     *pCutList)=0;
  181.         
  182.         virtual HRESULT __stdcall SetOutputFileName(
  183.             /*[in]*/    const GUID    *pType,
  184.             /*[in]*/    LPCOLESTR    lpwstrFile,
  185.             /*[in]*/    IBaseFilter    **ppf,
  186.             /*[in]*/    IFileSinkFilter    **pSink) = 0;
  187.         
  188.         virtual HRESULT __stdcall Render(void) = 0;
  189.  
  190.         virtual HRESULT __stdcall GetElementFlags(
  191.             /*[in]*/    IAMCutListElement *pElement,
  192.             /*[out]*/    LPDWORD lpdwFlags) = 0;
  193.         
  194. };
  195.  
  196.  
  197. #ifdef __cplusplus
  198. }
  199. #endif // __cplusplus
  200. #pragma option pop /*P_O_Pop*/
  201. #endif // __CUTLIST__
  202.