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

多媒体编程

开发平台:

Visual C++

  1. /****************************************************************************
  2.  * 
  3.  *  $Id: rmacore.h,v 1.2 2003/07/02 02:42:44 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.  *  Client Core interfaces
  15.  *
  16.  */
  17. #ifndef _RMACORE_H_
  18. #define _RMACORE_H_
  19. /*
  20.  * Forward declarations of some interfaces defined or used here-in.
  21.  */
  22. typedef _INTERFACE IUnknown IUnknown;
  23. typedef _INTERFACE IRMAStream IRMAStream;
  24. typedef _INTERFACE IRMAStreamSource IRMAStreamSource;
  25. typedef _INTERFACE IRMAPlayer IRMAPlayer;
  26. typedef _INTERFACE IRMAClientEngine IRMAClientEngine;
  27. typedef _INTERFACE IRMAScheduler IRMAScheduler;
  28. typedef _INTERFACE IRMAClientAdviseSink IRMAClientAdviseSink;
  29. typedef _INTERFACE IRMAValues       IRMAValues;
  30. typedef _INTERFACE IRMABuffer       IRMABuffer;
  31. typedef _INTERFACE IRMAPacket IRMAPacket;
  32. typedef _INTERFACE IRMARenderer IRMARenderer;
  33. typedef _INTERFACE IRMAPlayer2 IRMAPlayer2;
  34. typedef _INTERFACE IRMARequest IRMArequest;
  35. typedef struct _PNxEvent PNxEvent;
  36. #ifdef _MACINTOSH
  37. #pragma export on
  38. #endif
  39. #if defined _UNIX && !(defined _VXWORKS)
  40. /* Includes needed for select() stuff */
  41. #include <sys/time.h>
  42. #include <sys/types.h>
  43. #include <unistd.h>
  44. #endif
  45. #ifdef _BEOS // fd_set stuff
  46. #include <net/socket.h>
  47. #endif
  48. /* Used in renderer and advise sink interface */
  49. enum BUFFERING_REASON
  50. {
  51.     BUFFERING_START_UP = 0,
  52.     BUFFERING_SEEK,
  53.     BUFFERING_CONGESTION,
  54.     BUFFERING_LIVE_PAUSE
  55. };
  56. /****************************************************************************
  57.  * 
  58.  *  Function:
  59.  * 
  60.  * CreateEngine()
  61.  * 
  62.  *  Purpose:
  63.  * 
  64.  * Function implemented by the RMA core to return a pointer to the
  65.  * client engine.  This function would be run by top level clients.
  66.  */
  67. STDAPI CreateEngine
  68. (
  69.     IRMAClientEngine**  /*OUT*/ ppEngine
  70. );
  71. /****************************************************************************
  72.  * 
  73.  *  Function:
  74.  * 
  75.  * CloseEngine()
  76.  * 
  77.  *  Purpose:
  78.  * 
  79.  * Function implemented by the RMA core to close the engine which
  80.  * was returned in CreateEngine().
  81.  */
  82. STDAPI CloseEngine
  83. (
  84.     IRMAClientEngine*  /*IN*/ pEngine
  85. );
  86. #ifdef _MACINTOSH
  87. #pragma export off
  88. #endif
  89. /*
  90.  * Definitions of Function Pointers to CreateEngine() and Close Engine().
  91.  * These types are provided as a convenince to authors of top level clients.
  92.  */
  93. typedef PN_RESULT (PNEXPORT_PTR FPRMCREATEENGINE)(IRMAClientEngine** ppEngine);
  94. typedef PN_RESULT (PNEXPORT_PTR FPRMCLOSEENGINE) (IRMAClientEngine*  pEngine);
  95. typedef PN_RESULT (PNEXPORT_PTR FPRMSETDLLACCESSPATH) (const char*);
  96. /****************************************************************************
  97.  * 
  98.  *  Interface:
  99.  *
  100.  * IRMAStream
  101.  *
  102.  *  Purpose:
  103.  *
  104.  * Interface provided by the client engine to the renderers. This
  105.  * interface allows access to stream related information and properties.
  106.  *
  107.  *  IID_IRMAStream:
  108.  *
  109.  * {00000400-0901-11d1-8B06-00A024406D59}
  110.  *
  111.  */
  112. DEFINE_GUID(IID_IRMAStream, 0x00000400, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  113. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  114. #undef  INTERFACE
  115. #define INTERFACE   IRMAStream
  116. DECLARE_INTERFACE_(IRMAStream, IUnknown)
  117. {
  118.     /*
  119.      * IUnknown methods
  120.      */
  121.     STDMETHOD(QueryInterface) (THIS_
  122. REFIID riid,
  123. void** ppvObj) PURE;
  124.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  125.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  126.     /*
  127.      * IRMAStream methods
  128.      */
  129.     /************************************************************************
  130.      * Method:
  131.      *     IRMAStream::GetSource
  132.      * Purpose:
  133.      *     Get the interface to the source object of which the stream is
  134.      *     a part of.
  135.      *
  136.      */
  137.     STDMETHOD(GetSource) (THIS_
  138. REF(IRMAStreamSource*) pSource) PURE;
  139.     /************************************************************************
  140.      * Method:
  141.      *     IRMAStream::GetStreamNumber
  142.      * Purpose:
  143.      *     Get the stream number for this stream relative to the source 
  144.      *     object of which the stream is a part of.
  145.      *
  146.      */
  147.     STDMETHOD_(UINT16,GetStreamNumber)     (THIS) PURE;
  148.     /************************************************************************
  149.      * Method:
  150.      *     IRMAStream::GetStreamType
  151.      * Purpose:
  152.      *     Get the MIME type for this stream. NOTE: The returned string is
  153.      *     assumed to be valid for the life of the IRMAStream from which it
  154.      *     was returned.
  155.      *
  156.      */
  157.     STDMETHOD_(const char*,GetStreamType)   (THIS) PURE;
  158.     /************************************************************************
  159.      * Method:
  160.      *     IRMAStream::GetHeader
  161.      * Purpose:
  162.      *      Get the header for this stream.
  163.      *
  164.      */
  165.     STDMETHOD_(IRMAValues*,GetHeader)   (THIS) PURE;
  166.     /************************************************************************
  167.      * Method:
  168.      *     IRMAStream::ReportQualityOfService
  169.      * Purpose:
  170.      *     Call this method to report to the playback context that the 
  171.      *     quality of service for this stream has changed. The unQuality
  172.      *     should be on a scale of 0 to 100, where 100 is the best possible
  173.      *     quality for this stream. Although the transport engine can 
  174.      *     determine lost packets and report these through the user
  175.      *     interface, only the renderer of this stream can determine the 
  176.      *     "real" perceived damage associated with this loss.
  177.      *
  178.      *     NOTE: The playback context may use this value to indicate loss
  179.      *     in quality to the user interface. When the effects of a lost
  180.      *     packet are eliminated the renderer should call this method with
  181.      *     a unQuality of 100.
  182.      *
  183.      */
  184.     STDMETHOD(ReportQualityOfService)     (THIS_
  185.     UINT8   unQuality) PURE;
  186.     /************************************************************************
  187.      * Method:
  188.      *     IRMAStream::ReportRebufferStatus
  189.      * Purpose:
  190.      *     Call this method to report to the playback context that the
  191.      *     available data has dropped to a critically low level, and that
  192.      *     rebuffering should occur. The renderer should call back into this
  193.      *     interface as it receives additional data packets to indicate the
  194.      *     status of its rebuffering effort.
  195.      *
  196.      *     NOTE: The values of unNeeded and unAvailable are used to indicate
  197.      *     the general status of the rebuffering effort. For example, if a
  198.      *     renderer has "run dry" and needs 5 data packets to play smoothly
  199.      *     again, it should call ReportRebufferStatus() with 5,0 then as
  200.      *     packet arrive it should call again with 5,1; 5,2... and eventually
  201.      *     5,5.
  202.      *
  203.      */
  204.     STDMETHOD(ReportRebufferStatus)     (THIS_
  205.     UINT8   unNeeded,
  206.     UINT8   unAvailable) PURE;
  207.     /************************************************************************
  208.      * Method:
  209.      *     IRMAStream::SetGranularity
  210.      * Purpose:
  211.      *     Sets the desired Granularity for this stream. The actual 
  212.      *     granularity will be the lowest granularity of all streams.
  213.      *     Valid to call before stream actually begins. Best to call during
  214.      *     IRMARenderer::OnHeader().
  215.      */
  216.     STDMETHOD(SetGranularity)     (THIS_
  217.     ULONG32 ulGranularity) PURE;
  218.     /************************************************************************
  219.      * Method:
  220.      *     IRMAStream::GetRendererCount
  221.      * Purpose:
  222.      *     Returns the current number of renderer instances supported by
  223.      *     this stream instance.
  224.      */
  225.     STDMETHOD_(UINT16, GetRendererCount)(THIS) PURE;
  226.     /************************************************************************
  227.      * Method:
  228.      *     IRMAStream::GetRenderer
  229.      * Purpose:
  230.      *     Returns the Nth renderer instance supported by this stream.
  231.      */
  232.     STDMETHOD(GetRenderer) (THIS_
  233. UINT16 nIndex,
  234. REF(IUnknown*) pUnknown) PURE;
  235. };
  236. /****************************************************************************
  237.  * 
  238.  *  Interface:
  239.  *
  240.  * IRMAStreamSource
  241.  *
  242.  *  Purpose:
  243.  *
  244.  * Interface provided by the client engine to the renderers. This
  245.  * interface allows access to source related information and properties.
  246.  *
  247.  *  IID_IRMAStreamSource:
  248.  *
  249.  * {00000401-0901-11d1-8B06-00A024406D59}
  250.  *
  251.  */
  252. DEFINE_GUID(IID_IRMAStreamSource, 0x00000401, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  253. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  254. #undef  INTERFACE
  255. #define INTERFACE   IRMAStreamSource
  256. DECLARE_INTERFACE_(IRMAStreamSource, IUnknown)
  257. {
  258.     /*
  259.      * IUnknown methods
  260.      */
  261.     STDMETHOD(QueryInterface) (THIS_
  262. REFIID riid,
  263. void** ppvObj) PURE;
  264.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  265.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  266.     /*
  267.      * IRMAStreamSource methods
  268.      */
  269.     /************************************************************************
  270.      * Method:
  271.      * IRMAStreamSource::IsLive
  272.      * Purpose:
  273.      * Ask the source whether it is live
  274.      *
  275.      */
  276.     STDMETHOD_ (BOOL,IsLive) (THIS) PURE;
  277.     /************************************************************************
  278.      * Method:
  279.      *     IRMAStreamSource::GetPlayer
  280.      * Purpose:
  281.      *     Get the interface to the player object of which the source is
  282.      *     a part of.
  283.      *
  284.      */
  285.     STDMETHOD(GetPlayer)     (THIS_
  286.     REF(IRMAPlayer*) pPlayer) PURE;
  287.     /************************************************************************
  288.      * Method:
  289.      *     IRMAStreamSource::GetURL
  290.      * Purpose:
  291.      *     Get the URL for this source. NOTE: The returned string is
  292.      *     assumed to be valid for the life of the IRMAStreamSource from which
  293.      *     it was returned.
  294.      *
  295.      */
  296.     STDMETHOD_(const char*,GetURL)  (THIS) PURE;
  297.     /************************************************************************
  298.      * Method:
  299.      *     IRMAStreamSource::GetStreamCount
  300.      * Purpose:
  301.      *     Returns the current number of stream instances supported by
  302.      *     this source instance.
  303.      */
  304.     STDMETHOD_(UINT16, GetStreamCount)(THIS) PURE;
  305.     /************************************************************************
  306.      * Method:
  307.      *     IRMAStreamSource::GetStream
  308.      * Purpose:
  309.      *     Returns the Nth stream instance supported by this source.
  310.      */
  311.     STDMETHOD(GetStream) (THIS_
  312. UINT16 nIndex,
  313. REF(IUnknown*) pUnknown) PURE;
  314. };
  315. /****************************************************************************
  316.  * 
  317.  *  Interface:
  318.  *
  319.  *   IRMAPlayer
  320.  *
  321.  *  Purpose:
  322.  *
  323.  * Interface provided by the client engine to the renderers. This
  324.  * interface allows access to player related information, properties,
  325.  * and operations.
  326.  *
  327.  *  IID_IRMAPlayer:
  328.  *
  329.  * {00000402-0901-11d1-8B06-00A024406D59}
  330.  *
  331.  */
  332. DEFINE_GUID(IID_IRMAPlayer, 0x00000402, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  333. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  334. #undef  INTERFACE
  335. #define INTERFACE   IRMAPlayer
  336. DECLARE_INTERFACE_(IRMAPlayer, IUnknown)
  337. {
  338.     /*
  339.      * IUnknown methods
  340.      */
  341.     STDMETHOD(QueryInterface) (THIS_
  342. REFIID riid,
  343. void** ppvObj) PURE;
  344.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  345.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  346.     /*
  347.      * IRMAPlayer methods
  348.      */
  349.     /************************************************************************
  350.      * Method:
  351.      * IRMAPlayer::GetClientEngine
  352.      * Purpose:
  353.      * Get the interface to the client engine object of which the
  354.      * player is a part of.
  355.      *
  356.      */
  357.     STDMETHOD(GetClientEngine) (THIS_
  358. REF(IRMAClientEngine*) pEngine) PURE;
  359.     /************************************************************************
  360.      * Method:
  361.      * IRMAPlayer::IsDone
  362.      * Purpose:
  363.      * Ask the player if it is done with the current presentation
  364.      *
  365.      */
  366.     STDMETHOD_(BOOL,IsDone) (THIS) PURE;
  367.     /************************************************************************
  368.      * Method:
  369.      * IRMAPlayer::IsLive
  370.      * Purpose:
  371.      * Ask the player whether it contains the live source
  372.      *
  373.      */
  374.     STDMETHOD_(BOOL,IsLive) (THIS) PURE;
  375.     /************************************************************************
  376.      * Method:
  377.      * IRMAPlayer::GetCurrentPlayTime
  378.      * Purpose:
  379.      * Get the current time on the Player timeline
  380.      *
  381.      */
  382.     STDMETHOD_(ULONG32,GetCurrentPlayTime) (THIS) PURE;
  383.     /************************************************************************
  384.      * Method:
  385.      * IRMAPlayer::OpenURL
  386.      * Purpose:
  387.      * Tell the player to begin playback of all its sources.
  388.      *
  389.      */
  390.     STDMETHOD(OpenURL) (THIS_
  391.     const char* pURL) PURE;
  392.     /************************************************************************
  393.      * Method:
  394.      * IRMAPlayer::Begin
  395.      * Purpose:
  396.      * Tell the player to begin playback of all its sources.
  397.      *
  398.      */
  399.     STDMETHOD(Begin) (THIS) PURE;
  400.     /************************************************************************
  401.      * Method:
  402.      * IRMAPlayer::Stop
  403.      * Purpose:
  404.      * Tell the player to stop playback of all its sources.
  405.      *
  406.      */
  407.     STDMETHOD(Stop) (THIS) PURE;
  408.     /************************************************************************
  409.      * Method:
  410.      * IRMAPlayer::Pause
  411.      * Purpose:
  412.      * Tell the player to pause playback of all its sources.
  413.      *
  414.      */
  415.     STDMETHOD(Pause) (THIS) PURE;
  416.     /************************************************************************
  417.      * Method:
  418.      * IRMAPlayer::Seek
  419.      * Purpose:
  420.      * Tell the player to seek in the playback timeline of all its 
  421.      * sources.
  422.      *
  423.      */
  424.     STDMETHOD(Seek) (THIS_
  425. ULONG32 ulTime) PURE;
  426.     /************************************************************************
  427.      * Method:
  428.      *     IRMAPlayer::GetSourceCount
  429.      * Purpose:
  430.      *     Returns the current number of source instances supported by
  431.      *     this player instance.
  432.      */
  433.     STDMETHOD_(UINT16, GetSourceCount)(THIS) PURE;
  434.     /************************************************************************
  435.      * Method:
  436.      *     IRMAPlayer::GetSource
  437.      * Purpose:
  438.      *     Returns the Nth source instance supported by this player.
  439.      */
  440.     STDMETHOD(GetSource) (THIS_
  441. UINT16 nIndex,
  442. REF(IUnknown*) pUnknown) PURE;
  443.     /************************************************************************
  444.      * Method:
  445.      *     IRMAPlayer::SetClientContext
  446.      * Purpose:
  447.      *     Called by the client to install itself as the provider of client
  448.      *     services to the core. This is traditionally called by the top 
  449.      *     level client application.
  450.      */
  451.     STDMETHOD(SetClientContext) (THIS_
  452. IUnknown* pUnknown) PURE;
  453.     /************************************************************************
  454.      * Method:
  455.      *     IRMAPlayer::GetClientContext
  456.      * Purpose:
  457.      *     Called to get the client context for this player. This is
  458.      *     set by the top level client application.
  459.      */
  460.     STDMETHOD(GetClientContext) (THIS_
  461. REF(IUnknown*) pUnknown) PURE;
  462.     /************************************************************************
  463.      * Method:
  464.      *     IRMAPlayer::AddAdviseSink
  465.      * Purpose:
  466.      *     Call this method to add a client advise sink.
  467.      *
  468.      */
  469.     STDMETHOD(AddAdviseSink) (THIS_
  470. IRMAClientAdviseSink* pAdviseSink) PURE;
  471.     /************************************************************************
  472.      * Method:
  473.      *     IRMAPlayer::RemoveAdviseSink
  474.      * Purpose:
  475.      *     Call this method to remove a client advise sink.
  476.      */
  477.     STDMETHOD(RemoveAdviseSink) (THIS_
  478. IRMAClientAdviseSink* pAdviseSink) PURE;
  479. };
  480. /****************************************************************************
  481.  * 
  482.  *  Interface:
  483.  *
  484.  * IRMAClientEngine
  485.  *
  486.  *  Purpose:
  487.  *
  488.  * Interface to the basic client engine. Provided to the renderers and
  489.  * other client side components.
  490.  *
  491.  *  IID_IRMAClientEngine:
  492.  *
  493.  * {00000403-0901-11d1-8B06-00A024406D59}
  494.  */
  495. DEFINE_GUID(IID_IRMAClientEngine, 0x00000403, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  496. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  497. #undef  INTERFACE
  498. #define INTERFACE   IRMAClientEngine
  499. DECLARE_INTERFACE_(IRMAClientEngine, IUnknown)
  500. {
  501.     /*
  502.      * IUnknown methods
  503.      */
  504.     STDMETHOD(QueryInterface) (THIS_
  505. REFIID riid,
  506. void** ppvObj) PURE;
  507.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  508.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  509.     /*
  510.      * IRMAClientEngine methods
  511.      */
  512.     /************************************************************************
  513.      * Method:
  514.      *     IRMAClientEngine::CreatePlayer
  515.      * Purpose:
  516.      *     Creates a new IRMAPlayer instance.
  517.      *
  518.      */
  519.     STDMETHOD(CreatePlayer) (THIS_
  520. REF(IRMAPlayer*)    pPlayer) PURE;
  521.     /************************************************************************
  522.      * Method:
  523.      *     IRMAClientEngine::ClosePlayer
  524.      * Purpose:
  525.      *     Called by the client when it is done using the player...
  526.      *
  527.      */
  528.     STDMETHOD(ClosePlayer) (THIS_
  529. IRMAPlayer*    pPlayer) PURE;
  530.     /************************************************************************
  531.      * Method:
  532.      *     IRMAClientEngine::GetPlayerCount
  533.      * Purpose:
  534.      *     Returns the current number of IRMAPlayer instances supported by
  535.      *     this client engine instance.
  536.      */
  537.     STDMETHOD_(UINT16, GetPlayerCount)(THIS) PURE;
  538.     /************************************************************************
  539.      * Method:
  540.      *     IRMAClientEngine::GetPlayer
  541.      * Purpose:
  542.      *     Returns the Nth IRMAPlayer instances supported by this client 
  543.      *     engine instance.
  544.      */
  545.     STDMETHOD(GetPlayer) (THIS_
  546. UINT16 nPlayerNumber,
  547. REF(IUnknown*) pUnknown) PURE;
  548.     /************************************************************************
  549.      * Method:
  550.      *     IRMAClientEngine::EventOccurred
  551.      * Purpose:
  552.      *     Clients call this to pass OS events to all players. PNxEvent
  553.      *     defines a cross-platform event.
  554.      */
  555.     STDMETHOD(EventOccurred) (THIS_
  556. PNxEvent* /*IN*/ pEvent) PURE;
  557. };
  558. #if defined _UNIX && !defined (_VXWORKS)
  559. DEFINE_GUID(IID_IRMAClientEngineSelector, 0x00000404, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  560. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  561. #undef  INTERFACE
  562. #define INTERFACE   IRMAClientEngineSelector
  563. DECLARE_INTERFACE_(IRMAClientEngineSelector, IUnknown)
  564. {
  565.     /*
  566.      * IUnknown methods
  567.      */
  568.     STDMETHOD(QueryInterface) (THIS_
  569. REFIID riid,
  570. void** ppvObj) PURE;
  571.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  572.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  573.     /************************************************************************
  574.      * Method:
  575.      *     IRMAClientEngine::Select
  576.      * Purpose:
  577.      *      Top level clients under Unix should use this instead of
  578.      *      select() to select for events.
  579.      */
  580.     STDMETHOD_(INT32, Select) (THIS_
  581.        INT32 n,
  582.        fd_set *readfds,
  583.        fd_set *writefds,
  584.        fd_set *exceptfds,
  585.        struct timeval* timeout) PURE;
  586. };
  587. #endif /* _UNIX */
  588. /****************************************************************************
  589.  * 
  590.  *  Interface:
  591.  *
  592.  * IRMAClientEngineSetup
  593.  *
  594.  *  Purpose:
  595.  *
  596.  * Interface to the basic client engine. Provided to the renderers and
  597.  * other client side components.
  598.  *
  599.  *  IID_IRMAClientEngineSetup:
  600.  *
  601.  * {00000405-0901-11d1-8B06-00A024406D59}
  602.  */
  603. DEFINE_GUID(IID_IRMAClientEngineSetup, 0x00000405, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  604. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  605. #undef  INTERFACE
  606. #define INTERFACE   IRMAClientEngineSetup
  607. DECLARE_INTERFACE_(IRMAClientEngineSetup, IUnknown)
  608. {
  609.     /*
  610.      * IUnknown methods
  611.      */
  612.     STDMETHOD(QueryInterface) (THIS_
  613. REFIID riid,
  614. void** ppvObj) PURE;
  615.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  616.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  617.     /*
  618.      * IRMAClientEngineSetup methods
  619.      */
  620.     /************************************************************************
  621.      * Method:
  622.      *     IRMAClientEngineSetup::Setup
  623.      * Purpose:
  624.      *      Top level clients use this interface to over-ride certain basic 
  625.      *     interfaces implemented by the core. Current over-ridable 
  626.      *     interfaces are: IRMAPreferences, IRMAHyperNavigate
  627.      */
  628.     STDMETHOD(Setup) (THIS_
  629. IUnknown* pContext) PURE;
  630. };
  631. /****************************************************************************
  632.  * 
  633.  *  Interface:
  634.  *
  635.  * IRMAInfoLogger
  636.  *
  637.  *  Purpose:
  638.  *
  639.  * Interface to send any logging information back to the server.
  640.  * This information will appear in the server's access log.
  641.  *
  642.  *  IID_IRMAInfoLogger:
  643.  *
  644.  * {00000409-0901-11d1-8B06-00A024406D59}
  645.  */
  646. DEFINE_GUID(IID_IRMAInfoLogger, 0x00000409, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  647. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  648. #undef  INTERFACE
  649. #define INTERFACE   IRMAInfoLogger
  650. DECLARE_INTERFACE_(IRMAInfoLogger, IUnknown)
  651. {
  652.     /*
  653.      * IUnknown methods
  654.      */
  655.     STDMETHOD(QueryInterface) (THIS_
  656. REFIID riid,
  657. void** ppvObj) PURE;
  658.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  659.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  660.     /*
  661.      * IRMAInfoLogger methods
  662.      */
  663.     /************************************************************************
  664.      * Method:
  665.      *     IRMAInfoLogger::LogInformation
  666.      * Purpose:
  667.      *     Logs any user defined information in form of action and 
  668.      *     associated data.
  669.      */
  670.     STDMETHOD(LogInformation) (THIS_
  671. const char* /*IN*/ pAction,
  672. const char* /*IN*/ pData) PURE;
  673. };
  674. /****************************************************************************
  675.  * 
  676.  *  Interface:
  677.  *
  678.  * IRMAPlayer2
  679.  *
  680.  *  Purpose:
  681.  *
  682.  * Extra methods in addition to IRMAPlayer
  683.  *
  684.  *  IID_IRMAPlayer2:
  685.  *
  686.  * {00000411-0901-11d1-8B06-00A024406D59}
  687.  *
  688.  */
  689. DEFINE_GUID(IID_IRMAPlayer2, 0x00000411, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  690. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  691. #undef  INTERFACE
  692. #define INTERFACE   IRMAPlayer2
  693. DECLARE_INTERFACE_(IRMAPlayer2, IUnknown)
  694. {
  695.     /*
  696.      * IUnknown methods
  697.      */
  698.     STDMETHOD(QueryInterface) (THIS_
  699. REFIID riid,
  700. void** ppvObj) PURE;
  701.     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  702.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  703.     /************************************************************************
  704.      * Method:
  705.      *     IID_IRMAPlayer2::SetMinimumPreroll
  706.      * Purpose:
  707.      *     Call this method to set the minimum preroll of this clip
  708.      */
  709.     STDMETHOD(SetMinimumPreroll) (THIS_
  710. UINT32 ulMinPreroll) PURE;
  711.     /************************************************************************
  712.      * Method:
  713.      *     IID_IRMAPlayer2::GetMinimumPreroll
  714.      * Purpose:
  715.      *     Call this method to get the minimum preroll of this clip
  716.      */
  717.     STDMETHOD(GetMinimumPreroll) (THIS_
  718. REF(UINT32) ulMinPreroll) PURE;
  719.     /************************************************************************
  720.      * Method:
  721.      *     IID_IRMAPlayer2::OpenRequest
  722.      * Purpose:
  723.      *     Call this method to open the IRMARequest
  724.      */
  725.     STDMETHOD(OpenRequest) (THIS_
  726.     IRMARequest* pRequest) PURE;
  727.     /************************************************************************
  728.      * Method:
  729.      *     IID_IRMAPlayer2::GetRequest
  730.      * Purpose:
  731.      *     Call this method to get the IRMARequest
  732.      */
  733.     STDMETHOD(GetRequest) (THIS_
  734.    REF(IRMARequest*) pRequest) PURE;
  735. };
  736. #endif /* _RMACORE_H_ */