最近在调试rk1126平台的时候 有个场景需要ai识别平台下发过来的jpeg图片
从网上找了多张jpeg图片发现测试的时候部分jpeg解码程序会挂掉的问题
然后试了下rkmedia自带的例子 rkmedia_vdec_test 也会挂掉 如下:

然后再rk的论坛上发了个帖子 也没有人回复
但是又不能不解决这个问题 正好前两天在把gdb移植到了rk1126平台
就用gdb跑了一下会挂掉的图片 用gdb 打了下堆栈 如下图

于是就去看了下rkmedia的源码
在rkmedia_api.cc文件中 这个函数中

通过加log打印,最终发现是GetPixelFormat这个函数 当部分jpeg解码的时候这个函数返回的值是-1 然后 相当于给PixFmtToString这个函数传了一个-1的值
再看下这个函数 是去数组里查表 传了个-1的值 所以就有问题了 改成如上的代码 判断下是否是-1 测试下之后就不会挂了 
对比下正常的 返回的图片格式是1

异常的时候返回了-1

由于更改了rkmedia模块
所以需要重新编译 rkmedia 命令如下

编译成功后 会在rkmedia的 src目录下生成相应的so文件

然后把这些libeasymedia.so 和 libeasymedia.so.1.0.1 替换掉板子上的 对应文件即可
板子上的路径在/oem/usr/lib目录下

成功解决这个问题