You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
amarok/amarok/src/engine/helix/helix-sp/hspadvisesink.h

204 lines
6.5 KiB

/*
*
* This software is released under the provisions of the GPL version 2.
* see file "COPYING". If that file is not available, the full statement
* of the license can be found at
*
* http://www.fsf.org/licensing/licenses/gpl.txt
*
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
* Portions (c) Paul Cifarelli 2005
*
*/
#ifndef _HSPADVISESINK_
#define _HSPADVISESINK_
struct IHXClientAdviseSink;
struct IUnknown;
struct IHXRegistry;
struct IHXScheduler;
class HelixSimplePlayer;
class HSPClientAdviceSink : public IHXClientAdviseSink
{
private:
HelixSimplePlayer *m_splayer;
LONG32 m_lRefCount;
LONG32 m_lClientIndex;
IUnknown* m_pUnknown;
IHXRegistry* m_pRegistry;
IHXScheduler* m_pScheduler;
UINT32 m_ulStartTime;
UINT32 m_ulStopTime;
UINT32 m_position;
UINT32 m_duration;
UINT32 m_lCurrentBandwidth;
UINT32 m_lAverageBandwidth;
BOOL m_bOnStop;
HX_RESULT DumpRegTree(const char* pszTreeName, UINT16 index );
//PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME
void GetStatistics (char* pszRegistryKey);
void GetAllStatistics (void);
public:
HSPClientAdviceSink(IUnknown* pUnknown, LONG32 lClientIndex, HelixSimplePlayer *pSplay);
virtual ~HSPClientAdviceSink();
UINT32 position() { return m_position; }
UINT32 duration() { return m_duration; }
UINT32 currentBW() { return m_lCurrentBandwidth; }
UINT32 averageBW() { return m_lAverageBandwidth; }
/*
* IUnknown methods
*/
STDTQT_METHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj);
STDMETHOD_(ULONG32,AddRef) (THIS);
STDMETHOD_(ULONG32,Release) (THIS);
/*
* IHXClientAdviseSink methods
*/
/************************************************************************
* Method:
* IHXClientAdviseSink::OnPosLength
* Purpose:
* Called to advise the client that the position or length of the
* current playback context has changed.
*/
STDTQT_METHOD(OnPosLength) (THIS_
UINT32 ulPosition,
UINT32 ulLength);
/************************************************************************
* Method:
* IHXClientAdviseSink::OnPresentationOpened
* Purpose:
* Called to advise the client a presentation has been opened.
*/
STDTQT_METHOD(OnPresentationOpened) (THIS);
/************************************************************************
* Method:
* IHXClientAdviseSink::OnPresentationClosed
* Purpose:
* Called to advise the client a presentation has been closed.
*/
STDTQT_METHOD(OnPresentationClosed) (THIS);
/************************************************************************
* Method:
* IHXClientAdviseSink::OnStatisticsChanged
* Purpose:
* Called to advise the client that the presentation statistics
* have changed.
*/
STDTQT_METHOD(OnStatisticsChanged) (THIS);
/************************************************************************
* Method:
* IHXClientAdviseSink::OnPreSeek
* Purpose:
* Called by client engine to inform the client that a seek is
* about to occur. The render is informed the last time for the
* stream's time line before the seek, as well as the first new
* time for the stream's time line after the seek will be completed.
*
*/
STDTQT_METHOD (OnPreSeek) (THIS_
ULONG32 ulOldTime,
ULONG32 ulNewTime);
/************************************************************************
* Method:
* IHXClientAdviseSink::OnPostSeek
* Purpose:
* Called by client engine to inform the client that a seek has
* just occurred. The render is informed the last time for the
* stream's time line before the seek, as well as the first new
* time for the stream's time line after the seek.
*
*/
STDTQT_METHOD (OnPostSeek) (THIS_
ULONG32 ulOldTime,
ULONG32 ulNewTime);
/************************************************************************
* Method:
* IHXClientAdviseSink::OnStop
* Purpose:
* Called by client engine to inform the client that a stop has
* just occurred.
*
*/
STDTQT_METHOD (OnStop) (THIS);
/************************************************************************
* Method:
* IHXClientAdviseSink::OnPause
* Purpose:
* Called by client engine to inform the client that a pause has
* just occurred. The render is informed the last time for the
* stream's time line before the pause.
*
*/
STDTQT_METHOD (OnPause) (THIS_
ULONG32 ulTime);
/************************************************************************
* Method:
* IHXClientAdviseSink::OnBegin
* Purpose:
* Called by client engine to inform the client that a begin or
* resume has just occurred. The render is informed the first time
* for the stream's time line after the resume.
*
*/
STDTQT_METHOD (OnBegin) (THIS_
ULONG32 ulTime);
/************************************************************************
* Method:
* IHXClientAdviseSink::OnBuffering
* Purpose:
* Called by client engine to inform the client that buffering
* of data is occurring. The render is informed of the reason for
* the buffering (start-up of stream, seek has occurred, network
* congestion, etc.), as well as percentage complete of the
* buffering process.
*
*/
STDTQT_METHOD (OnBuffering) (THIS_
ULONG32 ulFlags,
UINT16 unPercentComplete);
/************************************************************************
* Method:
* IHXClientAdviseSink::OnContacting
* Purpose:
* Called by client engine to inform the client is contacting
* hosts(s).
*
*/
STDTQT_METHOD (OnContacting) (THIS_
const char* pHostName);
};
#endif /* _EXAMPLECLSNK_ */