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

📄 hxplay.h

📁 著名的 helix realplayer 基于手机 symbian 系统的 播放器全套源代码
💻 H
📖 第 1 页 / 共 4 页
字号:
    HX_RESULT		AddPrefetchTrack(UINT16 uGroupIndex, UINT16 uPrefetchTrackIndex, IHXValues* pValues);
    HX_RESULT		UpdatePrefetchTrack(UINT16 uGroupIndex, UINT16 uPrefetchTrackIndex, IHXValues* pValues);
    HX_RESULT		RemovePrefetchTrack(UINT16 uGroupIndex, UINT16 uPrefetchTrackIndex, IHXValues* pValues);
    HX_RESULT		PrefetchTrackDone(UINT16 uGroupIndex, UINT16 uPrefetchTrackIndex, HX_RESULT status);

    HX_RESULT		BeginTrack(UINT16 uGroupIndex, UINT16 uTrackIndex, IHXValues* pValues);    
    HX_RESULT		PauseTrack(UINT16 uGroupIndex, UINT16 uTrackIndex, IHXValues* pValues);
    HX_RESULT		SeekTrack(UINT16 uGroupIndex, UINT16 uTrackIndex, IHXValues* pValues, UINT32 ulSeekTime);    
    HX_RESULT		StopTrack(UINT16 uGroupIndex, UINT16 uTrackIndex, IHXValues* pValues);    
    HX_RESULT		SetSoundLevel(UINT16 uGroupIndex, UINT16 uTrackIndex, UINT16 uSoundLevel, BOOL bReflushAudioDevice);    

    void                CheckSourceRegistration(void);
    void                GetTimingFromURL(CHXURL* pURL, UINT32& ulStart, UINT32& ulEnd, UINT32& ulDelay, UINT32& ulDuration);

#if defined(HELIX_FEATURE_RECORDCONTROL)
    BOOL                IsRecordServiceEnabled();
#endif

protected:
    CHXSimpleList*	m_pAltURLs;
    CHXURL*		m_pURL;
    IHXRequest*	m_pRequest;

    HX_RESULT		AdjustSeekOnRepeatedSource(SourceInfo*	pSourceInfo, 
						   UINT32	ulSeekTime);

    HX_RESULT 		DoNetworkOpen(SourceInfo*& pSourceInfo, BOOL bAltURL);
    HX_RESULT 		DoFileSystemOpen(SourceInfo*& pSourceInfo, BOOL bAltURL);

    HX_RESULT		CreateSourceInfo(SourceInfo*& pSourceInfo, BOOL bAltURL);
    HX_RESULT		PrepareSourceInfo(IHXValues* pTrack, SourceInfo*& pSourceInfo);
    HX_RESULT		DoURLOpen(CHXURL* pURL, char* pMimeType);
    HX_RESULT		DoAltURL(void);
    HX_RESULT		DoAltURLOpen(char* pURL, BOOL bDefault, SourceInfo* pMainSourceInfo);
    HX_RESULT		SpawnSourceIfNeeded(SourceInfo* pSourceInfo);
    HX_RESULT		SwitchSourceIfNeeded(void);

    HX_RESULT		DoRedirect(void);
    HX_RESULT		OpenRedirect(const char* pszURL);

    HX_RESULT		InitializeRenderers(void);

    HX_RESULT		LayoutRenderers(void);
    virtual HX_RESULT	ProcessIdleExt(void);

    void		CreateDefaultRendererWindow
			    (
				RendererInfo*		    pRInfo,
				IHXRenderer*		    pRend,
				IHXBuffer*		    pDisplayInfo,
				const char*		    pName
			    );
    void		CreateLayoutWindow
			    (
				IHXMetaLayout*			pLayout
			    );

    /************************************************************************
     *	Method:
     *		ExecuteCurrentEvents
     *	Purpose:
     *		Send any due packets to the renderers
     *
     */
    HX_RESULT	ProcessCurrentEvents(void);

    /************************************************************************
     *	Method:
     *		DeleteAllEvents
     *	Purpose:
     *		Remove all pending events due to seek/stop.
     *
     */
    HX_RESULT	DeleteAllEvents(void);
    HX_RESULT	SendPreSeekEvents(void);
    void	StopAllStreams(EndCode endCode = END_STOP);
    
    virtual HX_RESULT	SendPreSeekEventsExt(void);         
    virtual HX_RESULT	StopAllStreamsExt(EndCode endCode = END_STOP);
    
    virtual SourceInfo*	    NewSourceInfo(void);
    virtual HXFileSource*  NewFileSource(void);
    virtual HXNetSource*   NewNetSource(void);
    virtual HX_RESULT	    OpenTrackExt(void);

    void	CloseAllRenderers(INT32 nGroupSwitchTo);
    HX_RESULT	UnRegisterCurrentSources(void);

    HX_RESULT	SetupAllStreams(void);
    void	ResetPlayer(void);
    void	ResetGroup(void);
    void	SetMinimumPushdown(void);
    void	SchedulePlayer(void);
    HX_RESULT	CheckForAudioResume(void);

    HX_RESULT	InitializeNetworkDrivers(void);

    inline	void	UpdateCurrentPlayTime( ULONG32 ulCurrentPlayTime );
    
    HX_RESULT	ActualReport(
			    const UINT8	unSeverity,  
			    HX_RESULT	ulHXCode,
			    const ULONG32	ulUserCode,
			    const char*	pUserString,
			    const char*	pMoreInfoURL);

    IHXPendingStatus*	m_pMetaSrcStatus;

    // list of sources
    CHXMapPtrToPtr*	m_pSourceMap;
    CHXSimpleList*	m_pPendingTrackList;

    // current time on the timeline for this player..
    // this would either be updated by the audio services of any rendering object
    // happens to be an audio renderer and decides to use our audio services...
    // ELSE it will be updated by a timer object... 
    ULONG32		m_ulCurrentPlayTime;	
    
#if defined(_MACINTOSH) || defined(_MAC_UNIX)
    // this tracks the current timeline for this player, with the caveat
    // that it's only updated when the current play time is updated at
    // system time. This is useful for deciding whether to allocated "extra"
    // time to the player or giving it back to the system -- a pretty
    // complicated issue on MacOS 8.
    ULONG32		m_ulCurrentSystemPlayTime;
#endif

    
    // Length of all sources!
    ULONG32		m_ulPresentationDuration;

    // used to inform renderers the pre and post seek info..
    ULONG32		m_ulTimeBeforeSeek;
    ULONG32		m_ulTimeAfterSeek;


    BufferingReason	m_BufferingReason;

    CHXEventList	m_EventList;	// contains packets for all streams

    IHXScheduler*	m_pScheduler;

    /* m_uNumSourcesActive gets decremented when we have sucked out all the packets
     * from the source 
     */
    UINT16		m_uNumSourcesActive : 16;

    /* m_uNumCurrentSourceNotDone gets decremented when a given source has received
     * all the packets from the server
     */
    UINT16		m_uNumCurrentSourceNotDone : 16;

    HX_BITFIELD		m_bSourceMapUpdated : 1;
    HX_BITFIELD		m_bInitialized : 1;
       
    // m_bIsDone: single presentation/individual group in a SMIL file
    // m_bIsPresentationDone: single/SMIL presentation
    HX_BITFIELD		m_bIsDone : 1;
    HX_BITFIELD		m_bIsPresentationDone : 1;
    HX_BITFIELD		m_bInStop : 1;
    HX_BITFIELD		m_bIsPresentationClosedToBeSent : 1;
    HX_BITFIELD		m_bCloseAllRenderersPending : 1;

    HX_BITFIELD		m_bUseCoreThread : 1;
    HX_BITFIELD		m_bCoreLocked : 1;
    HX_BITFIELD		m_bPaused : 1;
    HX_BITFIELD		m_bBeginPending : 1;

    HX_BITFIELD		m_bIsFirstBeginPending : 1;

    HX_BITFIELD		m_bIsFirstBegin : 1;

    HX_BITFIELD		m_bUserHasCalledBegin : 1;

    HX_BITFIELD		m_bTimelineToBeResumed : 1;
    HX_BITFIELD		m_bIsPlaying : 1;

    HX_BITFIELD		m_bNetInitialized : 1;
    HX_BITFIELD		m_bPrefTransportInitialized : 1;

    HX_BITFIELD		m_bSetupLayoutSiteGroup : 1;
    
    HX_BITFIELD		m_bTimeSyncLocked : 1;

    HX_BITFIELD		m_bIsLive : 1;
    HX_BITFIELD		m_bLiveSeekToBeDone : 1;

    HX_BITFIELD		m_bProcessEventsLocked : 1;
    HX_BITFIELD		m_bDidWeDeleteAllEvents : 1;

    ULONG32		m_ulLowestGranularity;
    UINT32		m_ulElapsedPauseTime;
    UINT32		m_ulLiveSeekTime;
    UINT32		m_ulTimeOfPause;
    UINT32		m_ulMinimumAudioPreroll;
    UINT32		m_ulMinimumTotalPreroll;
    
    friend class HXPlayerCallback;

//#if defined(HELIX_FEATURE_STATS) && defined(HELIX_FEATURE_REGISTRY)
    friend class UpdateStatsCallback;
//#endif /* HELIX_FEATURE_STATS && HELIX_FEATURE_REGISTRY */

    /* Used for multiple kive stream synchrnoization*/
    UINT32		m_ulFirstTimeSync;

    UINT32		m_ulFSBufferingEndTime;
    UINT16		m_uNumSourceToBeInitializedBeforeBegin : 16;

    HX_BITFIELD		m_bFastStartInProgress : 1;
    HX_BITFIELD		m_bIsFirstTimeSync : 1;
    HX_BITFIELD		m_bPlayerWithoutSources : 1;
    HX_BITFIELD		m_bInternalPauseResume : 1;
    HX_BITFIELD		m_bInternalReset : 1;
    HX_BITFIELD		m_bCurrentPresentationClosed : 1;
    HX_BITFIELD		m_bContactingDone : 1;
    HX_BITFIELD		m_bFSBufferingEnd : 1;
    HX_BITFIELD		m_bAllLocalSources : 1;
    HX_BITFIELD		m_b100BufferingToBeSent : 1;
    HX_BITFIELD		m_bSetupToBeDone : 1;
    HX_BITFIELD		m_bPostSetupToBeDone : 1;
    HX_BITFIELD		m_bInternalReportError : 1;
    HX_BITFIELD		m_bPartOfNextGroup : 1;   
    HX_BITFIELD		m_bLastGroup : 1;
    HX_BITFIELD		m_bNextGroupStarted : 1;
    HX_BITFIELD		m_bBeginChangeLayoutTobeCalled : 1;
    HX_BITFIELD		m_bPendingAudioPause : 1;
    HX_BITFIELD		m_bPlayStateNotified : 1;
    HX_BITFIELD		m_bResumeOnlyAtSystemTime : 1;
    HX_BITFIELD		m_bSetModal : 1;

#if defined(HELIX_FEATURE_PREFETCH)
    PrefetchManager*	m_pPrefetchManager;
#else
    void*		m_pPrefetchManager;
#endif /* HELIX_FEATURE_PREFETCH */

#ifdef _WIN32
    BOOL		m_bScreenSaverActive; 
#endif

#if defined(HELIX_FEATURE_NEXTGROUPMGR)
    NextGroupManager*	m_pNextGroupManager;
#else
    void*		m_pNextGroupManager;
#endif /* HELIX_FEATURE_NEXTGROUPMGR*/

    IHXGroup*		m_pCurrentGroup;

    IHXPlayer*		m_pParentPlayer;
    CHXSimpleList*	m_pChildPlayerList;

#if defined(HELIX_FEATURE_ASM)
    IHXBandwidthManager* m_pBandwidthMgr;
    /* Only used for load testing */
    IHXBandwidthManager* m_pASM;
#endif /* HELIX_FEATURE_ASM */

    CHXSimpleList	m_ToBeginRendererList;	
    void		EnterToBeginList(RendererInfo* pRendInfo);
    void		EmptyBeginList(void) {m_ToBeginRendererList.RemoveAll();};
    HX_RESULT		CheckBeginList(void);
    void		RemoveFromPendingList(RendererInfo* pRendInfo);

    void		CheckToStartNextGroup(void);
    void		AdjustPresentationTime(void);
    void		SetPresentationTime(UINT32 ulPresentationTime);

    void		UpdateSourceActive(void);
    HX_RESULT		UpdateSourceInfo(SourceInfo* pSourceInfo, 
					 UINT32 ulParentRegId,
					 UINT16 ulTrackIndex);
    HX_RESULT		UpdatePersistentSrcInfo(SourceInfo* pSourceInfo, 
                                                UINT32 ulParentRegId,
                                                UINT16 ulTrackIndex);

    /*
     * The following members are related to the new layout support.
     */
#if defined(HELIX_FEATURE_VIDEO)
    CHXSiteManager*	m_pSiteManager;
    IHXSiteSupplier*	m_pSiteSupplier;
#else
    void*		m_pSiteManager;
    void*		m_pSiteSupplier;
#endif /* HELIX_FEATURE_VIDEO */

    CHXSimpleList	m_SiteRequestIDList;
    
    void		SetupRendererSite(IUnknown* pRenderer, IHXValues* pProps, BOOL bIsPersistent);
    void		SetupLayoutSiteGroup(IUnknown* pLSG, BOOL bIsPersistent);
    STDMETHODIMP	SetupLayout(BOOL bIsPersistent);
    STDMETHODIMP	CleanupLayout(void);

    HX_RESULT		StartDownload(void);
    HX_RESULT		PauseDownload(void);
    void		UnregisterNonActiveSources();
    BOOL		AreAllSourcesSeekable(void);
    void		ResetError(void);
    void		ResetRedirectList(void);
    void		SetLastError(HX_RESULT theErr);

    void		Close();
    void		AbortPlayer(void);
    void		StopPlayer(EndCode endCode = END_STOP);
    HX_RESULT		PausePlayer(BOOL bNotifyTLC = TRUE);
    HX_RESULT		SeekPlayer(ULONG32 ulTime);
    HX_RESULT		BeginPlayer(void);

    HX_RESULT		SetupAudioPlayer(void);
    virtual HX_RESULT	PrepareAudioPlayer(void);

//#if defined(HELIX_FEATURE_AUTHENTICATION)
    void		ProcessPendingAuthentication();
    void		ClearPendingAuthenticationRequests();
//#endif /* HELIX_FEATURE_AUTHENTICATION */

    void		SendPostSeekIfNecessary(RendererInfo* pRendererInfo);

    BOOL		ScheduleOnTimeSync(void);
    BOOL		DurationTimeSyncAllSent(SourceInfo* pSourceInfo);
    virtual void	DisableScreenSaver();
    void                RemovePendingCallback(CHXGenericCallback* pCB);

#if defined(HELIX_FEATURE_AUTOUPGRADE)
    IHXUpgradeCollection* m_pUpgradeCollection;
#else
    void* m_pUpgradeCollection;
#endif /* HELIX_FEATURE_AUTOUPGRADE */

    friend class NextGroupManager;

//#if defined(HELIX_FEATURE_PREFETCH)
    friend class PrefetchManager;
//#endif /* HELIX_FEATURE_PREFETCH */
    
    // used to notify of changes to the precache group
#if defined(HELIX_FEATURE_ADVANCEDGROUPMGR)
    friend class HXAdvancedGroup;    
    friend class HXAdvancedGroupManager;    
#endif /* HELIX_FEATURE_ADVANCEDGROUPMGR */

#if defined(HELIX_FEATURE_BASICGROUPMGR)
    friend class HXBasicGroup;
    friend class HXBasicGroupManager;
#endif /* HELIX_FEATURE_BASICGROUPMGR */

    HX_RESULT NextGroupSet(UINT16 uGroupIndex);

//#if defined(HELIX_FEATURE_AUTHENTICATION)
#ifndef _WIN16
    // Store pending requests
    friend class _CHXAuthenticationRequests;
    _CHXAuthenticationRequests m_AuthenticationRequestsPending;
#endif /* _WIN16 */
//#endif /* HELIX_FEATURE_AUTHENTICATION */

    HXMutex*		m_pCoreMutex;

    /*
     * -- LIVE SYNC SUPPORT --
     *
     * The following is related to shared wall clock support
     * for syncronizing several live sources. See srcinfo.cpp
     * for more informantion.
     */
private:
    CHXMapStringToOb*	m_pSharedWallClocks;
    friend class SharedWallClock;

    IHXRecordService*	m_pRecordService;
    BOOL                m_bRecordServiceEnabled;

public:
    BOOL FindSharedWallClocks(const char* pClockName, void*& ppValue)
	    {
		return m_pSharedWallClocks->Lookup(pClockName,ppValue);
	    };
};

#if defined(HELIX_FEATURE_STATS) && defined(HELIX_FEATURE_REGISTRY)
class UpdateStatsCallback : public IHXCallback
{
public:
    HXPlayer*		m_pPlayer;
    CallbackHandle	m_PendingHandle;
    BOOL		m_bIsCallbackPending;

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

    STDMETHOD_(ULONG32,AddRef)	(THIS);

    STDMETHOD_(ULONG32,Release)	(THIS);

    /*
     *	IHXCallback methods
     */
    STDMETHOD(Func)		(THIS);

protected:
			~UpdateStatsCallback();

    LONG32		m_lRefCount;
};
#endif /* HELIX_FEATURE_STATS && HELIX_FEATURE_REGISTRY */

#if defined (_WIN32) || defined (_MACINTOSH) || defined(THREADS_SUPPORTED)
class HXPlayerCallback : public CHXGenericCallback
                       , public IHXInterruptSafe
{
public:    
    BOOL m_bInterrupSafe;

    HXPlayerCallback(void* pParam, fGenericCBFunc pFunc);
    
    STDMETHOD_(ULONG32,AddRef)	(THIS) {return CHXGenericCallback::AddRef();}
    STDMETHOD_(ULONG32,Release)	(THIS) {return CHXGenericCallback::Release();}
    STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj);

    STDMETHOD_(BOOL,IsInterruptSafe) (THIS);

protected:
    ~HXPlayerCallback() {};
};
#endif //(_WIN32) || defined (_MACINTOSH) || defined(THREADS_SUPPORTED)

#endif //_HXPLAYER_

⌨️ 快捷键说明

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