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

Symbian

开发平台:

Visual C++

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