📄 hxbsrc.h
字号:
/************************************************************************ * Method: * IHXASMSource::Subscribe * Purpose: * Called to inform a file format that a subscription has occurred, * to rule number uRuleNumber, for stream uStreamNumber. */ STDMETHOD(Subscribe) (THIS_ UINT16 uStreamNumber, UINT16 uRuleNumber); /************************************************************************ * Method: * IHXASMSource::Unsubscribe * Purpose: * Called to inform a file format that a unsubscription has occurred, * to rule number uRuleNumber, for stream uStreamNumber. */ STDMETHOD(Unsubscribe) (THIS_ UINT16 uStreamNumber, UINT16 uRuleNumber); // IHXInfoLogger method /************************************************************************ * Method: * IHXInfoLogger::LogInformation * Purpose: * Logs any user defined information in form of action and * associated data. */ STDMETHOD(LogInformation) (THIS_ const char* /*IN*/ pAction, const char* /*IN*/ pData) = 0;#if defined(HELIX_FEATURE_HYPER_NAVIGATE) /* * IHXHyperNavigate methods */ /************************************************************************ * Method: * IHXHyperNavigate::GoToURL * Purpose: * Performs a simple Go To URL operation. */ STDMETHOD(GoToURL) (THIS_ const char* pURL, const char* pTarget); /************************************************************************ * Method: * IHXHyperNavigate2::Execute * Purpose: * * Parameters: * pURL: URL (absolute or relative) * pTargetInstance: * pTargetApplication: * pTargetRegion: * pParams: */ STDMETHOD(Execute) (THIS_ const char* pURL, const char* pTargetInstance, const char* pTargetApplication, const char* pTargetRegion, IHXValues* pParams);#endif /* defined(HELIX_FEATURE_HYPER_NAVIGATE) */ /************************************************************************ * Method: * IHXSourceBufferingStats2::GetCurrentBuffering * Purpose: * Get the current buffering information */ STDMETHOD(GetCurrentBuffering) (THIS_ UINT16 uStreamNumber, REF(INT64) llLowestTimestamp, REF(INT64) llHighestTimestamp, REF(UINT32) ulNumBytes, REF(BOOL) bDone) PURE; /************************************************************************ * Method: * IHXSourceBufferingStats2::GetTotalBuffering * Purpose: * Get the total amount of data buffered for a stream. * This includes what is in the transport buffer and in * the renderer */ STDMETHOD(GetTotalBuffering) (THIS_ UINT16 uStreamNumber, REF(INT64) llLowestTimestamp, REF(INT64) llHighestTimestamp, REF(UINT32) ulNumBytes, REF(BOOL) bDone); HX_RESULT Init(HXPlayer * player, UINT32 unRegistryID); HX_RESULT SetupRegistry(void); virtual HX_RESULT UpdateRegistry(UINT32 ulRegistryID) = 0; virtual BOOL IsInitialized(void) {return m_bInitialized;}; virtual BOOL IsPreBufferingDone(void) {return m_bIsPreBufferingDone;}; void AddHXStream(HXStream* pStream); HX_RESULT CollectAudioStreams(CHXSimpleList*& pAudioStreamList); void RemoveAudioStreams(void); void PauseAudioStreams(void); void ResumeAudioStreams(void); void ReleaseAudioStreams(CHXSimpleList* pAudioStreamList); void InitialBufferingDone(void); void DoRebuffer(void); BOOL IsRebufferRequired(void); BOOL IsRebufferDone(void); #if defined(HELIX_FEATURE_STATS) && defined(HELIX_FEATURE_REGISTRY) virtual HX_RESULT CopyMetaDataToRegistry(IHXValues* pHeader);#endif /* HELIX_FEATURE_STATS && HELIX_FEATURE_REGISTRY */ virtual HX_RESULT DoCleanup(EndCode endCode = END_STOP); void Stop(void); virtual HX_RESULT DoSeek( ULONG32 seekTime) = 0; virtual HX_RESULT DoPause(void) = 0; virtual HX_RESULT DoResume(void) = 0; virtual HX_RESULT StartInitialization(void) = 0; virtual UINT16 GetNumStreams(void) = 0; virtual HX_RESULT GetStreamInfo(ULONG32 ulStreamNumber, STREAM_INFO*& theStreamInfo) = 0; virtual HX_RESULT GetEvent(UINT16 usStreamNumber, CHXEvent * &theEvent) = 0; virtual HX_RESULT UpdateStatistics(void) = 0; virtual void SetMinimumPreroll(ULONG32 ulMinimumAudioPreroll, ULONG32 ulMinimumStartingPreroll); virtual HX_RESULT GetStreamHeaderInfo(UINT16 index, IHXValues * &hdr); virtual HX_RESULT ProcessIdle(void) // calls _ProcessIdle (FALSE) { return _ProcessIdle(FALSE); }#if defined (__MWERKS__) virtual HX_RESULT ProcessIdleAtInterrupt(void) // calls _ProcessIdle (TRUE) { return _ProcessIdle(TRUE); }#endif // (__MWERKS__) HX_RESULT GetLastError(void) { return mLastError;}; virtual BOOL IsLocalSource() {return TRUE;}; virtual BOOL IsPNAProtocol() {return FALSE;}; virtual BOOL IsSimulatedNetworkPlayback() {return FALSE;}; virtual void EventReady(CHXEvent* pEvent); // to set and get flags for livestream, saveas, perfectplay... virtual void SetFlags(UINT16 flags); virtual UINT16 GetFlags() {return mFlags;}; virtual BOOL IsPerfectPlayAllowed() { return m_bPerfectPlayAllowed;}; virtual BOOL IsPerfectPlay() { return m_bPerfectPlay;}; virtual HX_RESULT SetPlayTimes(UINT32 ulStartTime, UINT32 ulEndTime, UINT32 ulDelay, UINT32 ulDuration); virtual HX_RESULT UpdatePlayTimes(IHXValues* pValues); virtual BOOL IsSourceDone() = 0; // tell about end of source... virtual void SetEndOfClip(BOOL bForcedEndofClip = FALSE) = 0; virtual void EnterBufferedPlay(void) {}; virtual void LeaveBufferedPlay(void) {}; ULONG32 GetDuration() const { return m_ulDuration; }; IHXClientEngine* GetClientEngine() const { return (IHXClientEngine*) m_pEngine; }; UINT32 GetStartTime() const { return m_ulStartTime; }; UINT32 GetEndTime() const { return m_ulEndTime; }; UINT32 GetDelay() const { return m_ulDelay; }; CHXURL* GetCHXURL() { return m_pURL; }; BOOL IsDelayed() const { return m_bDelayed; }; BOOL IsSeekable() const {return !m_bNonSeekable;}; BOOL IsPaused() const {return m_bPaused;}; INT64 GetLastExpectedPacketTime() const {return m_llLastExpectedPacketTime;}; void PartOfNextGroup(BOOL bPartOfNextGroup) { m_bPartOfNextGroup = bPartOfNextGroup;}; BOOL IsPartOfNextGroup(void) { return m_bPartOfNextGroup; }; void PartOfPrefetchGroup(BOOL bPartOfPrefetchGroup) { m_bPartOfPrefetchGroup = bPartOfPrefetchGroup;}; BOOL IsPartOfPrefetchGroup(void) { return m_bPartOfPrefetchGroup; }; STDMETHOD(ReportRebufferStatus) (THIS_ UINT16 uStreamNumber, UINT8 unNeeded, UINT8 unAvailable); STDMETHOD(SetGranularity) (THIS_ UINT16 uStreamNumber, ULONG32 ulGranularity); void SetSourceInfo(SourceInfo* pSourceInfo) {m_pSourceInfo = pSourceInfo;}; virtual void AdjustClipBandwidthStats(BOOL bActivate = FALSE) = 0; virtual BOOL CanBeResumed(void) = 0; BOOL isRestrictedLiveStream() {return m_bRestrictedLiveStream;}; virtual BOOL TryResume(void); virtual char* GetHost() {return NULL;}; virtual void ReSetup(void) = 0; BOOL IsResumePending() { return m_bResumePending;}; virtual char* GetAltURL(BOOL& bDefault); void SetAltURLType(BOOL bDefault) { m_bDefaultAltURL = bDefault; }; BOOL IsActive(void) {return m_bIsActive;}; HX_RESULT SetRequest(const CHXURL* pURL, BOOL bAltURL); HX_RESULT GetRequest(REF(IHXRequest*) pRequest) { pRequest = m_pRequest; if (m_pRequest) { m_pRequest->AddRef(); } return HXR_OK; }; void UpdateDuration(UINT32 ulDuration); void UpdateDelay(UINT32 ulDelay); void ScheduleProcessCallback(); void MergeUpgradeRequest(BOOL bAddDefault = FALSE, char* pUpgradeString = NULL); void ClearUpgradeRequest(); void DeleteAllEvents(); void EnterPrefetch(PrefetchType prefetchType, UINT32 ulPrefetchValue); virtual void LeavePrefetch(void); virtual BOOL IsPrefetchDone(void) {return TRUE;}; void SetSoundLevel(UINT16 uSoundLevel, BOOL bReflushAudioDevice); void SetAudioDeviceReflushHint(void); void SetMaxPossibleAccelRatio(double maxR) {m_maxPossibleAccelRatio = maxR;}; virtual void EnterFastStart(void) { m_bFastStart = TRUE; }; virtual void LeaveFastStart(TurboPlayOffReason leftReason); virtual BOOL CanBeFastStarted(void) {return FALSE;}; virtual HX_RESULT FillRecordControl() = 0; BOOL IsPlayingFromRecordControl() { return m_bPlayFromRecordControl; }; HX_RESULT OnTimeSync(ULONG32 ulCurrentTime);protected: virtual ~HXSource(void); PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME virtual HX_RESULT _ProcessIdle(BOOL atInterrupt = FALSE) = 0; virtual HX_RESULT ReadPreferences(void); BOOL IsAudioStreamFromThisSource(IHXValues* pAudioHeader); BOOL IsAnyAudioStream(void); HX_RESULT DeleteStreamTable(void); IHXValues* GetHeaderInfo(UINT16 stream_number); ULONG32 GetAvailableMemory(); ULONG32 GetPerfectPlayTime(void); HX_RESULT AdjustClipTime(void); CHXMapLongToObj* GetStreamInfoTable(void) { return mStreamInfoTable; }; virtual void ReBuffer(void) = 0; void GenerateFakeLostPacket(CHXEvent*& theEvent); BOOL ShouldConvert(const char* pTargetInstance); HX_RESULT SendHeaderToRecordControl(BOOL bFileHeader, IHXValues* pHeader); void ProcessFileHeader(void); HX_RESULT ProcessStreamHeaders(IHXValues* pHeader, STREAM_INFO*& pStreamInfo); HX_RESULT mLastError; CHXMapLongToObj* mStreamInfoTable; // Preferences ULONG32 m_ulPerfectPlayTime; ULONG32 m_ulBufferedPlayTime; ULONG32 m_ulStreamHeadersExpected; UINT16 m_nSeeking; BOOL m_bPerfectPlayEntireClip; HX_BITFIELD m_bCannotBufferEntireClip : 1; BOOL m_bPerfectPlay; HX_BITFIELD m_bBufferedPlay : 1; HX_BITFIELD m_bClipTimeAdjusted : 1; HX_BITFIELD m_bInitialized : 1; HX_BITFIELD m_bIsPreBufferingDone : 1; HX_BITFIELD m_bAltURL : 1; HX_BITFIELD m_bReceivedData : 1; HX_BITFIELD m_bReceivedHeader : 1; HX_BITFIELD m_bInitialBuffering : 1; HX_BITFIELD m_bCustomEndTime : 1; HX_BITFIELD m_bCustomDuration : 1; HX_BITFIELD m_bPaused : 1; HX_BITFIELD m_bFirstResume : 1; HX_BITFIELD m_bResumePending : 1; HX_BITFIELD m_bIsActive : 1; HX_BITFIELD m_bDelayed : 1; HX_BITFIELD m_bLocked : 1; HX_BITFIELD m_bPartOfNextGroup : 1; HX_BITFIELD m_bPartOfPrefetchGroup : 1; HX_BITFIELD m_bPrefetch : 1; HX_BITFIELD m_bPerfectPlayAllowed : 1; HX_BITFIELD mSaveAsAllowed : 1; HX_BITFIELD mLiveStream : 1; HX_BITFIELD m_bRestrictedLiveStream : 1; HX_BITFIELD m_bNonSeekable : 1; HX_BITFIELD m_bSourceEnd : 1; // == 1 no more packets for this stream from actual source HX_BITFIELD m_bForcedSourceEnd : 1; // Forced end of source due to end or dur tag in url/SMIL HX_BITFIELD m_bIsPreBufferingStarted : 1; HX_BITFIELD m_bIsMeta: 1; UINT32 m_ulTurboStartActiveTime; UINT16 mFlags; UINT16 m_uNumStreams; // Number of streams in the source... ULONG32 m_ulPreRollInMs; // Number of millisecs worth of data to be held back (for preroll) ULONG32 m_ulPreRoll; // Number of bytes worth of data to be held back (for preroll) ULONG32 m_ulAvgBandwidth; // Bandwidth for this stream... ULONG32 m_ulDuration; // duration of this stream... UINT32 m_ulLastBufferingCalcTime; UINT16 m_uActiveStreams; PrefetchType m_prefetchType; UINT32 m_ulPrefetchValue; char* m_pszURL; CHXURL* m_pURL; UINT32 m_ulStartTime; UINT32 m_ulEndTime; INT64 m_llLastExpectedPacketTime; UINT32 m_ulRestrictedDuration; UINT32 m_ulLossHack; UINT32 m_ulNumFakeLostPackets; UINT32 m_ulFirstPacketTime; double m_maxPossibleAccelRatio; // level 3 stats UINT32 m_ulSourceStartTime; IHXPreferences* m_pPreferences; IHXScheduler* m_pScheduler; IHXRequest* m_pRequest; HXClientEngine* m_pEngine; CHXSimpleList m_HXStreamList; CHXSimpleList* m_pAudioStreamList;#if defined(HELIX_FEATURE_AUTOUPGRADE) HXUpgradeCollection* m_pUpgradeCollection;#endif /* HELIX_FEATURE_AUTOUPGRADE */ IHXASMSource* m_pASMSource; IHXBackChannel* m_pBackChannel; HXRecordControl* m_pRecordControl; BOOL m_bPlayFromRecordControl; CHXURL* m_pRedirectURL; BOOL m_bRedirectPending;};// Defined flags#define HX_RELIABLE_FLAG 0x0001#define HX_KEYFRAME_FLAG 0x0002#define HX_LASTFRAME_FLAG 0x0004#endif // _HX_BSOURCE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -