赞助论坛
  • 39200阅读
  • 0回复

haier机型lzss解码成功,已成功提取开机画面,增加编码功能。 [复制链接]

楼层直达

发帖
58
精华
11
金币
882
威望
105
贡献
113
好评
41
注册
2010-01-05
楼主    quicktime 发表于: 2010-03-05 00:19:36 
这两天看了一下lZSS相关资料,仔细对比了 占线 提供的开机画面文件和海尔提取的bin。
找到了解码规律,可以实现编码和解码,源代码见附件。请下载最新的附件,原来的附件设1权限,不需要了。

1. 海尔bin中运用的LZSS编码和最初Haruhiko Okumura先生发表的源代码算法区别是(偏移地址,匹配数)数据对的编码方式不一样。

2. 编码还算容易实现,但要实现和原厂编码一致的结果,花了不少时间。最后发现是原厂的前缓冲大小是16, 而Haruhiko Okumura先生定义的是18。这两者压缩率是不一样的。因此提供了两个版本。

一个编码压缩率较高
一个编码结果和提取的bin完全一样。
两者解码结果是一样的。

3. 编码和解码需要去除头12个字节,具体见占线的置顶贴
[url]http://bbs.lcdhome.net/read-htm-tid-32792.html[/url]

其实这12个字节很重要。需要靠它来找到和提取正确的压缩包数据。修改bin重新编码后,还要更新编码前原始文件大小。

4. 众所周知,开机画面是mpg格式的。按mpg格式定义,起始4个字节是节目开始标记,内容是00 00 01 B3,末尾四个字节是节目结束标记,内容是00 00 01 B7。解码后搜索这两个标记,然后把之间的内容贴出来,另存成mpg文件。就可以播放,如果播放不了,去下载相关的插件。

5. 修正昨天的一个说法。因为昨天解码25号招标海尔60000后的数据是没有考虑头12个字节指示的压缩包长度。今天解压的结果,仍是以00 00 01 B3作为节目开始标记。



附简明开机画面修改方法:
1. 找到压缩包数据,用lzss工具解压
2. 制作开机mpg,过程可参考国芯方案
3. 找到00 00 01 B3和00 00 01 B7数据对,替换。
4. 用lzss工具压缩,同时更新指示压缩数据的那12个字节处,压缩包长度和原始文件长度
5. 修改校验值。具体可见op2010和占线的帖子。
6. 刷机试验。

俺现在不太想刷机,有兴趣的TX可试试。
呵呵,程序写完3/5号,发完帖子变3/6号了。
本帖最近评分记录: 12 条评分