Using the following parameters, the DSP returns -4 (failed to create algo)
static IH265VENC_Params ih265venc_params = { .videnc2Params = { .size = -1, // Filled in later using sizeof() .encodingPreset = 4, .rateControlPreset = 2, .maxHeight = 480, .maxWidth = 720, .dataEndianness = 1, .maxInterFrameInterval = 8, .maxBitRate = 8000000, .minBitRate = 50000, .inputChromaFormat = 1, .inputContentType = 0, .operatingMode = IVIDEO_ENCODE_ONLY, .profile = 1, .level = 41, .inputDataMode = IVIDEO_ENTIREFRAME, .outputDataMode = IVIDEO_ENTIREFRAME, .numInputDataUnits = 1, .numOutputDataUnits = 1, .metadataType = { IVIDEO_METADATAPLANE_NONE, IVIDEO_METADATAPLANE_NONE, IVIDEO_METADATAPLANE_NONE } }, .rateControlParams = { .rateControlParamsPreset = 1, .rcAlgo = 0, .qpI = 28, .qpMaxI = 51, .qpMinI = 12, .qpP = 28, .qpMaxP = 51, .qpMinP = 12, .qpOffsetB = 4, .qpMaxB = 51, .qpMinB = 12, .enableFrameSkip = 0, .enablePartialFrameSkip = 0, .qualityFactorIP = 0, .cbQPIndexOffset = 2, .crQPIndexOffset = 2, .initialBufferLevel = 8000000, .hrdBufferSize = 8000000, .enableHRDComplianceMode = 1, .maxFrameSkipCnt = 0, .SubFrameRC = 0, .maxDeltaQP = 0, .enablePRC = 0, .reserved = { 0, 0, 0 } }, .loopFilterParams = { .loopFilterParamsPreset = 1, .enableDeblockFilter = 1, .enableSaoFilter = 1, .enableLoopFilterSliceBoundary = 0, .enableLoopFilterTileBoundary = 0, .separateCbCrSAO = 0, .offsetLoopFilterInPPSFlag = 0, .offsetDeblockBetaDiv2 = 0, .offsetDeblockTcDiv2 = 0 }, .gopCntrlParams = { .gopCntrlParamsPreset = 1, //0 - Default Layer 1 /*# 1 : User defined , below parameters will be used, # 2 : Default layer 2, gop size 2 and IPP sequence # 3 : Default layer 3, gop size 4 and IPP sequence # 4 : Default layer 4, gop size 8 and IPP sequence # 5 : Default layer 2, gop size 2 and IBP sequence # 6 : Default layer 4, gop size 4 and IBBBP sequence # 7 : Default layer 8, gop size 8 and IBBBBBBBP sequence */ .gopFrameType = { 80, 66, 66, 66, 66, 66, 66, 66 }, // GOPFrameType = {I-73, P-80, B-66 } .gopQPOffset = { 0, 0, 0, 0, 0, 0, 0, 0 }, #if defined(HEVC_V2) .gopRefFramesActive= { 1, 2, 2, 2, 2, 2, 2, 2 }, #endif .gopNumRefFrames = { 1, 2, 3, 4, 3, 2, 3, 2 }, .gopRefFrames = { { -8, 0, 0, 0 }, { -4, 4, 0, 0 }, { -2, 2, 6, 0 }, { -1, 1, 3, 7 }, { -1, 1, 5, 0 }, { -2, 2, 0, 0 }, { -1, 1, 3, 0 }, { -1, 1, 0, 0 } }, .gopPocNo = { 8, 4, 2, 1, 3, 6, 5, 7 }, .gopIsReference = { 1, 1, 1, 0, 0, 1, 0, 0 }, .gopTemporalId = { 0, 1, 2, 3, 3, 2, 3, 3 } }, .sliceCodingParams = { .sliceCodingPreset = 1, .sliceCodingMode = 0, //# 0 : Disable 1 : each slice consist of sliceCodingArg LCU .sliceCodingArg = 0, //# N : each slice consisit of N LCU in raster scan order ; This will be ignored if enableTiles is 1 .enableTiles = 0, .numTileColumns = 1, .numTileRows = 1, .enableDependentSlice = 0 }, .intraCodingParams = { .intraCodingPreset = 1, .intraRefreshMethod = 0, .intraRefreshRate = 0, .constrainedIntraPredEnable = 0, .enableStrongIntraSmoothing = 1, .matchYCbCrIntraMode = 0, .enableLumaIntra4x4Mode = 0, .enableLumaIntra8x8Mode = 0, .enableLumaIntra16x16Mode = 0, .enableLumaIntra32x32Mode = 0, .enableChromaIntra4x4Mode = 0, .enableChromaIntra8x8Mode = 0, .enableChromaIntra16x16Mode = 0 }, .interCodingParams = { .interCodingPreset = 1, .enableTmvp = 0, .searchRangeHorP = 72, .searchRangeVerP = 128, .searchRangeHorB = 72, .searchRangeVerB = 128, .interCodingBias = 0, .skipMVCodingBias = 0, .numMergeCandidates = 3, .enableBiPredMode = 1, .enableFastIntraAlgo = 1 }, .ctbCodingParams = { .maxCTBSize = 64, .maxCUDepth = 3 }, .vuiCodingParams = { .vuiCodingPreset = 1, .enableVui = 1, .aspectRatioInfoPresentFlag = 0, .aspectRatioIdc = 0, .videoSignalTypePresentFlag = 0, .videoFormat = 0, .videoFullRangeFlag = 0, .colourDescriptionPresentFlag = 0, .colourPrimaries = 0, .transferCharacteristics = 0, .matrixCoefficients = 0, .timingInfoPresentFlag = 1, .frame_field_info_present_flag = 0, .hrdParamsPresentFlag = 0 }, .seiParams = { .enableSeiFlag = 0, .reserved = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, .scalingMatrixPreset = 0, // flag to enable scaling list /* 0 : Disabled # 1 : Default scaling list as defined by standard # 2 : User defined scaling list sent in SPS # 3 : User defined scaling list sent in PPS */ .decRefreshType = 0, .decRefreshInterval = 0, .enableTransQuantBypass = 0, .maxPoc = 256, .enableTransformSkip = 0, .maxIntraFrameInterval = 10000, .enableWPP = 0, #if defined(HEVC_V2) .maxNumRefFrames = 2, #else .maxNumRefFrames = 1, #endif .enableVirtualTile = 21, .disableVirtualTileDependency = 0, .debugTraceLevel = 0, .lastNFramesToLog = 0, #if defined(HEVC_V2) .enableIntraRDO = 1, .enableSAONonReference = 1, .enableScaleDeadZone = 1, #endif }; //dynamic static IH265VENC_DynamicParams ih265venc_dynamicParams = { .videnc2DynamicParams = { .size = -1, // Filled in later using sizeof() .inputHeight = 480, .inputWidth = 720, .refFrameRate = 60000, .targetFrameRate = 60000, .targetBitRate = 4000000, .intraFrameInterval = 10000, .generateHeader = 0, .captureWidth = 0, .forceFrame = -1, .interFrameInterval = 8, .mvAccuracy = 2, .sampleAspectRatioHeight = 1, .sampleAspectRatioWidth = 1, .ignoreOutbufSizeFlag = 0, .putDataFxn = 0, .putDataHandle = 0, .getDataFxn = 0, .getDataHandle = 0, .getBufferFxn = 0, .getBufferHandle = 0, .lateAcquireArg = 0 }, .rateControlParams = { .rateControlParamsPreset = 1, .rcAlgo = 0, .qpI = 28, .qpMaxI = 51, .qpMinI = 12, .qpP = 28, .qpMaxP = 51, .qpMinP = 12, .qpOffsetB = 4, .qpMaxB = 51, .qpMinB = 12, .enableFrameSkip = 0, .enablePartialFrameSkip = 0, .qualityFactorIP = 0, .cbQPIndexOffset = 2, .crQPIndexOffset = 2, .initialBufferLevel = 8000000, .hrdBufferSize = 8000000, .enableHRDComplianceMode = 1, .maxFrameSkipCnt = 0, .SubFrameRC = 0, .maxDeltaQP = 0, .enablePRC = 0, .reserved = { 0, 0, 0 } }, .loopFilterParams = { .loopFilterParamsPreset = 1, .enableDeblockFilter = 1, .enableSaoFilter = 1, .enableLoopFilterSliceBoundary = 0, .enableLoopFilterTileBoundary = 0, .separateCbCrSAO = 0, .offsetLoopFilterInPPSFlag = 0, .offsetDeblockBetaDiv2 = 0, .offsetDeblockTcDiv2 = 0 }, .intraCodingParams = { .intraCodingPreset = 1, .intraRefreshMethod = 0, .intraRefreshRate = 0, .constrainedIntraPredEnable = 0, .enableStrongIntraSmoothing = 1, .matchYCbCrIntraMode = 0, .enableLumaIntra4x4Mode = 0, .enableLumaIntra8x8Mode = 0, .enableLumaIntra16x16Mode = 0, .enableLumaIntra32x32Mode = 0, .enableChromaIntra4x4Mode = 0, .enableChromaIntra8x8Mode = 0, .enableChromaIntra16x16Mode = 0 }, .interCodingParams = { .interCodingPreset = 1, .enableTmvp = 0, .searchRangeHorP = 72, .searchRangeVerP = 128, .searchRangeHorB = 72, .searchRangeVerB = 128, .interCodingBias = 0, .skipMVCodingBias = 0, .numMergeCandidates = 3, .enableBiPredMode = 1, .enableFastIntraAlgo = 1 }, .ctbCodingParams = { .maxCTBSize = 64, .maxCUDepth = 3 }, .sliceCodingParams = { .sliceCodingPreset = 1, .sliceCodingMode = 0, //# 0 : Disable 1 : each slice consist of sliceCodingArg LCU .sliceCodingArg = 0, //# N : each slice consisit of N LCU in raster scan order ; This will be ignored if enableTiles is 1 .enableTiles = 0, .numTileColumns = 1, .numTileRows = 1, .enableDependentSlice = 0 }, /*TrQBypassFlag*/ .enableTransQuantBypass = 0, /*TransformSkipFlag*/ .enableTransformSkip = 0, .enableROI = 0, #if defined(HEVC_V2) .writeSpsPpsHdr = 2, #endif };