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

📄 wavplay.cpp

📁 用QT,designer编写的游戏
💻 CPP
字号:
#include "wavplay.h"WavePlay::WavePlay(int bufSize, QString deviceName):QObject(){	sndFd = open((const char *)deviceName, O_WRONLY);	place = sizeof(WH);	buffer = NULL;	fileSize = 0;	bufferSize = bufSize;	wavFd = -1;	playState = 0;}WavePlay::~WavePlay(){	if(buffer) munmap(buffer, fileSize);	if(sndFd) close(sndFd);	if(wavFd >= 0) close(wavFd);}void WavePlay::readWaveHead(){	pHead = (WH *)buffer;}void WavePlay::soundCardCtl(){	int tmp;	ioctl(sndFd, SNDCTL_DSP_RESET) ;	//soundcard init	tmp = pHead->bits;	ioctl(sndFd, SNDCTL_DSP_SETFMT, (char *)&tmp); //set sound format	tmp = pHead->channel;	ioctl(sndFd, SNDCTL_DSP_CHANNELS, (char *)&tmp);//set channel	tmp = pHead->rate;	ioctl(sndFd, SNDCTL_DSP_SPEED, (char *)&tmp);	//set sound bps}void WavePlay::openSound(QString fName){	fileName = fName;	if(fileName == QString("") || ! QFile::exists(fileName))		return;	if(fileName.right(4) != QString(".wav"))		return;	wavFd = open((const char *)fileName, O_RDWR);	QFile *f = new QFile(fileName);	fileSize = f->size();	buffer = (unsigned char *)mmap(0, fileSize, PROT_READ | PROT_WRITE,				MAP_SHARED, wavFd, 0);	free(f);	place = sizeof(WH);	readWaveHead();	soundCardCtl();}void WavePlay::closeSound(){}void WavePlay::play(){	while(place < fileSize)	{		if(playState == 0)		{			place += write(sndFd, buffer + place,  bufferSize);			emit placeChanged(100 * (place - sizeof(WH)) 							/ (fileSize - sizeof(WH)));		}else if(playState == 1)		{			closeSound();			return;		}else if(playState == 2)		{			QTimer::singleShot(200, this, SLOT(play()));		}	}}void WavePlay::pause(){	playState = 2;}void WavePlay::stop(){	playState = 1;}void WavePlay::forward(){}void WavePlay::backward(){}void WavePlay::setPlace(){}//int main(int argc, char *argv[])//{//	WavePlay wp;//	wp.openSound(argv[1]);//	qDebug("ssssssssssssssss");//	wp.play();//	qDebug("ssssssssssssssss");//	wp.stop();//}

⌨️ 快捷键说明

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