一种ts流硬件解析方法及系统

文档序号:1957038 发布日期:2021-12-10 浏览:16次 >En<

阅读说明:本技术 一种ts流硬件解析方法及系统 (TS (transport stream) hardware analysis method and system ) 是由 金瑜军 丁锐 王祥 林小明 于 2021-08-10 设计创作,主要内容包括:一种TS流硬件解析方法及系统,TS流硬件解析方法包括以下步骤:将TS数据存储至静态存储单元;在静态存储单元中识别TS包的同步字节;根据同步字节获取TS包中的TS包头数据,TS包头数据包括同步字节、PID;根据PID确认TS包的具体类型;若TS包确认为PCR包,则获取PCR包中的PCR值;若TS包确认为AV包,则提取TS包中的有效数据并写入动态存储单元中。本发明将软件解码的TS数据存储到静态存储单元,又利用TS包的长度固定的特点,可以直接确定同步字节的位置,进而可以利用同步字节来直接确定TS包头数据的位置,以便完成对AV包中有效数据的提取。本发明相较于软件解析方法而言,解析TS数据过程依靠硬件完成,不需要软件参与,极大的降低了对CPU资源的占用。(A TS hardware analysis method and a system thereof are provided, the TS hardware analysis method comprises the following steps: storing the TS data to a static storage unit; identifying a sync byte of a TS packet in a static storage unit; acquiring TS packet header data in the TS packet according to the synchronous bytes, wherein the TS packet header data comprises the synchronous bytes and PID; confirming the specific type of the TS packet according to the PID; if the TS packet is confirmed to be a PCR packet, acquiring a PCR value in the PCR packet; if the TS packet is confirmed to be an AV packet, valid data in the TS packet is extracted and written into the dynamic storage unit. The invention stores the TS data decoded by the software into the static storage unit, and can directly determine the position of the synchronous byte by utilizing the characteristic that the length of the TS packet is fixed, and further can directly determine the position of the TS packet header data by utilizing the synchronous byte so as to finish the extraction of effective data in the AV packet. Compared with a software analysis method, the TS data analysis process is completed by hardware, software does not need to participate, and occupation of CPU resources is greatly reduced.)

一种TS流硬件解析方法及系统

技术领域

本发明属于电子信息技术领域,具体涉及一种TS流硬件解析方法及系统。

背景技术

在MPEG-2标准中,有两种不同类型的码流输出到信道,一种是节目码流(programstream,PS),适合没有误差产生的媒体存储,比如,DVD等存储介质;另外一种是传输流(Transport Stream,TS),即MPEG-2标准中的传输流,适用于有信道噪声产生的传输,能够在网络中进行远距离的传送,因此,TS广泛用于广播电视系统以及网络流媒体中。

TS文件的基本存储单位为TS包,每一个包的大小固定为188个字节,需要将TS包解析获取有效数据后,通过对应的显示接口输出显示。这个TS流解析的过程通常是由软件来完成的,会消耗较多的CPU资源,对于嵌入式系统来说会导致CPU资源不够用,进而影响系统的实时性,对于手机投屏的终端用户来说就是投屏延迟过大。

发明内容

本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种TS流硬件解析方法,所述TS流硬件解析方法解决了TS流解析过程中对CPU资源占用过多的问题。本发明还提出了一种TS流硬件解析系统。

根据本发明第一方面实施例的TS流硬件解析方法,包括以下步骤:

将TS数据存储至静态存储单元;

在所述静态存储单元中识别TS包的同步字节,所述同步字节用于表征所述TS包的起始位置;

根据所述同步字节获取所述TS包中的TS包头数据,所述TS包头数据包括所述同步字节、PID;

根据所述PID确认所述TS包的具体类型,所述具体类型包括PCR包、AV包;

若所述TS包确认为所述PCR包,则获取所述PCR包中的PCR值;

若所述TS包确认为所述AV包,则提取所述TS包中的有效数据并写入动态存储单元中。

根据本发明实施例的TS流硬件解析方法,至少具有如下技术效果:将软件解码的TS数据存储到静态存储单元,又因为TS包的长度固定为188个字节,所以可以直接确定同步字节的位置,进而可以利用同步字节来直接确定TS包头数据的位置,并可以根据TS包头数据中PID直接确定TS包的具体类型,从而完成对AV包中有效数据的提取。本发明实施例的TS流硬件解析方法相较于传统的软件解析方法而言,解析TS数据过程依靠硬件完成,不需要软件参与,极大的降低了对CPU资源的占用,适合进行产业化推广。

根据本发明的一些实施例,所述将TS数据存储至静态存储单元,包括以下步骤:

将长度为预设的码流长度的TS数据写入内存缓冲单元中;

从所述内存缓冲单元中读取长度为预设的输入单位长度的TS数据,并存储至所述静态存储单元中,所述输入单位长度大于单个所述TS包的长度。

根据本发明的一些实施例,将所述TS包中有效数据写入动态存储单元中,包括以下步骤:

向中间寄存器写入所述有效数据,所述中间寄存器用于存储预设的输出单位长度的所述有效数据;

当所述中间寄存器写满,将所述中间寄存器内所述有效数据写入所述动态存储单元。

根据本发明的一些实施例,所述TS包头数据还包括调整字段信息,所述调整字段信息对应第一调整状态、第二调整状态和第三调整状态,所述第一调整状态用于表征仅含有调整字段,所述第二调整状态用于表征仅含有有效负载,所述第三调整状态用于表征即含有调整字段又含有有效负载;若所述TS包确认为AV包,所述提取所述TS包中的有效数据并写入动态存储单元中,包括以下步骤:

若所述调整字段信息为所述第一调整状态或所述第三调整状态,获取所述TS包中调整字段长度信息、PCR标志信息;若所述调整字段长度信息为0,结束此步骤;若所述调整字段长度信息不为0且所述PCR标志信息有效,读取所述TS包中AV_PCR值;

若所述调整字段信息为所述第二调整状态或所述第三调整状态,获取所述TS包中有效数据,并将所述有效数据写入所述动态存储单元中。

根据本发明的一些实施例,所述TS包头数据还包括有效负载启动信息,所述有效负载启动信息用于表征所述TS包的位置信息,所述位置信息包括PES起始位置、中间位置,所述PES起始位置对应的所述TS包为PES起始包,所述中间位置对应的所述TS包为中间包;若所述TS包确认为PES起始包,所述获取所述TS包中有效数据,包括以下步骤:

获取所述PES起始包中PES头数据;

根据所述PES头数据获取所述PES起始包中有效数据。

根据本发明的一些实施例,所述PES头数据包括码流标识、数据包起始符、分组原始流长度信息,所述码流标识对应第一数据状态、第二数据状态,所述第一数据状态用于表征所述PES起始包仅包含有效数据,所述第二数据状态用于表征所述PES起始包既包含PES包头信息又包含有效数据;

所述根据所述PES头数据获取所述PES起始包中有效数据,包括以下步骤:

若所述码流标识确认为第一数据状态,根据所述数据包起始符、分组原始流长度信息直接提取有效数据;

若所述码流标识确认为第二数据状态,获取PTS数据、DTS数据、PES数据、所述有效数据,并将所述PTS数据、DTS数据、PES数据写入IO寄存器。

根据本发明的一些实施例,当所述码流标识确认为第二数据状态,所述PTS数据、所述DTS数据、所述PES数据、所述有效数据由以下步骤获得:

从所述PES起始包中获取PTS标识信息、DTS标识信息、PES专用标志信息、PES包头长度;

依据所述PTS标识信息、DTS标识信息、PES专用表示信息从所述PES起始包中读取所述PTS数据、所述DTS数据、所述PES数据,并写入所述IO寄存器;

根据所述PES包头长度读取所述PES起始包中所述有效数据。

根据本发明的一些实施例,所述中间包中仅包含有效数据,若所述TS包确认为中间包,所述获取所述TS包中有效数据,包括以下步骤:

直接获取所述中间包中有效数据。

根据本发明第二方面实施例的TS流硬件解析系统,包括:

静态存储单元,用于存储TS数据;

硬件解析电路,用于识别所述静态存储单元中TS包的同步字节、根据所述同步字节确定所述TS包中的TS包头数据、根据所述TS包头数据中的PID确定所述TS包的具体类型、以及对AV包中有效数据的提取;其中,所述同步字节用于表征所述TS包的起始位置,所述TS包头数据包括所述同步字节、所述PID,所述具体类型包括PCR包、所述AV包;

动态存储单元,用于写入所述有效数据;

数据写出电路,用于将所述硬件解析电路解析的有效数据写入到所述动态存储单元中。

根据本发明实施例的TS流硬件解析系统,至少具有如下技术效果:将软件解码的TS数据存储到静态存储单元,又因为TS包的长度固定为188个字节,所以可以直接确定同步字节的位置,进而可以利用同步字节来直接确定TS包头数据的位置,并可以根据TS包头数据中PID直接确定TS包的具体类型,从而完成对AV包中有效数据的提取并写入动态存储单元。本发明实施例的TS流硬件解析系统提供了执行本发明实施例的TS流硬件解析方法系统构架,提高了内存总线的访问效率,减少了带宽需求,进而可以保证本发明实施例的TS流硬件解析方法的正常执行,从而达到降低对CPU资源占用的目的。

根据本发明的一些实施例,上述TS流硬件解析系统还包括:

内部缓冲单元,与所述静态存储单元的输入端连接,用于缓存长度为预设的码流长度的TS数据;所述静态存储单元每次存储长度为预设的输入单位长度的所述TS数据,所述输入单位长度大于单个所述TS包的长度;

中间寄存器,用于存储预设的输出单位长度的所述有效数据;所述数据写出电路和所述中间寄存器共同用于以所述输出单位长度将所述有效数据写入所述动态存储单元。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1是本发明实施例的TS流硬件解析方法的流程简图;

图2是本发明实施例的TS流硬件解析系统的结构框图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。

在本发明的描述中,需要理解的是,涉及到方位描述,例如上、下、前、后、左、右等指示的方位,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。

本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。

下面参考图1至图2描述根据本发明第一方面实施例的TS流硬件解析方法。

根据本发明实施例的TS流硬件解析方法,包括以下步骤:

将TS数据存储至静态存储单元;

在静态存储单元中识别TS包的同步字节(Sync_byte),同步字节用于表征TS包的起始位置;

根据同步字节获取TS包中的TS包头数据,TS包头数据包括同步字节、PID;

根据PID确认TS包的具体类型,具体类型包括PCR包、AV包;

若TS包确认为PCR包,则获取PCR包中的PCR值;

若TS包确认为AV包,则提取TS包中的有效数据并写入动态存储单元中。

参考图1至图2,在将TS数据读取到静态存储单元时,会采用每次读取16字节或者32字节(即一个burst)的方式进行,因此读取完一个TS包时至少会读取192个字节,为了保证能够存储完整一次性读取的TS数据,静态存储单元的大小需要设置为256个字节。此外需要说明,写入静态存储单元中的TS数据是经过软件解码的,在软解码之后,便可以知晓具体有多少个TS包,在结合每个TS包的固定大小为188字节,进而可以直接确认每个TS包的同步字节的位置,此过程不需要经过软件分析,可以直接通过计数器来实现,例如:处理一个字节计数1次,在处理完188个字节后,便可以确定执行完一个TS包,此时,将计数归零,开始对下一个TS包的处理。

在确定了的同步字节后,便等于确认了TS包的起始位置,从而可以直接读取出TS包头数据(即每个TS包的前四个字节),TS包头数据中包括了同步字节、PID、调整字段信息(adaptation_field)、有效负载启动信息(payload_unit_start)。这里利用PID来直接确认TS包的具体类型,即TS包是PCR包还是AV包。这里需要说明,PID是标识信息,通过判断PID具体的值,从而来确定具体类型。这里还需要说明,AV包包括audio包、video包,这两种包分别对应着视频和音频,但是在对audio包和video包执行本发明实施例的TS流硬件解析方法时,过程相同,因此不再分别进行叙述。

TS包确认为PCR包后,因为PCR包中并不包含有效负载,所以并不需要向动态存储单元写入数据,在获取PCR值后便可以直接开始解析下一个TS包。TS包确认为AV包后,无论是audio包还是video包,都会需要依据调整字段信息、有效负载启动信息确认该TS包中是否包含有效数据,若包含有效数据,则需要将有效数据写入到动态存储单元中,便于输出到解码器进行后续的解码播放。

根据本发明实施例的TS流硬件解析方法,将软件解码的TS数据存储到静态存储单元,又因为TS包的长度固定为188个字节,所以可以直接确定同步字节的位置,进而可以利用同步字节来直接确定TS包头数据的位置,并可以根据TS包头数据中PID直接确定TS包的具体类型,从而完成对AV包中有效数据的提取。本发明实施例的TS流硬件解析方法相较于传统的软件解析方法而言,解析TS数据过程依靠硬件完成,不需要软件参与,极大的降低了对CPU资源的占用,适合进行产业化推广。

在本发明的一些实施例中,将TS数据存储至静态存储单元,包括以下步骤:

将长度为预设的码流长度的TS数据写入内存缓冲单元中;

从内存缓冲单元中读取长度为预设的输入单位长度的TS数据,并存储至静态存储单元中,输入单位长度大于单个TS包的长度。

参考图2,这里在将TS数据读取到静态存储单元中时,会先将数据读取到内存缓冲单元TS_BUF,然后静态存储单元再从内存缓冲单元中读取TS数据,通过这种方式会减少数据处理时中断次数。

具体的,对于网络流媒体来说,UDP协议解析完成后得到RTP的包,每个RTP包中含有7个TS包。为了保证内存缓存区间的足够,设置了188x7字节的内存缓冲区,多个内存缓冲区构成了内存缓冲单元TS_BUF,软件解码之后的TS数据会先存入到内存缓冲单元中。之后,每次静态存储单元会读取192个字节或224个字节的TS数据,进行后续的TS包解析。在上述具体实例中,预设的码流长度需要小于内存缓冲单元的可存储的容量,输入单位长度为192个字节或224个字节,具体多少可以依据实际传输情况调整。在一些实施例中,内存缓冲单元中包括了8个内存缓冲区。

这里需要说明,因为每次读取数据需要以burst的方式,而一个burst的大小如果为32个字节,那么一次性采集完192个字节或224个字节后,必然无法保证每次读取的TS数据的最开始一位都是同步字节数据。因此,本发明实施例的TS流硬件解析方法在静态存储单元读取数据后,便会基于计数器的方式确认同步字节,即可以由硬件自动设置对齐访问地址从而开始对TS包的解析。此外,同步字节通常更为0x47,那么在计数器计数到188时,便可以判断是否是0x47,如果是则是一个正常的TS包,如果不是0x47则说明该包异常,可以直接丢弃。

在本发明的一些实施例中,将TS包中有效数据写入动态存储单元中,包括以下步骤:

向中间寄存器写入有效数据,中间寄存器用于存储预设的输出单位长度的有效数据;

当中间寄存器写满,将中间寄存器内有效数据写入动态存储单元。

参考图2,在将数据从静态存储单元写入动态存储单元中时,同样会以burst的大小写入到动态存储单元中,为了保证能够以burst大小写入,这里在静态存储单元和动态存储单元之间设置了中间寄存器。具体的,在本发明的一些实施例中,中间寄存器的大小为32个字节,当硬件解析电路读取TS包解析出有效的有效数据后,便会往中间寄存器写入,当中间寄存器写满后(即达到了一个burst的大小时),数据写出电路会负责把数据写到动态存储器内的相应位置,其中,audio数据和video数据会写入不同位置。

在本发明的一些实施例中,TS包头数据还包括调整字段信息,调整字段信息对应第一调整状态、第二调整状态和第三调整状态,第一调整状态用于表征仅含有调整字段,第二调整状态用于表征仅含有有效负载,第三调整状态用于表征即含有调整字段又含有有效负载;若TS包确认为AV包,提取TS包中的有效数据并写入动态存储单元中,包括以下步骤:

若调整字段信息为第一调整状态或第三调整状态,获取TS包中调整字段长度信息、PCR标志信息;若调整字段长度信息为0,结束此步骤;若调整字段长度信息不为0且PCR标志信息有效,读取TS包中AV_PCR值;

若调整字段信息为第二调整状态或第三调整状态,获取TS包中有效数据,并将有效数据写入动态存储单元中。

调整字段信息可以用来判断TS包内是否包含有效负载或调整字段。如果具有调整字段,则会在TS包中读取调整字段长度信息(adap_field_len)、PCR标志信息(PCR_flag),如果调整字段长度信息确认为0,可以直接确认该TS包中没有调整字段,可以直接停止后续步骤,返回并重新读取下一个TS包;如果调整字段长度信息不为0且PCR标志信息为“1”,则读取TS包中AV_PCR值(audio包中为audio_PCR值,video包中为video_PCR值)。如果此TS包中仅包含调整字段,则在读取AV_PCR值后便会结束,然后开始读取下一个TS包,如果此TS包中还包含有效负载,则会继续获取该TS包中的有效数据,并将有效数据写入动态存储单元中。这里需要说明,如果不具有调整字段仅具有有效负载,则会直接获取TS中有效数据,并写入动态存储单元中。

此外需要说明,调整字段长度信息和PCR标志信息通常会跟在TS包头数据后的两个字节中。通过读取这两个字节的内容便可以快速的确认调整字段长度信息和PCR标志信息。

在本发明的一些实施例中,TS包头数据还包括有效负载启动信息,有效负载启动信息用于表征TS包的位置信息,位置信息包括PES起始位置、中间位置,PES起始位置对应的TS包为PES起始包,中间位置对应的TS包为中间包;若TS包确认为PES起始包,获取TS包中有效数据,包括以下步骤:

获取PES起始包中PES头数据(PES_frame_header);

根据PES头数据获取PES起始包中有效数据。

对于PES起始包和中间包会采用不同的处理方式,PES起始包中除了包含TS包头数据外,还会包含PES头数据,通过PES头数据可以确定PES起始包中是否包含有效数据,对于PES起始包而言有效数据可能是填充数据或裸数据,之后可以将填充数据或裸数据写入到中间寄存器并进一步写入到动态存储器中。此外需要说明,有效负载启动信息为“1”时,确定为PES起始位置,对应的TS包为PES起始包,有效负载启动信息为“0”时,确定为中间位置,对应的TS包为中间包。

在本发明的一些实施例中,PES头数据包括码流标识(stream_id)、数据包起始符(packet_start_code)、分组原始流长度信息(pes_frame_length),码流标识对应第一数据状态、第二数据状态,第一数据状态用于表征PES起始包仅包含有效数据,第二数据状态用于表征PES起始包既包含PES包头信息又包含有效数据;

根据PES头数据获取PES起始包中有效数据,包括以下步骤:

若码流标识确认为第一数据状态,根据数据包起始符、分组原始流长度信息直接提取有效数据;

若码流标识确认为第二数据状态,获取PTS数据、DTS数据、PES数据、有效数据,并将PTS数据、DTS数据、PES数据写入IO寄存器。

通过码流标识可以用来确定PES起始包中是否包含了PES包头信息。若仅包含有效数据,则直接提取有效数据即可;若包含了PES包头信息,则需要先读取PTS数据、DTS数据、PES数据等数据,然后再提取有效数据。

在本发明的一些实施例中,当码流标识确认为第二数据状态,PTS数据、DTS数据、PES数据、有效数据由以下步骤获得:

从PES起始包中获取PTS标识信息、DTS标识信息、PES专用标志信息、PES包头长度;

依据PTS标识信息、DTS标识信息、PES专用表示信息从PES起始包中读取PTS数据、DTS数据、PES数据,并写入IO寄存器;

根据PES包头长度读取PES起始包中有效数据。

在确认有PES包头信息后,为了将PTS标识信息、DTS标识信息、PES专用标志信息提取出来,那么需要在PES头数据后继续读取3个字节的数据,这3个字节的数据中包括了PTS标识信息(PTS_flag)、DTS标识信息(DTS_flag)、PES专用表示信息(PES_private_flag)、PES包头长度(pes_header_data_length),进而可以根据PTS标识信息、DTS标识信息、PES专用表示信息在PES起始包中读取到PTS数据、DTS数据、PES数据,并将PTS数据、DTS数据、PES数据写入到IO寄存器中。之后,忽略掉字节数为PES包头长度的数据,然后抽取有效数据即可。

在本发明的一些实施例中,中间包中仅包含有效数据,若TS包确认为中间包,获取TS包中有效数据,包括以下步骤:直接获取中间包中有效数据。中间包相对于PES起始包而言,仅包含TS包头数据和裸数据,因此在确认是中间包后,便可以直接提取裸数据即可。

这里需要说明,TS包中数据提取完成的标准很简单,以每读一个字节计数1为例,只需要在计数器计数达到188时,便可以确定一个TS包处理完毕,可以直接开始读取下一包。此外还需要说明,当读取的TS数据组成了一个完整的audio_frame或video_frame后,会告知软件audio_frame_length或video_frame_length,从而让软件知晓一个PES_frame已经执行完毕。

根据本发明第二方面实施例的TS流硬件解析系统,包括:静态存储单元、硬件解析电路、动态存储单元、数据写出电路。

静态存储单元,用于存储TS数据;

硬件解析电路,用于识别静态存储单元中TS包的同步字节、根据同步字节确定TS包中的TS包头数据、根据TS包头数据中的PID确定TS包的具体类型、以及对AV包中有效数据的提取;其中,同步字节用于表征TS包的起始位置,TS包头数据包括同步字节、PID,具体类型包括PCR包、AV包;

动态存储单元,用于写入有效数据;

数据写出电路,用于将硬件解析电路解析的有效数据写入到动态存储单元中。

参考图1至图2,在将TS数据读取到静态存储单元时,会采用每次读取16字节或者32字节(即一个burst)的方式进行,因此读取完一个TS包时至少会读取192个字节,为了保证能够存储完整一次性读取的TS数据,静态存储单元的大小需要设置为256个字节。此外需要说明,写入静态存储单元中的TS数据是经过软件解码的,在软解码之后,便可以知晓具体有多少个TS包,在结合每个TS包的固定大小为188字节,进而可以直接确认每个TS包的同步字节的位置,此过程不需要经过软件分析,可以直接通过计数器来实现,例如:处理一个字节计数1次,在处理完188个字节后,便可以确定执行完一个TS包,此时,将计数归零,开始对下一个TS包的处理。

在确定了的同步字节后,便等于确认了TS包的起始位置,从而可以直接读取出TS包头数据(即每个TS包的前四个字节),TS包头数据中包括了同步字节、PID、调整字段信息(adaptation_field)、有效负载启动信息(payload_unit_start)。这里利用PID来直接确认TS包的具体类型,即TS包是PCR包还是AV包。这里需要说明,PID是标识信息,通过判断PID具体的值,从而来确定具体类型。这里还需要说明,AV包包括audio包、video包,这两种包分别对应着视频和音频,但是在对两者执行本发明实施例的TS流硬件解析方法时,过程相同,因此不再分别进行叙述。

TS包确认为PCR包后,因为PCR包中并不包含有效负载,所以并不需要向动态存储单元写入数据,在获取PCR值后便可以直接开始解析下一个TS包。TS包确认为AV包后,无论是audio包还是video包,都会需要依据调整字段信息、有效负载启动信息确认该TS包中是否包含有效数据,若包含有效数据,则需要将有效数据写入到动态存储单元中,便于输出到解码器进行后续的解码播放。

根据本发明实施例的TS流硬件解析系统,将软件解码的TS数据存储到静态存储单元,又因为TS包的长度固定为188个字节,所以可以直接确定同步字节的位置,进而可以利用同步字节来直接确定TS包头数据的位置,并可以根据TS包头数据中PID直接确定TS包的具体类型,从而完成对AV包中有效数据的提取并写入动态存储单元。本发明实施例的TS流硬件解析系统提供了执行本发明实施例的TS流硬件解析方法系统构架,提高了内存总线的访问效率,减少了带宽需求,进而可以保证本发明实施例的TS流硬件解析方法的正常执行,从而达到降低对CPU资源占用的目的。

在本发明的一些实施例中,上述TS流硬件解析系统还包括:

内部缓冲单元,与静态存储单元的输入端连接,用于缓存长度为预设的码流长度的TS数据;静态存储单元每次存储长度为预设的输入单位长度的TS数据,输入单位长度大于单个TS包的长度;

中间寄存器,用于存储预设的输出单位长度的有效数据;数据写出电路和中间寄存器共同用于以输出单位长度将有效数据写入动态存储单元。

参考图2,这里在将TS数据读取到静态存储单元中时,会先将数据读取到内存缓冲单元,然后静态存储单元再从内存缓冲单元中读取TS数据,通过这种方式会减少数据处理时中断次数。

具体的,对于网络流媒体来说,UDP协议解析完成后得到RTP的包,每个RTP包中含有7个TS包。为了保证内存缓存区间的足够,设置了188x7字节的内存缓冲区,多个内存缓冲区构成了内存缓冲单元TS_BUF,软件解码之后的TS数据会先存入到内存缓冲单元中。之后,每次静态存储单元会读取192个字节或224个字节的TS数据,进行后续的TS包解析。在上述具体实例中,预设的码流长度需要小于内存缓冲单元的可存储的容量,输入单位长度为192个字节或224个字节,具体多少可以依据实际传输情况调整。在一些实施例中,内存缓冲单元中包括了8个内存缓冲区。

这里需要说明,因为每次读取数据需要以burst的方式,而一个burst的大小如果为32个字节,那么一次性采集完192个字节或224个字节后,必然无法保证每次读取的TS数据的最开始一位都是同步字节数据。因此,本发明实施例的TS流硬件解析方法在静态存储单元读取数据后,便会基于计数器的方式确认同步字节,即可以由硬件自动设置对齐访问地址从而开始对TS包的解析。此外,同步字节通常更为0x47,那么在计数器计数到188时,便可以判断是否是0x47,如果是则是一个正常的TS包,如果不是0x47则说明该包异常,可以直接丢弃。

在将数据从静态存储单元写入动态存储单元中时,同样会以burst的大小写入到动态存储单元中,为了保证能够以burst大小写入,这里在静态存储单元和动态存储单元之间设置了中间寄存器。具体的,在本发明的一些实施例中,中间寄存器的大小为32个字节,当硬件解析电路读取TS包解析出有效的有效数据后,便会往中间寄存器写入,当中间寄存器写满后(即达到了一个burst的大小时),数据写出电路会负责把数据写到动态存储器内的相应位置,其中,audio数据和video数据会写入不同位置。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上述结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种圆桌视频会议的生成方法、装置、介质和电子设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类