⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hxplay.h

📁 著名的 helix realplayer 基于手机 symbian 系统的 播放器全套源代码
💻 H
📖 第 1 页 / 共 4 页
字号:
class HXPlayer :   public IHXPlayer, 
		    public IHXPlayer2,
		    public IHXAudioPlayerResponse,
		    public IHXPendingStatus,
		    public IHXErrorMessages,
		    public IHXAuthenticationManager,
		    public IHXAuthenticationManager2,
		    public IHXAuthenticationManagerResponse,
		    public IHXRegistryID,
		    public IHXGroupSink,
		    public IHXLayoutSiteGroupManager,
		    public IHXRendererUpgrade,
		    public IHXInternalReset,
		    public IHXPlayerState,
		    public IHXViewSourceCommand,
		    public IHXOverrideDefaultServices,
		    public IHXPlayerNavigator,
		    public IHXClientStatisticsGranularity,
		    public IHXPlayerPresentation,
                    public IHXRecordManager
{
protected:
    LONG32			m_lRefCount;
    UINT32			m_ulRepeatedRegistryID;
    UINT32			m_ulNextGroupRegistryID;
    HX_RESULT			m_LastError;
    char*			m_pLastUserString;
    UINT8			m_LastSeverity;
    UINT32			m_ulLastUserCode;
    char*			m_pLastMoreInfoURL;

#if defined(HELIX_FEATURE_REGISTRY)    
    // statistic variables
    HXClientRegistry*		m_pRegistry;
#else
    void*			m_pRegistry;
#endif /* HELIX_FEATURE_REGISTRY */

#if defined(HELIX_FEATURE_STATS) && defined(HELIX_FEATURE_REGISTRY)
    PLAYER_STATS*		m_pStats;
    UpdateStatsCallback*	m_pUpdateStatsCallback;
#else
    void*			m_pStats;
    void*			m_pUpdateStatsCallback;
#endif /* HELIX_FEATURE_STATS && HELIX_FEATURE_REGISTRY */

    CHXGenericCallback*		m_pHXPlayerCallback;
    CHXGenericCallback*		m_pHXPlayerInterruptCallback;
    CHXGenericCallback*		m_pSetupCallback;
#if defined(HELIX_FEATURE_AUTHENTICATION)
    CHXGenericCallback*		m_pAuthenticationCallback;
#else
    void*			m_pAuthenticationCallback;
#endif /* HELIX_FEATURE_AUTHENTICATION */
    IHXValues*			m_pAutheticationValues;

    ULONG32			m_ulStatsGranularity;

public:
    HXClientEngine*		m_pEngine;
    IHXPlugin2Handler*		m_pPlugin2Handler;
protected:
    IUnknown*			m_pClient;
    CHXAudioPlayer*		m_pAudioPlayer;
    
    CHXAdviseSinkControl*	m_pAdviseSink;
    CHXErrorSinkControl*  	m_pErrorSinkControl;
    
    IHXClientRequestSink*	m_pClientRequestSink;
    IHXPreferences*		m_pPreferences;
#if defined(HELIX_FEATURE_HYPER_NAVIGATE)
    PlayerHyperNavigate*	m_pHyperNavigate;
#else
    void*			m_pHyperNavigate;
#endif /* HELIX_FEATURE_HYPER_NAVIGATE */
#if defined(HELIX_FEATURE_PACKETHOOKMGR)
    IHXPacketHookManager*	m_pPacketHookManager;
#else
    void*			m_pPacketHookManager;
#endif /* HELIX_FEATURE_PACKETHOOKMGR */

#if defined(HELIX_FEATURE_ADVANCEDGROUPMGR)
    HXAdvancedGroupManager*     m_pGroupManager;
#else
    HXBasicGroupManager*	m_pGroupManager;
#endif /* HELIX_FEATURE_ADVANCEDGROUPMGR */

    HXMasterTAC*		m_pMasterTAC;

    CHXSimpleList*		m_pRedirectList;

    IHXClientViewSource*	m_pClientViewSource;
    IHXClientViewRights*	m_pClientViewRights;
    IHXViewPortManager*	m_pViewPortManager;
#if defined(HELIX_FEATURE_MEDIAMARKER)
    CHXMediaMarkerManager*     m_pMediaMarkerManager;
#else
    void*			m_pMediaMarkerManager;
#endif /* #if defined(HELIX_FEATURE_MEDIAMARKER) */
#if defined(HELIX_FEATURE_EVENTMANAGER)
    CRendererEventManager*      m_pEventManager;
#else
    void*			m_pEventManager;
#endif /* #if defined(HELIX_FEATURE_EVENTMANAGER) */
    HXCookies*			m_pCookies;

#if defined(HELIX_FEATURE_NESTEDMETA)
    HXPersistentComponentManager*  m_pPersistentComponentManager;
#else
    void*			m_pPersistentComponentManager;
#endif /* HELIX_FEATURE_NESTEDMETA */
    HXPreferredTransportManager*   m_pPreferredTransportManager;
    IHXNetInterfaces*		    m_pNetInterfaces;

public:
			HXPlayer();
			~HXPlayer();

    /*
     * IUnknown methods
     */
    STDMETHOD(QueryInterface)	(THIS_
				REFIID riid,
				void** ppvObj);

    STDMETHOD_(ULONG32,AddRef)	(THIS);

    STDMETHOD_(ULONG32,Release)	(THIS);

    /*
     * IHXPlayer methods
     */

    /************************************************************************
     *	Method:
     *		IHXPlayer::GetClientEngine
     *	Purpose:
     *		Get the interface to the client engine object of which the player
     *		is a part of.
     *
     */
    STDMETHOD(GetClientEngine)	(THIS_
				    REF(IHXClientEngine*)	pEngine);

    /************************************************************************
     *	Method:
     *		IHXPlayer::OpenURL
     *	Purpose:
     *		Tell the player to begin playback of all its sources.
     *
     */
    STDMETHOD (OpenURL)		(THIS_
				    const char*	pURL);

    /************************************************************************
     *	Method:
     *		IHXPlayer::Begin
     *	Purpose:
     *		Tell the player to begin playback of all its sources.
     *
     */
    STDMETHOD (Begin)		(THIS);

    /************************************************************************
     *	Method:
     *		IHXPlayer::Stop
     *	Purpose:
     *		Tell the player to stop playback of all its sources.
     *
     */
    STDMETHOD (Stop)		(THIS);

    /************************************************************************
     *	Method:
     *		IHXPlayer::Pause
     *	Purpose:
     *		Tell the player to pause playback of all its sources.
     *
     */
    STDMETHOD (Pause)		(THIS);

    /************************************************************************
     *	Method:
     *		IHXPlayer::Seek
     *	Purpose:
     *		Tell the player to seek in the playback timeline of all its 
     *		sources.
     *
     */
    STDMETHOD (Seek)		(THIS_
				ULONG32			ulTime);

    /************************************************************************
     *	Method:
     *	    IHXPlayer::GetSourceCount
     *	Purpose:
     *	    Returns the current number of source instances supported by
     *	    this player instance.
     */
    STDMETHOD_(UINT16, GetSourceCount)(THIS);

    /************************************************************************
     *	Method:
     *	    IHXPlayer::GetSource
     *	Purpose:
     *	    Returns the Nth source instance supported by this player.
     */
    STDMETHOD(GetSource)	(THIS_
				UINT16		nIndex,
				REF(IUnknown*)	pUnknown);

    /************************************************************************
     *	Method:
     *	    IHXPlayer::SetClientContext
     *	Purpose:
     *	    Called by the client to install itself as the provider of client
     *	    services to the core. This is traditionally called by the top 
     *	    level client application.
     */
    STDMETHOD(SetClientContext)	(THIS_
				IUnknown* pUnknown);

    /************************************************************************
     *	Method:
     *	    IHXPlayer::GetClientContext
     *	Purpose:
     *	    Called by the get the client context for this player. This is 
     *	    traditionally to determine called by top level client application.
     */
    STDMETHOD(GetClientContext)	(THIS_
				REF(IUnknown*) pUnknown);

    /************************************************************************
     *	Method:
     *		IHXPlayer::IsDone
     *	Purpose:
     *		Ask the player if it is done with the current presentation
     *
     */
    STDMETHOD_ (BOOL,IsDone)	(THIS);

    /************************************************************************
     *	Method:
     *		IHXPlayer::IsLive
     *	Purpose:
     *		Ask the player whether it contains the live source
     *
     */
    STDMETHOD_ (BOOL,IsLive)	(THIS);

    /************************************************************************
     *	Method:
     *		IHXPlayer::GetCurrentPlayTime
     *	Purpose:
     *		Get the current time on the Player timeline
     *
     */
    STDMETHOD_ (ULONG32,GetCurrentPlayTime)	(THIS);

    /************************************************************************
     *	Method:
     *	    IHXPlayer::AddAdviseSink
     *	Purpose:
     *	    Call this method to add a client advise sink.
     *
     */
    STDMETHOD(AddAdviseSink)	(THIS_
				IHXClientAdviseSink*	pAdviseSink);

    /************************************************************************
     *	Method:
     *	    IHXPlayer::RemoveAdviseSink
     *	Purpose:
     *	    Call this method to remove a client advise sink.
     */
    STDMETHOD(RemoveAdviseSink)	(THIS_
				IHXClientAdviseSink*	pAdviseSink);

    /************************************************************************
     *	Method:
     *	    IHXPlayer2::SetMinimumPreroll
     *	Purpose:
     *	    Call this method to set the minimum preroll of this clip
     */
    STDMETHOD(SetMinimumPreroll) (THIS_
				UINT32	ulMinPreroll);

    /************************************************************************
     *	Method:
     *	    IHXPlayer2::GetMinimumPreroll
     *	Purpose:
     *	    Call this method to get the minimum preroll of this clip
     */
    STDMETHOD(GetMinimumPreroll) (THIS_
				REF(UINT32) ulMinPreroll);

    /************************************************************************
     *	Method:
     *	    IHXPlayer2::OpenRequest
     *	Purpose:
     *	    Call this method to open the IHXRequest
     */
    STDMETHOD(OpenRequest) (THIS_
			    IHXRequest* pRequest);
    
    /************************************************************************
     *	Method:
     *	    IID_IHXPlayer2::GetRequest
     *	Purpose:
     *	    Call this method to get the IHXRequest
     */
    STDMETHOD(GetRequest) (THIS_
			   REF(IHXRequest*) pRequest);

    /************************************************************************
     *	Method:
     *	    EventOccurred
     *	Purpose:
     *	    Clients call this to pass OS events to the player. HXxEvent
     *	    defines a cross-platform event.
     */
    void EventOccurred(HXxEvent* pEvent);

#ifdef _UNIX
    void CollectSelectInfo(INT32 *n, 
			   fd_set* readfds,
			   fd_set* writefds, 
			   fd_set* exceptfds,
			   struct timeval* tv);
    void ProcessSelect(INT32* n,
		       fd_set* readfds,
		       fd_set* writefds, 
		       fd_set* exceptfds,
		       struct timeval* tv);
#endif

    /************************************************************************
     *	Method:
     *		GetInst
     *	Purpose:
     *		TBD
     *
     */
    ULONG32	GetInst(void);

    /************************************************************************
     *	Method:
     *		UpdateStatistics
     *	Purpose:
     *		Update statistics periodically
     *
     */
    HX_RESULT	UpdateStatistics(void);

    /************************************************************************
     *	Method:
     *		ProcessIdle
     *	Purpose:
     *		Work-Horse for the player...
     *
     */
    HX_RESULT	ProcessIdle(void);

    /************************************************************************
     *  Method:
     *      IHXAudioPlayerResponse::OnTimeSync
     *  Purpose:
     *      Notification interface provided by users of the IHXAudioPlayer 
     *      interface. This method is called by the IHXAudioPlayer when 
     *      audio playback occurs.
     */
    STDMETHOD(OnTimeSync)       (THIS_
				ULONG32			/*IN*/ ulTimeEnd);


    /************************************************************************
     *	Method:
     *		HXPlayer::Init
     *	Purpose:
     *		Get the interface to the client engine object of which the player
     *		is a part of. It is not a part of IHXPlayer interface
     *
     */
    STDMETHOD(Init)		(THIS_
				 IHXClientEngine*	pEngine,
				 UINT32			unRegistryID,
				 CHXAudioPlayer*	pAudioPlayer);

    /************************************************************************
     *	Method:
     *		HXPlayer::ReportError
     *	Purpose:
     *		The source object reports of any fatal errors. 
     *
     */
    void	ReportError (HXSource* pSource, 
			HX_RESULT theErr, const char* pUserString = NULL);

    // IHXPendingStatus methods

    /************************************************************************
     *	Method:
     *	    IHXPendingStatus::GetStatus
     *	Purpose:
     *	    Called by the user to get the current pending status from an object
     */
    STDMETHOD(GetStatus)	(THIS_
				REF(UINT16) uStatusCode, 
				REF(IHXBuffer*) pStatusDesc, 
				REF(UINT16) ulPercentDone);

    /************************************************************************
     *	Method:
     *	    HXPlayer::SetStatsGranularity
     *	Purpose:
     *	    Called by the user to set how often the statistics registry needs 
     *	    to be updated in ms
     */
    STDMETHOD(SetStatsGranularity)	(THIS_
					ULONG32	ulGranularity);

    /************************************************************************
     *	Method:
     *	    IHXPlayerPresentation::ClosePresentation
     *	Purpose:
     *	    Call this method to close the player's current presentation.  This will free
     *	    all resources associated with the current presentation.
     */
    STDMETHOD(ClosePresentation)    (THIS);

    /*
     * IHXErrorMessages methods
     */

    /************************************************************************
     *	Method:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -