低比特率数据流的记录或重放方法 【技术领域】
本发明涉及一种用于记录或重放低比特率数据流的方法,所述低比特率数据流将记录或已记录在存储介质上,例如光盘。背景技术
CD以及由其发展而来的DVD(数字化通用盘)可以用于各种技术目的。因此,已经定义了不同的DVD规范,例如DVD-Video、DVD-Audio和DVD-ROM分别用于预先记录的运动图片、音乐和软件程序的海量存储。为了在DVD盘片上记录,DVD-RAM和DVD+RW用作个人计算机或用户电子设备领域中的常规读写应用设备,而DVD-R用于只可写一次的可记录介质,DVD-RW是DVD-R的可重写型式。依然在开发中的是一种用于可重写/可重记录的DVD盘片规范,称作DVD流记录,缩写为DVD-SR。DVD-SR应当被用于给定分组比特流的实时记录和重放,其中记录数据的盘片应当符合在其它DVD规范中规定的任何一种可记录或可重写或可重记录的媒体和文件系统格式。
通常,比特流地各种分组格式根据系统参数被用于不同应用。在ISO/IEC 13818-1中定义的MPEG-2系统标准规定了两种不同格式,所谓的程序流和传输流。传输流用于较高误码率的应用,例如经卫星的DVB数据流的传输,程序流在低误码率的情况中使用,例如数据存储。
DVD-SR所记录的比特流结构应当基本上符合在ISO/IEC 13818-1中所定义的程序流。比特流数据作为流目标(SOB)被记录,其中SOB被组织成为恒定长度64千字节的流目标单元(SOBU)。每个SOBU又包括恒定数目的所谓流包,每个流包包括一个包头以及随后的流分组。一个流分组进一步包含首部数据和应用分组(AP_PKT)数据。给每个AP_PKT分配一个应用时间标签(ATS)。这个时间标签使得在重放过程中能够进行正确的应用分组发送。
一个SOBU所占据的时间间隔不是固定的,而是灵活的,这意味着SOBU的重放时间可以根据记录流的瞬时比特率变化很大。因此,一个映射列表(MAPL)用于指向可以找到所需AP_PKT的SOBU。相对时间标签“增量APAT”(IAPAT)被分配给对应于各个SOBU中记录信号的时间周期的每个SOBU。从称作应用分组到达时间(APAT)的时间标签中获得IAPAT时间标签,所述APAT在记录过程中根据DVD-SR的本地参考时钟被分配给输入的应用分组。
12比特的有限分辨率被用于IAPAT数值,因为MAPL必须被保存在诸如RAM的流设备的存储器中。最大的IAPAT数值对应于大约23.3秒的SOBU时间周期的上限。这将待记录的数据流的最小比特率限制在大约5.5千比特/秒的数值上。发明内容
本发明的一个目的是公开一种并不限制于上述最小比特率的分组比特流的记录或重放方法,因此还允许极低比特率数据流的记录和重放。这个目的通过权利要求1所公开的方法实现。
本发明基于对这样事实的理解,即DVD-SR应当也可适用于临时出现或甚至固定出现极低比特率的某些应用。然而,在极低比特率流记录的情况下,可能会少于一个应用分组,因此每个流目标单元少于一个ATS。因此,根据DVD-SR规范的当前草案,不保证映射列表数据检索的正常功能。
根据本发明,在极低比特率的情况下,空分组被记录,它被标记为填充分组。
这些替代应用分组的填充分组的使用确保每个流目标单元,即使在执行填充的区域中,包含至少一个应用时间标签值。这还允许在极低比特率,例如100比特/秒的记录和重放。附图说明
参考附图描述本发明的实施例,在附图中:
图1是包含部分填充分组的流包的结构。具体实施方式
下面解释用于描述附图的缩写词:
SOB(流目标):
1)一次获取(在编辑之后,一个原始SOB可以被划分成多个SOB);
2)由MAPL_ENT_Ns个SOBU构成(MAPL_ENT_Ns>=1;MAPL_ENT_Ns位于这个SOB的SOBI中,即在IFO文件中);
3)该流自身由多个SOBU构成(位于SRO文件中);
4)与该流有关的信息(位置、记录时间、开始和结束时间等)被存储在SOBI中(位于IFO文件中)->SOBI=SOB信息。
SOBU(SOB单元):
1)被存储在SRO文件中;
2)每个SOBU包括65536个字节=32个扇区=32个流包=32个流分组
3)一个流包括连续的多个SOBU。
AP_PKT(应用分组):
1)被存储在一个流分组的AP_PKT区域中(SRO文件);
2)一个AP_PKT包括该流的实际有效负载;
2)一个ATS(应用时间标签)在每个AP_PKT的前面;
3)1字节=<AP_PKT大小=<64574字节;
4)在扇区X的AP_PKT区域中开始的一个AP_PKT可以结束于扇区X+Y的AP_PKY区域,0=<Y=<31;
5)一个AP_PKT的数据甚至可以覆盖一个SOBU边界。
APAT(AP_PKT到达时间):
1)48比特时间标签;
2)绝对时间标签;
3)DVD SR规范的最准确时间标签;
4)所有其它时间标签是一个APAT的子集;
5)一个APAT的9LSB描述该APAT的27MHz部分;
6)APAT的(其余)39MSB描述该APAT的90kHz部分。
IAPAT(增量AP_PAT到达时间):
1)MAPL(映射列表-->见下文)的单元;
2)相对时间标签(包含一个SOBU的持续时间)->它是该规范唯一的相对时间标签;
3)范围:1..2^12-2(即5.6毫秒...23.3秒)->12比特值;
4)单元:IAPAT*512/90000Hz;
5)IAPAT#n是SOBU#n+1的最高限度(up-rounded)首次出现的ATS减去SOBU#n的最高限度首次出现的ATS。最高限度指最大值限制(ceiling)(ATS/2^18);
6)APAT的18至29比特对应于IAPAT的12比特。MAPL(映射列表):
1)被存储在IFO文件中;
2)每个SOBI包含一个MAPL;
3)一个MAPL包含MAPL_ENT_Ns个IAPAT值;
4)MAPL_ENT__Ns等于由这个SOB使用的SOBU的数目;
5)MAPL和MAPL_ENT_Ns位于SOBI中;
6)被用于通过一个时间标记(APAT)在流中定位一个AP_PKT(即定位扇区和在这个扇区内定位AP_PKT的开始字节)。SUM_IAPAT(一个MAPL的IAPAT的总和):
1)并非在所有地方存储,即必须由MAPL项目(IAPAT)的求和来计算;
2)用于通过这个AP_PKT的时间标签来找到该流中一个AP_PKT的大致开始位置;
3)如果X是一个AP_PKT的时间标签,我们搜索并且X介于SUM_IAPAT(k)和SUM_IAPAT(k+1)之间,则所搜索的AP_PKT在SOBU#k或者在SOBU#k+1中开始->搜索的结果是两个确切的SOBU;
4)在这个大致搜索之后,必须通过该流中的一个直接搜索找到该AP_PKT的确切位置;
5)一个APAT的18至47比特(即一个APAT的30MSB)对应于SUM_TAPAT。
ATS(应用时间标签):
1)32比特时间标签,位于流中(SRO文件);
2)绝对时间标签;
3)范围:1..2^32-1(1/27MHz...93.2s)->即在该流中出现的回绕。即ATS的范围太小在一个整个的SOB中成为模糊指针。只有一个完整的APAT值可以是一个用于整个SOB的模糊时间标签;
4)23MSB的单元:1/90kHz;
5)(其余)9LSB的单元:1/27MHz;
6)仅一个ATS在每个AP_PKT的前面;
7)仅一个ATS在每个填充分组的前面;
8)一个APAT的比特0-31对应于一个ATS的32比特;
9)一个ATS的比特18至29具有一个IAPAT的12比特的范围->当然,IAPAT是相对的,ATS是绝对的!因此,两者实际上是不可比的。
如图1a所示,一个2048字节的流包O_S_P包括一个14字节的流包首部和一个2034字节的流PES分组S_PES_P。该流PES分组S_PES_P包括一个6字节的PES首部PES_H,将随后的负载指定为流记录数据的1字节标识数据S_ID和一个2027字节的流数据区S_D_A。在一个流分组内的流数据区S_D_A包括一个9字节的应用首部A_H和一个2018字节的应用分组区。对于常规的比特率,应用分组区A_P_A被用一个AP_PKT序列填充,每个由一个应用时间标签ATS做前缀。ATS包括一个32比特的值,并划分成两个部分,即一个基本部分和一个扩展部分。
在极低比特率流记录的情况下,执行填充以保证映射列表数据检索的正常功能。为此,一个填充分组被定义为一个概念上的单元。填充分组的目的是确保每个SOBU,即使在填充区域中,包含至少一个应用时间标签ATS值。如图1b所示,在包含填充分组起始点的流包中,应用分组区A_P_A包含一个4字节的ATS,后面是一个填充字节区Z1。随后的流包包含其余的填充分组。仅包含填充字节Z2的应用分组区A_P_A在图1c中示意性地表示。
填充分组应当符合下述规则:
填充分组始终在包含真正应用分组数据的流包之后在流包的应用分组区的起始点上开始。
填充分组包括一个4字节的ATS,后面是与填充SOBU其余包的应用数据区所需的如一样的零字节。因此,填充分组的总长度是(4+2014+(n-1)*2018)字节,其中0<=n<SOBU_SIZ,并且SOBU_SIZ是一个SOBU中的分组数目。
尽管用于填充字节的零值对于大多数应用可能是合适的,当然也可以选择其它数值来填充应用数据区。
一个填充分组的ATS应当被设置如下:
在至少一个包包含真正应用分组数据的一个SOBU中,填充分组的ATS应当被设置为在填充分组之前的应用分组的ATS;
在不包含真正应用分组数据的一个SOBU中,填充分组的ATS应当被设置为:
ATS=SUM_IAPAT(k-1)[(31-MTU_SHFT)..0]*2MTU_SHFT
其中SUM_IAPAT根据包含分配给流目标单元的时间标签的一个映射列表(MAPL)的项目获得,MTU_SHFT是根据流目标单元大小和最大许可比特率获得的一个常量。
包含填充分组或部分填充分组的所有包应被构建如下:
如MPEG-2系统标准所规定的,包首部的系统时钟参考SCR应当根据下式计算:
SCR=SCR_先前+2048×8比特/10.08Mbps;
其中SCR_先前应当表示DVD流规范的先前包的SCR;
PES分组首部PES_H和标识数据S_ID应当被指定为与所有其它的PES分组相同;
应用首部应当规定为:
AP_Ns=0,FIRST_AP_OFFSET=0,
EXTENSION_HEADER_INFO=00b,SERVICE_ID=0,
MAX_BR_LOG2=0和SMO_BS_LOG2=0,其中这些参数在初步的DVD流规范中被定义。
对于映射列表项目的上限,已经得出,对于一个SOBU k中的所有应用分组i,必须维持下述上限:
APATi[47..18]<sum_iapat(k-1)+(212-2),
其中APATi是应用分组I的应用分组到达时间,即具有例如一个48比特值格式的一个绝对时间标签。
为了保证这个等式的限制,可以在记录过程中执行下述步骤或任一等价操作:
a)一旦用数据填充一个SOBU,存储第一应用分组(AP)的ATS,所述分组在当前SOBU中开始。
b)继续检查流系统时钟TSC是否满足:
TSC[47..18]<sum_iapat(k-1)+(212-2),
c)只要违背上式,
c.1)终止当前的记录扇区,使用一个比技术上可能的值小的AP_PKT_Ns值,其中AP_PKT_Ns是在这个流包中开始的AP_PKT的数目。
c.2)如果需要,通过如上所述使用一个填充分组填充其余的SOBU来停止当前SOBU;将当前的SOBU数据写入盘片。
c.3)建立一个映射列表项目IAPAT(k)=212-2。
c.4)将k递增1。
c.5)开始SOBU#k的记录,并为了记录打开它的第一个扇区。
c.6)如果一个AP_PKT到达TSC[47..0]=SUM_IAPAT(k-1)*218,则前进到步骤a)。
c.7)将SOBU#k记录为一个仅包含一个填充分组的SOBU(ATS=SUM_IAPAT(k-1)[13..0]*218)。
c.8)如果在TSC[47..18]<SUM_IARAT(k-1)+(212-2)过程中没有AP_PKT到达,则前进到步骤c.3)。
c.9)AP_PKT是SOBU#k+1的第一个AP_PKT。
c.10)设置IAPAT(k)。
c.11)将k递增1。
c.12)前进到步骤a)。
应用分组可以包含任意类型的数据,例如视频、音频或附加数据等服务信息。因此,在流中将被处理的数据速率可以在例如最高80Mbit/s峰值数据速率值的范围内变化,所述最高80Mbit/s峰值数据速率用于视频信号的完全细节运动场景。
本发明可以在记录和重放诸如一个所谓DVD流的分组比特率数据流的任一设备中使用。而且,本发明可以用于记录和重放分组比特率流的任意存储介质,尤其用于DVD光盘。