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

📄 audio.cpp

📁 嵌入式LINUX的智能家居系统源码
💻 CPP
字号:
#include "audio.h"#include<stdio.h>audio * paudio;char * paudio_play_buf;char * paudio_rec_buf;bool read_phone_stop;pthread_mutex_t l;void * th_read_phone(void * data){	data = data;	int count = 0;	printf("recording... \n");	while(!read_phone_stop)	{		if((count = read(paudio->audio_fd,paudio_rec_buf,AUDIO_BUF_SIZE))>0)			paudio->emit_send(count);			}	return NULL;}void audio::start_rec(){	read_phone_stop = false;	pthread_create(&th_audio_reader,NULL,th_read_phone,NULL);	return;}void audio::stop_rec(){	read_phone_stop = true;}void audio::play_audio(int len){	write(paudio->audio_fd,paudio_play_buf,len);	//printf("one audio played \n");}void audio::emit_send(int len){	emit sig_send(len);}/*PAGE*/void audio::get_audio_bufs(char * buf1,char *buf2){	paudio_play_buf = buf1;	paudio_rec_buf = buf2;}int audio::init(){	printf("init begin \n");	open_audio_dev();	set_params();		printf("init end \n");	return 0;}audio::audio(){	paudio = this;	read_phone_stop = true;}audio::~audio(){	close(mixer_fd);	close(audio_fd);}int audio::open_audio_dev(){	//open displayer	if((audio_fd = open(AUDIO_DEV,O_RDWR,0))==-1)		printf("error open audio dev \n");	return 0;}int audio::set_params(){//format set	int format;	format = AFMT_S16_NE;	if(ioctl(audio_fd,SNDCTL_DSP_SETFMT,&format) == -1)		printf("error control format \n");//channels set	int channels;	channels = 1;	if(ioctl(audio_fd,SNDCTL_DSP_CHANNELS,&channels) == -1)		printf("error control channel \n");//sample rate set	int speed;	speed = 8000;	if(ioctl(audio_fd,SNDCTL_DSP_SPEED,&speed) == -1)		printf("error control speed \n");//mixer params set:input channel set	if((mixer_fd = open(MIXER_DEV,O_WRONLY))== -1)		printf("error open mixer_fd \n");	int input_src = (1<<INPUT_CHA);	ioctl(mixer_fd,SOUND_MIXER_WRITE_RECSRC,&input_src);		printf("audio device is opened successfully \n");	return 0;}/*PAGE*/

⌨️ 快捷键说明

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