撷取封包化的基本数据流中的承载数据的方法与相关装置的制作方法

文档序号:7590722阅读:136来源:国知局
专利名称:撷取封包化的基本数据流中的承载数据的方法与相关装置的制作方法
技术领域
本发明涉及一种撷取数据封包中的承载数据的方法与相关装置,特别涉及一种从一封包化的基本数据流中的一数据封包撷取承载数据的方法与相关装置。
背景技术
影音数据经过编码后称之为基本数据流(Elementary Stream,简称ES),而ES经过分封处理后便成为封包化的基本数据流(Packetized ElementaryStream,简称PES)。
在运动图形编码专家组2(Moving Picture Coding Experts Group 2,以下简称MPEG 2规格)中,定义了两种用以传输PES的数据流格式,分别为程序数据流(Program Stream,简称PS)及传输数据流(Transport Stream,简称TS)。
程序数据流较适合运用于错误发生率极低的储存媒体中。这是由于程序数据流的封包(PS Packet)大小并不固定,因此并不适用于需要错误校正的系统。程序数据流的压缩数据主要是储存于盘片上,如DVD的激光视盘。程序数据流基本上近似于运动图形编码专家组1(MPEG 1规格)中的系统数据流(System Stream),但是内部是使用修改过的语法(Syntax)以及新的函式以提供一些较先进的功能。
传输数据流则使用了固定长度的封包,除了硬件较好处理之外,也更适合进行错误更正的演算。因此,传输数据流主要是应用在较容易产生错误的传输环境之中,如IEEE 1394传输协议或数字视频广播(Digital VideoBroadcasting,DVB)。传输数据流中每一数据封包(TS Packet)大小固定为188字节,其中前4个字节是所谓的标题(Header),而标题后的承载数据(Payload)部分即是PES的封包数据。在每一传输数据流封包的标题上有一字段存放有封包识别码(Packet Identifier,PID),PID值是代表该传输数据流封包的内容是属于视频数据、音频数据或是数据数据。
一般而言,已知技术以直接存储器存取方式(Direct Memory Access,DMA)传输一PES封包内的承载数据时,所需的参数包含有来源地址(SourceAddress)、目的地址(Destination Address)、传输长度(TransferringLength)等等,需要倚赖该PES封包标题内所纪录的该PES封包长度的信息。然而,每个PES封包的标题中用以纪录封包长度的字段仅有2个字节(16个位),当一PES封包的封包长度超过16个位所能表示的范围时,该字段会被定义为0(见ISO/IEC 13818-1,Information Technology-Generic Coding ofMoving Pictures and Associated Audio InformationSystems)。如此一来,已知技术在传输封包长度字段被定义为0的该PES封包时,因为无法由该PES封包的标题中得知该PES封包的确切长度,故无法采用直接存储器存取方式进行数据传输,而降低了数据传输时的效率。

发明内容
因此本发明的主要目的在于提供一种藉由计算一数据封包的实际长度值,以撷取该数据封包中的承载数据的方法与相关装置,特别涉及一种从一封包化的基本数据流(PES)中的一数据封包撷取承载数据的方法与相关装置。
本发明的数据撷取系统是用以从一传输数据流或一程序数据流中撷取一封包化的基本数据流封包的承载数据。该数据撷取系统包含有一数据来源装置,用以提供一数据封包(PES Packet);一封包处理装置,电连于该数据来源装置,用以计算该数据封包的长度,并产生一封包长度值;一传输接口,电连于该封包处理装置,用以输出储存于该封包处理装置的该数据封包中的承载数据;以及一控制电路,用以控制该数据撷取系统的运作;其中,该控制电路是依据该封包长度值以操控该传输接口输出该数据封包当中的承载数据。
本发明的优点在于,即使一PES封包的封包长度字段被定义为0、或是由于各种因素而使得该封包长度字段内所记录的封包长度与实际的封包长度不符时,亦可于接收到该PES封包的过程中,计算出该PES封包的长度,进而可以直接存储器存取方式(DMA)传输该PES封包中的承载数据,而不会影响到数据的传输效率。
附图简述

图1为本发明的数据撷取系统的示意图。
图2为本发明撷取一PES封包的承载数据的方法的流程图。
图3为图1中计算装置的一实施例的时序图。
图4与图5为图1中计算装置的其它实施例的示意图。
附图符号说明10 控制电路20 封包来源装置22 滤波器30 封包处理装置32 计算装置34 循环冗长检查码检验器40 储存装置42、44、46 储存媒体50 传输接口100数据撷取系统具体实施方式
图1所示为本发明的数据撷取系统100的示意图。数据撷取系统100包含有一控制电路10;一封包来源装置20,电连于控制电路10;一封包处理装置30,电连于控制电路10与封包来源装置20;以及一传输接口50,电连于控制电路10与封包处理装置30。其中,控制电路10是用以控制数据撷取系统100的运作;封包来源装置20是用以接收并过滤一传输数据流或一程序数据流,以输出一PES封包Px;封包处理装置30主要是用以接收该封包Px,并计算该封包Px的长度值,其包含有一计算装置32、一循环冗长检查码(Cyclic Redundancy Check,CRC)检验器34、以及一储存装置40;而传输接口50是用以输出该封包Px中的承载数据Payload_x。
简言之,数据撷取系统100是通过封包来源装置20接收一传输数据流或一程序数据流,并从中撷取出一PES封包Px,接着利用封包处理装置30计算出该封包Px的长度值,最后控制电路10依据该长度值操控传输接口50,以直接存储器存取(DMA)方式输出该封包Px的承载数据。以下将说明数据撷取系统100的详细运作情形。
请参考图2(并一并参考图1)。图2为本发明的数据撷取系统100从一传输数据流或一程序数据流中,撷取一PES封包的承载数据的方法的流程图200。流程图200包含有以下步骤步骤202开始。
步骤204利用封包来源装置20接收并过滤一传输数据流或一程序数据流,以提供一PES封包Px。
步骤206利用封包处理装置30的计算装置32计算该封包Px的长度,并产生一相对应的长度值Length_x。
步骤208利用封包处理装置30的循环冗长检查码(CRC)检验器34,检查该封包Px的循环冗长检查码的正确性,并产生一相对应的检查值CRC_x。
步骤210利用控制电路10根据该长度值Length_x与该检查值CRC_x,操控传输接口50输出该封包Px的承载数据Payload_x。
步骤212结束。
以下以数据撷取系统100从一传输数据流中撷取一PES封包的承载数据的过程为例,说明流程图200的运作方式。
在步骤204中,本发明的数据撷取系统100是利用封包来源装置20接收一传输数据流,并以封包来源装置20中的一滤波器22过滤所接收到的该传输数据流。在本发明的一较佳实施例中,进入封包来源装置20的数据流是传输数据流,因此滤波器22可为一封包识别码滤波器(Packet IdentifierFilter,PID Filter),用以从所接收到的该传输数据流中,过滤所需要的TS封包,并加以重组后输出一PES封包Px。该封包Px会传送到封包处理装置30进行处理,并暂存在储存装置40中。
在步骤206中,封包处理装置30会利用计算装置32在接收该封包Px的同时,计数该封包Px的位数。如此一来,计算装置32便可在接收该封包Px的过程中,计算出该封包Px的长度值Length_x,并储存在储存装置40中。
请注意,本发明的一项技术特征在于,当封包来源装置20从一传输数据流或一程序数据流中过滤出该封包Px,并将该封包Px传输至封包处理装置30的过程中,封包处理装置30会同时利用计算装置32计算该封包Px的长度。在本发明的一较佳实施例中,计算装置32是根据滤波器22过滤该封包Px的过程中所产生的相关信号作计算的动作,其详细方式将在稍后说明。
在步骤208中,封包处理装置30会利用循环冗长检查码检验器34检验该封包Px的标题内所纪录的循环冗长检查码的正确性,以产生相对应的该检查值CRC_x,并将该检查值CRC_x储存在储存装置40中。在本发明的一较佳实施例中,若该封包Px的循环冗长检查码检验结果是正确无误,循环冗长检查码检验器34会设定该检查值CRC_x为1。反之,若该封包Px的循环冗长检查码检验结果有错误,则循环冗长检查码检验器34会设定该检查值CRC_x为0。上述该检查码CRC_x的值所代表的意义,仅是为举例说明的方便,实际上,该检查值CRC_x并不限定于仅能为0或1,亦可设为其它预先定义的值。
很明显地,流程图200的步骤206与步骤208的顺序可以颠倒,而不会影响本发明的功效。
在步骤210中,数据撷取系统100的控制电路10会读取储存装置40中所储存的该长度值Length_x与该检查值CRC_x,以及该封包Px的标题,以控制传输接口50输出该封包Px的承载数据Payload_x。
若控制电路10所读取到的该检查值CRC_x为0,则表示该封包Px可能在传输过程中发生了错误。因此,控制电路10便可控制传输接口50放弃传输该封包Px的承载数据Payload_x。反之,若该检查值CRC_x为1,表示该封包Px的内容正确,则控制电路10便可依据所读取到的该长度值Length_x,计算出该封包Px的承载数据Payload_x的长度。由于该长度值Length_x所代表的数据长度,是该封包Px的标题(Header)部分与承载数据Payload_x部分两者的长度总和,而该封包Px的标题长度是纪录在该封包Px的标题内的PES标题数据长度栏中。当控制电路10读取了储存装置40中所储存的该封包Px的标题后,便可得知该封包Px的标题长度。因此,控制电路10只要将该长度值Length_x减去该封包Px的标题长度,便可得到该封包Px的承载数据Payload_x的实际长度值Length_x_payload。
如此一来,控制电路10只要将该封包Px位于储存装置40中的地址,平移该封包Px的标题长度的量,便可得到该封包Px的承载数据Payload_x的起始地址Address_x_payload。在步骤210中,控制电路10便可将该起始地址Address_x_payload,以及所需传输的数据长度Length_x_payload传送至传输接口50,以使传输接口50根据该起始地址Address_x_payload与数据长度Length_x_payload,以直接存储器存取(DMA)方式,将储存装置40中的该封包Px的承载数据Payload_x传送至一目的装置(例如一存储器或一视频译码器)。
为说明前述计算装置32计算该封包Px的方式,请参考图3。图3为图1中计算装置32的一实施例的时序图500。其中时钟信号CLK为计算装置32的工作时钟。而信号PID_MATCH代表滤波器22所处理中的一TS封包是否为组成该PES封包Px的封包,当信号PID_MATCH为逻辑1时,表示滤波器22目前所处理的一TS封包是用来重组成该PES封包Px的封包之一,因此计算装置32会对当时封包处理装置30所接收到的位数据进行计数;反之,则计算装置32不对当时的位数据进行计数。信号P_OUT代表滤波器22输出数据的状态,当P_OUT为逻辑1时,表示滤波器22正在传输数据至封包处理装置30,因此,信号P_OUT亦可视为计算装置32的使能信号。信号P_START表示滤波器22所输出的位数据是否为该PES封包Px的起始点,当P_START为逻辑1时,代表滤波器22目前输出的位数据是该PES封包Px的起始点,因此,在本发明的一实施例中,计算装置32会归零并在下一工作时钟CLK的正缘触发时开始计数。
如图3所示,在时间510时,P_OUT信号为逻辑1,表示滤波器22要传输数据至封包处理装置32。此时,PID_MATCH信号为逻辑1,且P_START信号亦为逻辑1,表示封包处理装置所接收到的数据是该封包Px的起始点,因此计算装置32要归零,并在下一工作时钟CLK的正缘触发时进行计数。在时间520时,计数装置32的计数值便从1开始递增,一直到时间530时,计算装置的计数值已增加至3。然而,在时间530至时间540之间,由于PID_MATCH信号为逻辑0,因此计算装置32停止计数,一直停留在3。
接下来在时间540时,由于PID_MATCH信号升为逻辑1,因此,计算装置32于工作时钟CLK的下一个正缘触发时,亦即时间550时,又会继续递增计数值。一直到时间560时,P_OUT信号降为逻辑0,表示滤波器22停止传输数据至封包处理装置32,因此,计算装置亦暂停计数,此时计数值已累积到6。当P_START信号再次升为逻辑1前,计数值都会陆续往上累积,表示滤波器22所输出的数据仍属于该PES封包Px。意即,在本发明的一较佳实施例中,当封包来源装置20将该封包Px完全传送至封包处理装置30时,计算装置32便可随即完成计算该封包Px长度的动作,并产生相对应的该长度值Length_x。因此,本发明的计算装置32在计算该封包Px长度时,并不会延迟传输该封包Px的时间。
请注意,在上述说明中,该PES封包Px、该长度值Length_x、以及该检查值CRC_x是均储存在储存装置40中。在本发明的一实施例中,储存装置40可为一易失性存储器(像是DRAM、SRAM)。该封包Px与其它相关信息(该长度值Length_x以及该检查值CRC_x等),可通过一电连于储存装置40的多路复用器有次序性地输出至储存装置40,以将该PES封包Px、该长度值Length_x、以及该检查值CRC_x储存在储存装置40的连续地址上,亦可分别储存该等数据于储存装置40的不同位置。
然而,在本发明的实际应用中,储存装置40亦可为不同储存媒体的组合。请参考图4与图5。图4与图5分别为图1的储存装置40的不同实施例的示意图。如图4所示,储存装置40包含有一第一储存媒体42,电连于封包来源装置20;以及一第二储存媒体44,电连于计算装置32与循环冗长检查码检验器34。第一储存媒体42可为一易失性存储器(像是DRAM、SRAM),用以暂存该封包Px。而第二储存媒体44可为一易失性存储器或一缓存器等,用以暂存该长度值Length_x以及该检查值CRC_x。而图5中的储存装置40则包含有第一储存媒体42,电连于封包来源装置20;第二储存媒体44,电连于计算装置32;以及一第三储存媒体46,电连于循环冗长检查码检验器34。如前所述,第一储存媒体42可为一易失性存储器(像是DRAM、SRAM),用以暂存该封包Px。第二储存媒体44可为一易失性存储器或一缓存器等,用以暂存该长度值Length_x。而第三储存媒体46亦可为一易失性存储器或一缓存器等,用以暂存该检查值CRC_x。事实上,凡使用任何能暂存该PES封包Px、该长度值Length_x、以及该检查值CRC_x的储存媒体,均属于本发明的范围。
另外,在上述说明图2流程图200的运作方式时,是以数据撷取系统100从一传输数据流中撷取一PES封包承载数据的过程为例。如前所述,本发明是数据撷取系统100亦可从一程序数据流中撷取一PES封包的承载数据。在不影响本发明技术揭露的情况下,以下仅简单说明其运作方式。
在步骤204中,封包来源装置20接收到一程序数据流时,会使用滤波器22过滤所接收到的该程序数据流。在本发明的另一实施例中,滤波器22是一PS至PES滤波器(PS to PES Filter),用以从所接收到的该程序数据流中,过滤所需要的PS封包,并加以重组后输出一PES封包Py。接着,该封包Py会传送到封包处理装置30进行处理,并暂存在储存装置40中。
在步骤206中,封包处理装置30会利用计算装置32在接收该封包Py的过程中,计算出该封包Py的长度值Length_y,并储存在储存装置40中。接下来在步骤208中,封包处理装置30会利用循环冗长检查码检验器34检验该封包Py的标题内所纪录的循环冗长检查码的正确性,以产生相对应的该检查值CRC_y,并将该检查值CRC_y储存在储存装置40中。
同理,在步骤210中,数据撷取系统100的控制电路10会读取储存装置40中所储存的该长度值Length_y与该检查值CRC_y,以及该封包Py的标题,以控制传输接口50以直接存储器存取方式输出该封包Py的承载数据Payload_y至一目的装置。
由上述可知,数据撷取系统100处理一传输数据流或一程序数据流的方式很类似,唯一的差别仅在于所使用的滤波器22的功能不同。事实上,本发明的封包来源装置20亦可同时包含有一封包识别码滤波器以及一PS至PES滤波器。当封包来源装置接收到一数据流时,仅需先行判断该数据流是一传输数据流或一程序数据流,再选择相对应的一滤波器对该数据流进行处理,便可提供一PES封包。接着再对该PES封包进行流程图200中步骤206至步骤210的步骤,便可以直接存储器存取方式输出该PES封包的承载数据。
请注意,在上述本发明的一较佳实施例中,封包处理装置30在步骤208利用循环冗长检查码检验器34,检查该封包的循环冗长检查码的正确性,并产生一相对应的检查值,以供控制电路10在步骤208中据以操控传输接口50的运作。此是为了多一层的检查,以减少封包数据传输过程的错误,本发明并不限定于需要检查该封包的循环冗长检查码的正确性。在本发明的另一实施例中,封包处理装置30中可以不需要循环冗长检查码检验器34,意即,步骤208可以省略。此时,在步骤210中,控制电路10是根据该长度值Length_x操控传输接口50输出该封包Px的承载数据Payload_x。
另外,本发明的数据撷取系统100亦可以软件程序代码的形式加以实现。图1中数据撷取系统100的各组件均可以程序代码实现,如此一来,当一计算机系统执行该等程序代码时,便可依据本发明的概念撷取一传输数据流或一程序数据流中的一PES封包的承载数据。
由上述可知,不论一PES封包的标题中的封包长度字段是否被定义为0,本发明的数据撷取系统100皆可利用计算装置32在过滤出该PES封包的同时,计算出该封包的实际长度。因此,本发明可有效率地取得该PES封包长度的信息,并以存储器直接存取方式输出该PES封包中的承载数据,不会因该PES封包的封包长度字段被定义为0而影响到承载数据的传输。
相较于已知技术撷取一封包长度字段被定义为0的PES封包的承载数据时,因为无法掌握该PES封包的确切长度,而必须一边传递该PES封包的承载数据一边检查是否已经到达下一PES封包的开头,而影响了数据传输时的效率,本发明的数据撷取系统与数据撷取方法很明显地具有技术上的进步性。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明专利的涵盖范围。
权利要求
1.一种从一封包化的基本数据流中的一数据封包撷取承载数据的方法,该方法包含有(a)使用一封包处理装置计算所输入的该数据封包的长度,以产生一相对应的封包长度值;以及(b)根据该封包长度值输出该数据封包中的承载数据。
2.如权利要求1所述的方法,其中,在步骤(b)中另包含有使用一传输接口输出该数据封包的承载数据。
3.如权利要求2所述的方法,其另包含有使用一控制电路,根据该封包长度值控制该传输接口输出该数据封包的承载数据。
4.如权利要求3所述的方法,其另包含有根据一相对应于该数据封包的循环冗长检查码正确性的检查值,控制该传输接口输出该数据封包中的承载数据。
5.如权利要求4所述的方法,其另包含有使用一循环冗长检查码检验器,根据该数据封包当中的循环冗长检查码的正确性产生该检查值。
6.如权利要求4所述的方法,其另包含有使用一储存媒体储存该数据封包、该封包长度值、以及该检查值。
7.如权利要求4所述的方法,其另包含有使用一第一储存媒体储存该数据封包,以及使用一第二储存媒体储存该封包长度值与该检查值。
8.如权利要求4所述的方法,其另包含有使用一第三储存媒体储存该数据封包、使用一第四储存媒体储存该封包长度值,以及使用一第五储存媒体储存该检查值。
9.如权利要求1所述的方法,其另包含有使用一储存媒体储存该数据封包与该封包长度值。
10.如权利要求1所述的方法,其另包含有使用一第一储存媒体储存该数据封包,以及使用一第二储存媒体储存该封包长度值。
11.一种数据撷取系统,用以从一传输数据流或一程序数据流中撷取一封包化的基本数据流封包的承载数据,该数据撷取系统包含有一数据来源装置,用以提供一数据封包;一封包处理装置,电连于该数据来源装置,用以计算该数据封包的长度,并产生一封包长度值;一传输接口,电连于该封包处理装置,用以自该封包处理装置接收该数据封包,并输出该数据封包中的承载数据;以及一控制电路,用以控制该数据撷取系统的运作;其中,该控制电路是依据该封包长度值以操控该传输接口输出该数据封包当中的承载数据。
12.如权利要求11所述的数据撷取系统,其中,该数据来源装置包含有一封包识别码滤波器,用来过滤一传输数据流以提供该数据封包。
13.如权利要求11所述的数据撷取系统,其中,该数据来源装置包含有一程序数据流至封包化的基本数据流滤波器,用来过滤一程序数据流以提供该数据封包。
14.如权利要求11所述的数据撷取系统,其中,该封包处理装置包含有一计算装置,电连于该数据来源装置,用以计算该数据封包的长度并产生该封包长度值;以及一第一储存媒体,电连于该数据来源装置与该传输接口,用来储存该数据封包,并将该数据封包传送至该传输接口;其中,该第一储存媒体是作为该数据来源装置与该传输接口间的一缓冲器。
15.如权利要求14所述的数据撷取系统,其中,该封包长度值是储存在该第一储存媒体。
16.如权利要求14所述的数据撷取系统,其中,该封包处理装置另包含有一第二储存媒体,电连于该计算装置,用以储存该封包长度值。
17.如权利要求14所述的数据撷取系统,其中,该封包处理装置另包含有一循环冗长检查码检验器,电连于该数据来源装置,用以检查该数据封包的循环冗长检查码的正确性,并产生一检查值。
18.如权利要求17所述的数据撷取系统,其中,该控制电路是依据该封包长度值与该检查值,以操控该传输接口输出该数据封包当中的承载数据。
19.如权利要求17所述的数据撷取系统,其中,该检查值是储存在该第一储存媒体。
20.如权利要求17所述的数据撷取系统,其中,该封包处理装置另包含有一第二储存媒体,电连于该计算装置,用以储存该检查值。
21.如权利要求17所述的数据撷取系统,其中,该封包处理装置另包含有一第三储存媒体,电连于该循环冗长检查码检验器,用以储存该检查值。
全文摘要
本发明提供一种数据撷取系统,用以从一传输数据流或一程序数据流中撷取一封包化的基本数据流封包的承载数据。该数据撷取系统包含有一数据来源装置,用以提供一数据封包;一封包处理装置,电连于该数据来源装置,用以计算该数据封包的长度,并产生一封包长度值;一传输接口,电连于该封包处理装置,用以输出储存于该封包处理装置的该数据封包中的承载数据;以及一控制电路,用以控制该数据撷取系统的运作;其中该控制电路系依据该封包长度值以操控该传输接口输出该数据封包当中的承载数据。
文档编号H04L12/56GK1668027SQ20041002871
公开日2005年9月14日 申请日期2004年3月10日 优先权日2004年3月10日
发明者蔡锦煜 申请人:联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1