一种光盘容错处理方法.pdf

上传人:Y94****206 文档编号:810930 上传时间:2018-03-13 格式:PDF 页数:8 大小:347.05KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910091271.1

申请日:

2009.08.14

公开号:

CN101645291A

公开日:

2010.02.10

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G11B 20/18公开日:20100210|||专利申请权的转移IPC(主分类):G11B 20/18变更事项:申请人变更前权利人:北京中科智网传媒技术有限公司变更后权利人:北京中科智网科技有限公司变更事项:地址变更前权利人:100190 北京市海淀区中关村大街18号北京中关村数字物流港写字楼1508室变更后权利人:100190 北京市海淀区中关村东路66号甲1号楼七层西01区变更事项:共同申请人变更前权利人:中国科学院声学研究所变更后权利人:中国科学院声学研究所登记生效日:20110601|||实质审查的生效IPC(主分类):G11B 20/18申请日:20090814|||公开

IPC分类号:

G11B20/18

主分类号:

G11B20/18

申请人:

北京中科智网传媒技术有限公司; 中国科学院声学研究所

发明人:

胡建良; 姜京梅; 潘 梁; 齐向东; 陈 晓

地址:

100190北京市海淀区中关村大街18号北京中关村数字物流港写字楼1508室

优先权:

专利代理机构:

北京法思腾知识产权代理有限公司

代理人:

杨小蓉

PDF下载: PDF下载
内容摘要

本发明涉及一种光盘容错处理方法,包括:设定初次跳读数和最大连续读错误次数,驱动程序依次读取光盘块,如果在某一个光盘块发生读错误,执行下列步骤:1)读取从当前光盘块起始的第N个光盘块,所述N为所述初次跳读数;如果读取正常,则继续依次读取后续光盘块;否则,进入步骤2);2)将N赋值为2N,然后读取从当前光盘块起始的第N个光盘块,如果读取正常,则继续依次读取后续光盘块;否则,进入步骤3);3)判断当前连续错误次数是否达到所述最大连续读错误次数;如果判断为是,则退出读光盘程序,否则,回到步骤2)。本发

权利要求书

1: 一种光盘容错处理方法,包括:设定初次跳读数和最大连续读错误次数,驱 动程序依次读取光盘块,如果在某一个光盘块发生读错误,则执行下列步骤: 1)读取从当前光盘块起始的第N个光盘块,所述N为所述初次跳读数;如果 读取正常,则继续依次读取后续光盘块;如果读取错误,则进入步骤2); 2)将N赋值为2N,然后读取从当前光盘块起始的第N个光盘块,如果读取正 常,则继续依次读取后续光盘块;如果读取错误,则进入步骤3); 3)判断当前连续错误次数是否达到所述最大连续读错误次数;如果判断为是, 则退出读光盘程序,如果判断为否,则回到步骤2)。
2: 根据权利要求1所述的光盘容错处理方法,所述最大连续读错误次数为15。
3: 根据权利要求1所述的光盘容错处理方法,所述步骤1)和步骤2)中,当 发生读错误时,驱动程序调用结束处理函数清除当前发生读错误的光盘块所占用的 缓存。

说明书


一种光盘容错处理方法

    【技术领域】

    本发明属于高清多媒体的MPEG视频压缩和文件系统优化技术领域,具体地说,本发明涉及一种光盘容错处理方法,该方法特别适用于高清DVD光盘(容量从单面单层的4.7GB到单面双层的9GB)。

    背景技术

    在这个高速发展的社会,通过DVD碟片观看电影已经成为人们日常生活的一部分,而播放质量的优劣则决定着高清DVD的发展方向。DVD碟片是移动存储设备,片的表面没有任何保护,因此在多次使用过程中,难免会出现划伤或沾染上杂物质情况,这些小毛病都会导致光盘(即DVD碟片)出现坏块,影响数据的读取。读光盘错误的表现形式各不相同,对于存储着高清视频的DVD光盘而言,读光盘错误表现为出现马赛克或者电影卡顿等音视频播放不畅的现象,这严重影响了用户对于优质影片的欣赏。因此在读取光盘时需要进行容错处理。

    目前,容错处理主要有硬件容错处理和软件容错处理两个方面。硬件上常用的方法是“人工智能纠错(AIEC)”。AIEC通过对上万张光盘的采样测试,“记录”下适合他们的读盘策略,并保存在光驱BIOS芯片中,以方便光驱针对偏心盘、低反射盘、划伤盘进行自动的读盘策略的选择。但是,这种硬件容错处理方法成本高昂,实现复杂。

    而软件容错处理是采用从应用程序层次对光盘的错误进行相应的处理,或者是通过一定应用层次的校验机制进行处理。但是,应用程序层次的容错处理通用性不高,对不同的播放软件往往需要专门编写不同的容错应用程序,极大地限制了其适用范围。而对于基于校验机制的容错处理,于碟片存储数据量大和算法复杂度高,对CPU和SDRAM有较高要求,且通用性很低。

    【发明内容】

    本方案的目的是克服现有光驱在读取光盘MPEG数据时遇到坏块而产生的播放卡顿的问题,基于驱动程序层次,提供一种低成本且通用性强的光盘容错处理方法。为实现上述发明目的,本发明提供的光盘容错处理方法包括:设定初次跳读数和最大连续读错误次数,驱动程序依次读取光盘块,如果在某一个光盘块发生读错误,则执行下列步骤:

    1)读取从当前光盘块起始的第N个光盘块,所述N为所述初次跳读数;如果读取正常,则继续依次读取后续光盘块;如果读取错误,则进入步骤2);

    2)将N赋值为2N,然后读取从当前光盘块起始的第N个光盘块,如果读取正常,则继续依次读取后续光盘块;如果读取错误,则进入步骤3);

    3)判断当前连续错误次数是否达到所述最大连续读错误次数;如果判断为是,则退出读光盘程序,如果判断为否,则回到步骤2)。

    上述技术方案中,所述最大连续读错误次数为15。

    上述技术方案中,所述步骤1)和步骤2)中,当发生读错误时,驱动程序调用结束处理函数清除当前发生读错误的光盘块所占用的缓存。

    本发明基于驱动程序层,在不做大的改动的前提下能够实现光盘容错。相对于硬件容错,本发明成本低,实现简单,时间短;而相对于其它从软件上解决的办法,本发明不需要专门编写新的应用程序,机制简单,不需要复杂的校验机制,只需要在原有驱动程序的基础上稍作调整即可;同时,本发明也具有更大通用性,可以应用在不同的平台上。

    【附图说明】

    图1是块设备驱动程序中关于读取请求的主要数据结构关系图。

    图2是实现高清DVD碟片容错处理的软件机制架构示意图。

    【具体实施方式】

    下面结合附图和具体实施方式对本发明作进一步详细描述:

    本实施例提供的实现高清DVD碟片容错处理的实现方法,包括读取请求错误的判断;在已知该次读取请求错误的情况下的容错处理机制;对读取错误处理后的下一次读取操作处理。另外,本实施例还包括在光盘损坏比较严重的情况下尽早退出的处理机制。

    高清DVD碟片的读操作是通过块设备驱动程序实现的,通常来说,这是通过将读请求组织成请求队列,再对每一个请求一一进行处理的方式实现的。正常的读取请求处理过程包括三个步骤:(1)检查当前读取请求的有效性;(2)进行实际地数据传送。就是用上面提到过的请求队列的方式实现的。将每个请求记为request,对应图1中的“读请求结构体”,管理请求队列的数据结构记为request_queue,对应图1中的“读请求队列结构体”。请求队列就是以request_queue为头节点将请求queue链接成双链表进行管理。每一个请求request又可以处理多个连续的读操作,通过图1中的“缓冲区管理结构体”进行管理,缓冲区管理结构体记为buffer_head,而实际的数据保存在“缓冲区”中,缓冲区记为data,详见图1。(3)清除当前的请求。清除当前的请求一般通过结束处理函数执行。本实施例中,驱动程序向结束处理函数传递一个参数来标识读操作的正确与错误,在这里我们以1标识正确,0标识错误。当读错的同时,驱动程序生成一个“I/O error”消息传递给操作系统。不同的操作系统的驱动程序中可能有不同的结束处理函数,清除当前的请求的处理方式也有所不同,但应当理解,这些清除当前的请求的处理方式都是本领域技术人员所公知的,因此,这里不再一一赘述。

    参照图2,高清碟片容错处理机制的具体处理过程如下:

    1)操作系统在收到读光盘命令后,在进行读操作之前,会先进行初始化工作:

    Sectors=N,N是一个常量,sectors是每次读操作失败之后跳过的块数,在连续读错的情况下,会以2的倍数递增;

    sector_end=0,sector_end是跳块之后下一次要读的块号,即有如下关系:

    sector_end=Current_sector+sectors,Current_sector是当前块号,初始化为0;

    Error_times=0,连续读错误的次数,有上限M,初始化为0;

    2)通过图2,可以看到正确的读操作流程图,如果发生读取操作错误,则进入到错误处理的流程中去,具体的操作如下:

    sector_end=Current_sector+sectors,得到跳过sectors块之后下一次要读取的块号;

    Error_times++,连读错误次数加1,并且要判断是否大于最大允许的连读错误次数,如果大于等于本实施例所允许的最大连续读取错误次数,则认为光盘数据损坏严重,退出读光驱命令;

    sectors=2×sectors,下一次仍然读取错误要跳过的块数加倍;

    真正跳块的操作是从下一次开始的sectors块读取操作,但不一定是sectors次循环,因为每次读取操作是以data为单位的,而每个data会存放若干个块的数据,此外,多次连续的读取操作可以合并到一个读请求中,可以参考图1。流程图中的“取消该次操作”所做的工作在上面曾经提到过的“结束处理函数”中,它定义在。“结束处理函数”是对于读取操作的扫尾工作,在正确的读取操作结束之后会返回1,而在错误的读取操作之后会返回0。如果没有错误处理机制,原始的驱动程序是一次处理一个data的数据,而且要等到该次读错误操作返回,在底层操作中是通过时间溢出值为0来标识的,在连续若干块发生错误的情况下,每次等待都要等待时间溢出值为0,这段等待时间导致播放的画面停顿或出现马赛克等异常现象。

    在本实施例的错误处理机制中,改变的是“结束处理函数”对于要跳过的块的处理操作,本实施例的机制就是把这些要跳过的块当成已正确操作结束而返回1。具体来讲就是在判断处于跳块操作过程后,不进行任何真正的读取操作,直接调用“结束处理函数”来对该次的读取请求request进行清理。在每一次读取操作过程中,真正所做的清理工作是对于该次请求所使用的缓冲空间的释放。在“结束处理函数中”,本实施例要在合适的时机把该次request中所有用来存放数据的“缓冲区”data和管理:“缓冲区”data的“缓冲区管理结构体”buffer_head处理掉,采用的方法和正确读取数据之后对于这些结构体和缓冲区的处理方法是一样的:首先暂存request中bh所指向的buffer_head结构体:对request中bh所指向的buffer_head和data调用底层清理函数(不同的系统有不同的底层处理函数)进行处理,之后,再以轮询的方式处理完所有的buffer_head和他们所管理的data,直到“读请求”request中没有管理“缓冲区”data的“缓冲区管理结构体”buffer_head为止。

    3)跳过相应的块数之后,下一次则按照正常的读取操作进行,直到读到光盘最后或者连读错误次数达到上限值M。

一种光盘容错处理方法.pdf_第1页
第1页 / 共8页
一种光盘容错处理方法.pdf_第2页
第2页 / 共8页
一种光盘容错处理方法.pdf_第3页
第3页 / 共8页
点击查看更多>>
资源描述

《一种光盘容错处理方法.pdf》由会员分享,可在线阅读,更多相关《一种光盘容错处理方法.pdf(8页珍藏版)》请在专利查询网上搜索。

本发明涉及一种光盘容错处理方法,包括:设定初次跳读数和最大连续读错误次数,驱动程序依次读取光盘块,如果在某一个光盘块发生读错误,执行下列步骤:1)读取从当前光盘块起始的第N个光盘块,所述N为所述初次跳读数;如果读取正常,则继续依次读取后续光盘块;否则,进入步骤2);2)将N赋值为2N,然后读取从当前光盘块起始的第N个光盘块,如果读取正常,则继续依次读取后续光盘块;否则,进入步骤3);3)判断当前连。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 信息存储


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1