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

📄 hxaudstr.h

📁 linux下的一款播放器
💻 H
📖 第 1 页 / 共 2 页
字号:
				    REF(IUnknown*)  /*OUT*/ ppUnknown,				    IUnknown*	    /*IN*/  pUnkOuter);    /************************************************************************     *	Method:     *	    IHXUpdateProperties::UpdatePacketTimeOffset     *	Purpose:     *	    Call this method to update the timestamp offset of cached packets     */    STDMETHOD(UpdatePacketTimeOffset) (THIS_				       INT32 lTimeOffset);    /************************************************************************     *	Method:     *	    IHXUpdateProperties::UpdatePlayTimes     *	Purpose:     *	    Call this method to update the playtime attributes     */    STDMETHOD(UpdatePlayTimes)	      (THIS_				       IHXValues* pProps);        /*     *      CHXAudioStream methods     */    HX_RESULT 	Setup   (				    HXAudioFormat*	  pFormat			    ,	ULONG32		  ulGranularity			    );    HX_RESULT	GetFormat( HXAudioFormat* pAudioFormat );    HX_RESULT	MixIntoBuffer( 			    UCHAR*	pBuf,			    ULONG32	ulBufSize,			    ULONG32&    ulBufTime,			    BOOL&	bIsMixBufferDirty,			    BOOL	bGetCrossFadeData = FALSE			    );    ULONG32		MixData(				UCHAR*  pDestBuf			    ,   ULONG32 ulBufLen 			    ,	BOOL	bMonoToStereoMayBeConverted			    ,	BOOL&	bIsMixBufferDirty);	BOOL    IsInitialized(void)	     {return m_bInited;};	BOOL    IsAudioFormatKnown(void) {return m_bAudioFormatKnown;};	inline void SetLive(BOOL bIsLive)        {               if (m_bIsFirstPacket)            {                m_bIsLive = bIsLive;            }        }	void    SetupToBeDone()	     {m_bSetupToBeDone = TRUE;};	HX_RESULT StartCrossFade(CHXAudioStream*    pFromStream, 				UINT32		    ulCrossFadeStartTime,				UINT32		    ulCrossFadeDuration, 				BOOL		    bToStream);	HX_RESULT   ConvertCurrentTime(double dBytesPlayed, 				       UINT32 ulCurrentTime,				       UINT32& ulAdjustedTime);        	void	SyncStream(INT64 llSyncTime);	void	FreeInfo(HXAudioInfo* pInfo, BOOL bInstantaneous = FALSE);	void	FreeBuffer(IHXBuffer* pBuffer);#ifdef _MACINTOSH	INT64	GetLastAudioWriteTime() {return m_llLastWriteTime - (INT64)(UINT64)m_ulBaseTime;};#else	INT64	GetLastAudioWriteTime() {return m_llLastWriteTime - (INT64)m_ulBaseTime;};#endif	void	UpdateStreamLastWriteTime(BOOL bForceUpdate = FALSE);	void	SaveLastNMilliSeconds(BOOL bSave, UINT32 ulNMilliSeconds);	void	RewindStream(UINT32 ulTimeToRewind);	void	Pause(BOOL bPlayerPause = FALSE);	void	Resume(BOOL bPlayerResume = FALSE);	void	Stop(void);	void	Seek(UINT32 ulSeekTime);	EPlayerState	GetState(void) { return m_eState; };	void	SetSoundLevel(float fSoundLevel);	void	SetAudioDeviceReflushHint(BOOL bSupported);	BOOL	IsAudioDeviceReflushHint(void) { return m_bAudioDeviceReflushHint; };	void	RollBackTimestamp();	CHXAudioPlayer*	m_Owner;	BOOL		m_bMayNeedToRollbackTimestamp;	virtual void	    ResetStream(void);	virtual HX_RESULT   ProcessAudioHook(PROCESS_ACTION action, 					     IHXAudioHook* pAudioHook);	// CAudioSvcSampleConverter method	virtual BOOL ConvertIntoBuffer(tAudioSample* buffer, UINT32 nSamples, INT64 llStartTimeInSamples) ;protected:    LONG32		m_lRefCount;    HX_RESULT		m_wLastError;    BOOL		m_bInited;		// Set to TRUE after buffer is created.     BOOL		m_bSetupDone;    BOOL		m_bAudioFormatKnown;    BOOL		m_bIsResumed;    BOOL		m_bPlayerPause;    HXAudioFormat      m_AudioFmt;		// This streams format    HXAudioFormat      m_DeviceFmt;		// The audio device format    IHXAudioResampler* m_pResampler;		// Id used by resampling code    void*		m_pInterpId;		// Id used by linear interpolator code    IHXValues*		m_pValues;    BOOL		m_bDisableWrite;#if defined(HELIX_FEATURE_AUDIO_PREMIXHOOK)    CHXMapPtrToPtr	m_PreMixHookMap;#endif        CHXMapPtrToPtr*	m_DryNotificationMap;    ULONG32		m_ulGranularity;	// Play at least this amt of audio    ULONG32		m_ulInputBytesPerGran;	// Number of bytes for this amt of audio    ULONG32		m_ulOutputBytesPerGran;	// Number of bytes for this amt of audio    ULONG32		m_ulExcessInterpBufferSize;	// Number of bytes for this amt of audio    ULONG32		m_ulPreviousExcessInterpBufferSize;    BOOL		m_bFirstWrite;    ULONG32		m_ulMaxBlockSize;	// Size of resampled data buffer    UCHAR*		m_pResampleBuf; 	// Resampler output buffer    UCHAR*		m_pTmpResBuf; 		// Tmp resample  buffer    UCHAR*		m_pCrossFadeBuffer; 		// Tmp resample  buffer    UCHAR*		m_pExcessInterpBuffer;    UCHAR*		m_pTempInterpBuffer;    UINT32		m_ulCrossFadeBufferSize;    float		m_fVolume;		// Stream volume level    BOOL		m_bChannelConvert;	// if TRUE convert mono->stereo    UINT16		m_uVolume;		// Stream's current volume.    BOOL		m_bMute;    BOOL		m_bGotHooks;		// if TRUE if this stream has hooks    INT64		m_llLastWriteTime;	// Time of last buffer written    ULONG32		m_ulFudge;		// The fudge factor for detecting gaps    BOOL		m_bHooksInitialized;    HXAudioData*   m_pInDataPtr;    HXAudioData*   m_pOutDataPtr;    CHXSimpleList*  m_pDataList;		// Audio data list    CHXSimpleList*  m_pInstantaneousList;	// Instantaneous data list    CHXSimpleList*  m_pRAByToTsInList;    CHXSimpleList*  m_pRAByToTsAdjustedList;#if defined(HELIX_FEATURE_CROSSFADE)    CrossFader*	    m_pCrossFader;#else    void*           m_pCrossFader;#endif /* HELIX_FEATURE_CROSSFADE */    IHXCommonClassFactory* m_pCommonClassFactory;    IHXPreferences* m_pPreferences;    #ifdef _MACINTOSH    HXAudioMacQueue* m_pAvailableBuffers;#else    CHXSimpleList*  m_pAvailableBuffers;#endif        UINT16	    m_uCacheSize;    BOOL	    m_bDeterminedInitialCacheSize;    BOOL	    m_bCacheMayBeGrown;    BOOL		m_bTobeTimed;    BOOL		m_bIsFirstPacket;    BOOL		m_bIsLive;    BOOL		m_bSetupToBeDone;    UINT32		m_ulBaseTime;    BOOL		m_bCrossFadingToBeDone;    CHXAudioStream*	m_pCrossFadeStream;    INT64		m_llCrossFadeStartTime;    UINT32		m_ulCrossFadeDuration;    BOOL		m_bFadeToThisStream;    BOOL		m_bFadeAlreadyDone;    BOOL		m_bRealAudioStream;    UINT32		m_ulLastInputStartTime;    UINT32		m_ulLastInputEndTime;    INT64		m_llLastStartTimePlayed;    UINT32		m_ulTSRollOver;    UINT32		m_ulLiveDelay;    HX_BITFIELD		m_bLastWriteTimeUpdated  : 1;    HX_BITFIELD		m_bAudioDeviceReflushHint  : 1;    HX_BITFIELD		m_bLastNMilliSecsToBeSaved : 1;    UINT32		m_ulLastNMilliSeconds;    CHXSimpleList*	m_pLastNMilliSecsList;    UINT32		m_ulLastNHeadTime;    UINT32		m_ulLastNTailTime;    EPlayerState	m_eState;    HX_BITFIELD		m_bCanBeRewound : 1;/* *  Left around for future debugging    FILE*		fdbefore;    FILE*		fdbeforetxt;    FILE*		fdafter;    FILE*		fdaftertxt;    FILE*		fdin;*/    virtual		~CHXAudioStream();    PRIVATE_DESTRUCTORS_ARE_NOT_A_CRIME    void	InitHooks();    HX_RESULT 	ProcessHooks(HXAudioData*  pInData			     ,HXAudioData* pOutData);    HX_RESULT	AddData (HXAudioData* pData);    HX_RESULT	SetupResampler(void);    ULONG32	CalcMs( ULONG32 ulNumBytes );    ULONG32	CalcDeviceMs( ULONG32 ulNumBytes );        UINT32	CalcOffset(INT64 llStartTime, INT64 llEndTime);    void	FlushBuffers(BOOL bInstantaneousAlso = TRUE);    HX_RESULT	ProcessInfo(void);    BOOL	EnoughDataAvailable(INT64& llStartTimeInSamples, UINT32& nSamplesRequired);    void	CleanupRAByToTs(void);    void	MapFudgedTimestamps(void);    void	InitializeCrossFader(void);    void	RemoveExcessCrossFadeData();private:    HXAudioSvcMixEngine *m_pMixEngine ;    static UINT32 Bytes2Samples(UINT64 ulNumBytes, const HXAudioFormat *fmt) ;    static UINT64 Samples2Ms(INT64 nSamples, const HXAudioFormat *fmt) ;    // variables to estimate the true sample rate    INT64	m_startMeasureTime ;    INT32	m_totSamples ;    // how many samples apart may the mixes lie until we don't recognize them anymore    // as contiguous? Essentially, this should be sample rate * [error in time stamps]    enum { MIXTIMEFUDGEINSAMPLES = 400 } ;    // we need these to correct for incoming data containing incomplete    // sample frames.    IHXBuffer* m_piPendingAudioData ;    UINT32 m_ulPendingAudioBytes ; // size in bytes of the slush buffer content    UINT32 m_ulSampleFrameSize ; // size in bytes of a sample frame, i.e. 2*nChannels    // Write() backend function    HX_RESULT Write2(HXAudioData* pAudioData) ;#ifdef HELIX_FEATURE_VOLUME    IHXVolume* m_pStreamVolume;#endif};#ifdef _MACINTOSHstruct HXAudioMacQueueElement {	HXAudioMacQueueElement 	*mNextElementInQueue; // link must be first member	void			*mObject;};class HXAudioMacQueue {	protected:			QHdr 		mQueueHeader;		Boolean		mDestructing;		unsigned long	m_nCount;			public:			HXAudioMacQueue(void);		~HXAudioMacQueue(void);	// decrements the ref on the irma nodes (via release)				void*	 	RemoveHead(void);		HX_RESULT 	AddTail(void* pObject);	// increments the ref		UINT32		GetCount();};#endif // _MACINTOSH#endif /* HXAUSTR_H_ */

⌨️ 快捷键说明

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