首页> 中国专利> 反向播放CD信号时缓存CD数据的方法及播放器

反向播放CD信号时缓存CD数据的方法及播放器

摘要

本发明涉及音频播放领域,公开了一种反向播放CD信号时缓存CD数据的方法及播放器。方法包括:S1:当反向播放到第i子缓存区时,确定第i子缓存区内存储的首扇区地址第X扇区,确定第(i-1)子缓存区中存储的首扇区地址第Y扇区;S2:如果(X-Y)=W,则返回S1,否则执行;S3:将光头寻迹定位到光碟的第(X-W)扇区;S4:将读取的数据写入第(i-1)子缓存区,直到光头读到光碟的第(X-a)扇区,执行S5,否则返回本;S5:将光头读取的数据逐个与第i子缓存区中的前n个字节的数据比较,如果不同,执行S6;否则返回S1;S6:将读取的数据写入第(i-1)子缓存区,返回S5。应用该技术在反向播放时,可以保证反向播放的音频的准确连接。

著录项

  • 公开/公告号CN102237113A

    专利类型发明专利

  • 公开/公告日2011-11-09

    原文格式PDF

  • 申请/专利权人 佛山市智邦电子科技有限公司;

    申请/专利号CN201010161592.7

  • 发明设计人 甘国锋;

    申请日2010-04-26

  • 分类号G11B20/10;G11B31/00;

  • 代理机构

  • 代理人

  • 地址 528000 广东省佛山市禅城区江湾三路28号广东省(佛山)软件产业园A区自编7号楼第1层

  • 入库时间 2023-12-18 03:38:52

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-12-10

    授权

    授权

  • 2011-12-21

    实质审查的生效 IPC(主分类):G11B20/10 申请日:20100426

    实质审查的生效

  • 2011-11-09

    公开

    公开

说明书

技术领域

本发明涉及音频播放领域,尤其涉及一种正向播放CD信号时缓存CD数 据的方法、正向播放CD信号时读缓存的方法以及CD播放器。

背景技术

CD音乐由于其优质的音乐效果广受音乐发烧友的欢迎。目前播放CD光 碟的方式主要有:采用台式电脑的CD-ROM播放的方式,以及通过专门的 CD播放器播放的两种方式。

一般地在台式电脑、以及较大的CD播放器中,由于台式电脑、以及较大 的CD播放器本身的内存都会有上百兆,故在台式电脑中播放CD光碟时,只 要先使光头连续读取CD光碟上的信号,在读取是采用直接内存存储(Direct Memory Access,简称DMA)的方式把整首歌的数据连续缓存到内存中,然 后从内存中顺序读取内存中的音频数据,将读取的数据输出至声卡即可实现 音频播放。

然而随着技术的发展,便携式音乐播放器由于容易携带的优点越来越受 人们的欢迎,成为新一代的音乐播放器。

图1为现有技术中的便携式播放器的电气组成连接示意图。参见图1所 示,现有的便携式播放器主要由光头101、伺服芯片102、主控制芯片103、 缓存104、声卡105组成。

光头101在伺服芯片102的控制下读取光碟的数据,将数据通过伺服芯 片102与系统控制芯片之间的数字音频通道传递至系统控制芯片,系统控制 芯片通过控制通道与伺服芯片102进行信息交互,控制伺服芯片102,系统控 制芯片与缓存104连接,控制缓存104的写和读。

然而在音乐播放其中,由于其存储器都比较小,一般都只有几兆字节, 而一首几分钟的CD歌曲通常都会有几十兆字节。故在便携式音乐播放器中无 法采用直接将整首歌曲读取写到内存,然后读取内存中的歌曲实现歌曲播放 的方式。比如:正向播放时,按照先进先出的顺序正向读取缓存中的数据, 输出读取数据播放音频即可;当反向播放时,按照先进后出的顺序反向读取 缓存中的数据,输出数据实现反向播放即可。

另外,由于便携式音乐播放器一般提供播放速度可调功能,用户可以通 过调节音频播放的播放速度,一般调整的范围为正常播放速度的1%到4倍。 由于播放速度受使用者控制,因此读取缓存104中的音频数据的速度会与将 光头101读取的音频数据缓存104进内存的速度不同。因此,在现有技术中, 便携式音乐播放器缓存104音频数据一般采用间歇性方式进行:写数据进缓 存104直到缓存104快写满时暂停写缓存104,等到缓存104的数据被播放一 部分到快被播放完毕后,接着在缓存104中接着上次写缓存104的位置继续 将音频数据写入缓存104。

而在现有的便携式音乐播放器中为了使得CD光碟能够及时响应系统的 控制,CD光碟在便携式音乐播放器工作的过程中一直处于旋转状态,此时光 头101上的信号一直处于变化状态,由此引起的光碟伺服芯片102出来的数 字音频数据一直在变化。

而由于服芯片是通过位时钟、位数据、通道时钟三个信号以DMA、方 式与播放控制系统交换数字音频数据的。而播放系统控制伺服芯片102进行 寻迹动作主要如下:由主控制系统从伺服控制通道获得当前轨道的位置信息, 与我们需要到达的目标位置做比较,将光头101向前或向后跳,逐步逼近目 标位置,通过伺服芯片102的控制通道用扇区寻迹方法实现的。由于数字音 频数据中是没有定位信息的,所以系统控制部分用扇区寻迹方法很难对数字 音频数据精确定位。

因此基于以上原因,当在写缓冲暂停后,需要继续接着在缓存104中继 续写入缓存104时,应用现有技术的扇区寻迹技术,很难使光头101CD光碟 精确回到最后读数的位置继续读数,存在继续写的缓存104与暂停时最后写 的缓存104不能准确连续的问题:即在写缓冲暂停后,光头101在继续读取 光碟数据时在光碟上的位置与暂停前一刻在光碟上的位置不能准确连续,导 致写入缓存104的音频数据会在连接点处与光碟上的实际数据不相符,导致 歌曲播放出现声音跳变,连接点滞后,播放过程出现声音重复,或左右通道颠 倒的问题,严重影响使用者的使用感受。

另外,对于具有搓碟功能的播放器,当播放系统频繁进行正向播放和反 向播放的操作时,正向和反向写缓存104的频繁度也加大,数据的连接点变 多,出现跳音和重复或左右通道颠倒的机会也更多,上述数据连接部准确的 问题对音乐的破坏将更突出。

特别在需要反向播放(比如快退或者反向搓碟的情况),由于在播放时需 要反反向读取(高地址往低地址读)的方法读取缓存中的数据,故需要缓存 更多的数据,使得现有技术中的缓存大小受限、数据准确连续输出的矛盾更 加明显。

发明内容

本发明第一目的在于提供了一种反向播放时CD数据写缓存方法,应用该 技术在反向播放时,可以保证反向播放的音频的准确连接,有利于保证播放 音质。

本发明实施例提供的一种反向播放时CD数据写缓存方法,包括:

步骤S 1:当反向播放到第i子缓存区时,确定所述第i子缓存区内存储的 首扇区地址,记为第X扇区,确定第(i-1)子缓存区中存储的首扇区地址, 记为第Y扇区,其中所述首扇区地址为在所述各子缓存区内当前存储的音频 数据对应在所述光碟上的扇区起始位置;

步骤S2:如果(X-Y)=W,则返回步骤S1,否则执行步骤S3,其中, 所述第(i-1)子缓存区中存储的音频数据量为所述光碟上W个扇区的音频数 据量;

步骤S3:将光头寻迹定位到所述光碟的第(X-W)扇区,

步骤S4:按照所述光头的读取顺序,将读取的数据写入所述第(i-1)子 缓存区,直到所述光头读到所述光碟的第(X-a)扇区,执行步骤S5,否则返 回本步骤,其中a为预定的小于所述W的自然数;

步骤S5:将所述光头读取的数据逐个与所述第i子缓存区中的前n个字 节的数据比较,如果不同,执行步骤S6;否则返回步骤S1;

步骤S6:按照所述光头的读取顺序,将读取的数据写入所述第(i-1)子 缓存区,返回步骤S5。

本发明实施例提供的一种CD播放器,包括:

光头,用于读取CD光碟的数据;

伺服芯片,用于在处理模块的控制下控制所述光头,包括将将光头寻迹 定位到所述光碟的第(X-W)扇区,并且接收所述光头从所述CD光碟读取的 数据;

搓碟检测模块,与所述处理器连接,用于检测反向搓碟信号,将所述检 测结果输入所述处理器;

所述处理器包括反向写缓存确定模块、控制模块、比较模块,

反向写缓存确定模块,用于当反向播放到第i子缓存区时,确定所述第i 子缓存区内存储的首扇区地址,记为第X扇区,确定第(i-1)子缓存区中存 储的首扇区地址,记为第Y扇区,其中所述首扇区地址为在所述各子缓存区 内当前存储的音频数据对应在所述光碟上的扇区起始位置,只要(X-Y)不等 于所述W,则判定当前需要在所述第(i-1)子缓存重写缓存,所述第(i-1) 子缓存区中存储的音频数据量为所述光碟上W个扇区的音频数据量;

所述控制模块与所述反向写缓存确定模块、搓碟检测模块、伺服芯片、 缓存写模块、缓存分别连接,

所述控制模块用于:当所述反向写缓存确定模块判定需要在所述第(i-1) 子缓存重写缓存时,控制所述伺服芯片,使所述光头寻迹定位到所述光碟的 第(X-W)扇区,

当所述比较模块判定所述光头当前读取的数据与所述第i子缓存区中的 前n个字节的数据不相同时,控制所述缓存写模块按照所述光头的读取顺序, 继续将读取的数据写入所述第(i-1)子缓存区,直到所述比较模块判定所述 光头当前读取的数据与所述第i子缓存区中的前n个字节的数据相同为止;

所述比较模块,与所述缓存写模块、控制模块连接,用于在所述光头读 到所述光碟的第(X-a)扇区后,将所述光头读取的数据逐个与所述第i子缓 存区中的前n个字节的数据比较,将所述比较结果传递至所述控制模块;

缓存写模块,与所述控制模块连接,用于在所述控制模块的控制下,在 所述光头寻迹定位到所述光碟的第(X-W)扇区之后,按照所述光头的读取 顺序,将读取的数据写入所述第(i-1)子缓存区;

缓存,由至少两个子缓存区组成,各子缓存区用于存储缓存写模块写入 的音频数据;

缓存读模块,用于读取所述缓存内的数据;

声卡,与所述缓存读模块连接,用于将所述缓存读模块读取的数据转换 成音频信号,输出所述音频信号。

由上可见,应用本发明的技术,由于在反向播放过程中,播放到每个子 缓存区时均判断当前播放的子缓存区的数据与上一子缓存区存放的数据是否 在光碟上连续,只要不连续,均将光头重新寻迹定位到当前播放的子缓存区 的首扇区前的一段位置(前W个扇区),在该上一子缓存区重新写入音频数 据,并且在重新写到一定程度后,将光头读取的数据与播放所在的子缓存区 中的头几位数据对比,只有比较结果为数据完全相同时,认为当前的认为读 到了连接点,停止写缓存操作。保证了缓存中的数据的准确连续性,避免了 反向播放跳音的情况,有利于提高音质,提高用户的使用感受。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部 分,并不构成对本发明的不当限定,在附图中:

图1为现有技术中的一种CD播放系统的结构系统框图的示意图;

图2为本发明实施例1中提供的一种反向播放时CD数据写缓存方法流程 示意图;

图3为本发明实施例2中提供的一种反向播放时CD数据写缓存方法流程 示意图;

图4为本发明实施例3中提供的一种CD播放器的结构示意图。

具体实施方式

下面将结合附图以及具体实施例来详细说明本发明,在此本发明的示意 性实施例以及说明用来解释本发明,但并不作为对本发明的限定。

实施例1:

当播放系统接收到反向播放指令时,确定反向播放的时长,播放系统在 缓存中按反反向的顺序读取缓存中的数据,直到反向播放达到约定的播放时 长,结束反向播放,返回正向播放的播放流程。

本发明人在进行本发明的研究中发现,为了便于缓存的管理,可以将整 个大缓存分解成多个子缓存区,在进行数据存储时,将各个子缓存区作为写 缓存单元进行缓存管理。比如但不限于如下:

一般地,CD光碟正常速度下每秒钟可读取75个扇区,数据的传输率为 (75扇区/秒X2352字节/扇区)=176400字节/秒。

假设我们的系统总的内存为8兆字节,由于系统程序部分需要占用部分 内存,我们只预留可以存放30秒左右的CD音频大小的缓存给数字音频做为 缓存用。

在本实施例中,我们可以但不限于把30秒容量的缓存,分解成30个子缓 存区来管理。设定每个子缓存区的大小为:16+((75+2)X2352)个字节。

对于每个子缓存区定义成如下结构:

[成员1:第一地址指针P1,指向本缓存的下一缓存区首地址;

成员2:第二地址指针P2,指向本缓存的上一缓存区首地址;

成员3:有效数据大小,用于标识当前子缓存区内当前存储的有效音频数 据大小;

成员4:首扇区地址,用于记载本子缓存区内存储的数字音频数据在CD 碟上的首扇区地址。

成员5:音频数据存放区,用于存放音频数据,比如在本实施例中可以 但不限于将该音频数据存储区的大小设定为(75+2)X2352个字节]。

在启动播放系统而使用前,先做以下的初始化:把30个缓存的成员3(当 前缓存有效数据大小)清0;把30个缓存的成员4(当前缓存首扇区地址信 息)清0;同时,把成员1(指向下一个子缓存区首地址)按队列方式赋值:

缓存0的(下一个子缓存区首地址)成员=缓存1的首地址;

缓存1的(下一个子缓存区首地址)成员=缓存2的首地址;

…………

缓存29的(下一个子缓存区首地址)成员=缓存0的首地址。

另外,把成员2(指向上一个子缓存区首地址)也按队列方式赋值:

缓存0的(上一个子缓存区首地址)成员=缓存29的首地址;

缓存1的(上一个子缓存区首地址)成员=缓存0的首地址;

…………

缓存29的(上一个子缓存区首地址)成员=缓存28的首地址。

另外,把缓存读指针、以及缓存写指针都指向缓存0。

经过以上处理,30个子缓存区将形成一个圆形大缓存,它们通过地址指 针首尾相连。

在正向播放过程中写各子缓存区时,设定在各子缓存区中写入的W (在 本实施例中定为75)个扇区的数据。

由于在各子缓存区中存储相对于本子缓存区的上一子缓存区的首地址信 息,故在反向播放时,缓存读指针可以很快地在当前子缓存区的音频数据播 放完毕后,缓存读指针根据本子缓存区中的成员2的信息跳转到上一子缓存 区反向播放该子缓存区中的数据,使得该反向播放更加便捷。

在各子缓存区中存储相对于本子缓存区的下一子缓存区的首地址信息, 故在正向播放时,指针可以很快地在当前子缓存区的音频数据播放完毕后, 缓存读指针根据本子缓存区中的成员1的信息跳转到下一子缓存区正向播放 该子缓存区中的数据,使得该正反向播放更加便捷。

在各子缓存区中存储数据在光碟上的首扇区地址(成员4),故在反向播 放需要写缓存时,根据前后两子缓存区中的首扇区地址信息,简单准确地确 定当前前后两子缓存区中的音频数据是否准确连续。

在各子缓存区中存储相对本子缓存区的有效音频数据大小信息,在正向 播放或者反向播放时,缓存读指针可以根据该有效音频数据大小信息确定当 前是否读取完毕本子缓存区内的音频数据,在读取完毕后确定在上一子缓存 区(反向播放)或者下一子缓存区(正向播放)继续读取音频数据,播放音 频。

图2为本实施例提供的一种反向播放时CD数据写缓存方法流程示意图。 参见图2所示,在反向播放的过程中按照以下的流程写缓存:

步骤201:反向播放到第i子缓存区时,确定第i子缓存区内存储的首扇 区地址,记为第X扇区,确定第(i-1)子缓存区中存储的首扇区地址,记为 第Y扇区。

设当前缓存读指针当前读到第i子缓存区,读取第i子缓存区的数据输出 音频,此时,确定本第i子缓存区内存储的首扇区地址,记为第X扇区。并 且确定当前本第i子缓存区的上一子缓存区(第(i-1)子缓存区)中的首扇区 地址。

其中该首扇区地址为在所述各子缓存区内当前存储的音频数据对应在所 述光碟上的扇区起始位置,比如:

在第i子缓存区中,设存储的有效音频数据为光碟上第X扇区到第X1扇 区的音频数据,则该第i子缓存区中存储的首扇区地址为第X扇区地址。

在第(i-1)子缓存区中,设存储的有效音频数据为光碟上第Y扇区到第 Y1扇区的音频数据,则该第(i-1)子缓存区中存储的首扇区地址为第Y扇区 地址。

步骤202:如果(X-Y)=W,则返回步骤201,否则执行步骤203。

W第(i-1)子缓存区中存储的音频数据量占光碟的扇区数量,比如可以 规定在正向播放写缓存时,在每子缓存区写入光碟的75个扇区的数据。

如果第i子缓存区与第(i-1)子缓存区存储的首扇区地址之差不等于W (W为),则可以判定该第(i-1)子缓存区所存储的音频数据在光碟上与当前 第i子缓存区中的音频数据实际并不连续,故执行步骤203,在第(i-1)子缓 存区重新写入音频数据;否则,判定该第(i-1)子缓存区所存储的音频数据 在光碟上与当前第i子缓存区中的音频数据实际连续,而返回步骤201,等到 反向播放到另一个子缓存时,继续从步骤201开始对音频数据的连续性进行 判定。

步骤203:将光头寻迹定位到光碟的第(X-W)扇区。

当判定该第(i-1)子缓存区所存储的音频数据在光碟上与当前第i子缓存 区中的音频数据实际不连续时,执行本步骤。

将光头寻迹定位到光碟的第(X-W)扇区,其中W为第(i-1)子缓存区 中存储的音频数据量占光碟的扇区数量,比如可以规定在正向播放写缓存时, 在每子缓存区写入光碟的75个扇区的数据。

当W=75时,将光头寻迹定位到光碟的第(X-75)扇区。

步骤204:按照光头的读取顺序,在第(i-1)子缓存区存储当前的首扇区 信息。

在步骤203重新寻迹定位后,将写缓存指针移至第(i-1)子缓存区,在 该子缓存区内写入首扇区信息,即存储数据在光碟上的扇区地址:第(X-75) 扇区。

在本实施例中可以在本第(i-1)子缓存区中的成员4中写入首扇区地址 信息。

步骤205:将光头读取的数据写入第(i-1)子缓存区。

按照光头读取的顺序,在光头读取的数据按照DMA方式写入缓存中的成 员5----数据存放区,执行步骤206。

步骤206:当光头读到光碟的第(X-a)扇区时,执行步骤207;否则返 回步骤205。

其中,a为预定的小于W的自然数,本发明人在进行本发明的研究过程 中发现光头的寻迹定位的误差约为1个扇区左右,故在本实施例中,可以但 不限于将a设定为1、2。

设X=275,(X-W)=200,a=1,在光头重新定位后,读取74个扇区,到 达第274扇区时,执行步骤207,否则返回步骤205:在当前的第(i-1)子缓 存区内继续以DMA方式写入光头读取的音频数据。

步骤207:将光头读取的数据逐个与第i子缓存区中的前n个字节的数据 比较,如果相同,则返回步骤201;否则执行步骤208。

当光头读到光碟的第(X-a)扇区时,执行本步骤:光头读取CD光碟上 的数据,并且在读取后,逐个将读取的数据与缓存中最后写的预定个字节(比 如但不限于4个字节)的数据比较。

一旦比较结果为:光头读取到的数据与最后写入缓存中的预定个字节的 数据相同,则判定为当前光头已经读到了连接点(在光碟上,光头所在的位 置的数据与第i子缓存区中的数据连续),停止在本子缓存区的写缓存操作, 返回步骤201,以在播放到另一子缓存区时,从步骤201开始进行数据连接是 否准确的判定,循环执行本实施例图示的流程,直到反向播放结束;否则, 执行步骤208。

步骤208:按照光头的读取顺序,将读取的数据继续写入第(i-1)子缓存 区,返回步骤207。

当光头读取到的数据与最后写入缓存中的预定个字节的数据不相同时, 将按照光头读取顺序将读取的数据继续写入第(i-1)子缓存区,然后返回步 骤207,继续对光头读取的数据进行比较,直到光头读取到的数据与最后写入 缓存中的预定个字节的数据相同为止。

在本实施例中,可以但不限于将每子缓存区的大小设定为可存储光碟上 77个扇区的数据量,而规定在正向播放写缓存(常规写缓存)时,在每子缓 存区写入光碟上75个扇区的数据,这样,在反向播放写缓存时,在读了约72、 73、或者74个扇区后进行步骤207中所述的数据比较,直到判定为比较结果 为:“数据相同”时,才认为读到了连接点,停止写缓存操作。这样既可以保 证缓存中相邻两子缓存区中存储的数据准确连续,又不会浪费各子缓存区中 的存储有效空间,有利于有效资源的充分利用。

由上可见,应用本发明的技术,由于在反向播放过程中,播放到每个子 缓存区时均判断当前播放的子缓存区的数据与上一子缓存区存放的数据是否 在光碟上连续,只要不连续,均将光头重新寻迹定位到当前播放的子换存取 的首扇区前的一段位置(前W个扇区),在该上一子缓存区重新写入音频数 据,并且在重新写到一定程度后,将光头读取的数据与播放所在的子缓存区 中的头几位数据对比,只有比较结果为数据完全相同时,认为当前的认为读 到了连接点,停止写缓存操作。保证了缓存中的数据的准确连续性,避免了 反向播放跳音的情况,有利于提高音质,提高用户的使用感受。

实施例2:

图3为本实施例提供的一种反向播放时CD数据写缓存方法流程图,参见 图示,本方法流程与实施例1所不同之处在于以下:

在步骤207之后,如果光头读取的数据与第i子缓存区中的前n个字节的 数据相同,而返回步骤201之前,还执行以下步骤:

步骤301:在第(i-1)子缓存区中更新信息:本子缓存区当前实际存储的 有效音频数据的大小,在执行步骤301后返回步骤201。

具体可以在本第(i-1)子缓存区更新成员3的信息,使得该信息记载当 前存储在本第(i-1)子缓存区的有效音频数据大小。

在更新当前存储在本第(i-1)子缓存区的有效音频数据大小后,返回步 骤201以在播放到另一子缓存区时,从步骤201开始进行数据连接是否准确 的判定,循环执行本实施例图示的流程,直到反向播放结束。

由上可见,增加步骤301,能够进一步使得使得个子缓存区中的信息更加 充分准确,进一步有利于缓存读指针根据该信息准确、有效率的进行音频数 据的读取,以输出音频。

实施例3:

图4为本实施例提供的一种CD播放器结构示意图,参见图示,其主要包 括:光头401、伺服芯片402、搓碟检测模块403、处理器404、缓存写模块 405、缓存406、缓存读模块407、声卡408。其中各部分的连接关系以及工作 原理主要如下:

光头401,与伺服芯片402连接,在伺服芯片402的控制下读取CD光碟 的音频数据,伺服芯片402与处理器404连接,受处理器404的控制,比如 在处理器404的控制下使光头401重新寻迹定位。

搓碟检测模块403与处理器404连接,搓碟检测模块403用于检测反向 搓碟信号(用户可以通过播放器上的按键或者其他的搓碟装置进行操作),并 将检测结果输入处理器404,以供处理器404根据检测结果控制播放器的运行, 当接收到反向搓碟信号时,处理器404控制播放器进行反向播放。

处理器404包括反向写缓存确定模块4041、控制模块4042、比较模块 4043。

其中,反向写缓存确定模块4041与控制模块4042连接,在当播放器反 向播放到第i子缓存区4061时,确定第i子缓存区4061内存储的首扇区地址, 记为第X扇区,并且确定第(i-1)子缓存区4061中存储的首扇区地址,记为 第Y扇区。其中该首扇区地址为在各子缓存区4061内当前存储的音频数据对 应在光碟上的扇区起始位置,只要(X-Y)不等于W(比如可以但不限于设 定为光碟上75个扇区),则判定当前需要在第(i-1)子缓存406重写缓存406。

控制模块4042与反向写缓存确定模块4041、搓碟检测模块403、伺服芯 片402、缓存写模块405、缓存406分别连接,控制模块4042用于:当反向 写缓存确定模块4041判定当前需要在第(i-1)子缓存406重写缓存406时, 控制伺服芯片402使光头401寻迹定位到光碟的第(X-W)扇区,以使光头 401从该重新寻迹定位的位置读取光碟上的数据。

比较模块4043,与缓存写模块405、控制模块4042连接,比较模块4043 用于在光头401读到光碟的第(X-a)扇区(a的数值优选但不限于设置为1、 2或3或者其他小于W的数值)后,将光头401读取的数据逐个与第i子缓 存区4061中的前n(可以但不限于为4)个字节的数据比较,将比较结果传 递至控制模块4042;

控制模块4042在比较模块4043判定光头401当前读取的数据与所述第i 子缓存区4061中的前n个字节的数据不相同时,控制缓存写模块405,使缓 存写模块405按照光头401的读取顺序,继续将读取的数据写入第(i-1)子 缓存区4061,直到比较模块4043判定光头401当前读取的数据与第i子缓存 区4061中的前n个字节的数据相同为止。

缓存写模块405,与处理器404中的控制模块4042连接,用于在控制模 块4042的控制下,在光头401寻迹定位到所述光碟的第(X-W)扇区之后, 按照光头401的读取顺序,将读取的数据写入第(i-1)子缓存区4061。

缓存406,由至少两个子缓存区4061组成,各子缓存区4061用于存储缓 存写模块405写入的音频数据。

缓存读模块407,用于读取缓存406内的数据,以将音频数据输入声卡 408,声卡408数据转换成音频信号,对外输出音频。

本CD播放器中各部分的详细工作原理可以但不限于参见实施例1、2中 的描述。

各子缓存区4061的设置可以但不限于如下:

一般地,CD光碟正常速度下每秒钟可读取75个扇区,数据的传输率为 (75扇区/秒X2352字节/扇区)=176400字节/秒。

假设我们的系统总的内存为8兆字节,由于系统程序部分需要占用部分 内存,我们只预留可以存放30秒左右的CD音频大小的缓存406给数字音频 做为缓存406用。

在本实施例中,我们可以但不限于把30秒容量的缓存406,分解成30个 子缓存区4061来管理。设定每个子缓存区4061的大小为:16+((75+2)X2352) 个字节。

对于每个子缓存区4061定义成如下结构:

[成员1:第一地址指针P1,指向本缓存406的下一缓存区首地址;

成员2:第二地址指针P2,指向本缓存406的上一缓存区首地址;

成员3:有效数据大小,用于标识当前子缓存区4061内当前存储的有效 音频数据大小;

成员4:首扇区地址,用于记载本子缓存区4061内存储的数字音频数据 在CD碟上的首扇区地址。

成员5:音频数据存放区,用于存放音频数据,比如在本实施例中可以 但不限于将该音频数据存储区的大小设定为(75+2)X2352个字节]。

在启动播放系统而使用前,先做以下的初始化:把30个缓存406的成员 3(当前缓存406有效数据大小)清0;把30个缓存406的成员4(当前缓存 406首扇区地址信息)清0;同时,把成员1(指向下一个子缓存区4061首地 址)按队列方式赋值:

缓存4060的(下一个子缓存区4061首地址)成员=缓存4061的首地址;

缓存4061的(下一个子缓存区4061首地址)成员=缓存4062的首地址;

…………

缓存40629的(下一个子缓存区4061首地址)成员=缓存4060的首地 址。

另外,把成员2(指向上一个子缓存区4061首地址)也按队列方式赋值:

缓存4060的(上一个子缓存区4061首地址)成员=缓存40629的首地 址;

缓存4061的(上一个子缓存区4061首地址)成员=缓存4060的首地址;

…………

缓存40629的(上一个子缓存区4061首地址)成员=缓存40628的首地 址。

另外,把缓存读指针、以及缓存写指针都指向缓存4060。

经过以上处理,30个子缓存区4061将形成一个圆形大缓存406,它们通 过地址指针首尾相连。

在正向播放过程中写各子缓存区4061时,设定在各子缓存区4061中写 入的W(在本实施例中定为75)个扇区的数据。

由于在各子缓存区4061中存储相对于本子缓存区4061的上一子缓存区 4061的首地址信息,故在反向播放时,缓存读指针可以很快地在当前子缓存 区4061的音频数据播放完毕后,缓存读指针根据本子缓存区4061中的成员2 的信息跳转到上一子缓存区4061反向播放该子缓存区4061中的数据,使得 该反向播放更加便捷。

在各子缓存区4061中存储相对于本子缓存区4061的下一于缓存区4061 的首地址信息,故在正向播放时,指针可以很快地在当前子缓存区4061的音 频数据播放完毕后,缓存读指针根据本子缓存区4061中的成员1的信息跳转 到下一子缓存区4061正向播放该子缓存区4061中的数据,使得该正反向播 放更加便捷。

在各子缓存区4061中存储数据在光碟上的首扇区地址(成员4),故在反 向播放需要写缓存406时,根据前后两子缓存区4061中的首扇区地址信息, 简单准确地确定当前前后两子缓存区4061中的音频数据是否准确连续。

在各子缓存区4061中存储相对本子缓存区4061的有效音频数据大小信 息,在正向播放或者反向播放时,缓存读指针可以根据该有效音频数据大小 信息确定当前是否读取完毕本子缓存区4061内的音频数据,在读取完毕后确 定在上一子缓存区4061(反向播放)或者下一子缓存区4061(正向播放)继 续读取音频数据,播放音频。

以上对本发明实施例所提供的技术方案进行了详细介绍,本文中应用了 具体个例对本发明实施例的原理以及实施方式进行了阐述,以上实施例的说 明只适用于帮助理解本发明实施例的原理;同时,对于本领域的一般技术人 员,依据本发明实施例,在具体实施方式以及应用范围上均会有改变之处, 综上所述,本说明书内容不应理解为对本发明的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号