📄 record.c
字号:
#include <sys/time.h>#include <sys/types.h>#include <sys/stat.h>#include <stdio.h>#include <stdlib.h>#include <strings.h>#include <sys/ioctl.h>#include <unistd.h>#include <time.h>#include <fcntl.h>#include <errno.h>#include "ixjuser.h"void closeall(void);int ixj1;int recfile;int main(int argc, char *argv[]){ char pname1[80], pname2[80], buff1[480], buff2[480]; unsigned long cnt, write1; int size, codec, len; struct timeval tv1, tv2; time_t t1, t2; if(argc<4) { printf("Use: %s <ixj dev number> <filename> <codec number>\n",argv[0]); printf(" example: %s 0 audio-file 3\n",argv[0]); exit(0); } sprintf(pname1, "/dev/ixj%s", argv[1]); sprintf(pname2, "%s", argv[2]); printf("Reading from %s, Writing to %s\n", pname1, pname2); ixj1 = open(pname1, O_RDONLY); recfile = open(pname2, O_WRONLY|O_CREAT|O_TRUNC, 0666); if(recfile<0) { printf("error opening file (%s)\n",strerror(errno)); exit(-1); } else printf("file handle %d\n", recfile); atexit(closeall); if(!ioctl(ixj1, IXJCTL_RING)) { exit(0); } codec = atoi(argv[3]); switch(codec) { case G723_63: len = 24; break; case G723_53: len = 20; break; case TS85: len = 32; break; case TS48: len = 18; break; case TS41: len = 16; break; case G728: len = 96; break; case G729: len = 36; break; case ULAW: len = 240; break; case ALAW: len = 240; break; case LINEAR16: len = 480; break; case LINEAR8: len = 240; break; case WSS: len = 240; break; } cnt = write1 = 0; ioctl(ixj1, IXJCTL_REC_CODEC, codec); ioctl(ixj1, IXJCTL_REC_START); t1 = time(NULL); while(ioctl(ixj1, IXJCTL_HOOKSTATE)) { size = read(ixj1, buff1, len); if(size > 0) { write(recfile, buff1, size); write1++; } t2 = time(NULL); printf("Seconds %ld\r", t2 - t1); fflush(stdout); if(t2 - t1 == 10) break; }}void closeall(void){ ioctl(ixj1, IXJCTL_REC_STOP); ioctl(ixj1, IXJCTL_PLAY_STOP); ioctl(ixj1, IXJCTL_AEC_STOP); close(ixj1); close(recfile);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -