易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux环境下用c语言写的播放wav文件的小程序

http://blog.csdn.net/noah1987/archive/2008/10/21/3118934.aspx
本程序可以读取.wav文件,然后进行播放。
使用前,请确认您是否安装音频驱动。
确认方法:cat /etc/sndstat,如果显示无此设备,则没有安装驱动。
安装驱动很简单,到oss.com上下载音频驱动,然后按照网上的教程进行就可以了。
源代码如下:
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <stdlib.h>
#include <stdio.h>
#include <linux/soundcard.h>
/* 下面的三个参数是跟具体文件相关的,文件什么样,就要设置成什么样 */
#define RATE 11025  
#define SIZE 16    
#define CHANNELS 1  // 1表示单声道,2为立体声
/* ................ */
unsigned 
char
 buf[RATE*SIZE/8]; //buf里面正好放一秒钟的音频,下面的计时还要用
int
 main()
{
    int
 fd;
    int
 wavfd; //wav文件的描述符
    int
 arg;        
/* ..ioctl..... */
    int
 status;   
/* ........ */
                
/* ...... */
    fd = open(
"/dev/dsp"
, O_RDWR
);      
    if
 (fd < 0) {
        printf(
"open of /dev/dsp failed"
);
        exit(1);
}
    wavfd = open(
"12193767609.wav"
,O_RDONLY);
    if
 (wavfd < 0) {
        printf(
"open of wav failed"
);
       


相关文档:

Linux设备模型之input子系统详解

一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......

c语言的自动类型转换

自动转换遵循以下规则:
1)        若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
2)        转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。
   &n ......

C语言位运算

前面介绍的各种运算都是以字节作为最基本位进行的。 但在很多系统程序中常要求在位(bit)一级进行运算或处理。C语言提供了位运算的功能,这使得C语言也能像汇编语言一样用来编写系统程序。
12.1 位运算符C语言提供了六种位运算符:
    &          按 ......

深入理解extern "C"

一、从C与C++编译连接方式深入理解extern "C"
<1>.C和C++对函数的处理方式是不同的.被extern "C"修饰的变量和函数是按照C语言方式编译和连接的.extern "C"用于实现C++与C及其它语言的混合编程。
<2>.未加extern “C”声明时的编译方式
首先看看C++中对类似C的函数是怎样编译的。
作为一种面向 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号