SDK使用差异
Tiramisu与Taiyaki平台SDK使用差异:
-
Tiramisu平台VDEC带crop功能,参考MI_VDEC_SetDestCrop。
-
Tiramisu平台拿掉了divp模块,统一用SCL模块代替,使用方法参考scl api文档。
-
MI_DISP_EnableInputPort/MI_DISP_DisableInputPort重复调用会返回错误。
-
MI_VENC_CreateDev可以不用调用,但需要在MI_VENC_CreateChn等接口传入对应的device id,app需要指定 h264&h265的device id为MI_VENC_DEV_ID_H264_H265_0(0),指定jpeg的device id为MI_VENC_DEV_ID_JPEG_0(8)。
-
VDEC/GFX接口也加入了device ID概念,目前默认是0,方便后面芯片扩展。
-
AO/AI模块不再支持vqe/adec/resample等算法相关接口,另外通过独立算法模块实现,参考AEC/AED/APC/BF/SRC/SSL相关api文档介绍。
-
回看暂停放大(抓图)实现方法有差异。
Taiyaki平台做法如下:
-
新增接口MI_VDEC_DecRepeatFrame(MI_VDEC_CHN VdecChn, MI_BOOL bCancleRepeatFrame);
-
新增参数bRepeatFrame
typedef struct MI_VDEC_VideoStream_s { MI_U8 *pu8Addr; MI_U32 u32Len; MI_U64 u64PTS; MI_BOOL bEndOfFrame; MI_BOOL bEndOfStream; MI_BOOL bRepeatFrame; }MI_VDEC_VideoStream_t;
-
暂停时将最后一帧数据bRepeatFrame设为TRUE送下去。
-
调用MI_VDEC_DecRepeatFrame,bCancleRepeatFrame设为FALSE,此时会重复解码最后一帧数据,可以重复多次调用;这里可以根据需要设置自己想要的vdec output size。
-
如要恢复正常状态,调用MI_VDEC_DecRepeatFrame,bCancleRepeatFrame设为TRUE即可。

Tiramisu平台做法:
-
新增API接口MI_VDEC_PauseChn/MI_VDEC_RefreshChn/MI_VDEC_ResumeChn。
-
暂停时调用MI_VDEC_PauseChn并停止送流;接口可以重复调用,不会报错。
-
调用MI_VDEC_RefreshChn,每调用一次,会刷一个重复帧解码。需要先开启暂停,否则会报错;需要保证es buf里面最少还残留一帧未解数据,可以在pause后去判断是否还有剩余未解帧,如果没有继续送一帧数据进去;这里可以根据需要设置自己想要的vdec output size。
-
调用MI_VDEC_ResumeChn,恢复正常解码。需要先开启暂停,否则会报错。
-
-
Tiramisu平台DISP有2组device,device0对应layer0(16 port)/layer1(1 port),device1对应layer2(16 port)/layer3(1 port),device1的PQ更强,理论上可以调到更好的显示效果。如果要用device1,还需要修改
/config/fbdev.ini文件,FB_HWLAYER_ID = 3。