📄 audio.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 + -