hxcore.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:54k
源码类别:

Symbian

开发平台:

C/C++

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