1.soPHON SDK错误提示信息”VPU_DecRegisterFrameBuffer Failed Error code is 0x3”, 然后提示Allocate Frame Buffer内存失败
这个提示信息表示:分配的解码器缓存帧个数,超过了最大允许的解码帧。导致这个问题的原因有可能是:
- 不支持的视频编码格式,比如场格式,此时可以用 Sophon SDK解码视频流的常见调试方法 中的方法,把码流数据录下来,提交给我们分析。
- 设置了过大的extra_frame_buffer_num。理论上,extra_frame_buffer_num不能超过15,超过了以后就有可能不能满足标准所需的最大缓存帧数。因为大部分编码码流并没有用到最大值,所以extra_frame_buffer_num大于15的时候,对大部分码流仍然是可以工作的。
目前发现可能导致这个问题的原因有上述两种,后续有新的案例继续增补
2.soPHON SDK程序提示“VPU_DecGetoutputInfo decode fail framdIdx xxx error(0x00000000) reason(0x00400000), reasonExt(0x00000000)”可能是什么问题(reason的具体数值可能不同)
这个提示通常是由码流错误造成的,提示的含义是第xxx帧解码错误,错误原因为….。这里具体原因对于上层应用来说,不用关心,只需知道这是由码流错误导致的即可。
进一步分析,导致码流错误的原因通常可以分为两类,我们要有针对的进行处理。因为一旦频繁出现这种提示,说明解码出来的数据是不正确的,这时候有可能是各种马赛克或者图像花,对于后续的处理会造成各种异常情况,所以我们必须尽量减少这种情况的发生。