rmarendr.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:8k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /****************************************************************************
  2.  * 
  3.  *  $Id: rmarendr.h,v 1.1 2003/05/30 02:18:01 gabest Exp $
  4.  *  
  5.  *  Copyright (C) 1995-1999 RealNetworks, Inc. All rights reserved.
  6.  *
  7.  *  http://www.real.com/devzone
  8.  *
  9.  *  This program contains proprietary 
  10.  *  information of Progressive Networks, Inc, and is licensed
  11.  *  subject to restrictions on use and distribution.
  12.  *
  13.  *
  14.  *  RealMedia Architecture Rendering Interfaces.
  15.  *
  16.  */
  17. #ifndef _RMARENDR_H_
  18. #define _RMARENDR_H_
  19. /*
  20.  * Forward declarations of some interfaces defined or used here-in.
  21.  */
  22. typedef _INTERFACE IRMARenderer     IRMARenderer;
  23. typedef _INTERFACE IRMAStream     IRMAStream;
  24. typedef _INTERFACE IRMAStreamSource     IRMAStreamSource;
  25. typedef _INTERFACE IRMAPlayer     IRMAPlayer;
  26. typedef _INTERFACE IRMAClientEngine     IRMAClientEngine;
  27. /****************************************************************************
  28.  * 
  29.  *  Interface:
  30.  *
  31.  * IRMARenderer
  32.  *
  33.  *  Purpose:
  34.  *
  35.  * Interface implemented by all renderers. Parts of this interface are
  36.  * called by the client engine to provide data packets to the 
  37.  * individual renderers.
  38.  *
  39.  *  IID_IRMARenderer:
  40.  *
  41.  * {00000300-0901-11d1-8B06-00A024406D59}
  42.  *
  43.  */
  44. DEFINE_GUID(IID_IRMARenderer, 0x00000300, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  45. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  46. #undef  INTERFACE
  47. #define INTERFACE   IRMARenderer
  48. typedef ULONG32 RMA_DISPLAY_TYPE;
  49. #define RMA_DISPLAY_NONE                    0x00000000
  50. #define RMA_DISPLAY_WINDOW                  0x00000001
  51. #define RMA_DISPLAY_SUPPORTS_RESIZE         0x00000002
  52. #define RMA_DISPLAY_SUPPORTS_FULLSCREEN     0x00000004
  53. #define RMA_DISPLAY_SUPPORTS_VIDCONTROLS    0x00000008
  54. DECLARE_INTERFACE_(IRMARenderer, IUnknown)
  55. {
  56.     /*
  57.      * IUnknown methods
  58.      */
  59.     STDMETHOD(QueryInterface) (THIS_
  60. REFIID riid,
  61. void** ppvObj) PURE;
  62.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  63.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  64.     /*
  65.      * IRMARenderer methods
  66.      */
  67.     /************************************************************************
  68.      * Method:
  69.      *     IRMARenderer::GetRendererInfo
  70.      * Purpose:
  71.      *     Returns information vital to the instantiation of rendering 
  72.      *     plugins.
  73.      */
  74.     STDMETHOD(GetRendererInfo) (THIS_
  75. REF(const char**)/*OUT*/ pStreamMimeTypes,
  76. REF(UINT32)  /*OUT*/ unInitialGranularity
  77. ) PURE;
  78.     /************************************************************************
  79.      * Method:
  80.      *     IRMARenderer::StartStream
  81.      * Purpose:
  82.      *     Called by client engine to inform the renderer of the stream it
  83.      *     will be rendering. The stream interface can provide access to
  84.      *     its source or player. This method also provides access to the 
  85.      *     primary client controller interface.
  86.      *
  87.      */
  88.     STDMETHOD(StartStream) (THIS_
  89. IRMAStream*     pStream,
  90. IRMAPlayer*     pPlayer) PURE;
  91.     /************************************************************************
  92.      * Method:
  93.      *     IRMARenderer::EndStream
  94.      * Purpose:
  95.      *     Called by client engine to inform the renderer that the stream
  96.      *     is was rendering is closed.
  97.      *
  98.      */
  99.     STDMETHOD(EndStream) (THIS) PURE;
  100.     /************************************************************************
  101.      * Method:
  102.      * IRMARenderer::OnHeader
  103.      * Purpose:
  104.      * Called by client engine when a header for this renderer is 
  105.      * available. The header will arrive before any packets.
  106.      *
  107.      */
  108.     STDMETHOD(OnHeader) (THIS_
  109. IRMAValues*     pHeader) PURE;
  110.     /************************************************************************
  111.      * Method:
  112.      *     IRMARenderer::OnPacket
  113.      * Purpose:
  114.      *     Called by client engine when a packet for this renderer is 
  115.      *     due.
  116.      *
  117.      */
  118.     STDMETHOD(OnPacket) (THIS_
  119. IRMAPacket*     pPacket,
  120. LONG32     lTimeOffset) PURE;
  121.     /************************************************************************
  122.      * Method:
  123.      *     IRMARenderer::OnTimeSync
  124.      * Purpose:
  125.      *     Called by client engine to inform the renderer of the current
  126.      *     time relative to the streams synchronized time-line. The 
  127.      *     renderer should use this time value to update its display or
  128.      *     render it's stream data accordingly.
  129.      *
  130.      */
  131.     STDMETHOD(OnTimeSync) (THIS_
  132. ULONG32     ulTime) PURE;
  133.     /************************************************************************
  134.      * Method:
  135.      *     IRMARenderer::OnPreSeek
  136.      * Purpose:
  137.      *     Called by client engine to inform the renderer that a seek is
  138.      *     about to occur. The render is informed the last time for the 
  139.      *     stream's time line before the seek, as well as the first new
  140.      *     time for the stream's time line after the seek will be completed.
  141.      *
  142.      */
  143.     STDMETHOD(OnPreSeek) (THIS_
  144. ULONG32     ulOldTime,
  145. ULONG32     ulNewTime) PURE;
  146.     /************************************************************************
  147.      * Method:
  148.      *     IRMARenderer::OnPostSeek
  149.      * Purpose:
  150.      *     Called by client engine to inform the renderer that a seek has
  151.      *     just occurred. The render is informed the last time for the 
  152.      *     stream's time line before the seek, as well as the first new
  153.      *     time for the stream's time line after the seek.
  154.      *
  155.      */
  156.     STDMETHOD(OnPostSeek) (THIS_
  157. ULONG32     ulOldTime,
  158. ULONG32     ulNewTime) PURE;
  159.     /************************************************************************
  160.      * Method:
  161.      *     IRMARenderer::OnPause
  162.      * Purpose:
  163.      *     Called by client engine to inform the renderer that a pause has
  164.      *     just occurred. The render is informed the last time for the 
  165.      *     stream's time line before the pause.
  166.      *
  167.      */
  168.     STDMETHOD(OnPause) (THIS_
  169. ULONG32     ulTime) PURE;
  170.     /************************************************************************
  171.      * Method:
  172.      *     IRMARenderer::OnBegin
  173.      * Purpose:
  174.      *     Called by client engine to inform the renderer that a begin or
  175.      *     resume has just occurred. The render is informed the first time 
  176.      *     for the stream's time line after the resume.
  177.      *
  178.      */
  179.     STDMETHOD(OnBegin) (THIS_
  180. ULONG32     ulTime) PURE;
  181.     /************************************************************************
  182.      * Method:
  183.      *     IRMARenderer::OnBuffering
  184.      * Purpose:
  185.      *     Called by client engine to inform the renderer that buffering
  186.      *     of data is occuring. The render is informed of the reason for
  187.      *     the buffering (start-up of stream, seek has occurred, network
  188.      *     congestion, etc.), as well as percentage complete of the 
  189.      *     buffering process.
  190.      *
  191.      */
  192.     STDMETHOD(OnBuffering) (THIS_
  193. ULONG32     ulFlags,
  194. UINT16     unPercentComplete) PURE;
  195.     /************************************************************************
  196.      * Method:
  197.      *     IRMARenderer::GetDisplayType
  198.      * Purpose:
  199.      *     Called by client engine to ask the renderer for it's preferred
  200.      *     display type. When layout information is not present, the 
  201.      *     renderer will be asked for it's prefered display type. Depending
  202.      *     on the display type a buffer of additional information may be 
  203.      *     needed. This buffer could contain information about preferred
  204.      *     window size.
  205.      *
  206.      */
  207.     STDMETHOD(GetDisplayType) (THIS_
  208. REF(RMA_DISPLAY_TYPE) ulFlags,
  209. REF(IRMABuffer*) pBuffer) PURE;
  210.     /************************************************************************
  211.      * Method:
  212.      *     IRMARenderer::OnEndofPackets
  213.      * Purpose:
  214.      *     Called by client engine to inform the renderer that all the
  215.      *     packets have been delivered. However, if the user seeks before
  216.      *     EndStream() is called, renderer may start getting packets again
  217.      *     and the client engine will eventually call this function again.
  218.      */
  219.     STDMETHOD(OnEndofPackets) (THIS) PURE;
  220. };
  221. #endif /* _RMARENDR_H_ */