SDK使用差异

Tiramisu与Taiyaki平台SDK使用差异:

  1. Tiramisu平台VDEC带crop功能,参考MI_VDEC_SetDestCrop。

  2. Tiramisu平台拿掉了divp模块,统一用SCL模块代替,使用方法参考scl api文档。

  3. MI_DISP_EnableInputPort/MI_DISP_DisableInputPort重复调用会返回错误。

  4. 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)。

  5. VDEC/GFX接口也加入了device ID概念,目前默认是0,方便后面芯片扩展。

  6. AO/AI模块不再支持vqe/adec/resample等算法相关接口,另外通过独立算法模块实现,参考AEC/AED/APC/BF/SRC/SSL相关api文档介绍。

  7. 回看暂停放大(抓图)实现方法有差异。

    Taiyaki平台做法如下:

    1. 新增接口MI_VDEC_DecRepeatFrame(MI_VDEC_CHN VdecChn, MI_BOOL bCancleRepeatFrame);

    2. 新增参数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;
      
    3. 暂停时将最后一帧数据bRepeatFrame设为TRUE送下去。

    4. 调用MI_VDEC_DecRepeatFrame,bCancleRepeatFrame设为FALSE,此时会重复解码最后一帧数据,可以重复多次调用;这里可以根据需要设置自己想要的vdec output size。

    5. 如要恢复正常状态,调用MI_VDEC_DecRepeatFrame,bCancleRepeatFrame设为TRUE即可。

    Tiramisu平台做法:

    1. 新增API接口MI_VDEC_PauseChn/MI_VDEC_RefreshChn/MI_VDEC_ResumeChn。

    2. 暂停时调用MI_VDEC_PauseChn并停止送流;接口可以重复调用,不会报错。

    3. 调用MI_VDEC_RefreshChn,每调用一次,会刷一个重复帧解码。需要先开启暂停,否则会报错;需要保证es buf里面最少还残留一帧未解数据,可以在pause后去判断是否还有剩余未解帧,如果没有继续送一帧数据进去;这里可以根据需要设置自己想要的vdec output size。

    4. 调用MI_VDEC_ResumeChn,恢复正常解码。需要先开启暂停,否则会报错。

  8. 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。