一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数字电视section数据的接收方法与流程

2021-11-05 19:37:00 来源:中国专利 TAG:

1.本发明涉及数据处理技术领域,具体是一种数字电视section数据的接收方法。


背景技术:

2.随着时代的发展,数字电视发展突飞猛进,从传统的有线机顶盒到iptv,从ecos系统到android系统,但无论其如何发展,其所遵循的数字电视协议从未变过,比如iso13818协议等。机顶盒想要进行节目播放,必须按既定的编码协议将数字信号里的节目信息获取出来。而有的节目信息来的既快且多,如epg、ecm等信息;当我们想要从非常多的数据里得到一部分我们想要的信息时,就会遇到难题:过滤器的设置问题;如果进行非常准确的过滤条件设置,我们可以精准的得到想要的信息,但就需要设置多个过滤器,加大了硬件资源的占用;如果放宽过滤条件,过滤效果不佳,数据获得者需要再次对数据进行鉴别,影响其工作效率;并且当section数据短时间内高密度的来临,可能会由于数据获取不及时而导致数据遗失。
3.现有数字电视机顶盒获取数据是由数据申请者向dmux通过设置过滤器,机顶盒硬件根据设置的过滤条件进行数据过滤,当有符合条件的数据到来时,dmux会向数据申请者发送消息,数据申请者根据消息从dmux读走数据,过滤条件由16个字节和其对应的mask组成。但是,现有的过滤器无法完成复杂条件的过滤,如当想让过滤器第一个字节不等于a,第二个字节在a~c之间,第三个字节某个bit必须为1,这样的过滤条件是无法对单个过滤器进行设置的,通常的做法是设置一个宽泛的过滤器,使其包含所有条件,然后由数据申请者在得到数据后,在后端再次进行数据判断。


技术实现要素:

4.为了实现单个过滤器进行复杂的条件过滤,提供了一种数字电视section数据的接收方法。
5.本发明解决上述问题所采用的技术方案是:
6.一种数字电视section数据的接收方法,包括:
7.步骤a、创建数据过滤任务task:在数据申请者与dmux间设置数据过滤任务task;
8.步骤b、定义过滤条件设置协议;
9.步骤c、数据过滤任务task对过滤条件设置协议进行解析;
10.步骤d、根据过滤条件进行数据过滤并存储;
11.步骤e、数据读走通知。
12.进一步地,所述步骤b包括:
13.b1、定义判断模式:所述判断模式包括等于、不等于、大于等于、小于四种模式;
14.b2、定义过滤参数设置方法:所述过滤参数设置方法包括2字节的值,当判断模式为等于或不等于时:第一字节置0,第二字节为有效字节;当判断模式为大于等于或小于时:第一字节为开始值,第二字节为结束值;
15.b3、定义基本逻辑判断单元:所述基本逻辑判断单元为:判断模式 过滤参数;
16.b4、定义单个字节的多重过滤条件的设置方法:所述单个字节的多重过滤条件的设置方法为字节索引 模式个数 基本逻辑判断单元1 基本逻辑判断单元2
……
基本逻辑判断单元m,m为基本逻辑判断单元的个数;
17.b5、过滤条件设置协议具体为:字节设置个数 字节1的多重过滤条件 字节2的多重过滤条件
……
字节n的多重过滤条件,n等于字节设置个数。
18.进一步地,所述过滤条件设置协议还包括校验值,即所述过滤条件设置协议具体为:字节设置个数 字节1的多重过滤条件 字节2的多重过滤条件
……
字节n的多重过滤条件 校验值。
19.进一步地,所述步骤c包括:
20.c1、基本逻辑判断单元解析;
21.c2、单个字节的多重过滤条件解析;
22.c3、过滤条件设置协议解析。
23.进一步地,所述步骤d具体为:当dmux发送读取消息给数据过滤任务task后,数据过滤任务task立即从dmux读取数据,并将数据存储到自己的缓冲空间中;当缓冲空间已被用完而数据申请者还未将数据读走时,数据过滤任务task进入等待模式、覆盖模式或多缓冲空间模式。
24.进一步地,所述等待模式为:当缓冲空间满后不再去dmux读取数据,保持现有缓冲空间数据,任由dmux覆盖未被数据过滤任务task读走的数据;所述覆盖模式为:继续从dmux读取数据并且覆盖掉缓冲空间中最早得到的section数据;所述多缓冲空间模式为:保持现有缓冲空间数据,申请一块新的缓冲空间进行数据存储,如果再满则再次申请缓冲空间。
25.进一步地,数据过滤任务task的数据存储方法包括:
26.d1.1建立读信息结构体;
27.d1.2建立写信息结构体;
28.d1.3建立缓冲空间信息结构体;
29.d1.4建立缓冲区信息结构体;
30.d1.5数据判断并存储。
31.进一步地,所述步骤d1.5数据判断并存储具体为:数据过滤任务task从dmux读取到数据并根据过滤条件设置协议对数据内容进行判断,判定为有益数据则进行数据存储,当需要进行数据存储时:
32.a.为数据添加开始和结束标记;
33.b.写入数据。
34.进一步地,所述步骤e为立即通知或等数据申请者读走上一次的数据后再通知。
35.本发明相比于现有技术具有的有益效果是:通过重新定义过滤协议,使得在数据过滤时只需要设置一个过滤器,大大降低了硬件资源消耗;数据申请者只会得到期望的数据,优化其数据处理逻辑,减小开发难度;通过临时任务对数据进行有效缓冲,保障高密度数据来临时及时获取数据,不会造成数据遗漏。
具体实施方式
36.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
37.一种数字电视section数据的接收方法,包括:
38.步骤a、创建数据过滤任务task:在数据申请者与dmux间设置数据过滤任务task,数据申请者通过数据过滤任务task向dmux获取所需数据;
39.步骤b、定义过滤条件设置协议;
40.步骤c、数据过滤任务task对过滤条件设置协议进行解析;
41.步骤d、根据过滤条件进行数据过滤并存储;
42.步骤e、数据读走通知。
43.具体的,所述步骤b包括:
44.b1、定义判断模式:所述判断模式包括等于、不等于、大于等于、小于四种模式,在本实施例中将其分别表示为0xaa、0xbb、0xcc、0xdd。
45.b2、定义过滤参数设置方法:所述过滤参数设置方法包括2字节的值,当判断模式为等于或不等于时:第一字节置0,第二字节为有效字节;当判断模式为大于等于或小于时:第一字节为开始值,第二字节为结束值。
46.b3、定义基本逻辑判断单元:所述基本逻辑判断单元为:判断模式 过滤参数;例如:0xaa00ef表示过滤条件为:该过滤字节等于0xef,section数据内该字节的值等于0xef才是需要的section数据;0xcc05e0表示section数据对应字节从0x05~0xe0都是有效的section数据。
47.b4、定义单个字节的多重过滤条件的设置方法:所述单个字节的多重过滤条件的设置方法为字节索引 模式个数 基本逻辑判断单元1 基本逻辑判断单元2
……
基本逻辑判断单元m,m为基本逻辑判断单元的个数;字节索引表示section数据的16字节过滤条件索引,即0~15;例如:0x0203aa00efcc05e0bb00a0,表示过滤条件为:第二个过滤字节由三个判断条件组成:等于0xef,在0x05~0xe0之中,并且不等于0xa0。
48.b5、过滤条件设置协议具体为:字节设置个数 字节1的多重过滤条件 字节2的多重过滤条件
……
字节n的多重过滤条件,n等于字节设置个数。
49.进一步地,所述过滤条件设置协议还包括校验值,即所述过滤条件设置协议具体为:字节设置个数 字节1的多重过滤条件 字节2的多重过滤条件
……
字节n的多重过滤条件 校验值。在本技术中校验值采用crc校验值,crc校验值将字节个数到字节n的多重过滤条件的数据进行crc计算,用于校验过滤参数的准确性。
50.所述步骤c数据过滤任务task对过滤条件设置协议的解析包括:
51.c1、基本逻辑判断单元解析:根据b3的定义进行解析,每个逻辑判断单元具备四个unsigned short变量(该定义仅为示例):equalvalue、equalmin、equalmax、unequalvalue,将解析后的值赋给这四个变量,当变量未被使用时其默认值为无效值0xffff;例如:0xcc05e0,equalvalue=0xffff;unequalvalue=0xffff;equalmin=0x05;equalmax=0xe0。
52.c2、单个字节的多重过滤条件解析:根据b4的定义,定义单个字节的过滤信息结构
体:包括字节索引、模式个数、模式信息链表或者模式信息数组;模式信息链表或模式信息数组由c1所述的四个变量组成。
53.c3、过滤条件协议解析:根据步骤b5的定义,定义完整过滤条件协议结构体:包括字节设置个数、单个字节的过滤信息结构体链表或数组;当定义中包含crc校验值时还应加上crc校验值。
54.所述步骤d具体为:当dmux发送读取消息给数据过滤任务task后,数据过滤任务task立即从dmux读取数据,并将数据存储到自己的缓冲空间buffer中;当缓冲空间buffer已被用完而数据申请者还未将数据读走时,数据过滤任务task进入等待模式、覆盖模式或多缓冲空间模式,所述等待模式为:当缓冲空间buffer满后不再去dmux读取数据,保持现有缓冲空间buffer中的数据,任由dmux覆盖未被数据过滤任务task读走的数据;所述覆盖模式为:继续从dmux读取数据并且覆盖掉缓冲空间buffer中最早得到的section数据;所述多缓冲空间模式为:保持现有缓冲空间buffer中的数据,申请一块新的缓冲空间buffer进行数据存储,如果再满则再次申请缓冲空间buffer。在本实施例中,数据过滤任务task使用的数据缓冲buffer采用循环buffer。
55.数据过滤任务task的数据存储方法包括:
56.d1.1建立读信息结构体:读保护信号量、读指针、可读数据长度、数据读走标识;
57.d1.2建立写信息结构体:写指针、可写buffer长度;
58.d1.3建立缓冲buffer信息结构体:读信息结构体、写信息结构体;
59.d1.4建立缓冲区信息结构体:缓冲区个数、当前缓冲区index、已满缓冲区个数、已满缓冲区index列表、缓冲buffer信息结构体1、缓冲buffer信息结构体2、......、缓冲buffer信息结构体x,x为缓冲buffer信息结构体的个数。
60.d1.5数据判断并存储:数据过滤任务task从dmux读取到数据并使用步骤c3建立的完整过滤条件协议结构体的内容进行判断,判定为有益数据则进行数据存储,当需要进行数据存储时:
61.a.首先再section数据的头和尾加上section开始和结束标记,当指针异常后能通过标记快速校正到正确的指针位置;
62.b.根据当前缓冲区index,使用对应的缓冲buffer信息结构进行读指针与写指针位置判断,根据判断结果将section数据写入写指针位置,完成后写指针往后移动相应长度,所述相应长度为section长度加上开始标记的长度及结束标记的长度。
63.具体的,当读写指针无交集,即写指针加上写入长度与读指针加可读长度无重合时,循环buffer指针的判定为常规方法,在此不再赘述。
64.当读写指针有交集,即写指针加上写入长度与读指针加可读长度有重合时:
65.等待模式:不存储数据,无下一步动作;
66.覆盖模式:计算重合长度,根据重合长度来确认需要覆盖多少个未读走的section数据;例如:重合长度为200字节,但是重合区域的section的长度为1000字节,那么可读指针的长度需要向后移动1000字节;如果重合区域的第一个section长度为100,第二个section长度为200,那么可读指针的长度需要向后移动300字节;
67.多缓冲空间模式:当一个buffer缓冲区满了之后,该缓冲区保持数据不变;task更新当前缓冲区index、并更新已满缓冲区个数、已满缓冲区index列表;在该模式下,当有多
个缓冲区已满,数据申请者来读取数据时,则根据已满缓冲区index列表的顺序依次从对应的缓冲区读走数据;当已满缓冲区数据被完全读走后,task更新并更新已满缓冲区个数、已满缓冲区index列表,将已读走的缓冲区移除出已满缓冲区index列表。
68.数据存储还涉及到数据读取,在数据读取时的操作分为数据申请者读走数据及存储区内部调整,具体的:
69.数据申请者读走section数据:根据当前缓冲区index,数据申请者从对应的缓冲buffer信息结构体获取读保护信号量,然后读走数据,将数据读走标识设置为已读走,释放读保护信号量。
70.存储区内部调整:根据当前缓冲区指针,使用对应的缓冲buffer信息结构判断读信息结构体的数据读走标识,当数据被数据申请者读走后,此时数据读走标识为已读走,task获取读保护信号量,然后根据具体情况更新读指针、可读数据长度,将读指针移动至下一次读取数据的对应位置,并将数据读走标识设置为未读走,然后释放信号量。
71.所述步骤e为立即通知或等数据申请者读走上一次的数据后再通知。无论哪种模式,当task收到第一个section数据后都会立即通知数据申请者读数据,后续则根据对应方式进行通知发送。立即通知:task每得到一个有益section数据,则发消息通知数据申请者。等数据申请者读走上一次的数据后再通知:即d1.3 c步骤发生后,任务发送消息通知数据申请者读取数据。
72.本发明的简要流程是:将section数据的获取由申请者直接从dmux获取数据变更为:当数据申请者申请section数据时,将创建一个临时数据过滤任务task,task创建后首先根步骤b协议,解析过滤参数,生成判断条件队列;dmux的数据读取请求从发送给数据申请者变更为发送给task,task收到消息后从dmux读取section数据,并根据判断条件队列里的条件判断该section是否是有益数据,如果是则根据步骤d将数据存储起来,并按步骤e通知数据申请者获取数据。采用这种方式实现了在数据过滤时只需要设置一个过滤器,大大降低了硬件资源消耗;数据申请者只会得到期望的数据,优化其数据处理逻辑,减小开发难度;通过临时任务对数据进行有效缓冲,保障高密度数据来临时及时获取数据,不会造成数据遗漏。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献