Hi3559A中,默认单帧最多支持16个slice,解码时通过:
cat /proc/umap/vdec
可以查询到
MaxVPS MaxSPS MaxPPS MaxSlice
以上是与H.264、H.265解码相关的内存分配参数。
如果用默认参数,对于单帧多slice和频繁gop的情况,会出现花屏和卡顿,解决方法是修改
sample_comm_vdec.c
在SAMPLE_COMM_VDEC_Start函数中,增加VDEC_PRTCL_PARAM_S ProtocolParam的设置就可以了。
代码如下:
VDEC_PRTCL_PARAM_S ProtocolParam;
HI_S32 s32Ret;
if (PT_H264 == pastSampleVdec[i].enType)
{
HI_MPI_VDEC_GetProtocolParam(i, &ProtocolParam);
printf("s32MaxSliceNum = %d, s32MaxSpsNum = %d, s32MaxPpsNum = %d\n", ProtocolParam.stH264PrtclParam.s32MaxSliceNum,
ProtocolParam.stH264PrtclParam.s32MaxSpsNum, ProtocolParam.stH264PrtclParam.s32MaxPpsNum);
ProtocolParam