毕业论文
计算机论文
经济论文
生物论文
数学论文
物理论文
机械论文
新闻传播论文
音乐舞蹈论文
法学论文
文学论文
材料科学
英语论文
日语论文
化学论文
自动化
管理论文
艺术论文
会计论文
土木工程
电子通信
食品科学
教学论文
医学论文
体育论文
论文下载
研究现状
任务书
开题报告
外文文献翻译
文献综述
范文
Linux环境下CD播放器的设计与实现(4)
2.4 音频CD
CD是目前正在被广泛使用的一种高效信息存储系统,它从最初起步到逐步成熟大约经历了十年左右的时间,期间涌现出来的行业标准和技术规范非常多,而影响最大的当数由Philips和Sony公司共同推出的CD音频(CD-Audio)和CD数字音频(CD-DA)规范,这就是人们经常提到的红皮书,它被包含在IEC 908标准中。
音频CD有足够的能力来提供高保真的声音,它的采样频率为44.1kHz,并且每个采样点都使用16 bit的量化级,这样CD播放器在输出音频数据时的速率将高达1.4 Mbps[7]。除了最重要的音频数据之外,为了进行必要的纠错、同步或者调制,还需要在CD上存储其它一些额外数据,因此存储在光盘上的数据通常是原来的3倍左右,也就是说信道比特率(从CD中读出数据的速率)可能会达到4.3128 Mbps。
精密的光学设计和高效的数据编码,是CD具有很高存储密度的原因所在,而要想在Linux应用程序中对音频CD进行控制,关键是要理解音频数据在光盘上的编码方法和存储形式。音频CD采用EFM调制来对要存储的数据进行编码,虽然在调制过程中会产生需要额外存储的信道比特,但总的效果却可以使音频CD的容量提高25%左右。帧(frame)是在音频CD上可以读取的最小单位,它详细规定了音频数据、校验位、同步位、子码等是如何在光盘上存储的,如图1所示:
图1 CD的帧格式
音频CD上的每帧数据中都包含一个8 bit的子码,其中包含的信息有音轨的起止位置、音轨数目、光盘时钟、索引位置等[8],如果能够在程序中充分地利用它们,无疑将会更好地控制音频CD的播放。
2.5 设备控制之ioctl系统调用
Linux内核将所有的硬件设备都表示成设备文件,并且提供与操作磁盘文件类似的方法来操作硬件设备[9],应用程序如果想对CD驱动器进行控制,最直接的办法是用open()、read()、close()等系统调用来操作/dev/cdrom这一设备文件。例如,下面的命令可以读取CD上的原始数据流,并将其在终端上显示出来:
cat /dev/cdrom;
在Linux上进行CD编程的原理其实非常简单,关键是要借助系统调用ioctl()[10-14]来对设备文件/dev/cdrom进行各种控制。对控制CD的ioctl命令的一般参数如下表1所示:
表1 控制CD的ioctl命令
名称 参数 作用
CDROMEJECT 无 退出驱动器中的光盘
CDROMEJECT_SW 0或1 控制是否自动退出光盘
CDROMSTART 无 启动CD驱动器的马达
CDROMPLAYTRKIND Struct cdrom_ti 播放指定的音轨
CDROMPLAYMSF Struct cdrom_msf 播放指定的MSF
CDROMSTOP 无 停止播放
CDROMPAUSE 无 暂停播放
CDROMRESUME 无 继续播放
CDROMVOLCTRL Struct cdrom_volctrl 设置音量
CDROMVOLREAD Struct cdrom_volctrl 获取当前音量
CDROMREADTOCHDR Struct cdrom_tochdr 读取TOC头部
CDROMREADTOCENTRY Struct cdrom_tocentry 读取TOC条目
CDROMSUBCHNL Struct cdrom_subchnl 读取子通道数据
CDROMREADMODAL1 Struct cdrom_read 读取模式1数据
CDROMREADMODAL2 Struct cdrom_read 读取模式2数据
CDROMREADAUDIO Struct cdrom_read_audio 读取数字音频数据
共7页:
上一页
1
2
3
4
5
6
7
下一页
上一篇:
智能交互式指法练习系统的设计和开发
下一篇:
智能手机电影订票系统网站设计
电子政务环境下公务员的...
架设Linux(2.6内核)的服务器集群【745字】
改善嵌入式Linux实时性能的方法研究【2067字】
搭建Linux桌面环境的影音平台【1261字】
Linux内核的键盘模拟实现【1538字】
使用http协议和winsockapi实现...
于PCI9656设备驱动程序的...
医院财务风险因素分析及管理措施【2367字】
10万元能开儿童乐园吗,我...
国内外图像分割技术研究现状
AT89C52单片机的超声波测距...
C#学校科研管理系统的设计
承德市事业单位档案管理...
志愿者活动的调查问卷表
公寓空调设计任务书
中国学术生态细节考察《...
神经外科重症监护病房患...