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

📄 audiorender.h

📁 播放被H264_AAC所压缩的avi文件的播放器。
💻 H
字号:

#pragma once

#include <mmsystem.h>
#include <dsound.h>
#include "Timer.h"
#include "SyncFifo.h"

//##ModelId=4753B7E90119
class CAudioRender
{
public:
	//##ModelId=4753B7E9011A
	CAudioRender();
	//##ModelId=4753B7E9011B
	~CAudioRender();

//Operators
public:
	//##ModelId=4753B7E9011C
	BOOL	CreateAudioRender(HWND hWnd, int nSamplesPerSec, int nChannels, int nBitsPerSample);
	//##ModelId=4753B7E9012C
	BOOL	DestroyAudioRender();

	//##ModelId=4753B7E9012D
	BOOL	Play();
	//##ModelId=4753B7E9012E
	BOOL	Stop();

	//##ModelId=4753B7E90138
	void	EmptyWaveBuffer();
	//##ModelId=4753B7E90139
	DWORD	GetCurPlayTime();

	//##ModelId=4753B7E9013A
	BOOL	SetVolume(int nVol);
private:
	//##ModelId=4753B7E9013C
	BOOL	WriteWaveData (UINT cbSize);
	//##ModelId=4753B7E90149
	BOOL	WriteSilence (UINT cbSize);
	//##ModelId=4753B7E9014B
	DWORD	GetMaxWriteSize (void);
	//##ModelId=4753B7E9014D
	BOOL	ServiceBuffer (void);
	//##ModelId=4753B7E90158
	PVOID	GetWaveData(UINT nSize, BOOL bSilence = TRUE);
	
	//##ModelId=4753B7E9015B
	static BOOL TimerCallback (DWORD dwUser);

//Attributes
public:
	//##ModelId=4753B7E90168
	CSyncFifo*				m_pAudioStream;

private:
	//##ModelId=4753B7E9016C
	HWND					m_hWnd;
	//##ModelId=4753B7E9016E
	WAVEFORMATEX			m_WaveFormatEx;
	
	//##ModelId=4753B7E90178
    LPDIRECTSOUND			m_pDs;
	//##ModelId=4753B7E9017D
	LPDIRECTSOUNDBUFFER		m_pDSBuff;//sound buffer
	//##ModelId=4753B7E90187
	DSBUFFERDESC			m_sDsbd;// sound buffer description

	//##ModelId=4753B7E9018B
	BYTE *					m_pSoundBuff;
	//##ModelId=4753B7E90196
	DWORD					m_dwSampleSize; //chunk sample size
	//##ModelId=4753B7E90197
	DWORD					m_dwDSBufferSize; // size of sound buffer in bytes
	//##ModelId=4753B7E901A5
	DWORD					m_dwBufOffset; //last write position
	//##ModelId=4753B7E901A6
	DWORD					m_dwCurPlayCursor;

	//##ModelId=4753B7E901B5
	UINT					m_nLastChunkTime;//last pop chunk time

	//##ModelId=4753B7E901B7
	Timer*                  m_pTimer;       // ptr to Timer object
	//##ModelId=4753B7E901C5
	UINT					m_nBufService;
	//##ModelId=4753B7E901D4
	LONG					lInService;

	//##ModelId=4753B7E901D5
	BOOL					m_bEmpty;
};

⌨️ 快捷键说明

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