CN105554573A - 一种机顶盒数据处理方法及机顶盒 - Google Patents
一种机顶盒数据处理方法及机顶盒 Download PDFInfo
- Publication number
- CN105554573A CN105554573A CN201510919035.XA CN201510919035A CN105554573A CN 105554573 A CN105554573 A CN 105554573A CN 201510919035 A CN201510919035 A CN 201510919035A CN 105554573 A CN105554573 A CN 105554573A
- Authority
- CN
- China
- Prior art keywords
- data
- top box
- segment data
- cyclic buffer
- intermediate layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/41—Structure of client; Structure of client peripherals
- H04N21/426—Internal components of the client ; Characteristics thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/435—Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
Abstract
本发明实施例公开了一种机顶盒数据处理方法及机顶盒,包括:机顶盒通过驱动层接收服务器发送的携带数据标识的第一段数据,并基于所述第一段数据生成携带所述数据标识的第二段数据;机顶盒通过中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据;若检测到所述第一循环缓冲区内不存在携带所述数据标识的段数据,机顶盒通过中间层检测所述第一循环缓冲区是否被未读数据占满;若检测到所述第一循环缓冲区没有被未读数据占满时,机顶盒通过中间层获取所述第二段数据。本发明实施例提供技术方案有利于降低机顶盒处理接收数据时的丢包率和CPU占用率,保证数据处理接收的逻辑性和稳定性,进而确保机顶盒在使用过程中的稳定性。
Description
技术领域
本发明涉及数字电视研发领域,具体涉及一种机顶盒数据处理方法及机顶盒。
背景技术
随着数字电视产品发展的逐步普及、数字电视用户量日益剧增,对机顶盒产品的性能以及稳定性要求也是越来越高,而稳定性其中就包括对播发码流数据的接收和处理。PSI/SI段是一个语法结构,用于将业务信息映射成为GB/T17975.1-2000(一种广播级标准)的传输流包。PSI/SI表是具有相同表标识符的一系列PSI/SI段的集合。为了能在机顶盒中快速切换节目、快速解扰被加扰的音视频流、快速显示节目指南信息、快速搜索节目、实时再现音视频节目等,机顶盒运行时需要实时接收并快速解析PSI/SI表。
在现有技术中,机顶盒接收PSI/SI数据流的方法为:驱动层接收到PSI/SI段数据后,通过回调函数主动将数据传递给中间层,中间层将数据保存到缓冲区A的一维数组中,其他线程请求数据时从缓冲区A中拷贝进行解析。但是由于缓冲区A是一维数组,驱动层每次向中间层传递的数据都需要执行内存的清空和拷贝操作,并没有进行是否需要保留该数据的逻辑判断,从而导致机顶盒在接收PSI/SI段数据时,发送频率慢的段数据被发送频率快的段数据覆盖,进而导致机顶盒搜台不全,出现丢包现象,同时频繁的内存的清空和拷贝操作也会导致机顶盒CPU占用率较高,最终导致机顶盒在使用过程中不稳定。
发明内容
本发明实施例提供了一种机顶盒数据处理方法及机顶盒,以期解决在现有技术中,机顶盒接收处理PSI/SI段数据过程中丢包率和CPU占用率会相对较高的问题。
本发明实施例第一方面提供一种机顶盒数据处理方法,包括:。
机顶盒通过驱动层接收服务器发送的携带数据标识的第一段数据,并基于所述第一段数据生成携带所述数据标识的第二段数据;
所述机顶盒通过中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据;
若检测到所述第一循环缓冲区内不存在携带所述数据标识的段数据,所述机顶盒通过中间层检测所述第一循环缓冲区是否被未读数据占满;
若检测到所述第一循环缓冲区没有被未读数据占满时,所述机顶盒通过中间层获取所述第二段数据。
进一步可选地,基于所述第一段数据生成携带所述数据标识的第二段数据,包括:
所述机顶盒通过驱动层在所述携带数据标识的第一段数据的基础上添加数据长度位、数据状态位以及预留位,生成所述携带所述数据标识的第二段数据;
其中,所述数据状态位包括已读状态、未读状态和无效状态。
进一步可选地,所述机顶盒通过中间层检测所述第一循环缓冲区是否被未读数据占满之后,所述方法还包括:
若检测到所述第一循环缓冲区被未读数据占满,所述机顶盒通过中间层拒绝获取所述第二段数据。
进一步可选地,所述机顶盒通过中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据之后,所述方法还包括:
若检测到所述第一循环缓冲区内存在携带所述数据标识的段数据,所述机顶盒通过中间层检测所述携带所述数据标识的段数据与所述第二段数据是否一致;
若检测到所述携带所述数据标识的段数据与所述第二段数据不一致,所述机顶盒通过中间层置所述携带所述数据标识的段数据中数据状态位为未读状态的段数据的数据状态位为无效状态;
所述机顶盒通过中间层将所述第一循环缓冲区内数据状态位为未读状态的段数据写入第二循环缓冲区,并通过中间层将所述第二循环缓冲区内的数据状态位为未读状态的段数据回写到所述第一缓冲区;
所述机顶盒通过中间层检测所述第一循环缓冲区是否被未读数据占满;
若所述第一循环缓冲区没有被未读数据占满,所述机顶盒通过中间层接收所述第二段数据;
若所述第一循环缓冲区被未读数据占满,所述机顶盒通过中间层拒绝获取所述第二段数据。
进一步可选地,所述机顶盒通过中间层检测所述携带所述数据标识的段数据与所述第二段数据是否一致之后,所述方法还包括:
若检测到所述携带所述数据标识的段数据与所述第二段数据一致,所述机顶盒通过中间层检测所述第一循环缓冲区内的段数据的数据状态位是否全部为已读状态;
若检测到所述第一循环缓冲区内的段数据的数据状态位全部为已读状态,所述机顶盒通过中间层置所述第一循环缓冲区内的段数据的数据状态位为未读状态,以拒绝接受所述第二段数据;
若检测到所述第一循环缓冲区内的段数据的数据状态位没有全部为已读状态,所述机顶盒通过中间层拒绝接受所述第二段数据。
本发明实施例第二部分提供一种机顶盒,包括:
接收模块,用于通过驱动层接收服务器发送的携带数据标识的第一段数据;
生成模块,用于通过驱动层基于所述第一段数据生成携带所述数据标识的第二段数据;
第一检测模块,用于通过中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据;
第二检测模块,用于若检测到所述第一循环缓冲区内不存在携带所述数据标识的段数据,通过中间层检测所述第一循环缓冲区是否被未读数据占满;
获取模块,用于若检测到所述第一循环缓冲区没有被未读数据占满时,通过中间层获取所述第二段数据。
进一步可选地,所述生成模块,具用于通过驱动层在所述携带数据标识的第一段数据的基础上添加数据长度位、数据状态位以及预留位,生成所述携带所述数据标识的第二段数据;
其中,所述数据状态位包括已读状态、未读状态和无效状态。
进一步可选地,所述机顶盒还包括:
拒绝获取模块,用于所述第二检测模块通过中间层检测所述第一循环缓冲区是否被未读数据占满之后,若所述第二检测模块检测到所述第一循环缓冲区被未读数据占满,通过中间层拒绝获取所述第二段数据。
进一步可选地,所述机顶盒还包括:
第三检测模块,用于所述第一检测模块通过中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据之后,若所述第一检测模块检测到所述第一循环缓冲区内存在携带所述数据标识的段数据,通过中间层检测所述携带所述数据标识的段数据与所述第二段数据是否一致;
置无效模块,用于若所述第三检测模块检测到所述携带所述数据标识的段数据与所述第二段数据不一致,所述机顶盒通过中间层置所述携带所述数据标识的段数据中数据状态位为未读状态的段数据的数据状态位为无效状态;
回写模块,用于通过中间层将所述第一循环缓冲区内数据状态位为未读状态的段数据写入第二循环缓冲区,并通过中间层将所述第二循环缓冲区内的数据状态位为未读状态的段数据回写到所述第一缓冲区;
所述第二检测模块,还用于回写模块通过中间层将所述第二循环缓冲区内的数据状态位为未读状态的段数据回写到所述第一缓冲区后,通过中间层检测所述第一循环缓冲区是否被未读数据占满;
所述获取模块,还用于若所述第一循环缓冲区没有被未读数据占满,通过中间层接收所述第二段数据;
所述拒绝获取模块,还用于若所述第一循环缓冲区被未读数据占满,所述机顶盒通过中间层拒绝获取所述第二段数据。
进一步可选地,所述机顶盒还包括:
第四检测模块,用于所述第三检测模块若检测到所述携带所述数据标识的段数据与所述第二段数据一致,通过中间层检测所述第一循环缓冲区内的段数据的数据状态位是否全部为已读状态;
置未读模块,用于若检测到所述第一循环缓冲区内的段数据的数据状态位全部为已读状态,通过中间层置所述第一循环缓冲区内的段数据的数据状态位为未读状态,以拒绝接受所述第二段数据;
所述拒绝获取模块,还用于若检测到所述第一循环缓冲区内的段数据的数据状态位没有全部为已读状态,通过中间层拒绝接受所述第二段数据。
可以看出,本发明实施例技术方案中,机顶盒驱动层接收服务器发送的携带数据标识的第一段数据,并基于所述第一段数据生成携带所述数据标识的第二段数据,机顶盒中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据,若检测到所述第一循环缓冲区内不存在携带所述数据标识的段数据,同时检测到所述第一循环缓冲区没有被未读数据占满时,则中间层获取驱动层生成所述第二段数据,因此,当其他线程应用到所述第二段数据时,可以直接从所述第一循环缓冲区拷贝所述第二段数据,进行解析应用,通过实施本发明实施例,避免驱动层每次向中间层传递的数据都需要执行内存的清空和拷贝操作,并没有进行是否需要保留该数据的逻辑判断,从而有利于降低机顶盒处理接收数据时的丢包率和CPU占用率,有利于保证数据处理接收的逻辑性和稳定性,进而有利于确保机顶盒在使用过程中的稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明第一实施例提供的一种机顶盒数据处理方法的流程示意图;
图2是本发明第二实施例提供的一种机顶盒数据处理方法的流程示意图;
图3是本发明第三实施例提供的一种机顶盒的结构示意图;
图4是本发明第四实施例提供的一种机顶盒的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
请参阅图1,图1是本发明第一实施例提供的一种机顶盒数据处理方法的流程示意图,如图1所示,包括以下步骤:
S101、机顶盒通过驱动层接收服务器发送的携带数据标识的第一段数据,并基于所述第一段数据生成携带所述数据标识的第二段数据。
可以理解地,机顶盒的处理器分为驱动层、中间层以及应用层三层结构,驱动层也叫驱动系统层或底层,中间层包括调谐模块、解复用模块的数据接收和解析等,应用层包括电子节目指南(EPG)、数据广播、股票、界面等应用,其中应用层需要向中间层请求数据。
其中,段数据由信息表组成,不同的段数据都有自己的类型,类型是根据包标识PID进行区分,具有相同包标识PID的不同的信息表由不同的表标识(table-id)进行区分,属于同一个信息表的不同子表由不同的表的扩展标识(table-id-extension)、版本号(version-number)、段号(section-number)进行区分,所述数据标识可以理解为上述的包标识PID、表的扩展标识(table-id-extension)、版本号(version-number)、段号(section-number)。
其中,所述机顶盒通过驱动层基于所述第一段数据生成携带所述数据标识的第二段数据的具体实施方式可以是:
所述机顶盒通过驱动层在所述携带数据标识的第一段数据的基础上添加数据长度位、数据状态位以及预留位,生成所述携带所述数据标识的第二段数据;
其中,所述数据状态位包括已读状态、未读状态和无效状态。
S102、所述机顶盒通过中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据。
S103、若检测到所述第一循环缓冲区内不存在携带所述数据标识的段数据,所述机顶盒通过中间层检测所述第一循环缓冲区是否被未读数据占满。
S104、若检测到所述第一循环缓冲区没有被未读数据占满时,所述机顶盒通过中间层获取所述第二段数据。
其中可选地,所述机顶盒通过中间层检测所述第一循环缓冲区是否被未读数据占满之后,机顶盒还可以执行以下操作:
若检测到所述第一循环缓冲区被未读数据占满,所述机顶盒通过中间层拒绝获取所述第二段数据。
其中可选地,所述机顶盒通过中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据之后,机顶盒还可以执行以下操作:
若检测到所述第一循环缓冲区内存在携带所述数据标识的段数据,所述机顶盒通过中间层检测所述携带所述数据标识的段数据与所述第二段数据是否一致;
若检测到所述携带所述数据标识的段数据与所述第二段数据不一致,所述机顶盒通过中间层置所述携带所述数据标识的段数据中数据状态位为未读状态的段数据的数据状态位为无效状态;
所述机顶盒通过中间层将所述第一循环缓冲区内数据状态位为未读状态的段数据写入第二循环缓冲区,并通过中间层将所述第二循环缓冲区内的数据状态位为未读状态的段数据回写到所述第一缓冲区;
所述机顶盒通过中间层检测所述第一循环缓冲区是否被未读数据占满;
若所述第一循环缓冲区没有被未读数据占满,所述机顶盒通过中间层接收所述第二段数据;
若所述第一循环缓冲区被未读数据占满,所述机顶盒通过中间层拒绝获取所述第二段数据。
其中可选地,所述机顶盒通过中间层检测所述携带所述数据标识的段数据与所述第二段数据是否一致之后,机顶盒还可以执行以下操作:
若检测到所述携带所述数据标识的段数据与所述第二段数据一致,所述机顶盒通过中间层检测所述第一循环缓冲区内的段数据的数据状态位是否全部为已读状态;
若检测到所述第一循环缓冲区内的段数据的数据状态位全部为已读状态,所述机顶盒通过中间层置所述第一循环缓冲区内的段数据的数据状态位为未读状态,以拒绝接受所述第二段数据;
若检测到所述第一循环缓冲区内的段数据的数据状态位没有全部为已读状态,所述机顶盒通过中间层拒绝接受所述第二段数据。
可以看出,本发明实施例技术方案中,机顶盒驱动层接收服务器发送的携带数据标识的第一段数据,并基于所述第一段数据生成携带所述数据标识的第二段数据,机顶盒中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据,若检测到所述第一循环缓冲区内不存在携带所述数据标识的段数据,同时检测到所述第一循环缓冲区没有被未读数据占满时,则中间层获取驱动层生成所述第二段数据,因此,当其他线程应用到所述第二段数据时,可以直接从所述第一循环缓冲区拷贝所述第二段数据,进行解析应用,通过实施本发明实施例,避免驱动层每次向中间层传递的数据都需要执行内存的清空和拷贝操作,并没有进行是否需要保留该数据的逻辑判断,从而有利于降低机顶盒处理接收数据时的丢包率和CPU占用率,有利于保证数据处理接收的逻辑性和稳定性,进而有利于确保机顶盒在使用过程中的稳定性。
请参阅图2,图2是本发明第二实施例提供的一种机顶盒数据处理方法的流程示意图,如图2所示,包括以下步骤:
S201、机顶盒通过驱动层接收服务器发送的携带数据标识的第一段数据,并基于所述第一段数据生成携带所述数据标识的第二段数据。
可以理解地,机顶盒的处理器分为驱动层、中间层以及应用层三层结构,驱动层也叫驱动系统层或底层,中间层包括调谐模块、解复用模块的数据接收和解析等,应用层包括电子节目指南(EPG)、数据广播、股票、界面等应用,其中应用层需要向中间层请求数据。
其中,段数据由信息表组成,不同的段数据都有自己的类型,类型是根据包标识PID进行区分,具有相同包标识PID的不同的信息表由不同的表标识(table-id)进行区分,属于同一个信息表的不同子表由不同的表的扩展标识(table-id-extension)、版本号(version-number)、段号(section-number)进行区分,所述数据标识可以理解为上述的包标识PID、表的扩展标识(table-id-extension)、版本号(version-number)、段号(section-number)。
其中,所述机顶盒通过驱动层基于所述第一段数据生成携带所述数据标识的第二段数据的具体实施方式可以是:所述机顶盒通过驱动层在所述携带数据标识的第一段数据的基础上添加数据长度位、数据状态位以及预留位,生成所述携带所述数据标识的第二段数据;其中,所述数据状态位包括已读状态、未读状态和无效状态。
S202、所述机顶盒通过中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据。
其中,若所述机顶盒通过中间层检测第一循环缓冲区内不存在携带所述数据标识的段数据,执行步骤S203;若所述机顶盒通过中间层检测第一循环缓冲区内存在携带所述数据标识的段数据,执行步骤S204。
S203、所述机顶盒通过中间层检测所述第一循环缓冲区是否被未读数据占满。
其中,当所述机顶盒通过中间层检测所述第一循环缓冲区没有被未读数据占满时,执行步骤S209;当所述机顶盒通过中间层检测所述第一循环缓冲区被未读数据占满时,执行步骤S210。
S204、若检测到所述第一循环缓冲区内存在携带所述数据标识的段数据,所述机顶盒通过中间层检测所述携带所述数据标识的段数据与所述第二段数据是否一致。
其中,所述当机顶盒通过中间层检测所述携带所述数据标识的段数据与所述第二段数据不一致时,所述机顶盒继续执行步骤S205—S206;所述当机顶盒通过中间层检测所述携带所述数据标识的段数据与所述第二段数据一致时,所述机顶盒继续执行步骤S207。
S205、若检测到所述携带所述数据标识的段数据与所述第二段数据不一致,所述机顶盒通过中间层置所述携带所述数据标识的段数据中数据状态位为未读状态的段数据的数据状态位为无效状态。
S206、所述机顶盒通过中间层将所述第一循环缓冲区内数据状态位为未读状态的段数据写入第二循环缓冲区,并通过中间层将所述第二循环缓冲区内的数据状态位为未读状态的段数据回写到所述第一缓冲区。
其中,所述机顶盒通过中间层将所述第二循环缓冲区内的数据状态位为未读状态的段数据回写到所述第一缓冲区后,继续执行步骤S203。
若所述第一循环缓冲区没有被未读数据占满,所述机顶盒执行步骤S209;若所述第一循环缓冲区被未读数据占满,所述机顶盒执行步骤S210。
S207、若检测到所述携带所述数据标识的段数据与所述第二段数据一致,所述机顶盒通过中间层检测所述第一循环缓冲区内的段数据的数据状态位是否全部为已读状态。
其中,当所述机顶盒通过中间层检测所述第一循环缓冲区内的段数据的数据状态位全部为已读状态时,执行步骤S208;当所述机顶盒通过中间层检测所述第一循环缓冲区内的段数据的数据状态位没有全部为已读状态时,执行步骤S210。
S208、若检测到所述第一循环缓冲区内的段数据的数据状态位全部为已读状态,所述机顶盒通过中间层置所述第一循环缓冲区内的段数据的数据状态位为未读状态,以继续执行步骤S210。
S209、所述机顶盒通过中间层获取所述第二段数据。
S210、所述机顶盒通过中间层拒绝获取所述第二段数据。
可以看出,本发明实施例技术方案中,机顶盒驱动层接收服务器发送的携带数据标识的第一段数据,并基于所述第一段数据生成携带所述数据标识的第二段数据,机顶盒中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据,若检测到所述第一循环缓冲区内不存在携带所述数据标识的段数据,同时检测到所述第一循环缓冲区没有被未读数据占满时,则中间层获取驱动层生成所述第二段数据,因此,当其他线程应用到所述第二段数据时,可以直接从所述第一循环缓冲区拷贝所述第二段数据,进行解析应用,通过实施本发明实施例,避免驱动层每次向中间层传递的数据都需要执行内存的清空和拷贝操作,并没有进行是否需要保留该数据的逻辑判断,从而有利于降低机顶盒处理接收数据时的丢包率和CPU占用率,有利于保证数据处理接收的逻辑性和稳定性,进而有利于确保机顶盒在使用过程中的稳定性。
下面为本发明装置实施例,本发明装置实施例用于执行本发明方法实施例一至二实现的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例一和实施例二。
请参阅图3,图3是本发明第三实施例提供的一种机顶盒的结构示意图,如图3所示,所述机顶盒包括以下模块:
接收模块301,用于通过驱动层接收服务器发送的携带数据标识的第一段数据。
可以理解地,机顶盒的处理器分为驱动层、中间层以及应用层三层结构,驱动层也叫驱动系统层或底层,中间层包括调谐模块、解复用模块的数据接收和解析等,应用层包括电子节目指南(EPG)、数据广播、股票、界面等应用,其中应用层需要向中间层请求数据。
其中,段数据由信息表组成,不同的段数据都有自己的类型,类型是根据包标识PID进行区分,具有相同包标识PID的不同的信息表由不同的表标识(table-id)进行区分,属于同一个信息表的不同子表由不同的表的扩展标识(table-id-extension)、版本号(version-number)、段号(section-number)进行区分,所述数据标识可以理解为上述的包标识PID、表的扩展标识(table-id-extension)、版本号(version-number)、段号(section-number)。
生成模块302,用于通过驱动层基于所述第一段数据生成携带所述数据标识的第二段数据。
第一检测模块303,用于通过中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据;
第二检测模块304,用于若检测到所述第一循环缓冲区内不存在携带所述数据标识的段数据,通过中间层检测所述第一循环缓冲区是否被未读数据占满。
获取模块305,用于若检测到所述第一循环缓冲区没有被未读数据占满时,通过中间层获取所述第二段数据。
其中可选地,所述生成模块302,具用于通过驱动层在所述携带数据标识的第一段数据的基础上添加数据长度位、数据状态位以及预留位,生成所述携带所述数据标识的第二段数据;其中,所述数据状态位包括已读状态、未读状态和无效状态。
其中可选地,所述机顶盒还可以进一步包括:
拒绝获取模块306,用于所述第二检测模块通过中间层检测所述第一循环缓冲区是否被未读数据占满之后,若所述第二检测模块检测到所述第一循环缓冲区被未读数据占满,通过中间层拒绝获取所述第二段数据。
其中可选地,所述机顶盒还可以进一步包括:
第三检测模块307,用于所述第一检测模块303通过中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据之后,若所述第一检测模块303检测到所述第一循环缓冲区内存在携带所述数据标识的段数据,通过中间层检测所述携带所述数据标识的段数据与所述第二段数据是否一致。
置无效模块308,用于若所述第三检测模块检测到所述携带所述数据标识的段数据与所述第二段数据不一致,所述机顶盒通过中间层置所述携带所述数据标识的段数据中数据状态位为未读状态的段数据的数据状态位为无效状态。
回写模块309,用于通过中间层将所述第一循环缓冲区内数据状态位为未读状态的段数据写入第二循环缓冲区,并通过中间层将所述第二循环缓冲区内的数据状态位为未读状态的段数据回写到所述第一缓冲区。
所述第二检测模块304,还用于所述回写模块309通过中间层将所述第二循环缓冲区内的数据状态位为未读状态的段数据回写到所述第一缓冲区后,通过中间层检测所述第一循环缓冲区是否被未读数据占满;
所述获取模块305,还用于若所述第一循环缓冲区没有被未读数据占满,通过中间层接收所述第二段数据。
所述拒绝获取模块306,还用于若所述第一循环缓冲区被未读数据占满,所述机顶盒通过中间层拒绝获取所述第二段数据。
其中可选地,所述机顶盒还可以进一步包括:
第四检测模块310,用于所述第三检测模块若检测到所述携带所述数据标识的段数据与所述第二段数据一致,通过中间层检测所述第一循环缓冲区内的段数据的数据状态位是否全部为已读状态。
置未读模块311,用于若检测到所述第一循环缓冲区内的段数据的数据状态位全部为已读状态,通过中间层置所述第一循环缓冲区内的段数据的数据状态位为未读状态,以拒绝接受所述第二段数据。
所述拒绝获取模块306,还用于若检测到所述第一循环缓冲区内的段数据的数据状态位没有全部为已读状态,通过中间层拒绝接受所述第二段数据。
本发明实施例中涉及的各个模块的具体实现可参考图1至图2对应的方法实施例中相关功能模块的描述,在此不赘述。
可以看出,本发明实施例技术方案中,机顶盒驱动层接收服务器发送的携带数据标识的第一段数据,并基于所述第一段数据生成携带所述数据标识的第二段数据,机顶盒中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据,若检测到所述第一循环缓冲区内不存在携带所述数据标识的段数据,同时检测到所述第一循环缓冲区没有被未读数据占满时,则中间层获取驱动层生成所述第二段数据,因此,当其他线程应用到所述第二段数据时,可以直接从所述第一循环缓冲区拷贝所述第二段数据,进行解析应用,通过实施本发明实施例,避免驱动层每次向中间层传递的数据都需要执行内存的清空和拷贝操作,并没有进行是否需要保留该数据的逻辑判断,从而有利于降低机顶盒处理接收数据时的丢包率和CPU占用率,有利于保证数据处理接收的逻辑性和稳定性,进而有利于确保机顶盒在使用过程中的稳定性。
请参考图4,图4是本发明第四实施例提供的一种机顶盒的结构示意图。如图4所示,本发明实施例中的机顶盒包括:至少一个处理器401,例如CPU,至少一个接收器403,至少一个存储器404,至少一个发送器405,至少一个通信总线402。其中,通信总线402用于实现这些组件之间的连接通信。其中,本发明实施例中装置的接收器403和发送器405可以是有线发送端口,也可以为无线设备,例如包括天线装置,用于与其他节点设备进行信令或数据的通信。存储器404可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器404可选的还可以是至少一个位于远离前述处理器401的存储装置。存储器404中存储一组程序代码,且所述处理器401可通过通信总线402,调用存储器404中存储的代码以执行相关的功能。
所述处理器401,用于通过驱动层接收服务器发送的携带数据标识的第一段数据,并基于所述第一段数据生成携带所述数据标识的第二段数据;通过中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据;若检测到所述第一循环缓冲区内不存在携带所述数据标识的段数据,通过中间层检测所述第一循环缓冲区是否被未读数据占满;若检测到所述第一循环缓冲区没有被未读数据占满时,通过中间层获取所述第二段数据。
其中可选地,所述处理器401在用于基于所述第一段数据生成携带所述数据标识的第二段数据时,具体用于通过驱动层在所述携带数据标识的第一段数据的基础上添加数据长度位、数据状态位以及预留位,生成所述携带所述数据标识的第二段数据;其中,所述数据状态位包括已读状态、未读状态和无效状态。
其中可选地,所述处理器401在用于通过中间层检测所述第一循环缓冲区是否被未读数据占满之后,还用于若检测到所述第一循环缓冲区被未读数据占满,通过中间层拒绝获取所述第二段数据。
其中可选地,所述处理器401在用于通过中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据之后,还用于若检测到所述第一循环缓冲区内存在携带所述数据标识的段数据,通过中间层检测所述携带所述数据标识的段数据与所述第二段数据是否一致;若检测到所述携带所述数据标识的段数据与所述第二段数据不一致,所述处理器401用于通过中间层置所述携带所述数据标识的段数据中数据状态位为未读状态的段数据的数据状态位为无效状态;
所述处理器401,还用于通过中间层将所述第一循环缓冲区内数据状态位为未读状态的段数据写入第二循环缓冲区,并通过中间层将所述第二循环缓冲区内的数据状态位为未读状态的段数据回写到所述第一缓冲区;通过中间层检测所述第一循环缓冲区是否被未读数据占满;若所述第一循环缓冲区没有被未读数据占满,所述机顶盒通过中间层接收所述第二段数据;若所述第一循环缓冲区被未读数据占满,所述机顶盒通过中间层拒绝获取所述第二段数据。
其中可选地,所述处理器401在用于通过中间层检测所述携带所述数据标识的段数据与所述第二段数据是否一致之后,还用于若检测到所述携带所述数据标识的段数据与所述第二段数据一致,所述机顶盒通过中间层检测所述第一循环缓冲区内的段数据的数据状态位是否全部为已读状态;若检测到所述第一循环缓冲区内的段数据的数据状态位全部为已读状态,所述机顶盒通过中间层置所述第一循环缓冲区内的段数据的数据状态位为未读状态,以拒绝接受所述第二段数据;若检测到所述第一循环缓冲区内的段数据的数据状态位没有全部为已读状态,所述机顶盒通过中间层拒绝接受所述第二段数据。
可以看出,本发明实施例技术方案中,机顶盒驱动层接收服务器发送的携带数据标识的第一段数据,并基于所述第一段数据生成携带所述数据标识的第二段数据,机顶盒中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据,若检测到所述第一循环缓冲区内不存在携带所述数据标识的段数据,同时检测到所述第一循环缓冲区没有被未读数据占满时,则中间层获取驱动层生成所述第二段数据,因此,当其他线程应用到所述第二段数据时,可以直接从所述第一循环缓冲区拷贝所述第二段数据,进行解析应用,通过实施本发明实施例,避免驱动层每次向中间层传递的数据都需要执行内存的清空和拷贝操作,并没有进行是否需要保留该数据的逻辑判断,从而有利于降低机顶盒处理接收数据时的丢包率和CPU占用率,有利于保证数据处理接收的逻辑性和稳定性,进而有利于确保机顶盒在使用过程中的稳定性。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的任何一种服务进程的监控方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(英文:Read-OnlyMemory,简称:ROM)、随机存取器(英文:RandomAccessMemory,简称:RAM)、磁盘或光盘等。
以上对本发明实施例所提供的一种机顶盒数据处理方法及机顶盒进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种机顶盒数据处理方法,其特征在于,包括:
机顶盒通过驱动层接收服务器发送的携带数据标识的第一段数据,并基于所述第一段数据生成携带所述数据标识的第二段数据;
所述机顶盒通过中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据;
若检测到所述第一循环缓冲区内不存在携带所述数据标识的段数据,所述机顶盒通过中间层检测所述第一循环缓冲区是否被未读数据占满;
若检测到所述第一循环缓冲区没有被未读数据占满时,所述机顶盒通过中间层获取所述第二段数据。
2.如权利要求1所述的方法,其特征在于,基于所述第一段数据生成携带所述数据标识的第二段数据,包括:
所述机顶盒通过驱动层在所述携带数据标识的第一段数据的基础上添加数据长度位、数据状态位以及预留位,生成所述携带所述数据标识的第二段数据;
其中,所述数据状态位包括已读状态、未读状态和无效状态。
3.如权利要求1所述的方法,其特征在于,所述机顶盒通过中间层检测所述第一循环缓冲区是否被未读数据占满之后,所述方法还包括:
若检测到所述第一循环缓冲区被未读数据占满,所述机顶盒通过中间层拒绝获取所述第二段数据。
4.如权利要求1所述的方法,其特征在于,所述机顶盒通过中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据之后,所述方法还包括:
若检测到所述第一循环缓冲区内存在携带所述数据标识的段数据,所述机顶盒通过中间层检测所述携带所述数据标识的段数据与所述第二段数据是否一致;
若检测到所述携带所述数据标识的段数据与所述第二段数据不一致,所述机顶盒通过中间层置所述携带所述数据标识的段数据中数据状态位为未读状态的段数据的数据状态位为无效状态;
所述机顶盒通过中间层将所述第一循环缓冲区内数据状态位为未读状态的段数据写入第二循环缓冲区,并通过中间层将所述第二循环缓冲区内的数据状态位为未读状态的段数据回写到所述第一缓冲区;
所述机顶盒通过中间层检测所述第一循环缓冲区是否被未读数据占满;
若所述第一循环缓冲区没有被未读数据占满,所述机顶盒通过中间层接收所述第二段数据;
若所述第一循环缓冲区被未读数据占满,所述机顶盒通过中间层拒绝获取所述第二段数据。
5.如权利要求4所述的方法,其特征在于,所述机顶盒通过中间层检测所述携带所述数据标识的段数据与所述第二段数据是否一致之后,所述方法还包括:
若检测到所述携带所述数据标识的段数据与所述第二段数据一致,所述机顶盒通过中间层检测所述第一循环缓冲区内的段数据的数据状态位是否全部为已读状态;
若检测到所述第一循环缓冲区内的段数据的数据状态位全部为已读状态,所述机顶盒通过中间层置所述第一循环缓冲区内的段数据的数据状态位为未读状态,以拒绝接受所述第二段数据;
若检测到所述第一循环缓冲区内的段数据的数据状态位没有全部为已读状态,所述机顶盒通过中间层拒绝接受所述第二段数据。
6.一种机顶盒,其特征在于,包括:
接收模块,用于通过驱动层接收服务器发送的携带数据标识的第一段数据;
生成模块,用于通过驱动层基于所述第一段数据生成携带所述数据标识的第二段数据;
第一检测模块,用于通过中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据;
第二检测模块,用于若检测到所述第一循环缓冲区内不存在携带所述数据标识的段数据,通过中间层检测所述第一循环缓冲区是否被未读数据占满;
获取模块,用于若检测到所述第一循环缓冲区没有被未读数据占满时,通过中间层获取所述第二段数据。
7.如权利要求6所述的机顶盒,其特征在于,
所述生成模块,具体用于通过驱动层在所述携带数据标识的第一段数据的基础上添加数据长度位、数据状态位以及预留位,生成所述携带所述数据标识的第二段数据;
其中,所述数据状态位包括已读状态、未读状态和无效状态。
8.如权利要求6所述的机顶盒,其特征在于,所述机顶盒还包括:
拒绝获取模块,用于所述第二检测模块通过中间层检测所述第一循环缓冲区是否被未读数据占满之后,若所述第二检测模块检测到所述第一循环缓冲区被未读数据占满,通过中间层拒绝获取所述第二段数据。
9.如权利要求6所述的机顶盒,其特征在于,所述机顶盒还包括:
第三检测模块,用于所述第一检测模块通过中间层检测第一循环缓冲区内是否存在携带所述数据标识的段数据之后,若所述第一检测模块检测到所述第一循环缓冲区内存在携带所述数据标识的段数据,通过中间层检测所述携带所述数据标识的段数据与所述第二段数据是否一致;
置无效模块,用于若所述第三检测模块检测到所述携带所述数据标识的段数据与所述第二段数据不一致,所述机顶盒通过中间层置所述携带所述数据标识的段数据中数据状态位为未读状态的段数据的数据状态位为无效状态;
回写模块,用于通过中间层将所述第一循环缓冲区内数据状态位为未读状态的段数据写入第二循环缓冲区,并通过中间层将所述第二循环缓冲区内的数据状态位为未读状态的段数据回写到所述第一缓冲区;
所述第二检测模块,还用于回写模块通过中间层将所述第二循环缓冲区内的数据状态位为未读状态的段数据回写到所述第一缓冲区后,通过中间层检测所述第一循环缓冲区是否被未读数据占满;
所述获取模块,还用于若所述第一循环缓冲区没有被未读数据占满,通过中间层接收所述第二段数据;
所述拒绝获取模块,还用于若所述第一循环缓冲区被未读数据占满,所述机顶盒通过中间层拒绝获取所述第二段数据。
10.如权利要求9所述的机顶盒,其特征在于,所述机顶盒还包括:
第四检测模块,用于所述第三检测模块若检测到所述携带所述数据标识的段数据与所述第二段数据一致,通过中间层检测所述第一循环缓冲区内的段数据的数据状态位是否全部为已读状态;
置未读模块,用于若检测到所述第一循环缓冲区内的段数据的数据状态位全部为已读状态,通过中间层置所述第一循环缓冲区内的段数据的数据状态位为未读状态,以拒绝接受所述第二段数据;
所述拒绝获取模块,还用于若检测到所述第一循环缓冲区内的段数据的数据状态位没有全部为已读状态,通过中间层拒绝接受所述第二段数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510919035.XA CN105554573B (zh) | 2015-12-11 | 2015-12-11 | 一种机顶盒数据处理方法及机顶盒 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510919035.XA CN105554573B (zh) | 2015-12-11 | 2015-12-11 | 一种机顶盒数据处理方法及机顶盒 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105554573A true CN105554573A (zh) | 2016-05-04 |
CN105554573B CN105554573B (zh) | 2019-04-26 |
Family
ID=55833475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510919035.XA Active CN105554573B (zh) | 2015-12-11 | 2015-12-11 | 一种机顶盒数据处理方法及机顶盒 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105554573B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090034450A1 (en) * | 2004-10-19 | 2009-02-05 | Wilfried Urner | Methods and Devices for Transmitting Data to a Mobile Data Processing Unit |
CN101720037A (zh) * | 2009-12-17 | 2010-06-02 | 青岛海信宽带多媒体技术有限公司 | 一种dvb数据的动态缓存方法 |
CN102098569A (zh) * | 2011-02-12 | 2011-06-15 | 博视联(苏州)信息科技有限公司 | 数字电视机顶盒的psi/si表的段数据分发系统及其方法 |
CN102769796A (zh) * | 2011-05-05 | 2012-11-07 | 深圳创维数字技术股份有限公司 | 一种机顶盒节目信息更新的方法、机顶盒、服务器及系统 |
-
2015
- 2015-12-11 CN CN201510919035.XA patent/CN105554573B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090034450A1 (en) * | 2004-10-19 | 2009-02-05 | Wilfried Urner | Methods and Devices for Transmitting Data to a Mobile Data Processing Unit |
CN101720037A (zh) * | 2009-12-17 | 2010-06-02 | 青岛海信宽带多媒体技术有限公司 | 一种dvb数据的动态缓存方法 |
CN102098569A (zh) * | 2011-02-12 | 2011-06-15 | 博视联(苏州)信息科技有限公司 | 数字电视机顶盒的psi/si表的段数据分发系统及其方法 |
CN102769796A (zh) * | 2011-05-05 | 2012-11-07 | 深圳创维数字技术股份有限公司 | 一种机顶盒节目信息更新的方法、机顶盒、服务器及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105554573B (zh) | 2019-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220011926A1 (en) | Systems and methods for rendering user interface elements | |
US10558447B2 (en) | Application push method, and a service device | |
CN103078847A (zh) | 一种多码率流文件的存储和读取方法及相关装置 | |
CN106095075A (zh) | 一种信息处理方法及增强现实设备 | |
CN103702177A (zh) | 一种视频文件的存储方法及播放器 | |
CN105681653A (zh) | 一种视频文件生成方法及装置 | |
CN105376644A (zh) | 一种测试机顶盒高频头灵敏度的方法及相关装置、系统 | |
CN110543435A (zh) | 存储单元的混合映射操作方法、装置、设备及存储介质 | |
CN105511849A (zh) | 一种展示应用程序的方法、装置及系统 | |
CN114064308A (zh) | 基于列式数据扫描的多数据发送和接收方法、装置和设备 | |
CN105554573A (zh) | 一种机顶盒数据处理方法及机顶盒 | |
CN105654973A (zh) | 一种音频文件处理方法及系统 | |
CN104216944A (zh) | 网页内容显示方法及装置 | |
CN103402127A (zh) | 一种获取节目关联信息的方法及数字电视终端 | |
CN103150291B (zh) | 文件切边方法、终端及服务器 | |
CN103297272A (zh) | 设备绑定、解绑定方法和设备缓冲回收池实体设备 | |
CN105392083A (zh) | 一种mpp音箱切换方法及接入控制器 | |
CN102710981B (zh) | 一种基于机顶盒的数据接收处理方法及装置 | |
CN104699806A (zh) | 一种视频搜索方法及装置 | |
CN105282647A (zh) | 一种mpp音箱控制方法及接入控制器 | |
CN105430446A (zh) | 一种机顶盒业务推送方法、机顶盒及相关服务器 | |
CN104618743A (zh) | 码率资源分配方法、装置及系统 | |
CN103729408A (zh) | 一种多媒体文件传输方法及电子设备 | |
CN105450488A (zh) | 一种数据处理方法及相关装置 | |
CN103686299A (zh) | 基于Android终端设备通用的数字电视播放方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |