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

📄 hxntsrc.h

📁 著名的 helix realplayer 基于手机 symbian 系统的 播放器全套源代码
💻 H
📖 第 1 页 / 共 2 页
字号:

	PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME

	HX_RESULT	UpdateStatistics(void);

	HX_RESULT	_ProcessIdle(BOOL atInterrupt = 0);
	
	virtual HX_RESULT   _ProcessIdleExt(BOOL atInterrupt = 0);
	virtual HX_RESULT   PreFileHeaderReadyExt(IHXValues* pHeader);
	virtual HX_RESULT   PostFileHeaderReadyExt(void);
	virtual HX_RESULT   PreHeaderCallbackExt(IHXValues* theHeader);
	virtual HX_RESULT   PostHeaderCallbackExt(IHXValues* theHeader);

	HX_RESULT	    ReadPreferences(void);

	HX_RESULT	    CreateProtocol();

	HX_RESULT	InitializeProtocol(void);

	HX_RESULT	set_proxy(const char* proxy,UINT16 port);
	HX_RESULT	cleanup_proxy(void);

	HX_RESULT	_Initialize(void);

	void		CalculateCurrentBuffering(void);
	UINT32		AdjustEventTime(STREAM_INFO* pStreamInfo, UINT32 ulTime);

        void		ReBuffer(void);

	void		ResetASMSource(void);

	BOOL		IsInCloakPortList(UINT16 uPort);
	BOOL		IsPrefetchEnded(void);

	HX_RESULT	IsFaststartPushdownFullfilled(REF(UINT16) uStatusCode, 
						      REF(UINT16) ulPercentDone);
	BOOL		IsRARVSource(void);

	HX_RESULT	GetEventFromProtocol(UINT16 usStreamNumber, CHXEvent*& theEvent);
	HX_RESULT	GetEventFromRecordControl(UINT16 usStreamNumber, CHXEvent*& theEvent);
	
	// stream thinning
	BOOL		mServerSelRecordSupport;
	BOOL		mInterframeControlSupport;
	BOOL		mServerHasBandwidthReport;
	BOOL		mServerHasFrameControl;
	
	// setup parameters...
	char*		m_pHost;
	char*		m_pPath;
	char*		m_pResource;
	UINT16		m_uPort;

	// proxy stuff
	char*		m_pProxy;	// host string of proxy
	UINT16		m_uProxyPort; // host port of proxy
	BOOL		m_bUseProxy; // == 1, connect to proxy first
	
	char		mClientID[64]; /* Flawfinder: ignore */
	CHXSimpleList*	m_pUDPPortList;

	HXProtocol*	m_pProto;

	ULONG32		m_ulStartBuffering;

	ULONG32		m_ulServerTimeOut;
	ULONG32		m_ulConnectionTimeout;

	float		m_fReBufferPercent;

	// level 1, 2 stats
	INT32		m_lRAStreamNumber;

	// level 3 stats
	CHXSimpleList*	m_pLogInfoList;
	UINT32		m_ulLogInfoLength;

	// authenication info.
	char		m_szUserName[MAX_DISPLAY_NAME]; /* Flawfinder: ignore */
	char		m_szPassword[MAX_DISPLAY_NAME]; /* Flawfinder: ignore */
	UINT16		m_uLastBuffering;
        UINT16          m_uLastStatusCode;
	ULONG32		m_ulPerfectPlayDownloadTime;

	// reconnect information
	BOOL		m_bAttemptReconnect;
	char*		m_pszReconnectServer;
	char*		m_pszReconnectProxy;
	char*		m_pszReconnectURL;
	UINT32		m_ulReconnectProxyPort;
	UINT32		m_ulReconnectServerPort;

	// redirect information
	char*		m_pszRedirectServer;
	char*		m_pszRedirectResource;
	char*		m_pszRedirectURL;
	UINT32		m_ulRedirectServerPort;

	IHXPendingStatus*	m_pProtocolStatus;
	IHXCookies*		m_pCookies;
	IHXCookies2*		m_pCookies2;

//////////////////////////////////////////////
// Automatic Transport Switching Support...
public:
        ULONG32		m_ulUDPTimeout;

protected:
	ULONG32		m_ulMulticastTimeout;
	UINT32		m_ulTCPTimeout;
	ULONG32		m_ulStartDataWait;
	ULONG32		m_ulFirstDataArrives;
	ULONG32		m_ulSendStatsMask;
	ULONG32		m_ulStatsInterval;
	UINT32		m_ulSeekPendingTime;
	UINT32		m_ulServerVersion;
	UINT32		m_ulTransportPrefMask;
        UINT16          m_uProtocolType;
	TransportMode	m_PreferredTransport;
	TransportMode	m_CurrentTransport;

	HX_BITFIELD	m_bLossCorrection : 1;
	HX_BITFIELD	m_bAltURL : 1;
	HX_BITFIELD	m_bRTSPProtocol : 1;	
	HX_BITFIELD	m_bDataWaitStarted : 1;
	HX_BITFIELD	m_bConnectionWait : 1;
	BOOL	        m_bSendStatistics;
	BOOL    	m_bUseUDPPort;
	HX_BITFIELD	m_bResendAuthenticationInfo : 1;
	HX_BITFIELD	m_bTimeBased : 1;
	HX_BITFIELD	m_bUserHasCalledResume : 1;
	HX_BITFIELD	m_bUserHasCalledStartInit : 1;
	HX_BITFIELD	m_bAtInterrupt : 1;
	HX_BITFIELD	m_bBruteForceReconnected : 1;
	HX_BITFIELD	m_bBruteForceConnectToBeDone : 1;
	HX_BITFIELD	m_bReconnect : 1;
	BOOL    	m_bNoLatency;
	HX_BITFIELD	m_bNoLatencySet : 1;
	HX_BITFIELD	m_bPerfectPlayPreferenceRead : 1;
	BOOL    	m_bPerfectPlayErrorChecked;	
	HX_BITFIELD	m_bServerHasPerfectPlay : 1;
	HX_BITFIELD	m_bServerHasResend : 1;
	HX_BITFIELD	m_bInRetryMode : 1;
	HX_BITFIELD	m_bPushDownSet : 1;

	HX_BITFIELD	m_bRARVSource : 1;
	HX_BITFIELD	m_bRARVSourceVerified : 1;

	PushDownStatus	m_pushDownStatus;

	BOOL		m_bForcePerfectPlay;
	BOOL		m_bServerHasTransportSwitching;
	BOOL		m_bSeekPending;
	UINT16*		m_pCloakPortList;
	UINT8		m_nNumberOfCloakPorts;
	UINT8		m_nCurrPortIdx;
	UINT16		m_uCurrCloakedPort;

	PreferredTransportState		m_prefTransportState;
	IHXPreferredTransport*		m_pPreferredTransport;
	IHXPreferredTransportManager*	m_pPreferredTransportManager;

	ReconnectCallback*		m_pReconnectCallback;
#if defined(HELIX_FEATURE_STATS) && defined(HELIX_FEATURE_REGISTRY)
	ReconnectCallback*		m_pStatsCallback;
#endif /* HELIX_FEATURE_STATS && HELIX_FEATURE_REGISTRY */

	// PAC
	IHXProxyAutoConfig*		m_pPAC;
	CHXSimpleList*			m_pPACInfoList;
	LISTPOSITION			m_PACInfoPosition;

	NetSourceState			m_state;

	friend class ReconnectCallback;

private:
        IHXBufferControl*                m_pBufferCtl;
        IHXWatermarkBufferControl*       m_pWMBufferCtl;

public:
	HX_RESULT	FinishSetup();
	void		ReSetup();
	void		Reset();
    
	char*		GetAltURL(BOOL& bDefault);

	HX_RESULT	switch_out_of_perfectplay();

	HX_RESULT	handleTransportSwitch(void);
	HX_RESULT	handleProxySwitch(HX_RESULT inError);
	HX_RESULT	handleRedirect(void);
	HX_RESULT	handleReconnect(void);
	
	BOOL		IsNetworkAvailable();
	HX_RESULT	AttemptReconnect();
	HX_RESULT	StartReconnect();
	HX_RESULT	ReportStats();
	HX_RESULT	ProcessReconnect(STREAM_INFO* pStreamInfo);
	HX_RESULT	EndReconnect();
	HX_RESULT	AddToPreReconnectEventList(STREAM_INFO* pStreamInfo, CHXEvent* pEvent);
	void		UpdateReconnectInfo(UINT32	ulPacketTime, 
					    BOOL&	bFirstEvent,
					    UINT32&	ulPrevPacketTime,
					    UINT32&	ulLargestGapInPacketTime,
					    UINT32&	ulLastPacketTime);

	char*		GetHost() {return m_pHost;};

	INT32		GetRAStreamNumber()
			{
			    return m_lRAStreamNumber;
			};

	UINT32		GetFirstDataArriveTime()
			{
			    return m_ulFirstDataArrives;
			};

	UINT32		GetLogInfo(CHXSimpleList*& pLogInfoList)
			{
			    pLogInfoList = m_pLogInfoList;
			    return m_ulLogInfoLength;
			};

	void		ReportError (HX_RESULT theErr);

	HX_RESULT	switch_to_next_transport(HX_RESULT incomingError);
	void		set_transport(TransportMode mode);

	void		WritePerfectPlayToRegistry();
	void		CreateCloakedPortList();

};

class ReconnectCallback : public IHXCallback
{
public:
    HXNetSource*	m_pSource;
    CallbackHandle	m_PendingHandle;
    BOOL		m_bIsStatsReportingCallback;
    IHXScheduler*	m_pScheduler;
    UINT32		m_ulScheduleTime;
    UINT32		m_ulTimeout;
    BOOL		m_bPaused;

			ReconnectCallback(HXNetSource*	pSource, 
					  BOOL bIsStatsCallback = FALSE);
    HX_RESULT		ScheduleCallback(UINT32 uTimeout);
    HX_RESULT		PauseCallback();
    HX_RESULT		ResumeCallback();
    HX_RESULT		CancelCallback();
    BOOL		IsPaused() {return m_bPaused;};

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

    STDMETHOD_(ULONG32,AddRef)	(THIS);

    STDMETHOD_(ULONG32,Release)	(THIS);

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

protected:
			~ReconnectCallback();

    LONG32		m_lRefCount;
};
#endif // _HX_NET_SOURCE


⌨️ 快捷键说明

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