HM的编码全部采用C/C++编写而成,要移植到Android平台上,如果完全重写整个解码器,时间是相当不够的。
好在有了Android NDK,可以轻松地利用已公开的源代码进行修改。
Android NDK使用指南可以参考我的这篇文章:http://blog.csdn.net/luofl1992/article/details/8663171
另外这篇文章也值得一看:http://www.cnblogs.com/hibraincol/archive/2011/05/30/2063847.html
一、
正确编译运行通过之后,会发现解码开始就造成程序崩溃了。
这是在TComRom.cpp中有一处代码不够严谨造成,
在394行左右有如下的语句
// 其中 g_aucConvertToBit[ uiNumBlkSlide ] 是类型为Char的变量
// 见 TComLib/TypeDef.h 有 typedef char Char;
// 其值在初始化时为 -1
UInt log2Blk = g_aucConvertToBit[ uiNumBlkSlide ] + 1;
// 我们应该做的是把log2Blk类型修改为UChar,即
UChar log2Blk = g_aucConvertToBit[ uiNumBlkSlide ] + 1;
至于为什么原来会出错,通过使用logcat工具输出调试信息可以发现某些时候log2Blk的值突然变成了256,
不是 -1 + 1= 0 吗&#