打造Linux下的CD播放器
本文详细介绍了音频CD的基本知识,以及如何在Linux下编写实用的CD播放软件,内容涵盖音轨处理、播放控制和音量调节等诸多方面。
在目前的多媒体应用中,CD所承担的重要作用早已勿庸置疑,本文详细介绍了音频CD的基本知识,以及如何在Linux下编写实用的CD播放软件,内容涵盖音轨处理、播放控制和音量调节等诸多方面。
音频CD
CD
是目前正在被广泛使用的一种高效信息存储系统,它从最初起步到逐步成熟大约经历了十年左右的时间,期间涌现出来的行业标准和技术规范非常多,而影响最大的
当数由Philips和Sony公司共同推出的CD音频(CD-Audio)和CD数字音频(CD-DA)规范,这就是人们经常提到的红皮书,它被包含在
IEC 908标准中。
音频CD有足够的能力来提供高保真的声音,它的采样频率为44.1kHz,并且每个采样点都使用16
bit的量化级,这样CD播放器在输出音频数据时的速率将高达1.4
Mbps。除了最重要的音频数据之外,为了进行必要的纠错、同步或者调制,还需要在CD上存储其它一些额外数据,因此存储在光盘上的数据通常是原来的3倍
左右,也就是说信道比特率(从CD中读出数据的速率)可能会达到4.3128 Mbps。
精密的光学设计和高效的数据编码,
是CD具有很高存储密度的原因所在,而要想在Linux应用程序中对音频CD进行控制,关键是要理解音频数据在光盘上的编码方法和存储形式。音频CD采用
EFM调制来对要存储的数据进行编码,虽然在调制过程中会产生需要额外存储的信道比特,但总的效果却可以使音频CD的容量提高25%左右。帧
(frame)是在音频CD上可以读取的最小单位,它详细规定了音频数据、校验位、同步位、子码等是如何在光盘上存储的,如图1所示:
图1 CD的帧格式
音
频CD上的每帧数据中都包含一个8
bit的子码,其中包含的信息有音轨的起止位置、音轨数目、光盘时钟、索引位置等,如果能够在程序中充分地利用它们,无疑将会更好地控制音频CD的播放。
子码偶尔也会被用来存储一些与CD相关的文本数据,但与DVD这类新格式有所不同,CD在最初设计时并没有考虑到要用来保存大量的文本数据,因此红皮书只
允许将专辑名称、歌曲名称、演唱者、作曲者、制片人等一些与唱片本身相关的文本数据附加到光盘上,不过这些对于普通的CD播放器来讲已经完全够用了。
回页首
设备控制
Linux
内核将所有的硬件设备都表示成设备文件,并且提供与操作磁盘文件类似的方法来操作硬件设备,应用程序如果想对CD驱动器进行控�
相关文档:
一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......
Linux内核的ARM内存管理是一个难啃的骨头,之所以要开始啃它,是因为我所能见到的文章,无不是为X86体系所写,与其等待关于ARM的文章出炉,不如自己动手,看能否丰衣足食。
这个骨头是如此的难啃,以至于我只是将这块骨头捡起来翻看了一下,就发现无从下嘴,而必须要首先研究透彻DDI0304和DDI0406这两篇文档中关于MMU的内� ......
名称:cp
使用权限:所有使用者
使用方式:
cp [options] source dest
cp [options] source... directory
说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。
把计
-a 尽可能将档案状态、权限等资料都照原状予以复制。
-r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。
-f 若目的� ......
本文出自:http://www.china-pub.com 作者:李培源 (2001-08-10 12:00:00)
Linux是一个可靠性非常高的操作系统,但是所有用过Linux的朋友都会感觉到,Linux和Windows这样的"傻瓜"操作系统(这里丝毫没有贬低Windows的意思,相反这应该是Windows的优点)相比,后者无疑在易操作性上更胜一筹。但是为什么又有那么多的爱好者� ......
源,在ubuntu下,它就相当于软件库,需要什么软件,只要记得正确的软件名并且确定在ubuntu下肯定有的软件,就可以使用命令来安装软件的(当然也可以用新立得来安装)命令是:sudo apt -get install 软件名 ,比如说QQ,你不能输入成 sudo apt-get install qq ,这个是不对了,因为QQ没有 linux版的,只能用代替来实现,比如� ......