天嵌 ARM开发社区

 找回密码
 注册
查看: 5050|回复: 18

[分享]TQ2440播放测试程序源码+程序

[复制链接]
effendi 发表于 2010-9-10 23:05:39 | 显示全部楼层 |阅读模式
直接上代码吧!

  1. #include <sys/ioctl.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>
  5. #include <fcntl.h>
  6. #include <sys/soundcard.h>


  7. #define BUF_SIZE 4096
  8. #define DEVICE_NAME "/dev/dsp"

  9. int audio_fd; //声卡
  10. FILE *file_fd; //文件
  11. int file_len; //文件长度
  12. unsigned char audio_buffer[BUF_SIZE];

  13. unsigned char *file_name_creat;
  14. unsigned int audio_rate;

  15. void delay(long x)
  16. {
  17. unsigned long i;
  18. for(i=0; i<x; i++);
  19. }

  20. int main(int argc, char *argv[])
  21. {

  22. if(argc != 3)
  23.         {
  24.                 printf("RunFormat: \nAudPlay FILE_NAME SAMPLE_RATE\nExample:AudPlay AudRec.wav 48000")        ;
  25.                 return -1;
  26.         }
  27.        
  28.        
  29. file_name_creat = argv[1];
  30. sscanf(argv[2],"%d", &audio_rate);

  31. ///*设置采样速率*/
  32. int speed = audio_rate;
  33. int i=0;

  34. /*打开音频设备,准备放音*/
  35. if ((audio_fd = open(DEVICE_NAME, O_WRONLY)) == -1)
  36. {
  37. printf("open error\n");
  38. return -1;
  39. }

  40. /*设置通道数*/
  41. int channels = 2; /* 1=mono, 2=stereo */

  42. if (ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &channels) == -1)
  43. {
  44. /* Fatal error */
  45. printf("SNDCTL_DSP_CHANNELS error");
  46. return -1;
  47. }

  48. if (channels != 2)
  49. {
  50. /* 本设备不支持立体声模式 ... */
  51. printf("sep4020 oss driver does ");
  52. }

  53. /*设置采样速率*/
  54. speed = audio_rate;

  55. if (ioctl(audio_fd, SNDCTL_DSP_SPEED, &speed)==-1)
  56. {
  57. /* Fatal error */
  58. printf("SNDCTL_DSP_SPEED error\n");
  59. return -1;
  60. }
  61. printf("the wav speed is %d\n",speed);



  62. /*打开并计算文件长度*/
  63. file_fd = fopen(file_name_creat, "r");
  64. fseek(file_fd,0,SEEK_END);     //定位到文件末  
  65. file_len = ftell(file_fd);     //文件长度

  66. int loops = file_len/4096;

  67. /*重新定位到文件头*/
  68. fclose(file_fd);
  69. file_fd = fopen(file_name_creat, "r");
  70. /*播放wav文件*/
  71. for(i=0;i<loops;i++)
  72. {
  73. fread(audio_buffer, 4096, 1, file_fd);
  74. write(audio_fd,audio_buffer,4096);
  75. }
  76. /*关闭设备和文件*/
  77. fclose(file_fd);
  78. close(audio_fd);

  79. return 0;
  80. }

复制代码
已在TQ2440+2.6.30.4测试成功。

开始以为是AFMT_S16_LE格式的,一直发现速率不对,后来才发现不是。

uda1341是8bit采样。   支持32000、 44100、 48000等采样率。

运行命令:
./AudPlay 文件名 采样率

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
天嵌_support1 发表于 2010-9-11 11:12:56 | 显示全部楼层
1# effendi


顶一个
 楼主| effendi 发表于 2010-9-14 12:01:30 | 显示全部楼层
补充一点,是8bit采样,另外还带一符号,是几位目前仍不清楚。
我爱嵌入式 发表于 2010-10-18 12:40:54 | 显示全部楼层
支持,好东西
鬼鬼一哈 发表于 2010-10-18 13:09:13 | 显示全部楼层
不错,学习了。。
guoyin 发表于 2010-10-25 16:52:26 | 显示全部楼层
不错,学习了。。
GH.CHEN 发表于 2010-10-26 22:53:06 | 显示全部楼层
好。。。。。
刘亚龙 发表于 2010-10-30 16:04:46 | 显示全部楼层
好额。。。。
kiss351513637 发表于 2010-10-30 16:24:39 | 显示全部楼层
kankanxian
tom7232 发表于 2011-1-8 00:30:16 | 显示全部楼层
不錯,下載下來學習一下
sqfeng 发表于 2011-1-28 13:23:34 | 显示全部楼层
谢谢楼主,先顶一下
lxs_vip 发表于 2011-3-15 14:20:31 | 显示全部楼层
感谢楼主分享谢啦!
hdwmh2011 发表于 2011-3-19 22:17:47 | 显示全部楼层
顶。。。。。。。。。。。。
zk_gx 发表于 2011-3-23 11:04:33 | 显示全部楼层
busybox cat 默认采样率是多少?怎么查看?另外如果想修改该怎么做?
zhengxi 发表于 2011-4-6 22:04:46 | 显示全部楼层
源码发我们看看,你这人源码不发,发个镜像文件忽悠人
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-10-5 22:23 , Processed in 1.017617 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表