公开/公告号CN101834978A
专利类型发明专利
公开/公告日2010-09-15
原文格式PDF
申请/专利权人 福建新大陆通信科技有限公司;
申请/专利号CN200910113022.8
发明设计人 黄少雄;
申请日2009-12-23
分类号H04N5/00(20060101);G06F12/08(20060101);
代理机构福州市鼓楼区京华专利事务所(普通合伙);
代理人翁素华
地址 350000 福建省福州市马尾区儒江西路1号
入库时间 2023-12-18 00:52:30
法律状态公告日
法律状态信息
法律状态
2017-02-15
未缴年费专利权终止 IPC(主分类):H04N21/435 授权公告日:20110928 终止日期:20151223 申请日:20091223
专利权的终止
2011-09-28
授权
授权
2010-11-03
实质审查的生效 IPC(主分类):H04N5/00 申请日:20091223
实质审查的生效
2010-09-15
公开
公开
技术领域
本发明涉及数字机顶盒领域,尤其涉及一种数字机顶盒EPG系统的优化方法。
背景技术
随着数字电视、网络技术的发展,模拟电视信号逐步关闭,数字电视信号逐步普及。人们对数字电视及数字电视增值业务的需要日渐增强。随着数字电视节目数量的不断增加,人们在使用机顶盒收看数字电视时,迫切需要一种可以方便、快速浏览电视节目预告的方法。在这个背景下产生了EPG(电子节目指南)系统。现有的EPG系统采用单进程工作的机制,即CPU(中央处理器)在间隔的时间段内,分别处理从DVB标准业务信息码流中收取原始数据包,即电子节目指南数据的捕获进程;或者进行原始数据包的拆分和解析,即电子节目指南数据的分析进程;这样必然导致电子节目指南数据的接收和分析后显示的速度变慢。
同时,现有的EPG系统采用固定长度的数组对数据进行缓存,由于EPG不同节目,不同时刻的数据量不一致,这样会导致内存空间的浪费,如图1所示,在图中Section的长度固定为4096个字节,而EPG数据库为不定长度,长度经常小于4096字节,因此会造成内存浪费。
发明内容
为了解决上述问题,本发明提供一种可以加快EPG数据的抓取与分析,减小内存空间浪费的数字机顶盒EPG系统的优化方法,使机顶盒收到的数据以最快的速度转化为电子节目单,呈现在电视屏幕上供数字电视用户查阅。
本发明一种数字机顶盒EPG系统的优化方法,具体包括以下步骤:
步骤1、由内存申请一段连续的空间作为数据缓冲区,同时申请三个变量用于表示目前数据缓冲区的状态,其中,读指针用于表示目前数据读到的位置,写指针用于表示目前数据写到的位置,bW_after_R用于指示读写指针的先后关系,两个指针互相牵制,环形移动,形成一个环形数据缓冲区;通过控制读、写指针使得环形数据缓冲区内的数据必须先写数据,然后才能读取,并且在数据没有读完时,写指针不能让新的数据覆盖未读走的数据;
步骤2、采用双进程进行数据处理,一个进程专门进行数据捕获,一个进程专门进行数据分析,两个进程间通过步骤1中的环形数据缓冲区进行数据缓冲,同时进行异步处理;
从DVB标准业务信息码流中滤取出EPG系统数据信息后,第一时间将该数据转移到优化后的环形数据缓冲区中,数据分析进程可以在任何时间从优化后的环形数据缓冲区中取得数据进行分析。
所述的数据捕获进程指的是,在捕获到一个数据段时,先判断写指针和读指针的关系,如果写指针还没有赶上读指针,就将该数据段的长度写到该环形数据缓冲区的写指针位置,紧接着将该数据段的数据写入到该环形数据缓冲区中,并将写指针移动到数据的结尾。
所述的数据分析进程指的是,每隔一段时间对环形数据缓冲区内的写指针和读指针进行分析,如果读指针还没有赶上写指针,则从环形数据缓冲区的读指针位置读取数据段的长度,紧接着读取数据段,然后调用分析函数对数据段进行解析。
本发明通过对数据结构和算法的改进,一改现有的单进程工作机制,采用双进程协助异步处理的技术,大大提高了数据的缓存和分析速度,能在切台的第一时间显示该节目的电子节目指南信息,为用户的数字电视收视带来全新的良好体验。该发明同时改进了数据的存储结构,采用环形缓冲,大大节省了EPG数据缓存的开销,为嵌入式系统的其它应用节省了宝贵的内存资源。
附图说明
图1为现有的EPG系统数据缓冲区的数组结构示意图;
图2为本发明的数据捕获和分析进程的工作流程图;
图3为本发明写指针快于读指针时的数据缓冲区的示意图;
图4为本发明读指针快于写指针时的数据缓冲区的示意图。
以下结合附图和具体实施例对本发明作进一步的详述。
具体实施方式
本发明公开的一种数字机顶盒EPG系统的优化方法具体包括以下步骤
步骤1、设置数据缓冲区
由内存申请一段连续的空间作为数据缓冲区,同时申请三个变量用于表示目前数据缓冲区的状态,其中,读指针(ReadPointer)用于表示目前数据读到的位置,写指针(WritePointer)用于表示目前数据写到的位置,控制变量(bW_after_R)用于指示读写指针的先后关系,两个指针互相牵制,环形移动,形成一个环形数据缓冲区;通过控制读、写指针使得环形数据缓冲区内的数据必须先写数据,然后才能读取,并且在数据没有读完时,写指针不能让新的数据覆盖未读走的数据。
如图4所示,当bW_after_R的值为TRUE时,说明写指针在读指针之后,当写指针遇到读指针时,不能进行写操作,必须等读指针往前走,把数据读走之后,才能写入数据,不然会覆盖掉没有读走的数据,造成数据丢失。当读指针到达缓冲区末端,读完所有数据时,将读指移动到缓冲区首部,并且将bW_after_R的值置为FALSE。
如图3所示,当bW_after_R的值为False时,说明写指针在读指针之前。当读指针遇到写指针时,不能进行读操作,必须等写指针往前走,写入新数据之后,才能读出数据。当写指针到达缓冲区末端,没有内存可以写数据的时候,将写指移动到缓冲区首部,并且将bW_after_R的值置为TRUE。
本发明的数据缓冲区采用异步的FIFO结构,先申请一段连续的空间,用于数据段(Section)共享使用。如图3、4所示,其中LenN用于表示第N段数据段的实际长度大小,Section N表示第N段数据段的具体存储空间。每个数据段只会占用本身大小的空间。
步骤2、采用双进程进行数据处理,一个进程专门进行数据捕获,一个进程专门进行数据分析,两个进程间通过一个环形数据缓冲区进行数据缓冲,同时进行异步处理;从DVB标准业务信息码流中滤取出EPG系统数据信息后,第一时间将该数据转移到优化后的环形数据缓冲区中,数据分析进程可以在任何时间从优化后的环形数据缓冲区中取得数据进行分析。
所述的数据捕获进程指的是:在捕获到一个数据段(section)时,先判断写指针和读指针的关系,如果写指针还没有赶上读指针,说明还有空闲的空间可以存储数据,就将该数据段(section)的长度写到缓冲区的写指针位置,紧接着将该数据段(section)的数据写入到缓冲区,并将写指针移动到数据的结尾;
所述的数据分析进程指的是:每隔一段时间对缓冲区内的写指针和读指针进行分析,如果读指针还没有赶上写指针,说明还有未读取的数据,则从数据缓冲区的读指针位置读取数据段(section)的长度(len),然后紧接着读len这么长的数据,即数据段(section),然后调用分析函数对数据段(section)进行解析。
如图2所示,本发明在滤波进程中从DVB标准业务信息码流中滤取EPG系统数据信息,第一时间将数据转移到优化后的环形数据缓冲区中,数据分析进程可以在任何时间从优化后的环形数据缓冲区中取得数据进行分析。虽然两个进程间的处理速度可能不一致,但通过环形数据缓冲区的两个指针互相牵制、环形移动,且优化后的环形数据缓冲区能有效对数据进行缓存,这就协调了两个进程在运行速度上的不一致,加快了数据处理的速度,大大加快了EPG系统数据的捕获和分析的速度。
采用本发明的技术方案后,从现有技术的单进程工作机制变成双进程协作方式,双进程间采用了环形数据缓存区进行数据通信,基于环形数据缓存区,两个进程间可以进行异步的数据处理及缓冲。同时,数据缓冲从现有技术的固定长度的组数结构变成环形缓存区,有效减少了内存的浪费,节省嵌入式系统保贵的内存资源。
机译: 一种数字机顶盒,其实现模拟电视数据并结合使用该数字机顶盒的数字视频盘播放器和模拟电视数据的实现方法
机译: 一种数字机顶盒,其实现模拟电视数据并结合使用该数字机顶盒的数字视频盘播放器和模拟电视数据的实现方法
机译: 电视数字机顶盒的振兴时间优化方法