This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6678 HEVC Encoder 02_00_00_02_ELF, encode size 704x576 failed

hey,

there is a issule I met,  I want encode hevc with a size of 704x576 or 352x288 ,  I got error when I set dynamicparams 

extend errorcode is 0x40c000 , means XDM_UNSUPPORTEDPARAM and XDM_FATALERROR,

 the params code is below

//StaticParams - IVIDENC2_Params
pStaticEnc->videnc2Params.size = sizeof(IH265VENC_Params);
pStaticEnc->videnc2Params.encodingPreset = 3; // 0: DEFAULT, 1: HIGH_QUALITY, 2: HIGH_SPEED, 3: USER_DEFINED. If not USER_DEFINED most of configuration parameters are chosen by encoder, thus ignored.
pStaticEnc->videnc2Params.rateControlPreset = 5; // 1: LOW_DELAY, 2: STORAGE, 4: NONE, 5: USER_DEFINED

pStaticEnc->videnc2Params.maxWidth = 1920;
pStaticEnc->videnc2Params.maxHeight = 1200;
pStaticEnc->videnc2Params.dataEndianness = XDM_BYTE; // Not configurable
pStaticEnc->videnc2Params.maxInterFrameInterval = 1; // Max I to P frame distance. 1: no B frames, 2: one B frame, 3: two B frames, etc [1, 255]
pStaticEnc->videnc2Params.maxBitRate = 20000000; // In bits per second. Should be valid as per LEVEL limit
pStaticEnc->videnc2Params.minBitRate = 256*1000; // In bits per second
pStaticEnc->videnc2Params.inputChromaFormat = XDM_YUV_420P; // Not configurable
pStaticEnc->videnc2Params.inputContentType = IVIDEO_PROGRESSIVE; // 0: PROGRESSIVE, 1: INTERLACED
pStaticEnc->videnc2Params.operatingMode = IVIDEO_ENCODE_ONLY; // Not configurable
pStaticEnc->videnc2Params.profile = IH265_MAIN_PROFILE; // TODO: change description
pStaticEnc->videnc2Params.level = IH265_LEVEL_41; // TODO: change description
pStaticEnc->videnc2Params.inputDataMode = IVIDEO_ENTIREFRAME; // Not configurable
pStaticEnc->videnc2Params.outputDataMode = IVIDEO_ENTIREFRAME; // Not configurable
pStaticEnc->videnc2Params.numInputDataUnits = 1;
pStaticEnc->videnc2Params.numOutputDataUnits = 1;

int i;
for (i = 0 ; i < IVIDEO_MAX_NUM_METADATA_PLANES; i++)
{
pStaticEnc->videnc2Params.metadataType[i] = IVIDEO_METADATAPLANE_NONE;
}

//StaticParams - Misc
pStaticEnc->scalingMatrixPreset = IH265_SCALINGMATRIXPRESET_DEFAULT;
pStaticEnc->decRefreshType = 0; // Decoder referesh type: IDR or CDR [0 or 1].
pStaticEnc->decRefreshInterval = 0;
pStaticEnc->enableTransQuantBypass = 0;
pStaticEnc->maxPoc = 256;
pStaticEnc->enableTransformSkip = 0;
pStaticEnc->maxIntraFrameInterval = 10000;
pStaticEnc->enableWPP = 1;
pStaticEnc->maxNumRefFrames = 1;
pStaticEnc->enableVirtualTile = 0;
pStaticEnc->disableVirtualTileDependency = 1;
pStaticEnc->debugTraceLevel = 0;
pStaticEnc->lastNFramesToLog = 0;
pStaticEnc->enableIntraRDO = 0;
// pStaticEnc->enableSAONonReference = 0;
// pStaticEnc->enableScaleDeadZone = 0;

//StaticParams - IH265VENC_RateControlParams
pStaticEnc->rateControlParams.rateControlParamsPreset = IH265_RATECONTROLPARAMS_USERDEFINED;
pStaticEnc->rateControlParams.rcAlgo = IH265_RATECONTROL_CBR;
pStaticEnc->rateControlParams.qpI = 28;
pStaticEnc->rateControlParams.qpMaxI = 51;
pStaticEnc->rateControlParams.qpMinI = 10;
pStaticEnc->rateControlParams.qpP = 28;
pStaticEnc->rateControlParams.qpMaxP = 51;
pStaticEnc->rateControlParams.qpMinP = 10;
pStaticEnc->rateControlParams.qpOffsetB = 4;
pStaticEnc->rateControlParams.qpMaxB = 51;
pStaticEnc->rateControlParams.qpMinB = 12;
pStaticEnc->rateControlParams.enableFrameSkip = 1;
pStaticEnc->rateControlParams.enablePartialFrameSkip = 0;
pStaticEnc->rateControlParams.qualityFactorIP = 0;
pStaticEnc->rateControlParams.cbQPIndexOffset = 2;
pStaticEnc->rateControlParams.crQPIndexOffset = 2;
pStaticEnc->rateControlParams.initialBufferLevel = 500000/*DEF_BITRATE*1000*/;
pStaticEnc->rateControlParams.hrdBufferSize = 500000/*DEF_BITRATE*1000*/;
pStaticEnc->rateControlParams.enableHRDComplianceMode = 0;
pStaticEnc->rateControlParams.maxFrameSkipCnt = 0;
pStaticEnc->rateControlParams.SubFrameRC = 0;
pStaticEnc->rateControlParams.maxDeltaQP = 0;
pStaticEnc->rateControlParams.enablePRC = 0;

//StaticParams - IH265VENC_LoopFilterParams
pStaticEnc->loopFilterParams.loopFilterParamsPreset = 1;
pStaticEnc->loopFilterParams.enableDeblockFilter = 1;
//test!!!!!!!!
pStaticEnc->loopFilterParams.enableSaoFilter = 1;// sao quality better
pStaticEnc->loopFilterParams.enableLoopFilterSliceBoundary = 0;
pStaticEnc->loopFilterParams.enableLoopFilterTileBoundary = 0;
pStaticEnc->loopFilterParams.separateCbCrSAO = 0;
pStaticEnc->loopFilterParams.offsetLoopFilterInPPSFlag = 0;
pStaticEnc->loopFilterParams.offsetDeblockBetaDiv2 = 0;
pStaticEnc->loopFilterParams.offsetDeblockTcDiv2 = 0;

//StaticParams - IH265VENC_GopCntrlParams
pStaticEnc->gopCntrlParams.gopCntrlParamsPreset = IH265_GOPCTRLPRESET_DEFAULT;

//StaticParams - IH265VENC_SliceCodingParams
pStaticEnc->sliceCodingParams.sliceCodingPreset = IH265_SLICECODINGPRESET_DEFAULT;//IH265_SLICECODINGPRESET_USERDEFINED;
pStaticEnc->sliceCodingParams.sliceCodingMode = 0;
pStaticEnc->sliceCodingParams.sliceCodingArg = 0;
pStaticEnc->sliceCodingParams.enableTiles = 0;
pStaticEnc->sliceCodingParams.numTileColumns = 1;
pStaticEnc->sliceCodingParams.numTileRows = 1;
pStaticEnc->sliceCodingParams.enableDependentSlice = 0;

//StaticParams - IH265VENC_IntraCodingParams
pStaticEnc->intraCodingParams.intraCodingPreset = IH265_INTRACODINGPRESET_USERDEFINED;
pStaticEnc->intraCodingParams.intraRefreshMethod = 0;
pStaticEnc->intraCodingParams.intraRefreshRate = 0;
pStaticEnc->intraCodingParams.constrainedIntraPredEnable = 0;
pStaticEnc->intraCodingParams.enableStrongIntraSmoothing = 0;
pStaticEnc->intraCodingParams.matchYCbCrIntraMode = 0;
pStaticEnc->intraCodingParams.enableLumaIntra4x4Mode = 0;
pStaticEnc->intraCodingParams.enableLumaIntra8x8Mode = 0;
pStaticEnc->intraCodingParams.enableLumaIntra16x16Mode = 0;
pStaticEnc->intraCodingParams.enableLumaIntra32x32Mode = 0;
pStaticEnc->intraCodingParams.enableChromaIntra4x4Mode = 0;
pStaticEnc->intraCodingParams.enableChromaIntra8x8Mode = 0;
pStaticEnc->intraCodingParams.enableChromaIntra16x16Mode = 0;

//StaticParams - IH265VENC_InterCodingParams
pStaticEnc->interCodingParams.interCodingPreset = IH265_INTERCODINGPRESET_DEFAULT;//IH265_INTERCODINGPRESET_USERDEFINED;
pStaticEnc->interCodingParams.enableTmvp = 0;
pStaticEnc->interCodingParams.searchRangeHorP = 72;
pStaticEnc->interCodingParams.searchRangeVerP = 128;
pStaticEnc->interCodingParams.searchRangeHorB = 72;
pStaticEnc->interCodingParams.searchRangeVerB = 128;
pStaticEnc->interCodingParams.interCodingBias = 0;
pStaticEnc->interCodingParams.skipMVCodingBias = 0;
pStaticEnc->interCodingParams.numMergeCandidates = 3;
pStaticEnc->interCodingParams.enableBiPredMode = 1;
pStaticEnc->interCodingParams.enableFastIntraAlgo = 1;

//StaticParams - IH265VENC_VUICodingParams
pStaticEnc->vuiCodingParams.vuiCodingPreset = IH265_VUICODINGPRESET_DEFAULT;
pStaticEnc->vuiCodingParams.aspectRatioInfoPresentFlag = 0;
pStaticEnc->vuiCodingParams.aspectRatioIdc = 0;
pStaticEnc->vuiCodingParams.videoSignalTypePresentFlag = 0;
pStaticEnc->vuiCodingParams.videoFormat = 0;
pStaticEnc->vuiCodingParams.videoFullRangeFlag = 0;
pStaticEnc->vuiCodingParams.colourDescriptionPresentFlag = 0;
pStaticEnc->vuiCodingParams.colourPrimaries = 0;
pStaticEnc->vuiCodingParams.transferCharacteristics = 0;
pStaticEnc->vuiCodingParams.matrixCoefficients = 0;
pStaticEnc->vuiCodingParams.timingInfoPresentFlag = 0;

//StaticParams - IH265VENC_SEIParams
pStaticEnc->seiParams.enableSeiFlag = 0;

//StaticParams - IH265VENC_CTBCodingParams
pStaticEnc->ctbCodingParams.maxCTBSize = 64;
pStaticEnc->ctbCodingParams.maxCUDepth = 3;

//

//msc
if (pDynParam != NULL && nDynParam >= sizeof(IH265VENC_DynamicParams))
{
//DynamicParams - IVIDENC2_DynamicParams
IH265VENC_DynamicParams* pDynEnc = (IH265VENC_DynamicParams*)pDynParam;
pDynEnc->videnc2DynamicParams.size = sizeof(IH265VENC_DynamicParams);
pDynEnc->videnc2DynamicParams.inputWidth = DEF_WIDTH;
pDynEnc->videnc2DynamicParams.inputHeight = DEF_HEIGHT;
pDynEnc->videnc2DynamicParams.refFrameRate = DEF_FRAMERATE * 1000;
pDynEnc->videnc2DynamicParams.targetFrameRate = DEF_FRAMERATE * 1000;
pDynEnc->videnc2DynamicParams.targetBitRate = DEF_BITRATE*1000;
pDynEnc->videnc2DynamicParams.intraFrameInterval = 500; // The number of frames between two I frames. 0: IPPPP..., 1: IIII..., 2: IPIPIPIPI, 3: IPPIPPIPPI or IPBIPBIPBI, etc.
pDynEnc->videnc2DynamicParams.generateHeader = XDM_ENCODE_AU; // 0: Encode entire access unit including headers, 1: Encode only header
pDynEnc->videnc2DynamicParams.captureWidth = 0;
pDynEnc->videnc2DynamicParams.forceFrame = IVIDEO_NA_FRAME; // -1: IVIDEO_NA_FRAME, 3: IVIDEO_IDR_FRAME
pDynEnc->videnc2DynamicParams.interFrameInterval = 1; // I to P frame distance. 1: no B frames, 2: one B frame, 3: two B frames, etc [1, 255]
pDynEnc->videnc2DynamicParams.mvAccuracy = IVIDENC2_MOTIONVECTOR_QUARTERPEL; // Motion vectors accuracy. 0: integer pel., 2: quarter pel.
pDynEnc->videnc2DynamicParams.sampleAspectRatioHeight = 1;
pDynEnc->videnc2DynamicParams.sampleAspectRatioWidth = 1;
pDynEnc->videnc2DynamicParams.ignoreOutbufSizeFlag = XDAS_FALSE; // Non configurable
pDynEnc->videnc2DynamicParams.putDataFxn = NULL;
pDynEnc->videnc2DynamicParams.putDataHandle = 0;
pDynEnc->videnc2DynamicParams.getDataFxn = NULL;
pDynEnc->videnc2DynamicParams.getDataHandle = 0;
pDynEnc->videnc2DynamicParams.getBufferFxn = NULL;
pDynEnc->videnc2DynamicParams.getBufferHandle = 0;
pDynEnc->videnc2DynamicParams.lateAcquireArg = 0;

memcpy(&pDynEnc->rateControlParams, &pStaticEnc->rateControlParams, sizeof(pStaticEnc->rateControlParams));
memcpy(&pDynEnc->loopFilterParams, &pStaticEnc->loopFilterParams, sizeof(pStaticEnc->loopFilterParams));
memcpy(&pDynEnc->intraCodingParams, &pStaticEnc->intraCodingParams, sizeof(pStaticEnc->intraCodingParams));
memcpy(&pDynEnc->interCodingParams, &pStaticEnc->interCodingParams, sizeof(pStaticEnc->interCodingParams));
memcpy(&pDynEnc->ctbCodingParams, &pStaticEnc->ctbCodingParams, sizeof(pStaticEnc->ctbCodingParams));
memcpy(&pDynEnc->sliceCodingParams, &pStaticEnc->sliceCodingParams, sizeof(pStaticEnc->sliceCodingParams));

pDynEnc->enableTransQuantBypass = pStaticEnc->enableTransQuantBypass;
pDynEnc->enableTransformSkip = pStaticEnc->enableTransformSkip;
pDynEnc->enableROI = 0;
}

can u help me check with that