用于处理非连续程序数据的数字视频解码器的制作方法

文档序号:7572270阅读:215来源:国知局
专利名称:用于处理非连续程序数据的数字视频解码器的制作方法
技术领域
本发明涉及根据MPEG-2标准编码的数据进行数据接收、处理、及传输,具体来说,本发明涉及处理MPEG-2格式数据流的传输解码器的操作和接口。
高清晰度电视(HDTV)在试图替代传统的电视机方面继续取得进展。多家公司和协会正努力制定多种标准以供应HDTV的全球市场,从而为这种进展铺平道路。
其中有一个公司集团又被称为“数字高清晰度电视大联盟”,它包括AT&T、David Sarnoff研究中心、麻省工学院和其他一些机构。RobertHopkins在1994年夏季的《消费者电子IEEE交易》上发表了一篇以“北美数字陆地高清晰度电视大联盟高清晰度电视系统”为名的文章,全面概述了该集团的长足进步。在此将引用该文章关于HDTV系统的背景和基础知识方面的教导以供参考,其中包括对程序和传输包流的使用。
大联盟采用由国际标准组织(ISO)下属的动态图像专家组(MPEG)开发的MPEG-2标准对视频和音频信息进行编码。被接受的标准定期发表在下列刊物上动态图像和相关音频ISO/IEC 13818-2(1995年)的通用编码信息工程的视频部分(下文简称为“视频部分”),动态图像和相关音频ISO/IEC 13818-1(1994年11月)的信息工程的系统部分(下文简称为“系统部分”)。在此将引用二者关于已建立的标准和格式方面的教学资料以供参考。
MPEG-2标准的语法定义了几种数据记录层,用来传送音频和视频数据。例如,为了传输信息,一个表示多视频序列的数字数据流被分为多个较小的单元。每个单元被分别封装成多个打包的基本流(PES)包中。为了传输需要,每一个打包的基本流包被依次分割成多个定长传输包。每个传输包包含的数据只与一个打包的基本流包有关。传输包还包括一个首部,其中带有控制信息,有时也包括适应字段子段,用于对传输包解码。然而,打包的基本流数据也可能包括多种基本流。
正如在系统部分所述,多种基本流之间的同步是通过定期在数据流中提供时间标记实现的。例如,N个基本流的解码是通过将流的解码校正到一个通用主时基的方式实现的,而不是调整一种流的解码以适应另一种流的解码。主时基可能是N个解码器中某一个的时钟信号,或者是数据源的时间信号,还可能是一个外部提供的时钟信号。
为了有助于该同步处理,MPEG-2标准的传输首部中还包括一个不连续性指示位。系统部分提供了一种语法表示以显示一个典型的“不连续性指示位”在传输首部中的位置。该语法在以下的表1中有具体描述。
表1<pre listing-type="program-listing"><![CDATA[   传输流适应字段语法位数助记码adaptation_field(){ adaptation_field length 8 imsbf   if(adaptation_field_length>0){  discontinuity_indicator 1 bslbf  random_access_indicator 1 bslbf  elementary_stream_priority_indicator 1 bslbf  PCR_flag 1 bslbf  OPCR_flag 1 bslbf  splicing_point_flag 1 bslbf  transport_private_data_flag 1 bslbf  adaptation_field_extension_flag 1 bslbf  if(PCR_flag==‘1’){   program_clock_reference_base 33uimsbfreserved 6 bslbf   program_clock_reference_extension 9 uimsbf  }  if(OPCR_flag=‘1’){   original_program_clock_reference_base 33uimsbf   reserved 6 bslbf   original_program_clock_reference_extension9 uimsbf  }  if(splicing_point_flag=‘1’){   splice_countdown 8 tcimsbf  }  if(transport_private_data_flag=‘1’){   transport_private_data_length 8 uimsbf   for(i=0;i<transport_private_data_length;i++){  private_data_byte8 bslbf   }  }  if(adaptation_field_extension_flag=‘1’){   adaptation_field_extension_length 8 uimsbf   ltW_flag 1 bslbf   piecewise_ate_flag1 bslbf   seamless_splice_flag 1 bslbf   reserved 5 bslbf   if(ltw_flag=‘1’){   ltw_valid_flag 1 bslbf   ltw_offset 15uimsbf   }   if(piecewise_rate_flag=‘1’){   reserved 2 bslbf   piecewise_rate 22uimsbf   }   if(seamless_splice_flag=‘1’){   splice_type 4 bslbf   DTS_next_au[32..30] 3 bslbf   marker_bit1 bslbf   DTS_next_au[29..15] 15bslbfmarker_bit 1 bslbf   DTS_next_au[14..0] 15bslbf   marker_bit 1 bslbf   }   for(i=0;i<N;i++){   reserved8 bslbf   }  }  for(i=0);i<N;i++){   stuffing_byte 8 bslbf  } } }]]></pre>如系统部分中所述,不连续性指示位在传输首部内的适应字段中。不连续性指示位是一个1位的字段,设为逻辑值“1”时,表示当前的传输流包的不连续性状态为真。当不连续性指示位设为逻辑值“0”或不存在时,不连续性状态为假。不连续性指示位用于表示下列两种不连续性状态系统时基不连续和连续性计数器不连续。
通过在被指定为程序时钟参考(Program Clock Reference-PCR)程序标识的传输流程序标识(PID)中使用不连续性指示位,可以指示系统时基的不连续性(参见系统部分第50页的2.4.4.9)。接下来,可以接收到一个程序时钟参考(PCR)值(即所谓主时钟信号)。
例如,当使用一个时基记录的节目材料被插入采用另一个时基记录的数据流中时,设定不连续性指示位。时基中的差别表现为一个不可知的程序时钟参考(PCR)值。
当一个被指定为PCR程序标识的程序标识的传输流包的不连续状态为真时,使用同一个程序标识的传输流包中下一个PCR表示相关节目的新系统时间时钟取样。当包括一个新系统时基的PCR的包的第一个字节到达系统目标解码器(STD)的输入端时,系统时基不连续点被定义为这个时刻。
值得注意的是系统目标解码器在先有技术中广为人知,简而言之,它是表示一个在概念上与传输编码器的输出端相连的假定解码器。要求的条件是符合MPEG-2标准的数据流不会引起系统目标解码器的数据溢出问题(其中包括缓冲区溢出)。对系统目标解码器的其他讨论在系统部分给出。
紧接着,在传输流包中不连续指示位也可能被置为“1”。这些传输包都属于包含新的系统时基PCR的包的前一个程序时钟参考程序标识。在这种情况下,一旦不连续性指示位被置为“1”,在同一个程序PCR标识的所有传输流包中它都被置“1”,该程序PCR标识符合和包括包含新系统时基的第一个PCR的传输流包。当系统时基的不连续性发生时,新的系统时基的不少于两个PCR在另一个系统时基不连续性发生之前被接收。进一步来说,除非欺骗模式状态为真,否则来自不多于两个系统时基中的数据会在任意时间出现在一个程序的系统目标解码器缓冲区中。
当时基不连续性要求更新多系统时间常数(STC)值时(即在传输解码器的时钟管理器和在外部的视频和音频解码器中),特别是当等待时间可能存在于正被外部解码器解码的数据和正被接收并储存在传输解码器的缓冲区中的数据之间时。换句话说,典型的情况是一个传输解码器与外部的视频和音频解码器耦合,后者中每一个都保存一个STC或等价的值。因此,当系统时基发生改变时,同时校正所有的STC值就可能引发系统的同步问题。
考虑到这个因素,本发明所要解决的一个重要问题在于传输解码器怎样才能有效地处理缓冲器和解码器之间的系统时基不连续性问题。
本发明包括一个用于接收传输数据流的系统,该数据流包括具有不连续性指示位的首部和有效内容的传输包。该系统至少包括一个缓冲存储器和一个外部解码器,前者用于临时储存接收到的传输数据流,后者用于解码来自缓冲区的数据输出以供显示之用。本发明用于处理对不连续性指示位的接收,其手段是通过接收到不连续性指示位后对传输包的首部进行语法分析,以及将传输包的有效内容存入存储器。一旦接收到下一个程序计数器参考值,一个计数器中就会装入接收到的程序计数器参考值。然后在储存的数据中搜寻时间标记,一旦发现,就检索该时间标记。最后,基于已检索到的时间标记为某一个时间点设置一个定时器中断,并且当定时器中断发生时,将程序计数器参考值送往解码器,同时向解码器提供新时间标记值不充分时间,使之能处理含有新的时基的数据,而无需干扰对含有前一时基的数据的处理。


图1A示出了一个典型的数字传输解码器及其各种接口的高级功能框图。
图1B示出了一个高级流程图,描述了采用图1A所示的实施例时本发明的一个方面采取的步骤。
图2A示出了图1A所示的传输解码器的典型实现的高级功能框图。
图2B示出了图1A所示的传输解码器的典型实现的高级数据/控制流程框图。
图3示出了图2所示的传输解码器中使用的存储器控制器的功能框图。
图4示出了用以描述存储器控制器如何处理指针FIFO项的典型流程图。
图5A示出了在本发明的视频解码器接口部分执行的步骤的典型流程图。
图5B示出了在本发明的音频解码器接口部分执行的步骤的典型流程图。
概述如上文所述,本发明的一个重要方面在于解决传输解码器如何高效地处理不连续性指示位的问题。本发明的另一个重要方面在于处理传输解码器和仅能处理基本流数据的视频解码器之间的接口问题。另外,本发明还有一个方面涉及传输解码器和位速率限制音频解码器之间的接口问题。为了全面介绍以上的各个方面,本发明包括一个特别设计的MPEG-2传输解码器。
如果一个节目使用MPEG-2格式通过卫星向全国的多个接收站播放,一个时基不连续的实例就出现了。这就是为介绍本发明的不连续性部分提供的具体环境。但是,在节目播出的过程中,每个接收站会加入自己的商业广告节目。在这种情况下,应设置一个不连续性位来指示节目时基中的空白或间断,以便于自己拥有本地时基的商业广告的插入。
然而,当各个接收站插入各自的节目时,来自卫星的节目传输并不会中断。由此可知,当遇到不连续性指示位时,接收来自本地接收站并带有插入广告内容的节目的传输解码器的内部定时会跟踪适当的时基。
再看看附图,图1A示出了一个典型的数字传输解码器110的高级功能框图以及各种接口。如图1A所示,传输解码器110包括与以下各部分的连接物理层通道接口(又叫通道接口)112、缓冲存储器114、主微处理器116、外部视频和音频解码器118和120以及时钟信号电路(例如VCXO)122。在本发明的典型实施例中,传输解码器110支持一个视频接口和多达两个音频接口(例如,音频接口A和B)。
处于传输解码器110外部的主微处理器116也通过微总线24与视频和音频解码器118和120耦合。这种连接可以使用并行或串行数据路径,并根据被选择使用的单个外部解码器的要求而变化。在任何情况下,将主微处理器116和外部解码器连接起来的方法都是众所周知的,同时也为拥有普通技艺的人员所理解。
一般来说,传输解码器110和每个外部视频和音频解码器118和120都包括一个的系统时间常数(STC)值(图中未给出)。该值储存在寄存器或计数器中用于使接收到的数据流的解码和显示同步。
如上所述,当时基不连续在数据流中发生时可能出现问题,而且这种不连续要求STC值在传输解码器110和视频及音频解码器118和120中同时更新。特别容易发生问题的时间是当等待时间可能存在于正被外部解码器解码的数据和正被接收并储存在传输处理器110中的数据之间时。
在本发明中,微处理器116在控制数据流的同步和视频及音频解码器118和120的运作方面起着十分重要的作用。在本发明中,微处理器116对传输解码器110中的多个芯片寄存器能进行直接的存储器映射式存取。微处理器116还能通过读、写、和水印指针对外部存储器114内的缓冲区和芯片上32位可读写FIFO(如图3中所示)进行存取。微处理器116通过一个内部微总线223(如图2B所示)与多个内部功能块连接,从而允许各种事件和错误状态通过可屏蔽中断用信号发出。
一般来说,如图1B所示的流程图中,本发明的一个方面通过特别设计的传输解码器110在接收到不连续性指示位(步骤150)后执行以下步骤1)由于不连续性指示位不必和下一个程序时钟参考值(PCR)处于同一个数据包中,所以当下一个程序时钟参考值被接收后,位于传输解码器110中的时钟管理电路(如图2A中所示)内的计数器中将装载下一个程序时钟参考值(PCR)(步骤152);3)在经过语法分析并存储在存储器中的后续包中搜索时间标记,一旦找到某一个,则将检索时间标记值(步骤154);4)由微处理器116在某个时间点设置定时器中断,该时间点只比检索的时间标记值提前不到一帧的时间(步骤156);而且5)当定时器中断发生时,当前STC值被送往外部视频和音频解码器118和120(步骤158),从而给外部解码器足够的时间以抢在数据流中的时间标记值与保存在视频或音频解码器118或120中的计数器值进行比较之前处理数据。
下文将详细介绍这些高级步骤的执行情况。
图2A和图2B示出了图1A所示的传输解码器110的典型执行过程的高级功能框图。下文参照图2A和2B,介绍传输解码器110中的总体数据流动情况。
如图所示,图1A的通道接口112与通道数据处理器(CDP)210相连。通道接口112还向NRSS接口212提供数据,以便用NRSS智能卡230加密。在此特结合NRSS委员会(4/95)的条件存取EIA标准2.6版关于NRSS智能卡的论述以为参考。
通道数据处理器210被提供用于预处理(如检测、同步、确认等)所接收数据流中的包。处理完毕后,通道数据处理器210将输出数据发送到传输处理器(TPROC)214中供进一步处理之用。传输处理器214根据下文详细描述的程序标识表进行多种处理,例如语法分析等。
传输处理器214与传输解码器110中的多个功能块进行交互。这些功能块包括存储器控制器216、时钟管理器218,个人数据处理器220和高速数据端口222。如上所述,微处理器116能对多个芯片寄存器直接存取。这种存取是通过微接口217和内部微总线223(如图2B所示)获得的。存储器控制器216除了与传输处理器214连接外,还与外部存储器114和视频及音频解码器(224、226和228)相连。
现在介绍一下与单个功能块有关的数字数据流的处理细节。通道数据处理器(CDP)210值得指出的是来自通道接口112中的数据流经过可能的缓冲后(图中未给出)被送往通道数据处理器210。
通道数据处理器210对接收到的数据流执行多种预处理步骤。具体来说,通道数据处理器210决定数据流中字节和帧的边界,并将接收到的数据流转换为8位的并行格式。在本发明的典型实施例中,在通道数据处理器210后在传输解码器110中进行的操作使用字节格式进行。
为了确定字节和帧的边界,通道数据处理器210与传输包首部包含的帧模式同步。具体来说,这种同步是通过搜索MPEG-2的传输流同步字节(sync byte)(例如47H)并确认它在可编程数目的连续传输包开始处发生而实现的。
在此过程中,通道数据处理器(210)核对同步字节,将数据流锁定并继续确认包。当同步位的搜索在进行中时,在CDP状态寄存器中设置搜索状态位(Search State)(图中未给出)。一旦发现了同步字节并且对连续发生的确认在进行之中,同步状态位(Sync State)就设定了。最后,当符合预先确定的搜索标准时,设定锁定状态位(Lock_State)。在本发明的典型实施例中,搜索标准是三个连续的确认过的包。同样,指示带有损坏同步位的包数目的同步滞后值被设定。对通道数据处理器210编程使这些同步位在宣布损失锁定状态之前就能通过。当这个滞后值被超过时,锁定的损失被宣布。通道数据处理器210然后发出一个锁定损失中断并且从锁定状态过渡回搜索状态。
另外,如果通道接口112(如图1A所示)提供一个CHPSTRT信号,传输解码器110可能被设置以使用此信号作为一种手段来与数据流同步,方法是将通道数据处理器帧和同步控制寄存器中的帧模式位(Framing Mode)设为逻辑值“1”。在此情况下,当CHPSTRT被确定后,在一个传输包时间内可获得同步。
另一种情况是,如果通道数据处理器帧和同步控制寄存器中的忽略同步位被置为逻辑值“0”,则通道数据处理器210在相对于CHPSTRT信号过渡过程的预定字节(第一个字节)处校验同步位的完整性,并当校验失败时宣布锁定状态。如果忽略同步(Ignore-Sync)设置为“1”,则通道数据处理器210不校验同步的完整性。
取得了锁定状态后,通道数据处理器210的输出被传输到传输处理器214并由其进行处理,后者以字节的格式对数据进行处理(例如,过滤、语法分析、格式化等)。传输处理器(TPROC)214由传输处理器214产生的信号控制数据流动去往存储器控制器216、微接口217、时钟管理器218、个人数据处理器220、和高速数据端口220。
在本发明的典型实施例中,传输处理器214在程序标识表的控制下处理数据流。如系统部分所述,一个程序标识是传输流首部中一个13位的字段,表明存储在包有效数据中的数据类型。一些程序标识值被分配,另一些则被保留。程序标识表的另一些细节在上文提到的MPEG-2规范中的系统部分的3.3节给出。
根据程序标识表,传输处理器214能同时处理多达32个用户可选择的程序标识。传输解码器110所处理的程序标识在程序标识表中均有规定。程序标识表中的位字段指定了各种数据处理选项。
在操作过程中,程序标识由传输处理器214从刚刚到达的传输包的首部中抽取出来,并同时与程序标识表中的所有项目比较。一旦发生匹配,就根据匹配程序标识表项中设定的选项对包中的数据进行处理。如果程序标识表项没有匹配的,就放弃该包。
有效部分格式位没有设定为放弃(000)的程序标识表中每一个地址都与一个通道号相连。存储器控制器216与传输处理器214相连,负责向RAM中特定的缓冲区(通道)传输数据。关于存储器控制器216的操作问题在下文中与图2、3、4有关的部分具体讨论。
在本发明的典型实施例中,保存于传输处理器214中的程序标识表由微处理器116在初始化过程中通过微总线223利用软件设置。
关于程序标识表项的格式,除了其他信息外,一个程序标识表项还包括1)一个13位的程序标识,和2)一个1位的PCR程序标识字段。后者一旦设定,就表明对于被解码的程序来说,此程序标识带有PCR。一个典型的程序标识表项还包括一个1位的打包的基本流HDR位,它一旦设定,就使得与打包的基本流首部中的“流标识”对应的RAM缓冲区地址储存于指针FIFO中。当存储器控制器216向指针FIFO中写入数据时,它发出一个中断。这个中断又被称为一个DMA_MARK信号,用于提醒微处理器116发送流标识(Stream_ID)字节。在本发明的典型实施例中,以基于表中位置的数字顺序向程序标识表项分配通道号。例如,向第一项分配DMA通道0,向下一项分配DMA通道1等等。
传输处理器214表明带有程序时钟参考程序标识的传输包应该由时钟管理器218通过在程序标识表项中放入PCR_PID信号进行处理。时钟管理器(218)监视带有PCR_flag(标志)的包的适应字段,并抽取PCR。
传输处理器214根据包的程序标识将它们分开,然后除去传输包的首部,并结合存储器控制器216将程序标识包的有效部分(例如,打包的基本流包的部分)分别存储在外部存储器114中指定通道的顺序排列存储区字段。存储器114中的数据表示打包的基本流包。
传输处理器214还处理从主微处理器116向外部存储器进行的写操作。存储器控制器216存储器控制器216将传输包中经过语法分析的有效部分存储在外部存储器114中,并根据需要向视频处理器224、多达两个音频处理器226和228以及主微处理器116或微控制器提供视频、音频、PSI和其他数据(如个人数据)。
图3给出了适用于图2A和图2B中显示的传输解码器110的存储器控制器的典型功能框图。如图3中所示,存储器控制器216通过FIFO310从传输处理器214中获得数据。存储器控制器216通过由微输入FIFO314和微输出FIFO316组成的微接口217从微处理器116中取得和传输数据。值得指出的是,图2A和图2B的存储器控制器216外部的微接口217在图3中也给出了,以便清楚地表示它与FIFO314和316的相互关系。
存储器控制器216还包括一个流程控制单元318,它包括芯片存储器、一个DMA控制器320、数据路径(Datapath)逻辑322,以及用于向视频和音频解码器(224、226和228)分别发送数据的。
存储器控制器216将来自下列两个来源中的数据写入外部存储器其一为传输处理器214(通过FIFO310中的传输端口),其二为微处理器116(通过FIFO314中的微端口)。
存储器控制器216从外部存储器中读取数据,并将其提供给以下四个部件1)视频接口(通过视频FIFO324),2)音频接口A(通过音频接口A的FIFO326),3)音频接口B(通过音频接口B的FIFO328),4)微控制器116(通过微输出FIFO316)。
外部存储空间被划分为多个分离的、互不重叠的缓冲区。其中每一个供一个DMA通道使用。可使用的通道多达32个之多。通道号与写入数据两个FIFO源或从四个目标FIFO中读出的数据相关连。
由传输处理器214提供并写入传入端口FIFO310的数据带有一个通道号标记。其它FIFO中每一个的通道号由微处理器116在DMA接口寄存器中定义。微处理器116为每一个被使用的通道设置一个128位的DMA通道配置寄存器(通道寄存器)。此通道寄存器含有由起始和结束地址定义的缓冲区空间等信息,而不管该缓冲区被设为FIFO(读写指针互相缠绕,有时又叫环形队列)还是队列(Queue)(读写指针不会缠绕在一起),等等。
如果通道寄存器允许,DMA控制器320能在当前使用的缓冲区已满时获得一个新的缓冲区。这种特性通常只适用于那些存储为主微处理器116所用的数据的缓冲区,如PSI区字段。这些新缓冲区的起始和结束地址储存在新的缓冲FIFO中。只有微处理器116能向此FIFO中写入新的缓冲区。已使用过的缓冲区指针和其他类型的指针由DMA控制器320写入指针FIFO中。在本发明的典型实施例中,只有微处理器116能读取指针FIFO。这些指针被微处理器116用于管理对缓冲区数据的读取和向新的缓冲FIFO返回使用过的缓冲区。图4中的指针FIFO项流程图给出了在所有可能的信号条件、通道寄存器设置和缓冲区条件下指针FIFO的项。
在接下去的图3中,DMA控制器320和数据路径322为外部存储器提供所有的接口信号。流程控制单元318通过向DMA控制器320提供适当的控制信号,使其为六个特定的接口FIFO中的某一个服务。这些信号包括1. DMA控制器开始信号本信号命令DMA控制器320开始为使用诸如DMA控制器操作、DMA输入FIFO选择和DMA输出FIFO选择之类命令的特定FIFO服务。同时,流程控制单元318读出128位特定通道寄存器的内容,并使其在通道寄存器(内部存储器)的数据总线上可用。DMA控制器320将此128位的字读入它的内部寄存器,然后流程控制单元318被释放以根据内部存储器的需要执行其他的读/写操作。
2. DMA控制器操作信号(1位)该位发出一个读或写的信号,由接口FIFO上的DMA控制器执行。
3. DMA输入FIFO选择信号(1位)发出信号选择两个输入FIFO(310或314)中的某一个提供服务。
4. DMA输出FIFO选择信号(2位)发出信号选择四个输出FIFO(316、324、326或328)中的某一个提供服务。
5.在请求/通道数据/通道号/DMA控制器中的通道数据停止一般来说,DMA控制器320持续为FIFO服务,直到因如接口FIFO满或外部存储器中无数据等原因不能继续服务为止。一旦这种情况发生,DMA控制器320分配请求的通道数据给流程控制单元318,并且将通道寄存器数据和通道号数据提供给流程控制单元318。除非特定的FIFO需要急救行动(例如,因为它正接近满或空的状态),流程控制单元318使用通道数据更新通道寄存器存储器(例如,被更新的信息包括读写指针等),并指示DMA控制器320为回路中的下一个FIFO服务。
有些时候,流程控制单元318可能需要向DMA控制器320发送一个DMA控制器停止命令,作为对向另一个FIFO提供服务的需要作出的响应。该FIFO可能是拥有更高优先级的输入FIFO。这个命令指导DMA控制器320停止为当前正被其服务的FIFO服务,并将通道数据写入流程控制单元318。
DMA控制器320使用以下信息更新通道寄存器读指针、写指针和DMA控制器320停止为FIFO服务处的其他信息。由于流程控制单元318将这些信息写入了内部通道寄存器存储器,DMA控制器320可以从中断点开始恢复为被中断的FIFO提供服务。
考虑到DMA控制器参与本发明不连续状态部分的整体运作过程,当包括一个流标识的字节的下一个PES包被TPROC 214写入存储器控制器216时,流程控制单元318引起DMA_MARK信号变高。DMA_MARK信号的过渡触发微处理器116处的中断,并且打包的基本流包首部的地址被存储在微处理器已存取的输入指针FIFO中。由于这个打包的基本流首部可能有一个时间标记,所以对由不连续性指示位产生的标志位作出响应的微处理器116在储存的打包的基本流首部中搜索时间标记。一旦发现,会检索此时间标记值。微处理器116基于检索到的时间标记值设置定时器中断。
再参看图3,在本发明的典型实施例中,流程控制器单元318的内部存储器包括四个64×32位的块,每个块都分配给通道寄存器、新缓冲FIFO和指针FIFO。
在本发明的典型实施例中,每一个通道寄存器有128位并且最多有32个通道。所以有多达128×32个位以多个128位的格式分配给通道寄存器。
32位的字被写入新缓冲区和指针FIFO或从它们中读出。至少128×32位的内存(即128个字)可用于新缓冲区和指针FIFO中。另外,如果使用的通道少于32个,通道寄存器中未使用的空间被分配给新的缓冲区和指针FIFO。
以下是32个DMA通道和16个DMA通道的存储器分配示例。
1)32个被使用的通道的存储器分配新缓冲区FIFO=64×32位指针FIFO=64×32位通道寄存器=128×32位2)16个被使用的通道的存储器分配新缓冲区FIFO=64×32位指针FIFO=128×32位通道寄存器=128×16位时钟管理器218图2A和2B中所示的传输解码器110中的时钟管理器218使用连续PCR值同步本地27MHz的信号(由时钟信号电路122产生)。时钟管理器218中的计数器值被称为系统时间常数(STC)值。在本发明的典型实施例中,微处理器116通过内部微总线223存取计数器中的STC值。
时钟管理器218中的计数器定期与传输数据流中的PCR进行同步。当遇到数据流中的第一个PCR时,该PCR被“挤载”入计数器并成为初始STC值。当后来的PCR值被接收时,将它们与STC值相比较,以校正时钟信号电路122(例如,VCXO)的频率。在本发明中,此过程是通过使用在下文中会详细介绍的数字模拟转换器(DAC)实现的。一旦进行了相位错误校正,通常是将新的PCR值作为STC值载入。
一般每帧产生一次PCR值。在MPEG-2的标准中,至少每三帧内(大概十分之一秒)会产生一次PCR值。
典型的情况是,外部视频和音频解码器(118和120)通过更新外部解码器中的STC值与传输解码器110保持同步,该过程的实现基于时钟管理器218中保存的STC值。视频和音频解码器(118和120)通过将数据和接收到的打包的基本流数据流中的时间标记相比较,使用储存值来确定何时解码或显示数据。值得指出的是,在本发明的典型实施例中,传输解码器110、视频解码器118和音频解码器120都接收时钟管理器(218)产生的同一个27MHz的时钟信号。
传输解码器218包含对产生本地时钟信号的硬件支持。该信号对于某一个选定的程序来说是锁定在系统时钟信号上的。如上文所述,在特定的PCR_PID上接收的PCR值在串行接口上可为其他设备所用。
时钟管理器(218)包括一个系统时间计数器(STC)(图中未给出)、一个系统时间时钟寄存器(图中未给出)、一个程序时钟参考(PCR-Program Clock Reference)寄存器(图中未给出)、一个当前STC寄存器(图中未给出)、一个报警时钟中断寄存器(图中未给出)以及一个锁存从与选定的程序标识(PID)有关的首部中抽取的PCR值的逻辑部件(图中未给出)。它还包括串行PCR接口和用于控制外部系统时钟信号控制回路的DAC寄存器。
在本发明的典型实施例中,STC是由9位基部和33位扩展部组成的42位计数器。
STC基部将名义上的27MHz系统时钟输入信号分为300份。结果得到的90KHz信号驱动STC扩展。在任何时候,STC都能被在微处理器116上运行的软件写或读。当遇到一个不连续性指示位后,可以将接收到的PCR值自动加载到STC中。
如上文所述,可以通过在程序标识表项中设定PCR_PID位,从刚到达的位流中自动抽取PCR。处理接收到的PCR取决于软件设定的选项和接收PCR时当前传输包的不连续状态是否存在。
当包含PCR_PID的传输包被接收时,和传输首部中的不连续指示位为逻辑值1,可以确认是不连续状态。该不连续状态将一直持续下去,直到包含PCR_PID的传输包被接收时不连续性指示位为逻辑值0,或者当在PCR_PID包中发现下一个PCR为止。
如果设置为有效,当PCR被接收且不连续状态存在时,时钟管理器218自动将接收到的PCR载入STC中。此时,一个中断被发送到主微处理器116。
时钟管理器218包括一个初始化位。该位被软件置为1时,则无论不连续状态存在与否,下一个被接收到的PCR都将被载入STC中。然后初始化位被时钟管理器218自动清除。只有当STC不包含有效的PCR时(即,当选择了新的程序标识时),才设置初始化位。
如果没有不连续状态存在或自动STC载入功能被置为无效,接收到的PCR被储存在PCR寄存器中,并且可选择向主微处理器116发出一个中断。在获得PCR的同时,STC的当前状态被保存在STC寄存器中。储存下来的PCR和STC值被用于计算错误信号,从而控制外部系统的时钟信号(XOCLK)。
当接收到的传输包包括一个与PCR_PID等同的PID(程序标识)和一个PCR时,此PCR被锁存在PCR寄存器中。此时STC计数器的当前内容也被锁存在STC寄存器中,并且向主微处理器116发出一个中断。将两个值都锁存起来就消除了由于中断服务例程中存在变化的等待时间而产生的不确定性。在本发明的典型实施例中,两个寄存器都包括一个9位的基部和一个33位的扩展部。基部在300模块中,扩展部是用二进制表示的。在寄存器的内容被用于任何计算之前,它们可以被转化成二进制数。转化方法是将扩展部乘以300,然后将与基部相加。
当前的STC寄存器是一个只读寄存器,它允许微处理器116在任何时间获得STC的当前内容。通过外部微总线124,微处理器116能用这个值初始化视频解码器或音频解码器的STC。
如上文所述,传输解码器110包括一个10位的数字模拟转换器(DAC)230,它在时钟管理器218的时钟校正控制回路中使用。DAC230是只读的,也就是说,软件在存储器中存有最后载入DAC的值的副本。在运作中,DAC230被用于为外部谐振晶体电压控制振荡器VCXO122产生控制电压。后者是系统时钟频率(名义上是27MHz)的来源。通过比较锁存的PCR和STC值,软件能确定本地时钟信号是否需要校正。例如,软件能获取PCR和STC之间的差别,并将这个错误条件加到DAC230的输入寄存器的当前内容中去。
总体来说,本发明的不连续部分包括以下内容1)通道数据处理器(CDP)210核查接收到的传输包中的同步字节,以使该包生效。传输处理器(TPROC)214对传输首部进行语法分析,并将包的有效内容传送到存储器中的适当位置。根据传输首部中的程序标识值,数据被发送到存储器中的不同FIFO缓冲区(通道)中。
2)因为接收到的不连续性指示位不必和下一个PCR值在同一个包中,所以接收到下一个PCR值时,TPROC(214)将“挤载”时钟管理器(218)中的计数器。
3)当包括一个流标识字节的下一个打包的基本流包被传输处理器214写入存储器控制器216中时,DMA_MARK信号变高。这就导致存储器控制器216向微处理器116发出中断并将打包的基本流包首部的地址储存在一个输入指针FIFO中。这个打包的基本流首部可能有一个时间标记(可能是解码时间标记或显示时间标记)。对来自存储器控制器216的中断作出响应的微处理器116在打包的基本流首部中搜索时间标记,一旦发现,就检索时间标记值。
4)然后,微处理器116在时间标记值前略短于一帧的时间处设置一个定时器中断。
5)当此定时器中断发生时,微处理器116通过外部微总线124向视频和音频解码器发送新的PCR值,从而给了解码器足够的时间处理数据。这种处理发生在时间标记与视频或音频解码器中的计数器值比较之前,并且不会干扰与前一个PCR值相参照的数据的处理。视频/音频解码器224、226、228如上文所述,一旦传输包被接收、处理和存储起来,存储器控制器216从存储器114中读出打包的基本流包,并将它们发送到外部视频和音频解码器中。然而,在打包的基本流包到达外部解码器(118和120)前,它们被内部视频和音频处理器(224、226和228)处理。
这些内部处理器的一个重要功能在于确保离开传输解码器的数据流与外部解码器兼容。也就是说,不同的外部解码器有不同的数据需求。
例如,一些现在市场上可见的外部视频解码器能接受包括首部和有效部分的打包的基本流包流。这些流的形式主要与它被读出存储器时相同。另一方面,有些外部解码器只能接受对基本流(例如,打包的基本流包的有效部分而非首部部分)的处理要求。另外,后一种类型的解码器除了要求有数据流外,还要求相关的控制信息,如时间标记和字节计数等。由C-Cube制造的CL9100就是这样一种视频解码器。在此特参考其规格说明——CL9100多模式视频解码器用户手册(94年10月)——加以介绍。由此,视频处理器224可通过微处理器116进行设置,以格式化输出的数据流,使之与选定的外部解码器的要求兼容。
在处理C-Cube CL9100等外部视频解码器的接口方面,视频处理器224对打包的基本流包的流进行处理,从而去除打包的基本流的首部并将时间标记信息从打包的基本流首部中取出来。另外,视频处理器224通过使用计数器(图中未给出),对发送给外部解码器的打包的基本流包保持字节计数。那么,视频处理器224包含时间标记信息,保持字节计数并将打包的基本流包的有效部分传输给外部视频解码器。为了获得传送给外部解码器的时间标记和字节计数信息,视频处理器224向微处理器116发出一个中断。后者进行响应时,会通过内部微总线223从视频处理器224中读取时间标记和字节计数信息,并通过外部微总线124将这个控制信息发送到外部视频解码器中。
然而,有时在微处理器116能对来自视频处理器224的中断作出响应之前,另一个带有时间标记信息的打包的基本流首部就到达了。例如,当微处理器116在很长的时间里被更高优先级的任务占用时,这种情况就可能发生。在这种情况下,视频处理器224将时间标记信息和状态一起储存起来。具体来说,视频处理器224会保存一个状态寄存器,表明微处理器是否“丢失”了时间标记。在本发明的典型实施例中,微处理器116最后才开始读取时间标记信息,如果它象状态中表示的那样丢失了一个或多个时间标记,那么它将只能恢复最新的时间标记。
另外,既然时间标记信息和字节计数信息将被提供给外部解码器,那么当微处理器116丢失了一个时间标记时,视频处理器224保持一种累积式的字节计数,因为许多数据标记可能在微处理器116读取信息之前就到达了。然后,微处理器116读取最新的时间标记和累积式的字节计数,并将这些信息发送到外部视频解码器中。接下来,状态寄存器和字节计数器可以被重置。
如图5A中的流程图所示,接受到的数据的首部被分离并进行语法分析(步骤510)。时间标记信息被存储并且字节计数被保存(步骤510),由视频处理器224向微处理器116发出一个中断,提醒它时间标记信息可供读取(步骤514)。如果附加的时间标记信息在微处理器读取前一个时间标记信息之前就已收到,新时间标记信息被存储,字节计数器继续积累(步骤516),视频处理器224向微处理器116发出另一个中断,否则,微处理器读取状态寄存器、时间标记信息和字节计数信息并将它发送到外部视频解码器中(步骤518)。
调节某个外部解码器的另一个例子是使用位速率限制音频解码器,例如Zoran ZR38500 AC3音频解码器。在此特引用其技术说明书(1994年10月)以供参考。一般说来,大多数音频解码器提供一个数据请求,表明它们能接受音频数据,然后传输解码器110通过音频处理器(226/228)提供音频数据,直到外部音频处理器取消此请求。换句话说,这里存在着一种信号交换机制。
然而,位速率限制解码器,例如Zoran AC3音频解码器,要求音频AC3数据能作为音频数据帧发送,每一帧在首部中都包括一个帧时间和位速率。以高于预先确定的位速率发送数据可能会引起内部缓冲区溢出,从而导致数据丢失。进一步说,这些位速率限制解码器并不提供数据就绪的信号以表明它们已经准备好接收附加的音频数据。
所以,和视频解码器224一样,音频处理器226和228可被设置以调节选定的外部音频解码器。值得指出的是在本发明的典型实施例中,除非是对于微处理器116可以存取的地址,音频处理器(226/228)在本质上是相同的。
因此,当音频处理器(226/228)被编程用于与该类音频解码器接口时,它们假定解码器一直在发送数据请求信号。然而,当打包的基本流包音频数据从存储器控制器216中提供给音频处理器(226/228)时,接收到数据的打包的基本流首部被音频处理器进行语法分析。音频数据的帧大小和位速率被包含在经分析过的首部中。根据帧的大小和位速率,音频处理器(226/228)能确定帧边界(即帧时间)。有了帧时间信息,音频处理器(226/228)设置帧定时器,使得音频数据可用时,定时器被设定,一帧数据被触发到外部音频解码器及音频处理器(226/228)中,然后暂停,直到帧定时器超过时效。当定时器超过时效时,循环继续下去,每次一个音频帧,而另外的帧可用于向外部音频解码器中输送附加帧。控制信息,例如时间标记,由微处理器恢复并通过外部微总线发送出去。
如图5B中的流程图所示,从存储器中恢复打包的基本流包(步骤542),去除接收到数据的首部并进行语法分析(步骤530),确定一个帧时间(步骤532),定时器开始工作(步骤534),音频处理器(226/228)触发出一帧数据(步骤536),音频处理器(226/228)暂停,直到定时器超过时效(步骤538),尽管如图中所示,步骤542、530和532能在暂停期间执行。然后,此过程延续下去。
尽管在上述特定的实施例中,对跟踪MPEG-2传输数据流不连续性的系统时间常数进行更新的方法和设备进行了描述。但本发明并不局限于所示的细节。另外,无需脱离权利要求的范畴和本发明的精神实质,可实现细节的多种变化。
权利要求
1.一种用于传输解码器系统的方法,所述系统用于对传输数据流解码,该数据流包括由首部和有效部分组成的传输包,首部包括不连续性指示位,所述系统包括至少一个缓冲区和至少一个解码器,前者用于临时存储接收到的传输数据流,后者用于对来自缓冲区的数据输出解码供显示之用,所述每个传输解码器和解码器都有各自的计数器,此方法用于在设定了不连续状态后处理程序计数器参考(PCR)的接收,其特征在于包括以下步骤对接收到的传输包进行语法分析,并将数据存入存储器;一旦接收到下一个PCR值,将接收到的程序计数器参考值载入传输解码器计数器中;对PCR值之后接收并储存在存储器中的数据进行数据标记搜索并将检索该数据标记值;基于检索后的时间标记值设置定时器中断;以及当定时器中断发生时,将PCR值传送给解码器的计数器,从而为解码器提供充足的时间处理数据。
2.根据权利要求1所述的方法,其中,在时间标记值之前不足一帧的时间处设置定时器中断。
3.根据权利要求1所述的方法,其中的搜索的步骤包括一旦接收到含有时间标记值的传输包,中断一台主微控制器以发出与存储的传输包相关的主微控制器地址信息;以及接着,在存储的传输包的适当地址位置搜索时间标记值。
4.根据权利要求1所述的方法,还包括以下步骤在进行语法分析之前,通过确定接收到的传输包的边界是否与预确定的包边界符合使它们生效,并且只对生效的包进行语法分析。
5.根据权利要求4所述的方法,其中使接收到的传输包生效的步骤包括检查接收到传输包中的同步位。
6.在用于接收传输数据流的系统中的一种处理不连续性指示位的接收的装置,该数据流包括由首部和有效部分组成的传输包,首部包括不连续性指示位,所述系统包括至少一个缓冲区和至少一个解码器,前者用于临时存储接收到的传输数据流,后者用于解码来自缓冲区的数据输出供显示之用,所述每个传输解码器和解码器都有分离的计数器,所述装置的特征在于包括接收和检测不连续性指示位装置;对传输包进行语法分析并将数据存储在存储器中的装置;一旦接收到下一个程序计数器参考值,将接收到的程序计数器参考值载入传输解码器计数器中的装置;在存储器中存储的数据中搜索时间标记并在发现后检索时间标记值的装置;基于时间标记值设置定时器中断的装置;以及当定时器中断发生时,将程序计数器参考值发送到该计数器的装置。
7.在一个用于解码传输数据流的传输解码器系统中,该数据流包括由首部和有效部分组成的传输包,首部包括不连续性指示位,所述传输解码器与至少一个外部解码器配合以解码来自传输解码器的数据输出,所述每个传输解码器和外部解码器都有分离的计数器以保持与数据流同步,一种处理不连续性指示位的接收的方法包括以下步骤接收不连续性指示位;对传输包进行语法分析并将数据存储在存储器中;一旦接收到下一个程序计数器参考值,将接收到的程序计数器参考值载入传输解码器计数器中;在存储器存储的数据中搜索时间标记并在发现后检索时间标记值;在时间标记值前大概一帧的时间处设置定时器中断;以及当定时器中断发生时,将程序计数器参考值发送到解码器的计数器中,从而为解码器提供充足的时间进行数据处理。
全文摘要
接收和处理使用MPEG-2格式的传输数据流的传输解码器包括:与物理层通道接口的连接,缓冲存储器,主微处理器,音频和视频解码器,时钟信号电路。收到不连续性指示位时对传输包首部进行语法分析并将有效部分存于存储器。收到下一程序计数器参考(PCR)值时将其载入计数器。在存储器内搜索时间标记,若发出则将其恢复。在时间标记值前约一帧时刻设置定时器中断,该中断发生时,程序计数器参考值被送往解码器,为解码器提供足够数据处理时间。
文档编号H04N7/52GK1173783SQ97103739
公开日1998年2月18日 申请日期1997年3月31日 优先权日1996年3月29日
发明者塞卜瑞舍·V·莱姆波利, 约瑟夫·P·奥哈拉, 爱德温·罗伯特·梅依尔, 罗伯特·T·莱恩 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1