📄 audio.cpp
字号:
#include "audio.h"#include<stdio.h>#include<string.h>audio * paudio;char * paudio_play_buf;char * paudio_rec_buf;int frame_size;bool read_phone_stop;void * th_read_phone(void * data){ data = data; int count = 0; //printf("recording... \n"); while(!read_phone_stop) { count = read(paudio->audio_fd,paudio_rec_buf,AUDIO_BUF_SIZE); paudio->emit_send(count); } return NULL;}void audio::emit_send(int len){ emit sig_send(len);}void audio::play_audio(int count){ write(paudio->audio_fd,paudio_play_buf,count); //printf("one audio frame played size : %d \n",count);}void audio::start_rec(){ read_phone_stop = false; pthread_create(&th_audio_reader,NULL,th_read_phone,NULL); return;}char audio_ins[] = "audio interrupt between";void audio::stop_rec(){ strcpy(paudio_play_buf,audio_ins); emit_send(sizeof(audio_ins)+1); read_phone_stop = true;}/*PAGE*/void audio::get_audio_bufs(char * buf,char * buf1){ paudio_play_buf = buf; paudio_rec_buf = buf1;}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"); // here is the error trating code //if ((music_fd = open("hehe", O_WRONLY, 0)) == -1) // printf("error open hehe \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); return 0;}/*PAGE*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -