www.pudn.com > wav_mp3_recorder.rar > rec.c
#include#include #include #include #include "audiorec.h" char* filename; int end= 0; void sighandler(int sig) { if(sig == SIGUSR1) end=1; } int main(int argc, char **argv) { int wave_mp3 = 0; struct ABUFFER *buf; unsigned char encOut[500]; int n; long file_len = 0; int fd; int k = 1000; int i = 0; int ch; while( (ch = getopt(argc, argv, "wm")) != -1 ) { switch(ch) { case 'm' : wave_mp3 = 0; i++; break; case 'w' : wave_mp3 = 1; i++; break; } i++; } filename = argv[i]; printf("filename = %s\n", filename); printf("wave_mp3 = %d\n", wave_mp3); //return 0; void* pcm_buffer; pcm_buffer = malloc(PCM_BUF_LEN); if(pcm_buffer == NULL) { printf("malloc buffer fails\n"); exit(0); } memset(pcm_buffer, 0, PCM_BUF_LEN); printf("hello, this is a recorder of wave and mp3\n"); fd = open(filename, O_CREAT | O_RDWR); if(fd < 0) { printf(" open wave file fails\n"); exit(1); } if(audio_open() == AUDIO_FAILURE) { printf("open fail\n"); goto out; } if(audio_config(1,16,8000,15) == AUDIO_FAILURE){ printf("config fail\n"); goto out; } audio_set_volume(100); signal(SIGUSR1,sighandler); if( wave_mp3 == 0 ) { Mp3_Initial(); if(audio_start() == AUDIO_FAILURE){ printf("start fail\n"); goto out; } while(end == 0 ) { buf=audio_get_frame(); if(buf != NULL) { n = Mp3_Encode(buf->data,encOut); audio_put_frame(buf); write(fd, encOut, n); } // k--; } printf("Recorder mp3 file successed!\n"); } else if( wave_mp3 == 1) { while(end == 0) // && k >= 0) { n = audio_wave(pcm_buffer); if(n > 0) { write(fd, pcm_buffer, n); file_len += n; } // k--; } lseek(fd, 0, SEEK_SET); file_len -= 44; WriteWaveHeader(fd, file_len, 8000, 1, 16); printf("Recorder wave file success!\n"); } out: audio_end(wave_mp3); close(fd); exit(0); }