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

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 _IHXGROUP_H_
  36. #define _IHXGROUP_H_
  37. /****************************************************************************
  38.  *
  39.  * Forward declarations of some interfaces defined/used here-in.
  40.  */
  41. typedef _INTERFACE   IHXStreamSource     IHXStreamSource;
  42. typedef _INTERFACE   IHXGroup     IHXGroup;
  43. typedef _INTERFACE   IHXGroup2     IHXGroup2;
  44. typedef _INTERFACE   IHXGroupManager     IHXGroupManager;
  45. typedef _INTERFACE   IHXGroupSink     IHXGroupSink;
  46. typedef _INTERFACE   IHXGroupSink2     IHXGroupSink2;
  47. typedef _INTERFACE   IHXValues     IHXValues;
  48. typedef _INTERFACE   IHXTrack     IHXTrack;
  49. typedef _INTERFACE   IHXTrackSink     IHXTrackSink;
  50. typedef _INTERFACE   IHXPrefetch     IHXPrefetch;
  51. typedef _INTERFACE   IHXPrefetchSink     IHXPrefetchSink;
  52. /****************************************************************************
  53.  * 
  54.  *  Interface:
  55.  * 
  56.  *  IHXGroup
  57.  * 
  58.  *  Purpose:
  59.  * 
  60.  * 
  61.  *  IID_IHXGroup:
  62.  * 
  63.  *  {0x00002400-0901-11d1-8B06-00A024406D59}
  64.  * 
  65.  */
  66. DEFINE_GUID(IID_IHXGroup, 0x00002400, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  67.             0xa0, 0x24, 0x40, 0x6d, 0x59);
  68. #undef  INTERFACE
  69. #define INTERFACE   IHXGroup
  70. DECLARE_INTERFACE_(IHXGroup, IUnknown)
  71. {
  72.     /*
  73.      *  IUnknown methods
  74.      */
  75.     STDMETHOD(QueryInterface)       (THIS_
  76.                     REFIID riid,
  77.                     void** ppvObj) PURE;
  78.     STDMETHOD_(ULONG32,AddRef)      (THIS) PURE;
  79.     STDMETHOD_(ULONG32,Release)     (THIS) PURE;
  80.     /*
  81.      *  IHXGroup methods
  82.      */
  83.     /************************************************************************
  84.     *  Method:
  85.     *      IHXGroup::SetGroupProperties
  86.     *  Purpose:
  87.     * Set any group specific information like Title Author 
  88.     * Copyright etc. 
  89.     */
  90.     STDMETHOD(SetGroupProperties)   (THIS_
  91.      IHXValues*  /*IN*/ pProperties) PURE;
  92.     /************************************************************************
  93.     *  Method:
  94.     *      IHXGroup::GetGroupProperties
  95.     *  Purpose:
  96.     * Get any group specific information. May return NULL.
  97.     */
  98.     STDMETHOD_(IHXValues*, GetGroupProperties)   (THIS) PURE;
  99.     /************************************************************************
  100.     *  Method:
  101.     *      IHXGroup::GetTrackCount
  102.     *  Purpose:
  103.     * Get the number of tracks within this group.
  104.     */
  105.     STDMETHOD_(UINT16,GetTrackCount)    (THIS) PURE;
  106.     /************************************************************************
  107.     *  Method:
  108.     *      IHXGroup::GetTrack
  109.     *  Purpose:
  110.     * Get ith track in this group
  111.     */
  112.     STDMETHOD(GetTrack) (THIS_
  113. UINT16      /*IN*/ uTrackIndex,
  114. REF(IHXValues*)  /*OUT*/ pTrack) PURE;
  115.     /************************************************************************
  116.     *  Method:
  117.     *      IHXGroup::AddTrack
  118.     *  Purpose:
  119.     * Add Tracks to the group.
  120.     */
  121.     STDMETHOD(AddTrack) (THIS_
  122. IHXValues* /*IN*/ pTrack) PURE;
  123.     /************************************************************************
  124.     *  Method:
  125.     *      IHXGroup::RemoveTrack
  126.     *  Purpose:
  127.     * Remove an already added track
  128.     */
  129.     STDMETHOD(RemoveTrack)  (THIS_
  130.     UINT16 /*IN*/ uTrackIndex) PURE;
  131. };
  132. // $Private:
  133. /****************************************************************************
  134.  * 
  135.  *  Interface:
  136.  * 
  137.  *  IHXGroup2
  138.  * 
  139.  *  Purpose:
  140.  * 
  141.  * 
  142.  *  IID_IHXGroup2:
  143.  * 
  144.  *  {0x00002403-0901-11d1-8B06-00A024406D59}
  145.  * 
  146.  */
  147. DEFINE_GUID(IID_IHXGroup2, 0x00002403, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  148.             0xa0, 0x24, 0x40, 0x6d, 0x59);
  149. #undef  INTERFACE
  150. #define INTERFACE   IHXGroup2
  151. DECLARE_INTERFACE_(IHXGroup2, IUnknown)
  152. {
  153.     /*
  154.      *  IUnknown methods
  155.      */
  156.     STDMETHOD(QueryInterface)       (THIS_
  157.                     REFIID riid,
  158.                     void** ppvObj) PURE;
  159.     STDMETHOD_(ULONG32,AddRef)      (THIS) PURE;
  160.     STDMETHOD_(ULONG32,Release)     (THIS) PURE;
  161.     /*
  162.      *  IHXGroup2 methods
  163.      */
  164.     /************************************************************************
  165.     *  Method:
  166.     *      IHXGroup2::GetIHXTrack
  167.     *  Purpose:
  168.     * Get ith track in this group
  169.     */
  170.     STDMETHOD(GetIHXTrack) (THIS_
  171. UINT16  /*IN*/ uTrackIndex,
  172. REF(IHXTrack*) /*OUT*/ pTrack) PURE;
  173.     /************************************************************************
  174.     *  Method:
  175.     *      IHXGroup2::AddTrackSink
  176.     *  Purpose:
  177.     * add advise sink on track
  178.     */
  179.     STDMETHOD(AddTrackSink) (THIS_
  180. IHXTrackSink*   /*IN*/  pSink) PURE;
  181.     /************************************************************************
  182.     *  Method:
  183.     *      IHXGroup2::RemoveTrackSink
  184.     *  Purpose:
  185.     * remove advise sink on track
  186.     */
  187.     STDMETHOD(RemoveTrackSink) (THIS_
  188. IHXTrackSink*   /*IN*/  pSink) PURE;
  189.     /************************************************************************
  190.     *  Method:
  191.     *      IHXGroup2::AddTrack2
  192.     *  Purpose:
  193.     * Add Tracks to the group, including the props set in RequestHeader
  194.     */
  195.     STDMETHOD(AddTrack2)     (THIS_
  196.     IHXValues* /*IN*/ pTrack,
  197.     IHXValues* /*IN*/ pRequestProp) PURE;
  198.     /************************************************************************
  199.     *  Method:
  200.     *      IHXGroup2::GetTrack2
  201.     *  Purpose:
  202.     * Get ith track in this group
  203.     */
  204.     STDMETHOD(GetTrack2)     (THIS_
  205.     UINT16  /*IN*/ uTrackIndex,
  206.     REF(IHXValues*) /*OUT*/ pTrack,
  207.     REF(IHXValues*) /*OUT*/ pTrackPropInRequest) PURE;
  208.     /************************************************************************
  209.     *  Method:
  210.     *      IHXGroup2::SetPersistentComponentProperties
  211.     *  Purpose:
  212.     * Set persistent component properties associated with this group
  213.     * One group may contain multiple persistent components
  214.     */
  215.     STDMETHOD(SetPersistentComponentProperties)   (THIS_
  216.    UINT32 /*IN*/ ulPersistentComponentID,
  217.    IHXValues*  /*IN*/ pProperties) PURE;
  218.     /************************************************************************
  219.     *  Method:
  220.     *      IHXGroup2::GetPersistentComponentProperties
  221.     *  Purpose:
  222.     * Get any persistent component specific information associated with 
  223.     * the group.
  224.     * One group may contain multiple persistent components
  225.     */
  226.     STDMETHOD(GetPersistentComponentProperties)   (THIS_
  227.    UINT32     /*IN*/  ulPersistentComponentID,
  228.    REF(IHXValues*) /*OUT*/ pProperties) PURE;
  229. };
  230. // $EndPrivate.
  231. /****************************************************************************
  232.  * 
  233.  *  Interface:
  234.  * 
  235.  *  IHXGroupManager
  236.  * 
  237.  *  Purpose:
  238.  * 
  239.  * 
  240.  *  IID_IHXGroupManager:
  241.  * 
  242.  *  {0x00002401-0901-11d1-8B06-00A024406D59}
  243.  * 
  244.  */
  245. DEFINE_GUID(IID_IHXGroupManager, 0x00002401, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  246.             0xa0, 0x24, 0x40, 0x6d, 0x59);
  247. #undef  INTERFACE
  248. #define INTERFACE   IHXGroupManager
  249. DECLARE_INTERFACE_(IHXGroupManager, IUnknown)
  250. {
  251.     /*
  252.      *  IUnknown methods
  253.      */
  254.     STDMETHOD(QueryInterface)       (THIS_
  255.                     REFIID riid,
  256.                     void** ppvObj) PURE;
  257.     STDMETHOD_(ULONG32,AddRef)      (THIS) PURE;
  258.     STDMETHOD_(ULONG32,Release)     (THIS) PURE;
  259.     /*
  260.      *  IHXGroupManager methods
  261.      */
  262.     /************************************************************************
  263.     *  Method:
  264.     *      IHXGroupManager::CreateGroup
  265.     *  Purpose:
  266.     * Create a group
  267.     */
  268.     STDMETHOD(CreateGroup)    (REF(IHXGroup*) pGroup) PURE;
  269.     /************************************************************************
  270.     *  Method:
  271.     *      IHXGroupManager::GetGroupCount
  272.     *  Purpose:
  273.     * Get the number of groups within the presentation.
  274.     */
  275.     STDMETHOD_(UINT16,GetGroupCount)    (THIS) PURE;
  276.     /************************************************************************
  277.     *  Method:
  278.     *      IHXGroupManager::GetGroup
  279.     *  Purpose:
  280.     * Get ith group in the presentation
  281.     */
  282.     STDMETHOD(GetGroup) (THIS_
  283. UINT16    /*IN*/  uGroupIndex,
  284. REF(IHXGroup*)  /*OUT*/ pGroup) PURE;
  285.     /************************************************************************
  286.     *  Method:
  287.     *      IHXGroupManager::SetCurrentGroup
  288.     *  Purpose:
  289.     * Play this group in the presentation.
  290.     */
  291.     STDMETHOD(SetCurrentGroup) (THIS_
  292. UINT16      /*IN*/ uGroupIndex) PURE;
  293.     /************************************************************************
  294.     *  Method:
  295.     *      IHXGroupMgr::GetCurrentGroup
  296.     *  Purpose:
  297.     * Get the current group index
  298.     */
  299.     STDMETHOD(GetCurrentGroup) (THIS_
  300. REF(UINT16) /*OUT*/ uGroupIndex) PURE;
  301.     /************************************************************************
  302.     *  Method:
  303.     *      IHXGroupManager::AddGroup
  304.     *  Purpose:
  305.     * Add a group to the presentation.
  306.     */
  307.     STDMETHOD(AddGroup) (THIS_
  308. IHXGroup*     /*IN*/ pGroup) PURE;
  309.     /************************************************************************
  310.     *  Method:
  311.     *      IHXGroupManager::RemoveGroup
  312.     *  Purpose:
  313.     * Remove an already added group
  314.     */
  315.     STDMETHOD(RemoveGroup)  (THIS_
  316.     UINT16  /*IN*/ uGroupIndex) PURE;
  317.     /************************************************************************
  318.     *  Method:
  319.     *      IHXGroupManager::AddSink
  320.     *  Purpose:
  321.     * Add a sink to get notifications about any tracks or groups
  322.     * being added to the presentation.
  323.     */
  324.     STDMETHOD(AddSink) (THIS_
  325. IHXGroupSink* /*IN*/ pGroupSink) PURE;
  326.     /************************************************************************
  327.     *  Method:
  328.     *      IHXGroupManager::RemoveSink
  329.     *  Purpose:
  330.     * Remove Sink
  331.     */
  332.     STDMETHOD(RemoveSink)   (THIS_
  333.     IHXGroupSink* /*IN*/ pGroupSink) PURE;
  334.     /************************************************************************
  335.     *  Method:
  336.     *      IHXGroup::GetPresentationProperties
  337.     *  Purpose:
  338.     * Get any presentation information. May return NULL.
  339.     */
  340.     STDMETHOD_(IHXValues*, GetPresentationProperties)   (THIS) PURE;
  341.     /************************************************************************
  342.     *  Method:
  343.     *      IHXGroup::SetPresentationProperties
  344.     *  Purpose:
  345.     * Set any presentation information like Title Author 
  346.     * Copyright etc. 
  347.     */
  348.     STDMETHOD(SetPresentationProperties)   (THIS_
  349.     IHXValues*  /*IN*/ pProperties) PURE;
  350.    
  351. };
  352. /****************************************************************************
  353.  * 
  354.  *  Interface:
  355.  * 
  356.  *  IHXGroupSink
  357.  * 
  358.  *  Purpose:
  359.  * 
  360.  * 
  361.  *  IID_IHXGroupSink:
  362.  * 
  363.  *  {0x00002402-0901-11d1-8B06-00A024406D59}
  364.  * 
  365.  */
  366. DEFINE_GUID(IID_IHXGroupSink, 0x00002402, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  367.             0xa0, 0x24, 0x40, 0x6d, 0x59);
  368. #undef  INTERFACE
  369. #define INTERFACE   IHXGroupSink
  370. DECLARE_INTERFACE_(IHXGroupSink, IUnknown)
  371. {
  372.     /*
  373.      *  IUnknown methods
  374.      */
  375.     STDMETHOD(QueryInterface)       (THIS_
  376.                     REFIID riid,
  377.                     void** ppvObj) PURE;
  378.     STDMETHOD_(ULONG32,AddRef)      (THIS) PURE;
  379.     STDMETHOD_(ULONG32,Release)     (THIS) PURE;
  380.     /*
  381.      *  IHXGroupSink methods
  382.      */
  383.     /************************************************************************
  384.     *  Method:
  385.     *      IHXGroupSink::GroupAdded
  386.     *  Purpose:
  387.     * Notification of a new group being added to the presentation.
  388.     */
  389.     STDMETHOD(GroupAdded)    (THIS_
  390.     UINT16      /*IN*/ uGroupIndex,
  391.     IHXGroup*     /*IN*/ pGroup) PURE;
  392.     /************************************************************************
  393.     *  Method:
  394.     *      IHXGroupSink::GroupRemoved
  395.     *  Purpose:
  396.     * Notification of a group being removed from the presentation.
  397.     */
  398.     STDMETHOD(GroupRemoved)    (THIS_
  399. UINT16      /*IN*/ uGroupIndex,
  400. IHXGroup*  /*IN*/ pGroup) PURE;
  401.     /************************************************************************
  402.     *  Method:
  403.     *      IHXGroupSink::AllGroupsRemoved
  404.     *  Purpose:
  405.     * Notification that all groups have been removed from the 
  406.     * current presentation.
  407.     */
  408.     STDMETHOD(AllGroupsRemoved)  (THIS) PURE;
  409.     /************************************************************************
  410.     *  Method:
  411.     *      IHXGroupSink::TrackAdded
  412.     *  Purpose:
  413.     * Notification of a new track being added to a group.
  414.     */
  415.     STDMETHOD(TrackAdded)  (THIS_
  416.     UINT16      /*IN*/ uGroupIndex,
  417.     UINT16      /*IN*/ uTrackIndex,
  418.     IHXValues*     /*IN*/ pTrack) PURE;
  419.     /************************************************************************
  420.     *  Method:
  421.     *      IHXGroupSink::TrackRemoved
  422.     *  Purpose:
  423.     * Notification of a track being removed from a group.
  424.     */
  425.     STDMETHOD(TrackRemoved)    (THIS_
  426. UINT16  /*IN*/ uGroupIndex,
  427. UINT16  /*IN*/ uTrackIndex,
  428. IHXValues* /*IN*/ pTrack) PURE;
  429.     /************************************************************************
  430.     *  Method:
  431.     *      IHXGroupSink::TrackStarted
  432.     *  Purpose:
  433.     * Notification of a track being started (to get duration, for
  434.     * instance...)
  435.     */
  436.     STDMETHOD(TrackStarted) (THIS_
  437. UINT16     /*IN*/ uGroupIndex,
  438. UINT16     /*IN*/ uTrackIndex,
  439. IHXValues* /*IN*/ pTrack) PURE;
  440.     /************************************************************************
  441.     *  Method:
  442.     *      IHXGroupSink::TrackStopped
  443.     *  Purpose:
  444.     * Notification of a track being stopped
  445.     *
  446.     */
  447.     STDMETHOD(TrackStopped) (THIS_
  448. UINT16     /*IN*/ uGroupIndex,
  449. UINT16     /*IN*/ uTrackIndex,
  450. IHXValues* /*IN*/ pTrack) PURE;
  451.     /************************************************************************
  452.     *  Method:
  453.     *      IHXGroupSink::CurrentGroupSet
  454.     *  Purpose:
  455.     * This group is being currently played in the presentation.
  456.     */
  457.     STDMETHOD(CurrentGroupSet) (THIS_
  458. UINT16      /*IN*/ uGroupIndex,
  459. IHXGroup*  /*IN*/ pGroup) PURE;
  460. };
  461. // $Private:
  462. /****************************************************************************
  463.  * 
  464.  *  Interface:
  465.  * 
  466.  *  IHXPreCacheGroupMgr
  467.  * 
  468.  *  Purpose:
  469.  * 
  470.  * 
  471.  *  IID_IHXPreCacheGroupMgr:
  472.  * 
  473.  *  {00000E00-b4c8-11d0-9995-00a0248da5f0}
  474.  * 
  475.  */
  476. DEFINE_GUID(IID_IHXPreCacheGroupMgr,    0x00000E00, 0xb4c8, 0x11d0, 
  477. 0x99, 0x95, 0x0, 0xa0, 0x24, 0x8d, 0xa5, 0xf0);
  478. #undef  INTERFACE
  479. #define INTERFACE   IHXPreCacheGroupMgr
  480. DECLARE_INTERFACE_(IHXPreCacheGroupMgr, IUnknown)
  481. {
  482.     /*
  483.      *  IUnknown methods
  484.      */
  485.     STDMETHOD(QueryInterface)       (THIS_
  486.                     REFIID riid,
  487.                     void** ppvObj) PURE;
  488.     STDMETHOD_(ULONG32,AddRef)      (THIS) PURE;
  489.     STDMETHOD_(ULONG32,Release)     (THIS) PURE;
  490.     /************************************************************************
  491.     *  Method:
  492.     *      IHXPreCacheGroupMgr::SetNextGroup
  493.     *  Purpose:
  494.     * Play this as the next group in the presentation.
  495.     */
  496.     STDMETHOD(SetNextGroup) (THIS_
  497. UINT16      /*IN*/ uGroupIndex) PURE;
  498.                 
  499.     /************************************************************************
  500.     *  Method:
  501.     *      IHXPreCacheGroupMgr::GetNextGroup
  502.     *  Purpose:
  503.     * Get the next group to be played in the presentation.
  504.     */
  505.     STDMETHOD(GetNextGroup) (THIS_ REF(UINT16) uGroupIndex) PURE;
  506.     /************************************************************************
  507.     *  Method:
  508.     *      IHXPreCacheGroupMgr::DefaultNextGroup
  509.     *  Purpose:
  510.     * Reset to the default next group to be played in the presentation.
  511.     */
  512.     STDMETHOD(DefaultNextGroup) (THIS) PURE;
  513. };
  514. // $EndPrivate.
  515. /****************************************************************************
  516.  * 
  517.  *  Interface:
  518.  * 
  519.  *  IHXTrack
  520.  * 
  521.  *  Purpose:
  522.  * 
  523.  * 
  524.  *  IID_IHXTrack:
  525.  * 
  526.  *  {0x00002404-0901-11d1-8B06-00A024406D59}
  527.  * 
  528.  */
  529. DEFINE_GUID(IID_IHXTrack, 0x00002404, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  530.             0xa0, 0x24, 0x40, 0x6d, 0x59);
  531. #undef  INTERFACE
  532. #define INTERFACE   IHXTrack
  533. DECLARE_INTERFACE_(IHXTrack, IUnknown)
  534. {
  535.     /*
  536.      *  IUnknown methods
  537.      */
  538.     STDMETHOD(QueryInterface)       (THIS_
  539.                     REFIID riid,
  540.                     void** ppvObj) PURE;
  541.     STDMETHOD_(ULONG32,AddRef)      (THIS) PURE;
  542.     STDMETHOD_(ULONG32,Release)     (THIS) PURE;
  543.     /*
  544.      *  IHXTrack methods
  545.      */
  546.     /************************************************************************
  547.     *  Method:
  548.     *     IHXTrack::Begin()
  549.     *  Purpose:
  550.     *     start the track
  551.     */
  552.     STDMETHOD(Begin) (THIS) PURE;
  553.     /************************************************************************
  554.     *  Method:
  555.     *     IHXTrack::Pause()
  556.     *  Purpose:
  557.     *     pause the track
  558.     */
  559.     STDMETHOD(Pause) (THIS) PURE;
  560.     /************************************************************************
  561.     *  Method:
  562.     *     IHXTrack::Seek()
  563.     *  Purpose:
  564.     *     seek the track
  565.     */
  566.     STDMETHOD(Seek) (THIS_
  567. UINT32 ulSeekTime) PURE;
  568.     /************************************************************************
  569.     *  Method:
  570.     *     IHXTrack::Stop()
  571.     *  Purpose:
  572.     *     stop the track
  573.     */
  574.     STDMETHOD(Stop) (THIS) PURE;
  575.     /************************************************************************
  576.     *  Method:
  577.     *     IHXTrack::AddRepeat()
  578.     *  Purpose:
  579.     *     add repeat tracks
  580.     */
  581.     STDMETHOD(AddRepeat)(THIS_
  582. IHXValues* pValues) PURE;
  583.     /************************************************************************
  584.     *  Method:
  585.     *     IHXTrack::GetTrackProperties()
  586.     *  Purpose:
  587.     *     get track properties
  588.     */
  589.     STDMETHOD(GetTrackProperties)(THIS_
  590.  REF(IHXValues*) pValues,
  591.  REF(IHXValues*) pValuesInRequest) PURE;
  592.     /************************************************************************
  593.      * Method:
  594.      *     IHXTrack::GetSource
  595.      * Purpose:
  596.      *     Returns the Nth source instance supported by this player.
  597.      */
  598.     STDMETHOD(GetSource) (THIS_
  599. REF(IHXStreamSource*) pStreamSource) PURE;
  600.     /************************************************************************
  601.     *  Method:
  602.     *     IHXTrack::SetSoundLevel()
  603.     *  Purpose:
  604.     *     Set Audio Level
  605.     */
  606.     STDMETHOD(SetSoundLevel)(THIS_
  607.     UINT16 uSoundLevel) PURE;
  608.     /************************************************************************
  609.     *  Method:
  610.     *     IHXTrack::GetSoundLevel()
  611.     *  Purpose:
  612.     *     Get Audio Level
  613.     */
  614.     STDMETHOD_(UINT16, GetSoundLevel)(THIS) PURE;
  615.     /************************************************************************
  616.     *  Method:
  617.     *     IHXTrack::BeginSoundLevelAnimation()
  618.     *  Purpose:
  619.     *     notify the start of soundlevel animation
  620.     */
  621.     STDMETHOD(BeginSoundLevelAnimation)(THIS_
  622. UINT16 uSoundLevelBeginWith) PURE;
  623.     /************************************************************************
  624.     *  Method:
  625.     *     IHXTrack::EndSoundLevelAnimation()
  626.     *  Purpose:
  627.     *     notify the stop of soundlevel animation
  628.     */
  629.     STDMETHOD(EndSoundLevelAnimation)(THIS_
  630.       UINT16 uSoundLevelEndWith) PURE;
  631. };
  632. /****************************************************************************
  633.  * 
  634.  *  Interface:
  635.  * 
  636.  *  IHXTrackSink
  637.  * 
  638.  *  Purpose:
  639.  * 
  640.  * 
  641.  *  IID_IHXTrackSink:
  642.  * 
  643.  *  {0x00002405-0901-11d1-8B06-00A024406D59}
  644.  * 
  645.  */
  646. DEFINE_GUID(IID_IHXTrackSink, 0x00002405, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  647.             0xa0, 0x24, 0x40, 0x6d, 0x59);
  648. #undef  INTERFACE
  649. #define INTERFACE   IHXTrackSink
  650. DECLARE_INTERFACE_(IHXTrackSink, IUnknown)
  651. {
  652.     /*
  653.      *  IUnknown methods
  654.      */
  655.     STDMETHOD(QueryInterface)       (THIS_
  656.                     REFIID riid,
  657.                     void** ppvObj) PURE;
  658.     STDMETHOD_(ULONG32,AddRef)      (THIS) PURE;
  659.     STDMETHOD_(ULONG32,Release)     (THIS) PURE;
  660.     /*
  661.      *  IHXTrackSink methods
  662.      */
  663.     /************************************************************************
  664.     *  Method:
  665.     *     IHXTrackSink::BeginDone()
  666.     *  Purpose:
  667.     *     done with begin
  668.     */
  669.     STDMETHOD(BeginDone) (THIS_
  670. UINT16 uGroupIndex,
  671. UINT16 uTrackIndex) PURE;
  672.     /************************************************************************
  673.     *  Method:
  674.     *     IHXTrackSink::SeekDone()
  675.     *  Purpose:
  676.     *     done with seek
  677.     */
  678.     STDMETHOD(SeekDone) (THIS_
  679. UINT16 uGroupIndex,
  680. UINT16 uTrackIndex,
  681. UINT32 ulSeekTime) PURE;
  682.     /************************************************************************
  683.     *  Method:
  684.     *     IHXTrackSink::PauseDone()
  685.     *  Purpose:
  686.     *     done with pause
  687.     */
  688.     STDMETHOD(PauseDone) (THIS_
  689. UINT16 uGroupIndex,
  690. UINT16 uTrackIndex) PURE;
  691.     /************************************************************************
  692.     *  Method:
  693.     *     IHXTrackSink::StopDone()
  694.     *  Purpose:
  695.     *     done with stop
  696.     */
  697.     STDMETHOD(StopDone) (THIS_
  698. UINT16 uGroupIndex,
  699. UINT16 uTrackIndex) PURE;
  700.     /************************************************************************
  701.     *  Method:
  702.     *     IHXTrackSink::OnSoundLevelAnimation()
  703.     *  Purpose:
  704.     *     sound level animation is in process
  705.     */
  706.     STDMETHOD(OnSoundLevelAnimation) (THIS_
  707. UINT16 uGroupIndex,
  708. UINT16 uTrackIndex,
  709. UINT32 ulSoundLevelAnimationTime) PURE;
  710. };
  711. /****************************************************************************
  712.  * 
  713.  *  Interface:
  714.  * 
  715.  *  IHXGroupSink2
  716.  * 
  717.  *  Purpose:
  718.  * 
  719.  * 
  720.  *  IID_IHXGroupSink2:
  721.  * 
  722.  *  {0x00002407-0901-11d1-8B06-00A024406D59}
  723.  * 
  724.  */
  725. DEFINE_GUID(IID_IHXGroupSink2, 0x00002407, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  726.             0xa0, 0x24, 0x40, 0x6d, 0x59);
  727. #undef  INTERFACE
  728. #define INTERFACE   IHXGroupSink2
  729. DECLARE_INTERFACE_(IHXGroupSink2, IUnknown)
  730. {
  731.     /*
  732.      *  IUnknown methods
  733.      */
  734.     STDMETHOD(QueryInterface)       (THIS_
  735.                     REFIID riid,
  736.                     void** ppvObj) PURE;
  737.     STDMETHOD_(ULONG32,AddRef)      (THIS) PURE;
  738.     STDMETHOD_(ULONG32,Release)     (THIS) PURE;
  739.     /*
  740.      *  IHXGroupSink2 methods
  741.      */
  742.     /************************************************************************
  743.     *  Method:
  744.     *      IHXGroupSink2::GroupInsertedBefore
  745.     *  Purpose:
  746.     * Notification of a new group being inserted before the group
  747.     */
  748.     STDMETHOD(GroupInsertedBefore)    (THIS_
  749.        UINT16      /*IN*/ uBeforeGroupIndex,
  750.        IHXGroup*   /*IN*/ pGroup) PURE;
  751.     /************************************************************************
  752.     *  Method:
  753.     *      IHXGroupSink2::GroupInsertedAfter
  754.     *  Purpose:
  755.     * Notification of a new group being inserted after the group
  756.     */
  757.     STDMETHOD(GroupInsertedAfter)    (THIS_
  758.       UINT16      /*IN*/ uAfterGroupIndex,
  759.       IHXGroup*    /*IN*/ pGroup) PURE;
  760.     /************************************************************************
  761.     *  Method:
  762.     *      IHXGroupSink2::GroupReplaced
  763.     *  Purpose:
  764.     * Notification of a new group replace the current group
  765.     * current presentation.
  766.     */
  767.     STDMETHOD(GroupReplaced)     (THIS_
  768.      UINT16     /*IN*/ uGroupIndex,
  769.      IHXGroup*     /*IN*/ pGroup) PURE;
  770. };
  771. /****************************************************************************
  772.  * 
  773.  *  Interface:
  774.  *
  775.  * IHXPrefetch
  776.  *
  777.  *  Purpose:
  778.  *
  779.  * Interface to manage prefetch
  780.  *
  781.  *  IID_IHXPrefetch:
  782.  *
  783.  * {00002408-0901-11d1-8B06-00A024406D59}
  784.  *
  785.  */
  786. DEFINE_GUID(IID_IHXPrefetch, 0x00002408, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  787.      0xa0, 0x24, 0x40, 0x6d, 0x59);
  788. DECLARE_INTERFACE_(IHXPrefetch, IUnknown)
  789. {
  790.     /*
  791.      * IUnknown methods
  792.      */
  793.     STDMETHOD(QueryInterface) (THIS_
  794. REFIID riid,
  795. void** ppvObj) PURE;
  796.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  797.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  798.     /*
  799.      * IHXPrefetch methods
  800.      */
  801.     /************************************************************************
  802.     *  Method:
  803.     *      IHXPrefetch::AddPrefetchTrack
  804.     *  Purpose:
  805.     *      adds prefetch track by specifying "PrefetchType" and "PrefetchValue"
  806.     *      in pTrack's IHXValues
  807.     */
  808.     STDMETHOD(AddPrefetchTrack) (THIS_
  809.  IHXValues* /*IN*/  pTrack) PURE;
  810.     /************************************************************************
  811.     *  Method:
  812.     *      IHXPrefetch::RemovePrefetchTrack
  813.     *  Purpose:
  814.     *      removes prefetched track
  815.     */
  816.     STDMETHOD(RemovePrefetchTrack)  (THIS_
  817.      UINT16 /*IN*/ uTrackIndex) PURE;
  818.     /************************************************************************
  819.     *  Method:
  820.     *      IHXPrefetch::GetPrefetchTrackCount
  821.     *  Purpose:
  822.     *      get number of prefetch tracks added
  823.     */
  824.     STDMETHOD_(UINT16,GetPrefetchTrackCount)    (THIS) PURE;
  825.     /************************************************************************
  826.     *  Method:
  827.     *      IHXPrefetch::GetPrefetchTrack
  828.     *  Purpose:
  829.     *      get prefetch track based on the index
  830.     */
  831.     STDMETHOD(GetPrefetchTrack) (THIS_
  832.  UINT16           /*IN*/  uTrackIndex,
  833.  REF(IHXValues*) /*OUT*/ pTrack) PURE;
  834.     /************************************************************************
  835.     *  Method:
  836.     *      IHXPrefetch::AddPrefetchSink
  837.     *  Purpose:
  838.     *      add prefetch sink
  839.     */
  840.     STDMETHOD(AddPrefetchSink) (THIS_
  841. IHXPrefetchSink* /*IN*/ pSink) PURE;
  842.     /************************************************************************
  843.     *  Method:
  844.     *      IHXPrefetch::RemovePrefetchSink
  845.     *  Purpose:
  846.     *      remove prefetch sink
  847.     */
  848.     STDMETHOD(RemovePrefetchSink) (THIS_
  849.    IHXPrefetchSink* /*IN*/ pSink) PURE;
  850. };
  851. /****************************************************************************
  852.  * 
  853.  *  Interface:
  854.  *
  855.  * IHXPrefetchSink
  856.  *
  857.  *  Purpose:
  858.  *
  859.  * Sink Interface to IHXPrefetch
  860.  *
  861.  *  IID_IHXPrefetchSink
  862.  *
  863.  * {00002406-0901-11d1-8B06-00A024406D59}
  864.  */
  865. DEFINE_GUID(IID_IHXPrefetchSink, 0x00002406, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  866.     0xa0, 0x24, 0x40, 0x6d, 0x59);
  867. DECLARE_INTERFACE_(IHXPrefetchSink, IUnknown)
  868. {
  869.     /*
  870.      * IUnknown methods
  871.      */
  872.     STDMETHOD(QueryInterface) (THIS_
  873. REFIID riid,
  874. void** ppvObj) PURE;
  875.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  876.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  877.     /*
  878.      * IHXPrefetchSink methods
  879.      */
  880.     /************************************************************************
  881.     *  Method:
  882.     *     IHXPrefetchSink::PrefetchTrackAdded()
  883.     *  Purpose:
  884.     *     prefetch track is added
  885.     */
  886.     STDMETHOD(PrefetchTrackAdded)   (THIS_
  887.      UINT16  uGroupIndex,
  888.      UINT16      uTrackIndex,
  889.      IHXValues* pTrack) PURE;
  890.     /************************************************************************
  891.     *  Method:
  892.     *     IHXPrefetchSink::PrefetchTrackRemoved()
  893.     *  Purpose:
  894.     *     prefetch track is removed
  895.     */
  896.     STDMETHOD(PrefetchTrackRemoved) (THIS_
  897.      UINT16  uGroupIndex,
  898.      UINT16      uTrackIndex,
  899.      IHXValues* pTrack) PURE;
  900.     /************************************************************************
  901.     *  Method:
  902.     *     IHXPrefetchSink::PrefetchTrackDone()
  903.     *  Purpose:
  904.     *     prefetch track is done
  905.     */
  906.     STDMETHOD(PrefetchTrackDone) (THIS_
  907.   UINT16    uGroupIndex,
  908.   UINT16    uTrackIndex,
  909.   HX_RESULT status) PURE;
  910. };
  911. #endif /*_IHXGROUP_H_*/