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

📄 audio_test.c

📁 这个是LINUX下的音频驱动的测试程序
💻 C
字号:

#include<unistd.h>
#include<sys/types.h>
#include<sys/mman.h>
#include<stdio.h>
#include<fcntl.h>
#include<assert.h>
#include <linux/soundcard.h>

#define WAV_FILE "test.wav"
#define DEV_DSP "/dev/dsp"
#define DEV_MIXER "/dev/mixer"
#define SampleRate 11025
#define Channels 1
#define Bits   16
#define BufTime 3
#define BUFFER_SIZE (SampleRate * Channels * Bits * BufTime) / 8 

int main(void) 
{
	int fd_file, fd_dsp, fd_mixer;
	int ret, arg;
	int vol = 100;
	char tmp[BUFFER_SIZE] ;
	fd_file = open (WAV_FILE, O_RDONLY);
	fd_dsp = open (DEV_DSP, O_RDWR);
	if (fd_file < 0 || fd_dsp < 0) {
		printf("No such file or device.\n");
	}

	fd_mixer = open (DEV_MIXER, O_RDONLY);
	ioctl(fd_mixer, MIXER_WRITE(SOUND_MIXER_VOLUME), &vol); 
	arg = SampleRate;
	ioctl(fd_dsp, SOUND_PCM_WRITE_RATE, &arg);
	arg = Channels;
	ioctl(fd_dsp, SOUND_PCM_WRITE_CHANNELS, &arg);
	arg = Bits;
	ioctl(fd_dsp, SOUND_PCM_WRITE_BITS, &arg);
	
	do { 
		ret = read(fd_file, tmp , BUFFER_SIZE);
		write (fd_dsp, tmp, ret);
	} while (ret == BUFFER_SIZE);
	
	free(tmp);
	close(fd_file);
	close(fd_dsp);
}

⌨️ 快捷键说明

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