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

📄 sndtools.c

📁 实现在s3c2440平台上进行音频采集与回放
💻 C
字号:
#include <stdio.h>#include <fcntl.h>#include <unistd.h>#include <sys/ioctl.h>#include <string.h>#define VAR_STATICint devfd = 0;#include "sndtools.h"/* * Open Sound device * Return 1 if success, else return 0. */int OpenSnd(/* add by new version */int nWhich){if(devfd > 0) close(devfd); devfd = open("/dev/dsp", O_RDWR); if(devfd < 0) return 0; return 1;}/** Close Sound device* return 1 if success, else return 0.*/int CloseSnd(/* add by new version */int nWhich){close(devfd); devfd = 0; return 1;}/** Set Record an Playback format* return 1 if success, else return 0.* bits -- FMT8BITS(8bits), FMT16BITS(16bits)* hz -- FMT8K(8000HZ), FMT16K(16000HZ), FMT22K(22000HZ), FMT44K(44000HZ)*/int SetFormat(int bits, int hz){int tmp = bits;if( -1 == ioctl(devfd, SNDCTL_DSP_SETFMT, &tmp)){#ifdef DEBUG_WARNprintf("Set fmt to s16_little faile:%d\\n", nWhich);#endifreturn 0;}tmp = hz;if( -1 == ioctl(devfd, SNDCTL_DSP_SPEED, &tmp)){#ifdef DEBUG_WARNprintf("Set speed to %d:%d\\n", hz, nWhich);#endifreturn 0;}return 1;}/** Set Sound Card Channel* return 1 if success, else return 0.* chn -- MONO, STERO*/int SetChannel(int chn){int tmp = chn;if(-1 == ioctl(devfd, SNDCTL_DSP_CHANNELS, &tmp)){#ifdef DEBUG_WARNprintf("Set Audio Channel faile:%d\\n", nWhich);#endifreturn 0;}return 1;}/** Record* return numbers of byte for read.*/int Record(char *buf, int size){return read(devfd, buf, size);}/** Playback* return numbers of byte for write.*/int Play(char *buf, int size){return write(devfd, buf, size);}

⌨️ 快捷键说明

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