开发DM8127+ipnc-rdk3.5,输入的视频为pal->tvp5150->dm8127,视频分辨率为720*576
enclink创建报错如下:
[m3video] 12761: ENCODE: Creating CH0 of 720 x 480, pitch = (736, 736) [PROGRESSIVE] [NON-TILED ], bitrate = 10000 Kbps … [m3video] chromaFormat = 7
[m3video] FVID2_DF_YUV420SP_UV = 7
[m3video] FVID2_DF_YUV420SP_VU = 8
[m3video] pInChInfo->width = 720, pInChInfo->height = 480
[m3video] EncLinkH264_algCreate(): enclink_h264_control() algStatus = 0
[m3video] EncLinkH264_algCreate() 1398: tileMem.width = 0
[m3video] EncLinkH264_algCreate() 1399: tileMem.height = 0
[m3video] EncLinkH264_algCreate() 1410: tileMem.width = 518400
[m3video] EncLinkH264_algCreate() 1411: tileMem.height = 0
[m3video] enclink_h264_set_algObject() 761: tileMem.width = 518400
[m3video] enclink_h264_set_algObject() 762: tileMem.height = 0
[m3video] enclink_h264_set_algObject() 768: status.videnc2Status.bufInfo.minNumOutBufs = 2
[m3video] enclink_h264_set_algObject() 774: i = 0, tileMem.width = 518400
[m3video] enclink_h264_set_algObject() 775: i = 0, tileMem.height = 0
[m3video] enclink_h264_set_algObject() 774: i = 1, tileMem.width = 148172
[m3video] enclink_h264_set_algObject() 775: i = 1, tileMem.height = 0
[m3video] enclink_h264_set_algObject() 792: i = 1, videnc2Status.bufInfo.minOutBufSize[i].bytes = 148172
[m3video] enclink_h264_set_algObject() 793: i = 1, algCreateParams->mvDataSize = 32400
[m3video] 12890: Assertion @ Line: 796 in links_m3video/iva_enc/encLink_h264.c: (status->videnc2Status.bufInfo.minOutBufSize[i].bytes < algCreateParams->mvDataSize) : failed !!!
ApproDrvInit: 7
queue id:131076
上述信息中有不少是自己添加的打印信息。usecase中的EncLink配置如下:
/* ENC link */
MULTICH_INIT_STRUCT(EncLink_CreateParams,encPrm);
{
EncLink_ChCreateParams *pLinkChPrm;
EncLink_ChDynamicParams *pLinkDynPrm;
VENC_CHN_DYNAMIC_PARAM_S *pDynPrm;
VENC_CHN_PARAMS_S *pChPrm;
for (i = 0; i < VENC_PRIMARY_CHANNELS; i++)
{
pLinkChPrm = &encPrm.chCreateParams[i];
pLinkDynPrm = &pLinkChPrm->defaultDynamicParams;
pChPrm = &gVencModuleContext.vencConfig.encChannelParams[i];
//added by qiu
pChPrm->videoWidth = 720 ;
if (capturePrm.isPalMode)
{
pChPrm->videoHeight = 576 ;
}
else
{
pChPrm->videoHeight = 480 ;
}
pDynPrm = &pChPrm->dynamicParam;
pLinkChPrm->format = IVIDEO_H264HP;
pLinkChPrm->profile = gVencModuleContext.vencConfig.h264Profile[i];
pLinkChPrm->dataLayout = IVIDEO_PROGRESSIVE;
pLinkChPrm->fieldMergeEncodeEnable = FALSE;
pLinkChPrm->enableAnalyticinfo = pChPrm->enableAnalyticinfo;
pLinkChPrm->maxBitRate = pChPrm->maxBitRate;
pLinkChPrm->encodingPreset = pChPrm->encodingPreset;
pLinkChPrm->rateControlPreset = IVIDEO_USER_DEFINED;
pLinkChPrm->enableHighSpeed = FALSE;
pLinkChPrm->enableWaterMarking = pChPrm->enableWaterMarking;
pLinkChPrm->StreamPreset = gUI_mcfw_config.StreamPreset[i];
pLinkDynPrm->intraFrameInterval = pDynPrm->intraFrameInterval;
pLinkDynPrm->targetBitRate = pDynPrm->targetBitRate;
pLinkDynPrm->interFrameInterval = 1;
pLinkDynPrm->mvAccuracy = IVIDENC2_MOTIONVECTOR_QUARTERPEL;
pLinkDynPrm->inputFrameRate = pDynPrm->inputFrameRate;
pLinkDynPrm->rcAlg = pDynPrm->rcAlg;
pLinkDynPrm->qpMin = pDynPrm->qpMin;
pLinkDynPrm->qpMax = pDynPrm->qpMax;
pLinkDynPrm->qpInit = pDynPrm->qpInit;
pLinkDynPrm->vbrDuration = pDynPrm->vbrDuration;
pLinkDynPrm->vbrSensitivity = pDynPrm->vbrSensitivity;
encPrm.numBufPerCh[i] = NUM_ENCODE_BUFFERS;
gVencModuleContext.encFormat[i] = pLinkChPrm->format;
}
}
encPrm.chCreateParams[0].defaultDynamicParams.inputFrameRate = 30;
encPrm.chCreateParams[1].defaultDynamicParams.inputFrameRate = 30;
encPrm.vsEnable = 0;
encPrm.isVaUseCase = 0;
encPrm.inQueParams.prevLinkQueId = 0;
折腾很多天,仍然无法定位问题,求助各路高手!
谢谢!
Huchong Li:
春节加班也没有解决这个问题啊,大家又碰到过这样的问题吗?恳请指教!
Ternence_Hsu:
回复 Huchong Li:
你好;请问 你的 编码 level 设置是否正确 ?
Huchong Li:
回复 Ternence_Hsu:
谢谢您的答复,我查查看编码 level 设置