本发明涉及机顶盒技术领域,特别指一种机顶盒图片显示方法。
背景技术:
随着社会的进步,科技的发展,人民生活水平的日益提高,人们对精神生活的需求也在增加,而观看电视节目就成为了人们的首选项目,因此机顶盒成为每一家的必备产品。随着广告的发展,在机顶盒中植入广告成为运营商宣传产品和获取利润的一种手段和趋势,尤其是在机顶盒中植入开机广告,因此设计一款具有开机广告且稳定运行的顶盒显得格外重要。
为了在机顶盒中植入开机广告并缩短开机时长,传统的做法是:将首次从前端收到的开机广告图片存放于机顶盒的flash中,以保证机顶盒在下次开机可以直接显示出来,而不用每次都先接收再显示。但是,传统的做法存在如下缺点:当分配的存储空间不足以存储开机广告图片时,开机广告图片就无法正常显示,且没有对开机广告图片的大小进行判断甚至会导致机顶盒死机变成“砖块”。
因此,如何提供一种机顶盒图片显示方法,实现节约图片的存储空间,提升机顶盒运行稳定性以及图片显示效果,成为一个亟待解决的问题。
技术实现要素:
本发明要解决的技术问题,在于提供一种机顶盒图片显示方法,实现节约图片的存储空间,提升机顶盒运行稳定性以及图片显示效果。
本发明是这样实现的:一种机顶盒图片显示方法,其特征在于:包括如下步骤:
步骤s10、机顶盒接收需要开机显示的图片压缩文件;
步骤s20、机顶盒基于flash的大小对图片压缩文件的大小进行验证后,将所述图片压缩文件存储至flash或者其他存储区中;
步骤s30、机顶盒对存储的所述图片压缩文件进行有效性验证;
步骤s40、机顶盒对所述图片压缩文件的压缩文件包体进行有效性验证;
步骤s50、机顶盒解压所述压缩文件包体得到图片,并基于所述图片压缩文件的压缩文件包头以及图片数据包头将图片进行顺序显示。
进一步地,所述步骤s10中,所述图片压缩文件包括压缩文件包头以及压缩文件包体;所述压缩文件包体包括若干个图片数据信息;各所述图片数据信息均包括图片数据包头以及图片数据;
所述压缩文件包头设有第一预留固定值、第一索引值、压缩文件包头crc值、压缩文件包体crc值、压缩文件包体大小、压缩文件包头标识符、图片数量以及图片压缩文件名称;
所述图片数据包头设有第二预留固定值、第二索引值、图片数据包头crc值、图片数据crc值、图片数据大小、图片显示时长、图片格式、图片压缩格式、图片存储位置标识符、图片存储位置、图片存储位置的偏移地址以及图片名称。
进一步地,所述图片存储位置标识符的取值为图片存储路径或空值,空值表示图片数据存储在flash中。
进一步地,所述步骤s20具体包括:
步骤s21、机顶盒基于所述压缩文件包头标识符定位压缩文件包头,再从所述压缩文件包头中读取压缩文件包体大小,判断所述压缩文件包体大小是否小于等于flash的大小,若是,则将所述图片压缩文件存储至flash中;若否,则进入步骤s22;
步骤s22、基于所述图片数据包头的图片数据大小,剥离超过flash大小的图片数据存储至其他存储区中,更新剥离的图片数据对应的图片存储位置以及图片存储位置的偏移地址,重新生成图片压缩文件存储至flash中。
进一步地,所述步骤s30具体为:
机顶盒对所述压缩文件包头的压缩文件包体大小、压缩文件包头标识符、图片数量以及图片压缩文件名称进行crc计算,得到第一crc值;
对所述压缩文件包体进行crc计算,得到第二crc值;
判断所述第一预留固定值等于第一索引值、第一crc值等于压缩文件包头crc值、第二crc值等于压缩文件包体crc值且图片数量大于0是否成立,若是,则有效性验证通过,进入步骤s40;若否,则有效性验证不通过,结束流程。
进一步地,所述步骤s40具体为:
机顶盒读取所述图片压缩文件的压缩文件包体,进而得到图片数据信息;
机顶盒对各所述图片数据信息的图片数据包头的图片数据大小、图片显示时长、图片格式、图片压缩格式、图片存储位置、图片存储位置的偏移地址以及图片名称进行crc计算,得到第三crc值;
对各所述图片数据信息的图片数据进行crc计算,得到第四crc值;
判断所述第而预留固定值等于第而索引值、第三crc值等于图片数据包头crc值以及第四crc值等于图片数据crc值是否成立,若是,则有效性验证通过,进入步骤s50;若否,则有效性验证不通过,对下一个所述图片数据信息进行有效性验证。
进一步地,所述步骤s50具体包括:
步骤s51、机顶盒基于各所述图片数据包头的图片存储位置标识符依次判断图片数据是否存储在flash中,若是,则进入步骤s52;若否,则基于所述图片数据包头的图片存储位置以及图片存储位置的偏移地址查找到对应的图片数据,并进入步骤s52;
步骤s52、基于所述图片压缩格式对图片数据进行解压缩;
步骤s53、基于所述图片格式对解压缩的图片数据进行解码得到图片,并设置图片显示的色彩模式;
步骤s54、机顶盒基于所述图片显示时长在开机时对各图片进行顺序显示;
步骤s55、基于所述图片数量判断所有的图片是否显示完毕,若是,则停止显示图片;若否,则进入步骤s51。
进一步地,所述步骤s53中,所述色彩模式为argb8888。
本发明的优点在于:
1、通过对接收的图片压缩文件的大小进行验证,判断是否超过flash的大小,若超过则剥离超过flash大小的图片数据存储至其他存储区中,避免因flash的存储空间不足导致图片无法正常显示,也避免因图片压缩文件过大而导致机顶盒死机变成“砖块”;且将图片压缩为图片数据存储在图片压缩文件中,缩减了图片占用的空间,能够存储更多的图片;而对图片转换色彩模式,显示效果更加清晰,即极大的节约了图片的存储空间,极大的提升了机顶盒运行稳定性以及图片显示效果。
2、通过对图片压缩文件的压缩文件包头、压缩文件包体、图片数据包头以及图片数据进行crc校验(循环冗余校验码),保证了图片数据的完整性,进而解压出完整的图片,若某张图片crc校验不通过则直接显示下一张图片,进一步提升了图片显示效果。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1是本发明一种机顶盒图片显示方法的流程图。
具体实施方式
请参照图1所示,本发明一种机顶盒图片显示方法的较佳实施例,包括如下步骤:
步骤s10、机顶盒接收需要开机显示的图片压缩文件;所述图片压缩文件包含若干张被压缩的图片;
步骤s20、机顶盒基于flash的大小对图片压缩文件的大小进行验证后,将所述图片压缩文件存储至flash或者其他存储区中;避免因flash的存储空间不足导致图片无法正常显示,也避免因图片压缩文件过大而导致机顶盒死机变成“砖块”;
步骤s30、机顶盒对存储的所述图片压缩文件进行有效性验证;
步骤s40、机顶盒对所述图片压缩文件的压缩文件包体进行有效性验证;由于所述图片压缩文件在传输过程中,可能出现某一方在数据发送或接收期间突然中断,或者接收方设定的接收时间不够等情况导致数据不完整,通过有效性验证即可知晓所述图片压缩文件的完整性;
步骤s50、机顶盒解压所述压缩文件包体得到图片,并基于所述图片压缩文件的压缩文件包头以及图片数据包头将图片进行顺序显示。
所述步骤s10中,所述图片压缩文件包括压缩文件包头以及压缩文件包体;所述压缩文件包体包括若干个图片数据信息;各所述图片数据信息均包括图片数据包头以及图片数据;
所述压缩文件包头设有第一预留固定值(bh_magic)、第一索引值(bh_indexer)、压缩文件包头crc值(bh_hcrc)、压缩文件包体crc值(bh_dcrc)、压缩文件包体大小(bh_size)、压缩文件包头标识符(bp_indexer_total)、图片数量(bh_count)以及图片压缩文件名称(bh_name);
所述图片数据包头设有第二预留固定值(bh_magic)、第二索引值(bh_indexer)、图片数据包头crc值(bh_hcrc)、图片数据crc值(bh_dcrc)、图片数据大小(bh_size)、图片显示时长(bh_seconds)、图片格式(bh_type)、图片压缩格式(bh_comp)、图片存储位置标识符(bh_location)、图片存储位置(bh_location)、图片存储位置的偏移地址(bh_location_offset)以及图片名称(bh_name)。
所述图片存储位置标识符的取值为图片存储路径或空值,空值表示图片数据存储在flash中。
所述图片压缩文件的结构如下表所示:
所述步骤s20具体包括:
步骤s21、机顶盒基于所述压缩文件包头标识符定位压缩文件包头,再从所述压缩文件包头中读取压缩文件包体大小,判断所述压缩文件包体大小是否小于等于flash的大小,若是,则将所述图片压缩文件存储至flash中;若否,则进入步骤s22;
步骤s22、基于所述图片数据包头的图片数据大小,剥离超过flash大小的图片数据存储至其他存储区中(其它分区或者缓存区,其他分区占用内存空间,缓存区不占用内存空间),更新剥离的图片数据对应的图片存储位置以及图片存储位置的偏移地址,重新生成图片压缩文件存储至flash中。剥离的图片数据后期要显示时通过图片存储位置以及图片存储位置的偏移地址进行查找。
所述步骤s30具体为:
机顶盒对所述压缩文件包头的压缩文件包体大小、压缩文件包头标识符、图片数量以及图片压缩文件名称进行crc计算,得到第一crc值;
对所述压缩文件包体进行crc计算,得到第二crc值;
判断所述第一预留固定值等于第一索引值、第一crc值等于压缩文件包头crc值、第二crc值等于压缩文件包体crc值且图片数量大于0是否成立,若是,则有效性验证通过,进入步骤s40;若否,则有效性验证不通过,结束流程。
所述步骤s40具体为:
机顶盒读取所述图片压缩文件的压缩文件包体,进而得到图片数据信息;
机顶盒对各所述图片数据信息的图片数据包头的图片数据大小、图片显示时长、图片格式、图片压缩格式、图片存储位置、图片存储位置的偏移地址以及图片名称进行crc计算,得到第三crc值;
对各所述图片数据信息的图片数据进行crc计算,得到第四crc值;
判断所述第而预留固定值等于第而索引值、第三crc值等于图片数据包头crc值以及第四crc值等于图片数据crc值是否成立,若是,则有效性验证通过,进入步骤s50;若否,则有效性验证不通过,对下一个所述图片数据信息进行有效性验证,即有效性验证不通过就进入下一张图片的显示流程。
所述步骤s50具体包括:
步骤s51、机顶盒基于各所述图片数据包头的图片存储位置标识符依次判断图片数据是否存储在flash中,若是,则进入步骤s52;若否,则基于所述图片数据包头的图片存储位置以及图片存储位置的偏移地址查找到对应的图片数据,并进入步骤s52;
步骤s52、基于所述图片压缩格式对图片数据进行解压缩;
步骤s53、基于所述图片格式对解压缩的图片数据进行解码得到图片,并设置图片显示的色彩模式;
步骤s54、机顶盒基于所述图片显示时长在开机时对各图片进行顺序显示;
步骤s55、基于所述图片数量判断所有的图片是否显示完毕,若是,则停止显示图片;若否,则进入步骤s51。所述压缩文件包头还设有当前图片显示编号(pic_header.bh_indexer),通过判断当前图片显示编号是否等于图片数量即可知晓所有的图片是否显示完毕。
所述步骤s53中,所述色彩模式为argb8888;argb8888相对于argb1555的显示效果更清晰。
以下对所述图片压缩文件的结构做进一步的举例说明:
1、图片压缩文件的整体组织结构:
2、图片压缩文件的头部信息结构:
3、压缩文件包头
packet_header.bh_magic=bh_magic;/*固定值*/
packet_header.bh_hcrc=crc(packet_headernotincludedbh_magicandbh_hcrc);/*bh_crc是packet_header中抛去bh_magic和bh_hcrc之后其余元素的crc值*/
packet_header.bh_dcrc=crc(separated_pics_len+separated_pics);/*去掉packet_header之后整个包的crc校验值*/
packet_header.bh_size=sizeof(separated_pics_len+separated_pics);/*去掉packet_header之后整个包的大小*/
packet_header.bh_indexer=bp_indexer_total;/*必须设置为bp_indexer_total以标志这个是整个包包头,和下面的图片数据的包头区分*/
packet_header.bh_count=countsofseparated_pics;/*开机当前包中包含的图片数量*/
packet_header.bh_seconds=0;/*对于整个包headerbh_second设置为0*/
packet_header.bh_type=bp_invalid;
packet_header.bh_comp=bp_comp_non;/*表示是否有压缩,对于整个包,我们不再采用压缩方式,因为后面的元素已经压缩过*/
packet_header.bh_location={0};/*预留字段*/
packet_header.bh_location_offset=0;/*预留字段*/
packet_header.bh_name="bootpics.mbp"/*文件名*/
4、图片数据包头
pic_header.bh_magic=bh_magic;
pic_header.bh_hcrc=crc(packet_headernotincludedbh_magicandbh_hcrc);
pic_header.bh_dcrc=crc(bootpic_data);
pic_header.bh_size=sizeof(bootpic_data);
pic_header.bh_indexer=bp_indexer_0;/*bp_indexer_1,bp_indexer_2...*/
pic_header.bh_count=1;
pic_header.bh_seconds=5;/*当前图片需要显示的时间,单位为秒*/
pic_header.bh_type=bp_bmp;/*图片格式,bmp、jpg、gif等*/
pic_header.bh_type=bp_comp_gz;/*图片压缩格式*/
pic_header.bh_location={0};/*如果当前分区不足以存放该图片,可以设置mtd分区或者文件系统图片路径*/
pic_header.bh_location_offset=0;/*如果设置了图片放到mtd分区中这里设置对应的offset*/
pic_header.bh_name="bootpic0.bmp";/*bootpic1.jpgorbootpic2.jpgandsoon*/
综上所述,本发明的优点在于:
1、通过对接收的图片压缩文件的大小进行验证,判断是否超过flash的大小,若超过则剥离超过flash大小的图片数据存储至其他存储区中,避免因flash的存储空间不足导致图片无法正常显示,也避免因图片压缩文件过大而导致机顶盒死机变成“砖块”;且将图片压缩为图片数据存储在图片压缩文件中,缩减了图片占用的空间,能够存储更多的图片;而对图片转换色彩模式,显示效果更加清晰,即极大的节约了图片的存储空间,极大的提升了机顶盒运行稳定性以及图片显示效果。
2、通过对图片压缩文件的压缩文件包头、压缩文件包体、图片数据包头以及图片数据进行crc校验(循环冗余校验码),保证了图片数据的完整性,进而解压出完整的图片,若某张图片crc校验不通过则直接显示下一张图片,进一步提升了图片显示效果。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。