hxcore.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:55k
源码类别:

Symbian

开发平台:

Visual C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Source last modified: $Id: hxcore.h,v 1.3.22.3 2004/07/09 01:45:08 hubbe Exp $
  3.  * 
  4.  * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
  5.  * 
  6.  * The contents of this file, and the files included with this file,
  7.  * are subject to the current version of the RealNetworks Public
  8.  * Source License (the "RPSL") available at
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed
  10.  * the file under the current version of the RealNetworks Community
  11.  * Source License (the "RCSL") available at
  12.  * http://www.helixcommunity.org/content/rcsl, in which case the RCSL
  13.  * will apply. You may also obtain the license terms directly from
  14.  * RealNetworks.  You may not use this file except in compliance with
  15.  * the RPSL or, if you have a valid RCSL with RealNetworks applicable
  16.  * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
  17.  * the rights, obligations and limitations governing use of the
  18.  * contents of the file.
  19.  * 
  20.  * Alternatively, the contents of this file may be used under the
  21.  * terms of the GNU General Public License Version 2 or later (the
  22.  * "GPL") in which case the provisions of the GPL are applicable
  23.  * instead of those above. If you wish to allow use of your version of
  24.  * this file only under the terms of the GPL, and not to allow others
  25.  * to use your version of this file under the terms of either the RPSL
  26.  * or RCSL, indicate your decision by deleting the provisions above
  27.  * and replace them with the notice and other provisions required by
  28.  * the GPL. If you do not delete the provisions above, a recipient may
  29.  * use your version of this file under the terms of any one of the
  30.  * RPSL, the RCSL or the GPL.
  31.  * 
  32.  * This file is part of the Helix DNA Technology. RealNetworks is the
  33.  * developer of the Original Code and owns the copyrights in the
  34.  * portions it created.
  35.  * 
  36.  * This file, and the files included with this file, is distributed
  37.  * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
  38.  * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
  39.  * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
  40.  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
  41.  * ENJOYMENT OR NON-INFRINGEMENT.
  42.  * 
  43.  * Technology Compatibility Kit Test Suite(s) Location:
  44.  *    http://www.helixcommunity.org/content/tck
  45.  * 
  46.  * Contributor(s):
  47.  * 
  48.  * ***** END LICENSE BLOCK ***** */
  49. #ifndef _HXCORE_H_
  50. #define _HXCORE_H_
  51. /*
  52.  * Forward declarations of some interfaces defined or used here-in.
  53.  */
  54. typedef _INTERFACE IUnknown IUnknown;
  55. typedef _INTERFACE IHXStream IHXStream;
  56. typedef _INTERFACE IHXStreamSource IHXStreamSource;
  57. typedef _INTERFACE IHXPlayer IHXPlayer;
  58. typedef _INTERFACE IHXClientEngine IHXClientEngine;
  59. typedef _INTERFACE IHXScheduler IHXScheduler;
  60. typedef _INTERFACE IHXClientAdviseSink IHXClientAdviseSink;
  61. typedef _INTERFACE IHXValues       IHXValues;
  62. typedef _INTERFACE IHXBuffer       IHXBuffer;
  63. typedef _INTERFACE IHXPacket IHXPacket;
  64. // $Private:
  65. typedef _INTERFACE IHXPersistenceManager IHXPersistenceManager;
  66. typedef _INTERFACE IHXRendererAdviseSink IHXRendererAdviseSink;
  67. typedef _INTERFACE IHXLayoutSite IHXLayoutSite;
  68. typedef _INTERFACE IHXProtocolValidator IHXProtocolValidator;
  69. typedef _INTERFACE IHXUpdateProperties IHXUpdateProperties;
  70. typedef _INTERFACE IHXPersistentComponentManager IHXPersistentComponentManager;
  71. typedef _INTERFACE IHXPersistentComponent IHXPersistentComponent;
  72. typedef _INTERFACE IHXPersistentRenderer IHXPersistentRenderer;
  73. typedef _INTERFACE IHXCoreMutex IHXCoreMutex;
  74. typedef _INTERFACE IHXMacBlitMutex IHXMacBlitMutex;
  75. // $EndPrivate.
  76. typedef _INTERFACE IHXRenderer IHXRenderer;
  77. typedef _INTERFACE IHXPlayer2 IHXPlayer2;
  78. typedef _INTERFACE IHXRequest IHXrequest;
  79. typedef _INTERFACE IHXPlayerNavigator IHXPlayerNavigator;
  80. typedef _INTERFACE IHXGroupSink IHXGroupSink;
  81. typedef struct _PersistentComponentInfo PersistentComponentInfo;
  82. typedef struct _HXxEvent HXxEvent;
  83. #ifdef _MAC_CFM
  84. #pragma export on
  85. #endif
  86. #if defined _UNIX && !(defined _VXWORKS)
  87. /* Includes needed for select() stuff */
  88. #include <sys/time.h>
  89. #include <sys/types.h>
  90. #include <unistd.h>
  91. #endif
  92. #ifdef _BEOS // fd_set stuff
  93. #include <net/socket.h>
  94. #endif
  95. #include "hxwin.h"
  96. /* Used in renderer and advise sink interface */
  97. enum BUFFERING_REASON
  98. {
  99.     BUFFERING_START_UP = 0,
  100.     BUFFERING_SEEK,
  101.     BUFFERING_CONGESTION,
  102.     BUFFERING_LIVE_PAUSE
  103. };
  104. /****************************************************************************
  105.  * 
  106.  *  Function:
  107.  * 
  108.  * CreateEngine()
  109.  * 
  110.  *  Purpose:
  111.  * 
  112.  * Function implemented by the RMA core to return a pointer to the
  113.  * client engine.  This function would be run by top level clients.
  114.  */
  115. STDAPI CreateEngine
  116. (
  117.     IHXClientEngine**  /*OUT*/ ppEngine
  118. );
  119. /****************************************************************************
  120.  * 
  121.  *  Function:
  122.  * 
  123.  * CloseEngine()
  124.  * 
  125.  *  Purpose:
  126.  * 
  127.  * Function implemented by the RMA core to close the engine which
  128.  * was returned in CreateEngine().
  129.  */
  130. STDAPI CloseEngine
  131. (
  132.     IHXClientEngine*  /*IN*/ pEngine
  133. );
  134. #ifdef _MAC_CFM
  135. #pragma export off
  136. #endif
  137. /*
  138.  * Definitions of Function Pointers to CreateEngine() and Close Engine().
  139.  * These types are provided as a convenince to authors of top level clients.
  140.  */
  141. typedef HX_RESULT (HXEXPORT_PTR FPRMCREATEENGINE)(IHXClientEngine** ppEngine);
  142. typedef HX_RESULT (HXEXPORT_PTR FPRMCLOSEENGINE) (IHXClientEngine*  pEngine);
  143. /****************************************************************************
  144.  * 
  145.  *  Interface:
  146.  *
  147.  * IHXStream
  148.  *
  149.  *  Purpose:
  150.  *
  151.  * Interface provided by the client engine to the renderers. This
  152.  * interface allows access to stream related information and properties.
  153.  *
  154.  *  IID_IHXStream:
  155.  *
  156.  * {00000400-0901-11d1-8B06-00A024406D59}
  157.  *
  158.  */
  159. DEFINE_GUID(IID_IHXStream, 0x00000400, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  160. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  161. #undef  INTERFACE
  162. #define INTERFACE   IHXStream
  163. DECLARE_INTERFACE_(IHXStream, IUnknown)
  164. {
  165.     /*
  166.      * IUnknown methods
  167.      */
  168.     STDMETHOD(QueryInterface) (THIS_
  169. REFIID riid,
  170. void** ppvObj) PURE;
  171.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  172.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  173.     /*
  174.      * IHXStream methods
  175.      */
  176.     /************************************************************************
  177.      * Method:
  178.      *     IHXStream::GetSource
  179.      * Purpose:
  180.      *     Get the interface to the source object of which the stream is
  181.      *     a part of.
  182.      *
  183.      */
  184.     STDMETHOD(GetSource) (THIS_
  185. REF(IHXStreamSource*) pSource) PURE;
  186.     /************************************************************************
  187.      * Method:
  188.      *     IHXStream::GetStreamNumber
  189.      * Purpose:
  190.      *     Get the stream number for this stream relative to the source 
  191.      *     object of which the stream is a part of.
  192.      *
  193.      */
  194.     STDMETHOD_(UINT16,GetStreamNumber)     (THIS) PURE;
  195.     /************************************************************************
  196.      * Method:
  197.      *     IHXStream::GetStreamType
  198.      * Purpose:
  199.      *     Get the MIME type for this stream. NOTE: The returned string is
  200.      *     assumed to be valid for the life of the IHXStream from which it
  201.      *     was returned.
  202.      *
  203.      */
  204.     STDMETHOD_(const char*,GetStreamType)   (THIS) PURE;
  205.     /************************************************************************
  206.      * Method:
  207.      *     IHXStream::GetHeader
  208.      * Purpose:
  209.      *      Get the header for this stream.
  210.      *
  211.      */
  212.     STDMETHOD_(IHXValues*,GetHeader)   (THIS) PURE;
  213.     /************************************************************************
  214.      * Method:
  215.      *     IHXStream::ReportQualityOfService
  216.      * Purpose:
  217.      *     Call this method to report to the playback context that the 
  218.      *     quality of service for this stream has changed. The unQuality
  219.      *     should be on a scale of 0 to 100, where 100 is the best possible
  220.      *     quality for this stream. Although the transport engine can 
  221.      *     determine lost packets and report these through the user
  222.      *     interface, only the renderer of this stream can determine the 
  223.      *     "real" perceived damage associated with this loss.
  224.      *
  225.      *     NOTE: The playback context may use this value to indicate loss
  226.      *     in quality to the user interface. When the effects of a lost
  227.      *     packet are eliminated the renderer should call this method with
  228.      *     a unQuality of 100.
  229.      *
  230.      */
  231.     STDMETHOD(ReportQualityOfService)     (THIS_
  232.     UINT8   unQuality) PURE;
  233.     /************************************************************************
  234.      * Method:
  235.      *     IHXStream::ReportRebufferStatus
  236.      * Purpose:
  237.      *     Call this method to report to the playback context that the
  238.      *     available data has dropped to a critically low level, and that
  239.      *     rebuffering should occur. The renderer should call back into this
  240.      *     interface as it receives additional data packets to indicate the
  241.      *     status of its rebuffering effort.
  242.      *
  243.      *     NOTE: The values of unNeeded and unAvailable are used to indicate
  244.      *     the general status of the rebuffering effort. For example, if a
  245.      *     renderer has "run dry" and needs 5 data packets to play smoothly
  246.      *     again, it should call ReportRebufferStatus() with 5,0 then as
  247.      *     packet arrive it should call again with 5,1; 5,2... and eventually
  248.      *     5,5.
  249.      *
  250.      */
  251.     STDMETHOD(ReportRebufferStatus)     (THIS_
  252.     UINT8   unNeeded,
  253.     UINT8   unAvailable) PURE;
  254.     /************************************************************************
  255.      * Method:
  256.      *     IHXStream::SetGranularity
  257.      * Purpose:
  258.      *     Sets the desired Granularity for this stream. The actual 
  259.      *     granularity will be the lowest granularity of all streams.
  260.      *     Valid to call before stream actually begins. Best to call during
  261.      *     IHXRenderer::OnHeader().
  262.      */
  263.     STDMETHOD(SetGranularity)     (THIS_
  264.     ULONG32 ulGranularity) PURE;
  265.     /************************************************************************
  266.      * Method:
  267.      *     IHXStream::GetRendererCount
  268.      * Purpose:
  269.      *     Returns the current number of renderer instances supported by
  270.      *     this stream instance.
  271.      */
  272.     STDMETHOD_(UINT16, GetRendererCount)(THIS) PURE;
  273.     /************************************************************************
  274.      * Method:
  275.      *     IHXStream::GetRenderer
  276.      * Purpose:
  277.      *     Returns the Nth renderer instance supported by this stream.
  278.      */
  279.     STDMETHOD(GetRenderer) (THIS_
  280. UINT16 nIndex,
  281. REF(IUnknown*) pUnknown) PURE;
  282. };
  283. /****************************************************************************
  284.  * 
  285.  *  Interface:
  286.  *
  287.  * IHXStreamSource
  288.  *
  289.  *  Purpose:
  290.  *
  291.  * Interface provided by the client engine to the renderers. This
  292.  * interface allows access to source related information and properties.
  293.  *
  294.  *  IID_IHXStreamSource:
  295.  *
  296.  * {00000401-0901-11d1-8B06-00A024406D59}
  297.  *
  298.  */
  299. DEFINE_GUID(IID_IHXStreamSource, 0x00000401, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  300. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  301. #undef  INTERFACE
  302. #define INTERFACE   IHXStreamSource
  303. DECLARE_INTERFACE_(IHXStreamSource, IUnknown)
  304. {
  305.     /*
  306.      * IUnknown methods
  307.      */
  308.     STDMETHOD(QueryInterface) (THIS_
  309. REFIID riid,
  310. void** ppvObj) PURE;
  311.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  312.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  313.     /*
  314.      * IHXStreamSource methods
  315.      */
  316.     /************************************************************************
  317.      * Method:
  318.      * IHXStreamSource::IsLive
  319.      * Purpose:
  320.      * Ask the source whether it is live
  321.      *
  322.      */
  323.     STDMETHOD_ (BOOL,IsLive) (THIS) PURE;
  324.     /************************************************************************
  325.      * Method:
  326.      *     IHXStreamSource::GetPlayer
  327.      * Purpose:
  328.      *     Get the interface to the player object of which the source is
  329.      *     a part of.
  330.      *
  331.      */
  332.     STDMETHOD(GetPlayer)     (THIS_
  333.     REF(IHXPlayer*) pPlayer) PURE;
  334.     /************************************************************************
  335.      * Method:
  336.      *     IHXStreamSource::GetURL
  337.      * Purpose:
  338.      *     Get the URL for this source. NOTE: The returned string is
  339.      *     assumed to be valid for the life of the IHXStreamSource from which
  340.      *     it was returned.
  341.      *
  342.      */
  343.     STDMETHOD_(const char*,GetURL)  (THIS) PURE;
  344.     /************************************************************************
  345.      * Method:
  346.      *     IHXStreamSource::GetStreamCount
  347.      * Purpose:
  348.      *     Returns the current number of stream instances supported by
  349.      *     this source instance.
  350.      */
  351.     STDMETHOD_(UINT16, GetStreamCount)(THIS) PURE;
  352.     /************************************************************************
  353.      * Method:
  354.      *     IHXStreamSource::GetStream
  355.      * Purpose:
  356.      *     Returns the Nth stream instance supported by this source.
  357.      */
  358.     STDMETHOD(GetStream) (THIS_
  359. UINT16 nIndex,
  360. REF(IUnknown*) pUnknown) PURE;
  361. };
  362. /****************************************************************************
  363.  * 
  364.  *  Interface:
  365.  *
  366.  *   IHXPlayer
  367.  *
  368.  *  Purpose:
  369.  *
  370.  * Interface provided by the client engine to the renderers. This
  371.  * interface allows access to player related information, properties,
  372.  * and operations.
  373.  *
  374.  *  IID_IHXPlayer:
  375.  *
  376.  * {00000402-0901-11d1-8B06-00A024406D59}
  377.  *
  378.  */
  379. DEFINE_GUID(IID_IHXPlayer, 0x00000402, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  380. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  381. #undef  INTERFACE
  382. #define INTERFACE   IHXPlayer
  383. DECLARE_INTERFACE_(IHXPlayer, IUnknown)
  384. {
  385.     /*
  386.      * IUnknown methods
  387.      */
  388.     STDMETHOD(QueryInterface) (THIS_
  389. REFIID riid,
  390. void** ppvObj) PURE;
  391.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  392.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  393.     /*
  394.      * IHXPlayer methods
  395.      */
  396.     /************************************************************************
  397.      * Method:
  398.      * IHXPlayer::GetClientEngine
  399.      * Purpose:
  400.      * Get the interface to the client engine object of which the
  401.      * player is a part of.
  402.      *
  403.      */
  404.     STDMETHOD(GetClientEngine) (THIS_
  405. REF(IHXClientEngine*) pEngine) PURE;
  406.     /************************************************************************
  407.      * Method:
  408.      * IHXPlayer::IsDone
  409.      * Purpose:
  410.      * Ask the player if it is done with the current presentation
  411.      *
  412.      */
  413.     STDMETHOD_(BOOL,IsDone) (THIS) PURE;
  414.     /************************************************************************
  415.      * Method:
  416.      * IHXPlayer::IsLive
  417.      * Purpose:
  418.      * Ask the player whether it contains the live source
  419.      *
  420.      */
  421.     STDMETHOD_(BOOL,IsLive) (THIS) PURE;
  422.     /************************************************************************
  423.      * Method:
  424.      * IHXPlayer::GetCurrentPlayTime
  425.      * Purpose:
  426.      * Get the current time on the Player timeline
  427.      *
  428.      */
  429.     STDMETHOD_(ULONG32,GetCurrentPlayTime) (THIS) PURE;
  430.     /************************************************************************
  431.      * Method:
  432.      * IHXPlayer::OpenURL
  433.      * Purpose:
  434.      * Tell the player to begin playback of all its sources.
  435.      *
  436.      */
  437.     STDMETHOD(OpenURL) (THIS_
  438.     const char* pURL) PURE;
  439.     /************************************************************************
  440.      * Method:
  441.      * IHXPlayer::Begin
  442.      * Purpose:
  443.      * Tell the player to begin playback of all its sources.
  444.      *
  445.      */
  446.     STDMETHOD(Begin) (THIS) PURE;
  447.     /************************************************************************
  448.      * Method:
  449.      * IHXPlayer::Stop
  450.      * Purpose:
  451.      * Tell the player to stop playback of all its sources.
  452.      *
  453.      */
  454.     STDMETHOD(Stop) (THIS) PURE;
  455.     /************************************************************************
  456.      * Method:
  457.      * IHXPlayer::Pause
  458.      * Purpose:
  459.      * Tell the player to pause playback of all its sources.
  460.      *
  461.      */
  462.     STDMETHOD(Pause) (THIS) PURE;
  463.     /************************************************************************
  464.      * Method:
  465.      * IHXPlayer::Seek
  466.      * Purpose:
  467.      * Tell the player to seek in the playback timeline of all its 
  468.      * sources.
  469.      *
  470.      */
  471.     STDMETHOD(Seek) (THIS_
  472. ULONG32 ulTime) PURE;
  473.     /************************************************************************
  474.      * Method:
  475.      *     IHXPlayer::GetSourceCount
  476.      * Purpose:
  477.      *     Returns the current number of source instances supported by
  478.      *     this player instance.
  479.      */
  480.     STDMETHOD_(UINT16, GetSourceCount)(THIS) PURE;
  481.     /************************************************************************
  482.      * Method:
  483.      *     IHXPlayer::GetSource
  484.      * Purpose:
  485.      *     Returns the Nth source instance supported by this player.
  486.      */
  487.     STDMETHOD(GetSource) (THIS_
  488. UINT16 nIndex,
  489. REF(IUnknown*) pUnknown) PURE;
  490.     /************************************************************************
  491.      * Method:
  492.      *     IHXPlayer::SetClientContext
  493.      * Purpose:
  494.      *     Called by the client to install itself as the provider of client
  495.      *     services to the core. This is traditionally called by the top 
  496.      *     level client application.
  497.      */
  498.     STDMETHOD(SetClientContext) (THIS_
  499. IUnknown* pUnknown) PURE;
  500.     /************************************************************************
  501.      * Method:
  502.      *     IHXPlayer::GetClientContext
  503.      * Purpose:
  504.      *     Called to get the client context for this player. This is
  505.      *     set by the top level client application.
  506.      */
  507.     STDMETHOD(GetClientContext) (THIS_
  508. REF(IUnknown*) pUnknown) PURE;
  509.     /************************************************************************
  510.      * Method:
  511.      *     IHXPlayer::AddAdviseSink
  512.      * Purpose:
  513.      *     Call this method to add a client advise sink.
  514.      *
  515.      */
  516.     STDMETHOD(AddAdviseSink) (THIS_
  517. IHXClientAdviseSink* pAdviseSink) PURE;
  518.     /************************************************************************
  519.      * Method:
  520.      *     IHXPlayer::RemoveAdviseSink
  521.      * Purpose:
  522.      *     Call this method to remove a client advise sink.
  523.      */
  524.     STDMETHOD(RemoveAdviseSink) (THIS_
  525. IHXClientAdviseSink* pAdviseSink) PURE;
  526. };
  527. /****************************************************************************
  528.  * 
  529.  *  Interface:
  530.  *
  531.  * IHXClientEngine
  532.  *
  533.  *  Purpose:
  534.  *
  535.  * Interface to the basic client engine. Provided to the renderers and
  536.  * other client side components.
  537.  *
  538.  *  IID_IHXClientEngine:
  539.  *
  540.  * {00000403-0901-11d1-8B06-00A024406D59}
  541.  */
  542. DEFINE_GUID(IID_IHXClientEngine, 0x00000403, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  543. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  544. #undef  INTERFACE
  545. #define INTERFACE   IHXClientEngine
  546. DECLARE_INTERFACE_(IHXClientEngine, IUnknown)
  547. {
  548.     /*
  549.      * IUnknown methods
  550.      */
  551.     STDMETHOD(QueryInterface) (THIS_
  552. REFIID riid,
  553. void** ppvObj) PURE;
  554.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  555.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  556.     /*
  557.      * IHXClientEngine methods
  558.      */
  559.     /************************************************************************
  560.      * Method:
  561.      *     IHXClientEngine::CreatePlayer
  562.      * Purpose:
  563.      *     Creates a new IHXPlayer instance.
  564.      *
  565.      */
  566.     STDMETHOD(CreatePlayer) (THIS_
  567. REF(IHXPlayer*)    pPlayer) PURE;
  568.     /************************************************************************
  569.      * Method:
  570.      *     IHXClientEngine::ClosePlayer
  571.      * Purpose:
  572.      *     Called by the client when it is done using the player...
  573.      *
  574.      */
  575.     STDMETHOD(ClosePlayer) (THIS_
  576. IHXPlayer*    pPlayer) PURE;
  577.     /************************************************************************
  578.      * Method:
  579.      *     IHXClientEngine::GetPlayerCount
  580.      * Purpose:
  581.      *     Returns the current number of IHXPlayer instances supported by
  582.      *     this client engine instance.
  583.      */
  584.     STDMETHOD_(UINT16, GetPlayerCount)(THIS) PURE;
  585.     /************************************************************************
  586.      * Method:
  587.      *     IHXClientEngine::GetPlayer
  588.      * Purpose:
  589.      *     Returns the Nth IHXPlayer instances supported by this client 
  590.      *     engine instance.
  591.      */
  592.     STDMETHOD(GetPlayer) (THIS_
  593. UINT16 nPlayerNumber,
  594. REF(IUnknown*) pUnknown) PURE;
  595.     /************************************************************************
  596.      * Method:
  597.      *     IHXClientEngine::EventOccurred
  598.      * Purpose:
  599.      *     Clients call this to pass OS events to all players. HXxEvent
  600.      *     defines a cross-platform event.
  601.      */
  602.     STDMETHOD(EventOccurred) (THIS_
  603. HXxEvent* /*IN*/ pEvent) PURE;
  604. };
  605. // $Private:
  606. /****************************************************************************
  607.  * 
  608.  *  Interface:
  609.  *
  610.  * IHXClientEngineMapper
  611.  *
  612.  *  Purpose:
  613.  *
  614.  * Interface to the basic client engine. Provided to the renderers and
  615.  * other client side components.
  616.  *
  617.  *  IID_IHXClientEngineMapper:
  618.  *
  619.  * {0000040A-0901-11d1-8B06-00A024406D59}
  620.  */
  621. DEFINE_GUID(IID_IHXClientEngineMapper, 0x0000040A, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  622. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  623. #undef  INTERFACE
  624. #define INTERFACE   IHXClientEngineMapper
  625. DECLARE_INTERFACE_(IHXClientEngineMapper, IUnknown)
  626. {
  627.     /*
  628.      * IUnknown methods
  629.      */
  630.     STDMETHOD(QueryInterface) (THIS_
  631. REFIID riid,
  632. void** ppvObj) PURE;
  633.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  634.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  635.     /*
  636.      * IHXClientEngineMapper methods
  637.      */
  638.     /************************************************************************
  639.      * Method:
  640.      *     IHXClientEngineMapper::GetPlayerBySite
  641.      * Purpose:
  642.      *     Returns the IHXPlayer instance supported by this client 
  643.      *     engine instance that contains the specified IHXSite.
  644.      */
  645.     STDMETHOD(GetPlayerBySite) (THIS_
  646. IHXSite* pSite,
  647. REF(IUnknown*) pUnknown) PURE;
  648. };
  649. // $EndPrivate:
  650. #if defined _UNIX && !defined (_VXWORKS)
  651. DEFINE_GUID(IID_IHXClientEngineSelector, 0x00000404, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  652. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  653. #undef  INTERFACE
  654. #define INTERFACE   IHXClientEngineSelector
  655. DECLARE_INTERFACE_(IHXClientEngineSelector, IUnknown)
  656. {
  657.     /*
  658.      * IUnknown methods
  659.      */
  660.     STDMETHOD(QueryInterface) (THIS_
  661. REFIID riid,
  662. void** ppvObj) PURE;
  663.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  664.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  665.     /************************************************************************
  666.      * Method:
  667.      *     IHXClientEngine::Select
  668.      * Purpose:
  669.      *      Top level clients under Unix should use this instead of
  670.      *      select() to select for events.
  671.      */
  672.     STDMETHOD_(INT32, Select) (THIS_
  673.        INT32 n,
  674.        fd_set *readfds,
  675.        fd_set *writefds,
  676.        fd_set *exceptfds,
  677.        struct timeval* timeout) PURE;
  678. };
  679. #endif /* _UNIX */
  680. /****************************************************************************
  681.  * 
  682.  *  Interface:
  683.  *
  684.  * IHXClientEngineSetup
  685.  *
  686.  *  Purpose:
  687.  *
  688.  * Interface to the basic client engine. Provided to the renderers and
  689.  * other client side components.
  690.  *
  691.  *  IID_IHXClientEngineSetup:
  692.  *
  693.  * {00000405-0901-11d1-8B06-00A024406D59}
  694.  */
  695. DEFINE_GUID(IID_IHXClientEngineSetup, 0x00000405, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  696. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  697. #undef  INTERFACE
  698. #define INTERFACE   IHXClientEngineSetup
  699. DECLARE_INTERFACE_(IHXClientEngineSetup, IUnknown)
  700. {
  701.     /*
  702.      * IUnknown methods
  703.      */
  704.     STDMETHOD(QueryInterface) (THIS_
  705. REFIID riid,
  706. void** ppvObj) PURE;
  707.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  708.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  709.     /*
  710.      * IHXClientEngineSetup methods
  711.      */
  712.     /************************************************************************
  713.      * Method:
  714.      *     IHXClientEngineSetup::Setup
  715.      * Purpose:
  716.      *      Top level clients use this interface to over-ride certain basic 
  717.      *     interfaces implemented by the core. Current over-ridable 
  718.      *     interfaces are: IHXPreferences, IHXHyperNavigate
  719.      */
  720.     STDMETHOD(Setup) (THIS_
  721. IUnknown* pContext) PURE;
  722. };
  723. /****************************************************************************
  724.  * 
  725.  *  Interface:
  726.  *
  727.  * IHXInfoLogger
  728.  *
  729.  *  Purpose:
  730.  *
  731.  * Interface to send any logging information back to the server.
  732.  * This information will appear in the server's access log.
  733.  *
  734.  *  IID_IHXInfoLogger:
  735.  *
  736.  * {00000409-0901-11d1-8B06-00A024406D59}
  737.  */
  738. DEFINE_GUID(IID_IHXInfoLogger, 0x00000409, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  739. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  740. #undef  INTERFACE
  741. #define INTERFACE   IHXInfoLogger
  742. DECLARE_INTERFACE_(IHXInfoLogger, IUnknown)
  743. {
  744.     /*
  745.      * IUnknown methods
  746.      */
  747.     STDMETHOD(QueryInterface) (THIS_
  748. REFIID riid,
  749. void** ppvObj) PURE;
  750.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  751.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  752.     /*
  753.      * IHXInfoLogger methods
  754.      */
  755.     /************************************************************************
  756.      * Method:
  757.      *     IHXInfoLogger::LogInformation
  758.      * Purpose:
  759.      *     Logs any user defined information in form of action and 
  760.      *     associated data.
  761.      */
  762.     STDMETHOD(LogInformation) (THIS_
  763. const char* /*IN*/ pAction,
  764. const char* /*IN*/ pData) PURE;
  765. };
  766. // $Private:
  767. /****************************************************************************
  768.  * 
  769.  *  Interface:
  770.  *
  771.  * IHXPersistenceManager
  772.  *
  773.  *  Purpose:
  774.  *
  775.  *
  776.  *  IID_IHXPersistenceManager:
  777.  *
  778.  * {0000040B-0901-11d1-8B06-00A024406D59}
  779.  */
  780. DEFINE_GUID(IID_IHXPersistenceManager, 0x0000040B, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  781. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  782. #undef  INTERFACE
  783. #define INTERFACE   IHXPersistenceManager
  784. DECLARE_INTERFACE_(IHXPersistenceManager, IUnknown)
  785. {
  786.    /*
  787.     *  IUnknown methods
  788.     */
  789.    STDMETHOD(QueryInterface)       (THIS_
  790.                    REFIID riid,
  791.                    void** ppvObj) PURE;
  792.    STDMETHOD_(ULONG32,AddRef)      (THIS) PURE;
  793.    STDMETHOD_(ULONG32,Release)     (THIS) PURE;
  794.    /*
  795.     *  IHXPersistenceManager methods
  796.     */
  797.    /************************************************************************
  798.    *  Method:
  799.    *      IHXPersistenceManager::AddPersistentComponent
  800.    *  Purpose:
  801.    *    We currently allow ONLY IHXRenderer to register itself as a 
  802.    *    persistent component.
  803.    *       Renderer registers itself as a persistent renderer if it wants
  804.    *       to live across group boundaries.
  805.    *       It will not be unloaded until
  806.    *           a) Someone opens the next URL.
  807.    *           b) All the groups within the current presentation have been 
  808.    *              played.
  809.    */
  810.    STDMETHOD(AddPersistentComponent)    (THIS_
  811.                                        IUnknown*  /*IN*/ pComponent) PURE;
  812.    /************************************************************************
  813.    *  Method:
  814.    *      IHXPersistenceManager::RemovePersistentComponent
  815.    *  Purpose:
  816.    *       Remove an earlier registered persistent component.
  817.    */
  818.    STDMETHOD(RemovePersistentComponent) (THIS_
  819.                                        IUnknown*  /*IN*/ pComponent) PURE;
  820.    /************************************************************************
  821.    *  Method:
  822.    *      IHXPersistenceManager::GetPersistentComponent
  823.    *  Purpose:
  824.    *       Return an earlier registered persistent component.
  825.    */
  826.    STDMETHOD(GetPersistentComponent) (THIS_
  827.                                      REF(IUnknown*)  /*OUT*/ pComponent) PURE;
  828. };
  829. /****************************************************************************
  830.  * 
  831.  *  Interface:
  832.  *
  833.  * IHXDriverStreamManager
  834.  *
  835.  *  Purpose:
  836.  * Methods to notify/update driver stream renderer
  837.  *
  838.  *
  839.  *  IID_IHXDriverStreamManager
  840.  *
  841.  * {0000040C-0901-11d1-8B06-00A024406D59}
  842.  */
  843. DEFINE_GUID(IID_IHXDriverStreamManager, 0x0000040C, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  844. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  845. #undef  INTERFACE
  846. #define INTERFACE   IHXDriverStreamManager
  847. DECLARE_INTERFACE_(IHXDriverStreamManager, IUnknown)
  848. {
  849.    /*
  850.     *  IUnknown methods
  851.     */
  852.    STDMETHOD(QueryInterface)       (THIS_
  853.                    REFIID riid,
  854.                    void** ppvObj) PURE;
  855.    STDMETHOD_(ULONG32,AddRef)      (THIS) PURE;
  856.    STDMETHOD_(ULONG32,Release)     (THIS) PURE;
  857.    /*
  858.     *  IHXDriverStreamManager methods
  859.     */
  860.    /************************************************************************
  861.    *  Method:
  862.    *      IHXDriverStreamManager::AddRendererAdviseSink
  863.    *  Purpose:
  864.    *   Add a renderer advise sink 
  865.    * 
  866.    */
  867.    STDMETHOD(AddRendererAdviseSink)      (THIS_
  868.                                    IHXRendererAdviseSink* pSink) PURE;
  869.    /************************************************************************
  870.    *  Method:
  871.    *      IHXDriverStreamManager::SetDriverStreamManager
  872.    *  Purpose:
  873.    *   Remove an advise sink
  874.    * 
  875.    */
  876.    STDMETHOD(RemoveRendererAdviseSink)   (THIS_
  877.                                    IHXRendererAdviseSink* pSink) PURE;
  878. };
  879. /****************************************************************************
  880.  * 
  881.  *  Interface:
  882.  * IHXRendererAdviseSink
  883.  *
  884.  *  Purpose:
  885.  * Provides access to notifications of initialization/changes to
  886.  * renderers in the player.
  887.  *
  888.  *  IID_IHXRendererAdviseSink
  889.  *
  890.  * {0000040D-0901-11d1-8B06-00A024406D59}
  891.  *
  892.  */
  893. DEFINE_GUID(IID_IHXRendererAdviseSink, 0x0000040D, 0x901, 
  894.             0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  895. #undef  INTERFACE
  896. #define INTERFACE   IHXRendererAdviseSink
  897. DECLARE_INTERFACE_(IHXRendererAdviseSink, IUnknown)
  898. {
  899.     /*
  900.      * IUnknown methods
  901.      */
  902.     STDMETHOD(QueryInterface) (THIS_
  903. REFIID riid,
  904. void** ppvObj) PURE;
  905.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  906.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  907.     /*
  908.      * IHXRendererAdviseSink methods
  909.      */
  910.     STDMETHOD(TrackDurationSet) (THIS_
  911. UINT32 ulGroupIndex,
  912. UINT32 ulTrackIndex,
  913. UINT32 ulDuration,
  914. UINT32 ulDelay,
  915. BOOL   bIsLive) PURE;
  916.     STDMETHOD(RepeatedTrackDurationSet) (THIS_
  917. const char*  pID,
  918. UINT32 ulDuration,
  919.         BOOL   bIsLive) PURE;
  920.     STDMETHOD(TrackUpdated) (THIS_
  921. UINT32 ulGroupIndex,
  922. UINT32 ulTrackIndex,
  923. IHXValues* pValues) PURE;
  924.    /************************************************************************
  925.    *  Method:
  926.    *      IHXRendererAdviseSink::RendererInitialized
  927.    *  Purpose:
  928.    *   Notification of renderer initialization
  929.    * 
  930.    */
  931.     STDMETHOD(RendererInitialized) (THIS_
  932. IHXRenderer* pRenderer,
  933. IUnknown* pStream,
  934. IHXValues* pInfo) PURE;
  935.    /************************************************************************
  936.    *  Method:
  937.    *      IHXRendererAdviseSink::RendererClosed
  938.    *  Purpose:
  939.    *   Notification of renderer close
  940.    * 
  941.    */
  942.     STDMETHOD(RendererClosed) (THIS_
  943. IHXRenderer* pRenderer,
  944. IHXValues* pInfo) PURE;
  945. };
  946. /****************************************************************************
  947.  * 
  948.  *  Interface:
  949.  *
  950.  * IHXLayoutStream
  951.  *
  952.  *  Purpose:
  953.  *
  954.  * Interface that allows access/updates to stream properties
  955.  *
  956.  *  IID_IHXLayoutStream:
  957.  *
  958.  * {0000040E-0901-11d1-8B06-00A024406D59}
  959.  *
  960.  */
  961. DEFINE_GUID(IID_IHXLayoutStream, 0x0000040E, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  962. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  963. #undef  INTERFACE
  964. #define INTERFACE   IHXLayoutStream
  965. DECLARE_INTERFACE_(IHXLayoutStream, IUnknown)
  966. {
  967.     /*
  968.      * IUnknown methods
  969.      */
  970.     STDMETHOD(QueryInterface) (THIS_
  971. REFIID riid,
  972. void** ppvObj) PURE;
  973.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  974.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  975.     /*
  976.      * IHXLayoutStream methods
  977.      */
  978.     /************************************************************************
  979.      * Method:
  980.      *     IHXLayoutStream::GetProperty
  981.      * Purpose:
  982.      *     Get layout stream property
  983.      *     
  984.      *
  985.      */
  986.     STDMETHOD(GetProperties) (THIS_
  987. REF(IHXValues*) pValue) PURE;
  988.     /************************************************************************
  989.      * Method:
  990.      *     IHXLayoutStream::SetProperty
  991.      * Purpose:
  992.      *     Set layout stream property
  993.      *
  994.      */
  995.     STDMETHOD(SetProperties) (THIS_
  996. IHXValues* pValue) PURE;
  997. };
  998. /****************************************************************************
  999.  * 
  1000.  *  Interface:
  1001.  *
  1002.  * IHXRendererUpgrade
  1003.  *
  1004.  *  Purpose:
  1005.  *
  1006.  * Interface that tells the player to upgrade a particular set of renderers
  1007.  *
  1008.  *  IID_IHXRendererUpgrade:
  1009.  *
  1010.  * {00000410-0901-11d1-8B06-00A024406D59}
  1011.  *
  1012.  */
  1013. DEFINE_GUID(IID_IHXRendererUpgrade, 0x00000410, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1014. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1015. #undef  INTERFACE
  1016. #define INTERFACE   IHXRendererUpgrade
  1017. DECLARE_INTERFACE_(IHXRendererUpgrade, IUnknown)
  1018. {
  1019.     /*
  1020.      * IUnknown methods
  1021.      */
  1022.     STDMETHOD(QueryInterface) (THIS_
  1023. REFIID riid,
  1024. void** ppvObj) PURE;
  1025.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1026.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1027.     /*
  1028.      * IHXRendererUpgrade methods
  1029.      */
  1030.     /************************************************************************
  1031.      * Method:
  1032.      *     IHXRendererUpgrade::IsRendererAvailable
  1033.      * Purpose:
  1034.      *     Find out if the renderer is already loaded
  1035.      *     
  1036.      *
  1037.      */
  1038.     STDMETHOD_(BOOL,IsRendererAvailable) (THIS_
  1039. const char* pMimeType) PURE;
  1040.     /************************************************************************
  1041.      * Method:
  1042.      *     IHXRendererUpgrade::ForceUpgrade
  1043.      * Purpose:
  1044.      *     Force an upgrade for any unloaded renderers
  1045.      *
  1046.      */
  1047.     STDMETHOD(ForceUpgrade) (THIS) PURE;
  1048. };
  1049. /****************************************************************************
  1050.  * 
  1051.  *  Interface:
  1052.  *
  1053.  * IHXValidator
  1054.  *
  1055.  *  Purpose:
  1056.  *
  1057.  * Interface that provides validation
  1058.  *
  1059.  *  IID_IHXValidator:
  1060.  *
  1061.  * {00000412-0901-11d1-8B06-00A024406D59}
  1062.  *
  1063.  */
  1064. DEFINE_GUID(IID_IHXValidator, 0x00000412, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1065. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1066. #undef  INTERFACE
  1067. #define INTERFACE   IHXValidator
  1068. DECLARE_INTERFACE_(IHXValidator, IUnknown)
  1069. {
  1070.     /*
  1071.      * IUnknown methods
  1072.      */
  1073.     STDMETHOD(QueryInterface) (THIS_
  1074. REFIID riid,
  1075. void** ppvObj) PURE;
  1076.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1077.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1078.     /*
  1079.      * IHXValidator methods
  1080.      */
  1081.     /************************************************************************
  1082.      * Method:
  1083.      *     IHXValidator::ValidateProtocol
  1084.      * Purpose:
  1085.      *     Find out if the protocol is valid
  1086.      *     
  1087.      *
  1088.      */
  1089.     STDMETHOD_(BOOL,ValidateProtocol) (THIS_
  1090.  char* pProtocol) PURE;
  1091.     /************************************************************************
  1092.      * Method:
  1093.      *     IHXValidator::ValidateMetaFile
  1094.      * Purpose:
  1095.      *     Find out if it is a meta file
  1096.      *     
  1097.      *
  1098.      */
  1099.     STDMETHOD(ValidateMetaFile) (THIS_
  1100.  IHXRequest* pRequest,
  1101.  IHXBuffer* pContent) PURE;
  1102. };
  1103. /****************************************************************************
  1104.  * 
  1105.  *  Interface:
  1106.  *
  1107.  * IHXPrivateStreamSource
  1108.  *
  1109.  *  Purpose:
  1110.  * This interface is being added for the sole purpose of implementing 
  1111.  * IsSaveAllowed on our stream source objects.  We need to get this in
  1112.  * for alpha-3 of the player, since it would be very bad to put out a 
  1113.  * player version that allowed recording of content that was supposed to
  1114.  * be unrecordable.  This method should be moved into IHXStreamSource
  1115.  * as soon as is convenient.
  1116.  *
  1117.  *  IHXPrivateStreamSource:
  1118.  *
  1119.  *  {57DFD0E2-C76E-11d1-8B5C-006008065552}
  1120.  *
  1121.  */
  1122.  
  1123. DEFINE_GUID(IID_IHXPrivateStreamSource, 0x57dfd0e2, 0xc76e, 0x11d1, 0x8b, 0x5c, 
  1124. 0x0, 0x60, 0x8, 0x6, 0x55, 0x52);
  1125. #undef  INTERFACE
  1126. #define INTERFACE   IHXPrivateStreamSource
  1127. DECLARE_INTERFACE_(IHXPrivateStreamSource, IUnknown)
  1128. {
  1129.     /*
  1130.      * IUnknown methods
  1131.      */
  1132.     STDMETHOD(QueryInterface) (THIS_
  1133. REFIID riid,
  1134. void** ppvObj) PURE;
  1135.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1136.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1137.     /*
  1138.      * IHXPrivateStreamSource methods
  1139.      */
  1140.     STDMETHOD_ (BOOL,IsSaveAllowed) (THIS) PURE;
  1141. };
  1142. // $EndPrivate.
  1143. /****************************************************************************
  1144.  * 
  1145.  *  Interface:
  1146.  *
  1147.  * IHXPlayer2
  1148.  *
  1149.  *  Purpose:
  1150.  *
  1151.  * Extra methods in addition to IHXPlayer
  1152.  *
  1153.  *  IID_IHXPlayer2:
  1154.  *
  1155.  * {00000411-0901-11d1-8B06-00A024406D59}
  1156.  *
  1157.  */
  1158. DEFINE_GUID(IID_IHXPlayer2, 0x00000411, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1159. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1160. #undef  INTERFACE
  1161. #define INTERFACE   IHXPlayer2
  1162. DECLARE_INTERFACE_(IHXPlayer2, IUnknown)
  1163. {
  1164.     /*
  1165.      * IUnknown methods
  1166.      */
  1167.     STDMETHOD(QueryInterface) (THIS_
  1168. REFIID riid,
  1169. void** ppvObj) PURE;
  1170.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1171.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1172.     /************************************************************************
  1173.      * Method:
  1174.      *     IID_IHXPlayer2::SetMinimumPreroll
  1175.      * Purpose:
  1176.      *     Call this method to set the minimum preroll of this clip
  1177.      */
  1178.     STDMETHOD(SetMinimumPreroll) (THIS_
  1179. UINT32 ulMinPreroll) PURE;
  1180.     /************************************************************************
  1181.      * Method:
  1182.      *     IID_IHXPlayer2::GetMinimumPreroll
  1183.      * Purpose:
  1184.      *     Call this method to get the minimum preroll of this clip
  1185.      */
  1186.     STDMETHOD(GetMinimumPreroll) (THIS_
  1187. REF(UINT32) ulMinPreroll) PURE;
  1188.     /************************************************************************
  1189.      * Method:
  1190.      *     IID_IHXPlayer2::OpenRequest
  1191.      * Purpose:
  1192.      *     Call this method to open the IHXRequest
  1193.      */
  1194.     STDMETHOD(OpenRequest) (THIS_
  1195.     IHXRequest* pRequest) PURE;
  1196.     /************************************************************************
  1197.      * Method:
  1198.      *     IID_IHXPlayer2::GetRequest
  1199.      * Purpose:
  1200.      *     Call this method to get the IHXRequest
  1201.      */
  1202.     STDMETHOD(GetRequest) (THIS_
  1203.    REF(IHXRequest*) pRequest) PURE;
  1204. };
  1205. // $Private:
  1206. /****************************************************************************
  1207.  * 
  1208.  *  Interface:
  1209.  *
  1210.  * IHXUpdateProperties
  1211.  *
  1212.  *  Purpose:
  1213.  *
  1214.  * update any offset related stuff
  1215.  *
  1216.  *  IID_IHXUpdateProperties:
  1217.  *
  1218.  * {00000413-0901-11d1-8B06-00A024406D59}
  1219.  *
  1220.  */
  1221. DEFINE_GUID(IID_IHXUpdateProperties, 0x00000413, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1222. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1223. #undef  INTERFACE
  1224. #define INTERFACE   IHXUpdateProperties
  1225. DECLARE_INTERFACE_(IHXUpdateProperties, IUnknown)
  1226. {
  1227.     /*
  1228.      * IUnknown methods
  1229.      */
  1230.     STDMETHOD(QueryInterface) (THIS_
  1231. REFIID riid,
  1232. void** ppvObj) PURE;
  1233.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1234.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1235.     /************************************************************************
  1236.      * Method:
  1237.      *     IHXUpdateProperties::UpdatePacketTimeOffset
  1238.      * Purpose:
  1239.      *     Call this method to update the timestamp offset of cached packets
  1240.      */
  1241.     STDMETHOD(UpdatePacketTimeOffset) (THIS_
  1242.        INT32 lTimeOffset) PURE;
  1243.     /************************************************************************
  1244.      * Method:
  1245.      *     IHXUpdateProperties::UpdatePlayTimes
  1246.      * Purpose:
  1247.      *     Call this method to update properties
  1248.      */
  1249.     STDMETHOD(UpdatePlayTimes)       (THIS_
  1250.        IHXValues* pProps) PURE;
  1251. };
  1252. // $EndPrivate.
  1253. /****************************************************************************
  1254.  * 
  1255.  *  Interface:
  1256.  *
  1257.  * IHXPlayerNavigator
  1258.  *
  1259.  *  Purpose:
  1260.  *
  1261.  * navigate player objects
  1262.  *
  1263.  *  IID_IHXPlayerNavigator:
  1264.  *
  1265.  * {00000414-0901-11d1-8B06-00A024406D59}
  1266.  *
  1267.  */
  1268. DEFINE_GUID(IID_IHXPlayerNavigator, 0x00000414, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1269. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1270. #undef  INTERFACE
  1271. #define INTERFACE   IHXPlayerNavigator
  1272. DECLARE_INTERFACE_(IHXPlayerNavigator, IUnknown)
  1273. {
  1274.     /*
  1275.      * IUnknown methods
  1276.      */
  1277.     STDMETHOD(QueryInterface) (THIS_
  1278. REFIID riid,
  1279. void** ppvObj) PURE;
  1280.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1281.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1282.     /************************************************************************
  1283.      * Method:
  1284.      *     IHXPlayerNavigator::AddChildPlayer
  1285.      * Purpose:
  1286.      *     Add child player to the current player
  1287.      */
  1288.     STDMETHOD(AddChildPlayer)     (THIS_
  1289.     IHXPlayer* pPlayer) PURE;
  1290.     /************************************************************************
  1291.      * Method:
  1292.      *     IHXPlayerNavigator::RemoveChildPlayer
  1293.      * Purpose:
  1294.      *     Remove child player from the current player
  1295.      */
  1296.     STDMETHOD(RemoveChildPlayer)    (THIS_
  1297.     IHXPlayer* pPlayer) PURE;
  1298.     /************************************************************************
  1299.      * Method:
  1300.      *     IHXPlayerNavigator::GetNumChildPlayer
  1301.      * Purpose:
  1302.      *     Get number of the child players
  1303.      */
  1304.     STDMETHOD_(UINT16, GetNumChildPlayer)    (THIS) PURE;
  1305.     /************************************************************************
  1306.      * Method:
  1307.      *     IHXPlayerNavigator::GetChildPlayer
  1308.      * Purpose:
  1309.      *     Get Nth child player
  1310.      */
  1311.     STDMETHOD(GetChildPlayer)     (THIS_
  1312.     UINT16 uPlayerIndex,
  1313.     REF(IHXPlayer*) pPlayer) PURE;
  1314.     /************************************************************************
  1315.      * Method:
  1316.      *     IHXPlayerNavigator::SetParentPlayer
  1317.      * Purpose:
  1318.      *     Set the parent player
  1319.      */
  1320.     STDMETHOD(SetParentPlayer)     (THIS_
  1321.     IHXPlayer* pPlayer) PURE;
  1322.     /************************************************************************
  1323.      * Method:
  1324.      *     IHXPlayerNavigator::RemoveParentPlayer
  1325.      * Purpose:
  1326.      *     Remove the parent player
  1327.      */
  1328.     STDMETHOD(RemoveParentPlayer)   (THIS_
  1329.     IHXPlayer* pPlayer) PURE;
  1330.     /************************************************************************
  1331.      * Method:
  1332.      *     IHXPlayerNavigator::GetParentPlayer
  1333.      * Purpose:
  1334.      *     Get the parent player
  1335.      */
  1336.     STDMETHOD(GetParentPlayer)     (THIS_
  1337.     REF(IHXPlayer*) pPlayer) PURE;
  1338. };
  1339. // $Private:
  1340. /****************************************************************************
  1341.  * 
  1342.  *  Interface:
  1343.  *
  1344.  * IHXPersistentComponentManager
  1345.  *
  1346.  *  Purpose:
  1347.  *
  1348.  * persistent component manager
  1349.  *
  1350.  *  IID_IHXPersistentComponentManager
  1351.  *
  1352.  * {00000415-0901-11d1-8B06-00A024406D59}
  1353.  *
  1354.  */
  1355. DEFINE_GUID(IID_IHXPersistentComponentManager, 0x00000415, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1356. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1357. #undef  INTERFACE
  1358. #define INTERFACE   IHXPersistentComponentManager
  1359. DECLARE_INTERFACE_(IHXPersistentComponentManager, IUnknown)
  1360. {
  1361.     /*
  1362.      * IUnknown methods
  1363.      */
  1364.     STDMETHOD(QueryInterface) (THIS_
  1365. REFIID riid,
  1366. void** ppvObj) PURE;
  1367.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1368.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1369.     /************************************************************************
  1370.      * Method:
  1371.      *     IHXPersistentComponentManager::CreatePersistentComponent
  1372.      * Purpose:
  1373.      *     create persistent component
  1374.      */
  1375.     STDMETHOD(CreatePersistentComponent)    (THIS_
  1376.     REF(IHXPersistentComponent*)   pPersistentComponent) PURE;
  1377.     /************************************************************************
  1378.      * Method:
  1379.      *     IHXPersistentComponentManager::AddPersistentComponent
  1380.      * Purpose:
  1381.      *     add persistent component
  1382.      */
  1383.     STDMETHOD(AddPersistentComponent)     (THIS_
  1384.     IHXPersistentComponent* pPersistentComponent) PURE;
  1385.     /************************************************************************
  1386.      * Method:
  1387.      *     IHXPersistentComponentManager::RemovePersistentComponent
  1388.      * Purpose:
  1389.      *     remove persistent component
  1390.      */
  1391.     STDMETHOD(RemovePersistentComponent)    (THIS_
  1392.     UINT32 ulPersistentComponentID) PURE;
  1393.     /************************************************************************
  1394.      * Method:
  1395.      *     IHXPersistentComponentManager::GetPersistentComponentInfo
  1396.      * Purpose:
  1397.      *     get persistent component information
  1398.      */
  1399.     STDMETHOD(GetPersistentComponent)     (THIS_
  1400.     UINT32     ulPersistentComponentID,
  1401.     REF(IHXPersistentComponent*)   pPersistentComponent) PURE;
  1402.     /************************************************************************
  1403.      * Method:
  1404.      *     IHXPersistentComponentManager::AttachPersistentComponentLayout
  1405.      * Purpose:
  1406.      *     get persistent component information
  1407.      */
  1408.     STDMETHOD(AttachPersistentComponentLayout) (THIS_
  1409. IUnknown*   pLSG,
  1410. IHXValues* pProps) PURE;
  1411. };
  1412. /****************************************************************************
  1413.  * 
  1414.  *  Interface:
  1415.  *
  1416.  * IHXPersistentComponent
  1417.  *
  1418.  *  Purpose:
  1419.  *
  1420.  * persistent component
  1421.  *
  1422.  *  IID_IHXPersistentComponent
  1423.  *
  1424.  * {00000416-0901-11d1-8B06-00A024406D59}
  1425.  *
  1426.  */
  1427. DEFINE_GUID(IID_IHXPersistentComponent, 0x00000416, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1428. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1429. #undef  INTERFACE
  1430. #define INTERFACE   IHXPersistentComponent
  1431. DECLARE_INTERFACE_(IHXPersistentComponent, IUnknown)
  1432. {
  1433.     /*
  1434.      * IUnknown methods
  1435.      */
  1436.     STDMETHOD(QueryInterface) (THIS_
  1437. REFIID riid,
  1438. void** ppvObj) PURE;
  1439.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1440.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1441.     /************************************************************************
  1442.      * Method:
  1443.      *     IHXPersistentComponent::Init
  1444.      * Purpose:
  1445.      *     initialize persistent component
  1446.      */
  1447.     STDMETHOD(Init) (THIS_
  1448.                                 IHXPersistentRenderer* pPersistentRenderer) PURE;
  1449.     /************************************************************************
  1450.      * Method:
  1451.      *     IHXPersistentComponent::AddRendererAdviseSink
  1452.      * Purpose:
  1453.      *     add renderer advise sink
  1454.      */
  1455.     STDMETHOD(AddRendererAdviseSink) (THIS_
  1456.                                 IHXRendererAdviseSink* pSink) PURE;
  1457.     /************************************************************************
  1458.      * Method:
  1459.      *     IHXPersistentComponent::RemoveRendererAdviseSink
  1460.      * Purpose:
  1461.      *     remove renderer advise sink
  1462.      */
  1463.     STDMETHOD(RemoveRendererAdviseSink) (THIS_
  1464.                                 IHXRendererAdviseSink* pSink) PURE;
  1465.     /************************************************************************
  1466.      * Method:
  1467.      *     IHXPersistentComponent::AddGroupSink
  1468.      * Purpose:
  1469.      *     add renderer advise sink
  1470.      */
  1471.     STDMETHOD(AddGroupSink) (THIS_
  1472.                                 IHXGroupSink* pSink) PURE;
  1473.     /************************************************************************
  1474.      * Method:
  1475.      *     IHXPersistentComponent::RemoveGroupSink
  1476.      * Purpose:
  1477.      *     remove renderer advise sink
  1478.      */
  1479.     STDMETHOD(RemoveGroupSink) (THIS_
  1480.                                 IHXGroupSink* pSink) PURE;
  1481.     /************************************************************************
  1482.      * Method:
  1483.      *     IHXPersistentComponent::GetPersistentRenderer
  1484.      * Purpose:
  1485.      *     get persistent renderer
  1486.      */
  1487.     STDMETHOD(GetPersistentRenderer) (THIS_
  1488.                                 REF(IHXPersistentRenderer*) pPersistentRenderer) PURE;
  1489.     /************************************************************************
  1490.      * Method:
  1491.      *     IHXPersistentComponent::GetPersistentProperties
  1492.      * Purpose:
  1493.      *     get persistent component properties
  1494.      */
  1495.     STDMETHOD(GetPersistentProperties) (THIS_
  1496.                                 REF(IHXValues*) pProperties) PURE;
  1497. };
  1498. /****************************************************************************
  1499.  * 
  1500.  *  Interface:
  1501.  *
  1502.  * IID_IHXClientStatisticsGranularity
  1503.  *
  1504.  *  Purpose:
  1505.  *
  1506.  * Enables users to set the Granularity at which statistics are 
  1507.  * gathered. This allows machines under high load to still run
  1508.  * efficiently.
  1509.  *
  1510.  *
  1511.  *  IID_IHXClientStatisticsGranularity
  1512.  *
  1513.  * {00000416-0901-11d1-8B06-00A024406D59}
  1514.  *
  1515.  */
  1516. DEFINE_GUID(IID_IHXClientStatisticsGranularity, 0x00000417, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1517. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1518. #undef  INTERFACE
  1519. #define INTERFACE   IHXClientStatisticsGranularity
  1520. DECLARE_INTERFACE_(IHXClientStatisticsGranularity, IUnknown)
  1521. {
  1522.     /*
  1523.      * IUnknown methods
  1524.      */
  1525.     STDMETHOD(QueryInterface) (THIS_
  1526. REFIID riid,
  1527. void** ppvObj) PURE;
  1528.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  1529.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  1530.     /************************************************************************
  1531.      * Method:
  1532.      *     IHXClientStatisticsGranularity::SetStatsGranularity
  1533.      * Purpose:
  1534.      *     Set the granularity
  1535.      */
  1536.     STDMETHOD(SetStatsGranularity) (THIS_ ULONG32 ulGranularity) PURE;
  1537. };
  1538. // $EndPrivate.
  1539. // $Private:
  1540. /****************************************************************************
  1541.  * 
  1542.  *  Interface:
  1543.  *
  1544.  * IID_IHXSourceBufferingStats
  1545.  *
  1546.  *  Purpose:
  1547.  *
  1548.  * Enables users to get the current buffering status of the 
  1549.  * given source. 
  1550.  *
  1551.  *
  1552.  *      IID_IHXSourceBufferingStats
  1553.  *
  1554.  * {00000418-0901-11d1-8B06-00A024406D59}
  1555.  *
  1556.  */
  1557. DEFINE_GUID(IID_IHXSourceBufferingStats, 0x00000418, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1558. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  1559. #undef  INTERFACE
  1560. #define INTERFACE   IHXSourceBufferingStats
  1561. DECLARE_INTERFACE_(IHXSourceBufferingStats, IUnknown)
  1562. {
  1563.     /************************************************************************
  1564.      * Method:
  1565.      *     IHXSourceBufferingStats::GetCurrentBuffering
  1566.      * Purpose:
  1567.      *     Get the current buffering information
  1568.      */
  1569.     STDMETHOD(GetCurrentBuffering)  (THIS_ UINT16  uStreamNumber,
  1570.      REF(INT64)  llLowestTimestamp, 
  1571.      REF(INT64)  llHighestTimestamp,
  1572.      REF(UINT32) ulNumBytes,
  1573.      REF(BOOL)   bDone) PURE;
  1574. };
  1575. /****************************************************************************
  1576.  * 
  1577.  *  Interface:
  1578.  *
  1579.  * IID_IHXSourceBufferingStats2
  1580.  *
  1581.  *  Purpose:
  1582.  *
  1583.  * Enables users to get the current buffering status of the 
  1584.  * given source. 
  1585.  *
  1586.  *
  1587.  *      IID_IHXSourceBufferingStats2
  1588.  *
  1589.  * {00000418-0901-11d1-8B06-00A024406D5A}
  1590.  *
  1591.  */
  1592. DEFINE_GUID(IID_IHXSourceBufferingStats2, 0x00000418, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  1593. 0xa0, 0x24, 0x40, 0x6d, 0x5a);
  1594. #undef  INTERFACE
  1595. #define INTERFACE   IHXSourceBufferingStats2
  1596. DECLARE_INTERFACE_(IHXSourceBufferingStats2, IHXSourceBufferingStats)
  1597. {
  1598.     /************************************************************************
  1599.      * Method:
  1600.      *     IHXSourceBufferingStats2::GetCurrentBuffering
  1601.      * Purpose:
  1602.      *     Get the amount of buffering in the transport
  1603.      */
  1604.     STDMETHOD(GetCurrentBuffering)  (THIS_ UINT16  uStreamNumber,
  1605.      REF(INT64)  llLowestTimestamp, 
  1606.      REF(INT64)  llHighestTimestamp,
  1607.      REF(UINT32) ulNumBytes,
  1608.      REF(BOOL)   bDone) PURE;
  1609.     /************************************************************************
  1610.      * Method:
  1611.      *     IHXSourceBufferingStats2::GetTotalBuffering
  1612.      * Purpose:
  1613.      *     Get the total amount of data buffered for a stream.
  1614.      *      This includes what is in the transport buffer and in
  1615.      *      the renderer
  1616.      */
  1617.     STDMETHOD(GetTotalBuffering)  (THIS_ UINT16  uStreamNumber,
  1618.    REF(INT64)  llLowestTimestamp, 
  1619.    REF(INT64)  llHighestTimestamp,
  1620.    REF(UINT32) ulNumBytes,
  1621.    REF(BOOL)   bDone) PURE;
  1622. };
  1623. // $EndPrivate.
  1624. // $Private:
  1625. /****************************************************************************
  1626.  * 
  1627.  *  Interface:
  1628.  *
  1629.  * IID_IHXPlayerPresentation
  1630.  *
  1631.  *  Purpose:
  1632.  *
  1633.  * Control over the player's current presentation
  1634.  *
  1635.  *      IID_IHXPlayerPresentation
  1636.  *
  1637.  * {6DE011A7-EF05-417b-9367-6FE0E54302D3}
  1638.  *
  1639.  */
  1640. DEFINE_GUID(IID_IHXPlayerPresentation, 0x6de011a7, 0xef05, 0x417b, 0x93, 0x67, 0x6f, 0xe0, 0xe5, 0x43, 0x2, 0xd3);
  1641. #undef  INTERFACE
  1642. #define INTERFACE   IHXPlayerPresentation
  1643. DECLARE_INTERFACE_(IHXPlayerPresentation, IUnknown)
  1644. {
  1645.     /************************************************************************
  1646.      * Method:
  1647.      *     IHXPlayerPresentation::ClosePresentation
  1648.      * Purpose:
  1649.      *     Call this method to close the player's current presentation.  This will free
  1650.      *     all resources associated with the current presentation.
  1651.      */
  1652.     STDMETHOD(ClosePresentation)    (THIS) PURE;
  1653. };
  1654. // $EndPrivate.
  1655. // $Private:
  1656. /****************************************************************************
  1657.  * 
  1658.  *  Interface:
  1659.  *
  1660.  * IID_IHXCoreMutex
  1661.  *
  1662.  *  Purpose:
  1663.  *
  1664.  * Access the core mutex
  1665.  *
  1666.  *      IID_IHXCoreMutex
  1667.  *
  1668.  * {6DE011A7-EF05-417b-9367-6FE0E44404D4}
  1669.  *
  1670.  */
  1671. DEFINE_GUID(IID_IHXCoreMutex, 0x6de011a7, 0xef05, 0x417b, 0x93, 0x67, 0x6f, 0xe0, 0xe4, 0x44, 0x4, 0xd4);
  1672. #undef  INTERFACE
  1673. #define INTERFACE   IHXCoreMutex
  1674. DECLARE_INTERFACE_(IHXCoreMutex, IUnknown)
  1675. {
  1676.     /************************************************************************
  1677.      * Method:
  1678.      *     IHXCoreMutex::LockCoreMutex
  1679.      * Purpose:
  1680.      *      Call this method to lock the client engine's core mutex.
  1681.      */
  1682.     STDMETHOD(LockCoreMutex)    (THIS) PURE;
  1683.     /************************************************************************
  1684.      * Method:
  1685.      *     IHXCoreMutex::UnlockCoreMutex
  1686.      * Purpose:
  1687.      *      Call this method to unlock the client engine's core mutex.
  1688.      */
  1689.     STDMETHOD(UnlockCoreMutex)    (THIS) PURE;
  1690. };
  1691. /****************************************************************************
  1692.  * 
  1693.  *  Interface:
  1694.  *
  1695.  * IID_IHXMacBlitMutex
  1696.  *
  1697.  *  Purpose:
  1698.  *
  1699.  * Access the Mac blitting mutex
  1700.  *
  1701.  * Used for all Mac drawing, in both the core and the tlc. This
  1702.  * mutex prevents quickdraw (and/or the image compression manager)
  1703.  * from re-entering which causes crashes on OS X.
  1704.  *
  1705.  *      IID_IHXCoreMutex
  1706.  *
  1707.  * {294e6de4-fbc6-4c06-bb94-95a969373b4d}
  1708.  *
  1709.  */
  1710. DEFINE_GUID(IID_IHXMacBlitMutex, 0x294e6de4,  0xfbc6,  0x4c06,  0xbb,  0x94,  0x95, 0xa9,  0x69,  0x37,  0x3b,  0x4d);
  1711. #undef  INTERFACE
  1712. #define INTERFACE   IHXMacBlitMutex
  1713. DECLARE_INTERFACE_(IHXMacBlitMutex, IUnknown)
  1714. {
  1715.     /************************************************************************
  1716.      * Method:
  1717.      *     IHXMacBlitMutex::LockMacBlitMutex
  1718.      * Purpose:
  1719.      *      Call this method to lock the client engine's core mutex.
  1720.      */
  1721.     STDMETHOD(LockMacBlitMutex)    (THIS) PURE;
  1722.     /************************************************************************
  1723.      * Method:
  1724.      *     IHXMacBlitMutex::UnlockMacBlitMutex
  1725.      * Purpose:
  1726.      *      Call this method to unlock the client engine's core mutex.
  1727.      */
  1728.     STDMETHOD(UnlockMacBlitMutex)    (THIS) PURE;
  1729. };
  1730. // $EndPrivate.
  1731. #endif /* _HXCORE_H_ */