iamovie.idl
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:5k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //------------------------------------------------------------------------------
  2. // File: IAMovie.idl
  3. //
  4. // Desc: 
  5. //
  6. // Copyright (c) 1992 - 2000, Microsoft Corporation.  All rights reserved.
  7. //------------------------------------------------------------------------------
  8. [
  9. object,
  10. uuid(359ace10-7688-11cf-8b23-00805f6cef60),
  11. pointer_default(unique)
  12. ]
  13. interface IAMovie : IFilterGraph
  14. {
  15.         // IGraphBuilder
  16.         // Connect these two pins directly or indirectly, using transform filters
  17.         // if necessary.
  18.         HRESULT Connect
  19.         ( [in] IPin * ppinOut,    // the output pin
  20.           [in] IPin * ppinIn      // the input pin
  21.         );
  22.         // Connect this output pin directly or indirectly, using transform filters
  23.         // if necessary to something that will render it.
  24.         HRESULT Render
  25.         ( [in] IPin * ppinOut     // the output pin
  26.         );
  27.         // IMediaControl methods
  28.         HRESULT Run();
  29.         HRESULT Pause();
  30.         HRESULT Stop();
  31.         //returns the state. same semantics as IMediaFilter::GetState
  32.         HRESULT GetState(
  33.                     [in] LONG msTimeout,
  34.                     [out] FILTER_STATE* pfs);
  35.         // adds and connects filters needed to play the specified file
  36.         HRESULT RenderFile(
  37.                     [in] LPCWSTR strFilename);
  38.         // adds to the graph the source filter that can read this file,
  39.         // and returns an IFilterInfo object for it
  40.         HRESULT AddSourceFilter(
  41.                     [in] LPCWSTR strFilename,
  42.                     [out] IBaseFilter ** ppUnk);
  43.         // get back the event handle. This is manual-reset
  44.         // (don't - it's reset by the event mechanism) and remains set
  45.         // when events are queued, and reset when the queue is empty.
  46.         HRESULT GetEventHandle(
  47.                         [out] HEVENT * hEvent);
  48.         // remove the next event notification from the head of the queue and
  49.         // return it. Waits up to msTimeout millisecs if there are no events.
  50.         // if a timeout occurs without any events, this method will return
  51.         // E_ABORT, and the value of the event code and other parameters
  52.         // is undefined.
  53.         HRESULT GetEvent(
  54.                         [out] long * lEventCode,
  55.                         [out] long * lParam1,
  56.                         [out] long * lParam2,
  57.                         [in] long msTimeout
  58.                         );
  59.         // Calls GetEvent repeatedly discarding events until it finds a
  60.         // completion event (EC_COMPLETE, EC_ERRORABORT, or EC_USERABORT).
  61.         // The completion event is removed from the queue and returned
  62.         // in pEvCode. Note that the object is still in running mode until
  63.         // a Pause or Stop call is made.
  64.         // If the timeout occurs, *pEvCode will be 0 and E_ABORT will be
  65.         // returned.
  66.         HRESULT WaitForCompletion(
  67.                         [in] long msTimeout,
  68.                         [out] long * pEvCode);
  69.         // cancels any system handling of the specified event code
  70.         // and ensures that the events are passed straight to the application
  71.         // (via GetEvent) and not handled. A good example of this is
  72.         // EC_REPAINT: default handling for this ensures the painting of the
  73.         // window and does not get posted to the app.
  74.         HRESULT CancelDefaultHandling(
  75.                         [in] long lEvCode);
  76.         // restore the normal system default handling that may have been
  77.         // cancelled by CancelDefaultHandling().
  78.         HRESULT RestoreDefaultHandling( [in] long lEvCode);
  79.         // properties
  80.         HRESULT get_Duration(
  81.                     [out] REFTIME* plength);
  82.         HRESULT put_CurrentPosition(
  83.                     [in] REFTIME llTime);
  84.         HRESULT get_CurrentPosition(
  85.                     [out] REFTIME* pllTime);
  86.         HRESULT get_StopTime(
  87.                     [out] REFTIME* pllTime);
  88.         HRESULT put_StopTime(
  89.                     [in] REFTIME llTime);
  90.         HRESULT get_PrerollTime(
  91.                     [out] REFTIME* pllTime);
  92.         HRESULT put_PrerollTime(
  93.                     [in] REFTIME llTime);
  94.         HRESULT put_Rate(
  95.                     [in] double dRate);
  96.         HRESULT get_Rate(
  97.                     [out] double * pdRate);
  98. /* New methods */
  99. HRESULT RemoveAllFilters();
  100. HRESULT Play();
  101. HRESULT PlayFile([in] LPCWSTR strFilename);
  102. HRESULT EnumFiltersByInterface( [in] REFIID riid, [out] IEnumFilters ** ppEnum );
  103. HRESULT EnumPins( [out] IEnumPins ** ppEnum );
  104. HRESULT EnumPinsIn( [out] IEnumPins ** ppEnum );
  105. HRESULT EnumPinsOut( [out] IEnumPins ** ppEnum );
  106. HRESULT RenderAll();
  107. HRESULT RenderNewFile( [in] LPCWSTR strFilename);
  108. // Free any resources associated with the parameters to an event.
  109.         // Event parameters may be LONGs, IUnknown* or BSTR. No action
  110.         // is taken with LONGs. IUnknown are passed addrefed and need a
  111.         // Release call. BSTR are allocated by the task allocator and will be
  112.         // freed by calling the task allocator.
  113.         HRESULT FreeEventParams(
  114.          [in] long lEvCode,
  115.                         [in] long lParam1,
  116.                         [in] long lParam2);
  117. }