UDA1341声卡驱动放音测试程序
来源:互联网 发布:华为淘宝无法联网 编辑:程序博客网 时间:2024/05/16 16:19
1)音频设备只能以O_WRONLY或者O_RDONLY方式打开,不能使用O_RDWR方式打开,因为不支持同时录音和放音。
2)使用方法举例"./oss /tmp/test.wav 22050" ,会自动录音2MB,再将其播放出来。
3)支持调整音频采样率:支持44100、22050、11025和8000四种采样率。
以下为测试程序源码
==================================================================================
//注意!音频设备只能以O_WRONLY或者O_RDONLY方式打开,不能使用O_RDWR方式打开,因为不支持同时录音和放音。
#include <sys/ioctl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/soundcard.h>
2)使用方法举例"./oss /tmp/test.wav 22050" ,会自动录音2MB,再将其播放出来。
3)支持调整音频采样率:支持44100、22050、11025和8000四种采样率。
以下为测试程序源码
==================================================================================
//注意!音频设备只能以O_WRONLY或者O_RDONLY方式打开,不能使用O_RDWR方式打开,因为不支持同时录音和放音。
#include <sys/ioctl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/soundcard.h>
#define BUF_SIZE 4096
#define DEVICE_NAME "/dev/dsp"
int audio_fd; //声卡
FILE *file_fd; //文件
int file_len; //文件长度
unsigned char audio_buffer[BUF_SIZE];
FILE *file_fd; //文件
int file_len; //文件长度
unsigned char audio_buffer[BUF_SIZE];
unsigned char *file_name_creat;
unsigned int audio_rate;
unsigned int audio_rate;
int main(int argc, char *argv[])
{
file_name_creat = argv[1];
sscanf(argv[2],"%d", &audio_rate);
/*打开音频设备,准备音*/
if ((audio_fd = open(DEVICE_NAME, O_WRONLY)) == -1)
{
printf("open error\n");
return -1;
}
/***1.设置采样格式*/
int format = AFMT_S16_LE;
if (ioctl(audio_fd, SNDCTL_DSP_SETFMT, &format) == -1)
{
/* fatal error */
printf("SNDCTL_DSP_SETFMT error\n");
return -1;
}
/***2.设置通道数*/
int channels = 2; /* 1=mono, 2=stereo */
if (ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &channels) == -1)
{
/* Fatal error */
printf("SNDCTL_DSP_CHANNELS error");
return -1;
}
/***3.设置采样速率*/
int speed = audio_rate;
if (ioctl(audio_fd, SNDCTL_DSP_SPEED, &speed)==-1)
{
/* Fatal error */
printf("SNDCTL_DSP_SPEED error\n");
return -1;
}
printf("the wav speed is %d\n",speed);
/*打开并计算文件长度*/
file_fd = fopen(file_name_creat, "r");
fseek(file_fd,0,SEEK_END); //定位到文件末
file_len = ftell(file_fd); //文件长度
int loops = file_len/BUF_SIZE;
/*重新定位到文件头*/
fclose(file_fd);
file_fd = fopen(file_name_creat, "r");
/*播放wav文件*/
int i;
for(i=0;i<loops;i++)
{
fread(audio_buffer, BUF_SIZE, 1, file_fd);
write(audio_fd,audio_buffer,BUF_SIZE);
}
/*关闭设备和文件*/
fclose(file_fd);
close(audio_fd);
return 0;
}
原文链接http://hi.baidu.com/falimon_7/blog/item/dc399621a6f717fed6cae211.html
int speed = audio_rate;
if (ioctl(audio_fd, SNDCTL_DSP_SPEED, &speed)==-1)
{
/* Fatal error */
printf("SNDCTL_DSP_SPEED error\n");
return -1;
}
printf("the wav speed is %d\n",speed);
/*打开并计算文件长度*/
file_fd = fopen(file_name_creat, "r");
fseek(file_fd,0,SEEK_END); //定位到文件末
file_len = ftell(file_fd); //文件长度
int loops = file_len/BUF_SIZE;
/*重新定位到文件头*/
fclose(file_fd);
file_fd = fopen(file_name_creat, "r");
/*播放wav文件*/
int i;
for(i=0;i<loops;i++)
{
fread(audio_buffer, BUF_SIZE, 1, file_fd);
write(audio_fd,audio_buffer,BUF_SIZE);
}
/*关闭设备和文件*/
fclose(file_fd);
close(audio_fd);
return 0;
}
- UDA1341声卡驱动放音测试程序
- UDA1341声卡驱动放音测试程序
- UDA1341声卡驱动
- UDA1341声卡驱动修改
- UDA1341声卡驱动 madplay 播放
- s3c2440 uda1341声卡驱动分析
- 支持录音的声卡驱动程序及录音放音测试程序
- Android下音频的测试程序tinyalsa(录音,放音,查看声卡信息)
- s3c2440 UDA1341声卡驱动与madplay播放器移植,
- fl2440 uda1341声卡驱动移植及madplay播放器移植
- s3c2440 uda1341声卡驱动与madplay播放器移植
- s3c2440 uda1341声卡驱动与madplay播放器移植
- s3c2440 uda1341声卡驱动与madplay播放器移植
- s3c2440之uda1341声卡驱动以及madplay播放器移植
- UDA1341声卡移植
- S3C2440 UDA1341声卡移植
- UDA1341声卡传输基本原理
- UDA1341声卡传输基本原理
- poj 3343 Against Mammoths
- Java中的注解以及应用 @Deprecated @SupressWarning @Override
- 硬件相关信息介绍(一)
- jquery的checked以及disabled : http://www.cnblogs.com/0banana0/archive/2011/11/16/2251855.html
- 编程珠玑 求解最大字串和
- UDA1341声卡驱动放音测试程序
- 线程的调度-让步
- 递归函数最终会结束
- Team Foundation Service 更新 8/27
- BOOST 字符串查找示例
- Expression Tree 上手指南 (三)
- exe注册成windows服务
- InternetOpen\InternetOpenUrl\InternetReadFile 等相关Win32 网络API 使用详细说明
- javascript大括号赋值给变量