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.

How to imporve the encoder quality by configuration

Hi,

   My customer test the HEVC encoder (C66x_h265venc_01_00_00_44_ELF) on single C6678 chip.  The detail test parameter please refer to attached encparam.txt. (1080p30 with 1Mbps,qpMax 40,qpMin20). If the test clip has big block movement or the background has gradual changing color, the quality is not good. Please refer to attached encode result enc1920x1080Hpayload_108.265.

   Would you kindly check this and suggest how to improve the quality by configuration (Guarantee 30fps)?

Best Regards.

   Marvin

0574.encparam.txt
		//StaticParams - IVIDENC2_Params
		pStaticEnc->videnc2Params.size							= sizeof(IH265VENC_Params);
		pStaticEnc->videnc2Params.encodingPreset                = 4; // 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             = 2; // 1: LOW_DELAY,  2: STORAGE, 4: NONE,  5: USER_DEFINED
		pStaticEnc->videnc2Params.maxWidth                      = 1920;
		pStaticEnc->videnc2Params.maxHeight                     = 1080;
		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                    = 1024*1200; // In bits per second. Should be valid as per LEVEL limit
		pStaticEnc->videnc2Params.minBitRate                    = 1024*1024; // 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		= 31;
		pStaticEnc->disableVirtualTileDependency = 0;
		pStaticEnc->debugTraceLevel			= 0;
		pStaticEnc->lastNFramesToLog		= 0;

		//StaticParams - IH265VENC_RateControlParams
		pStaticEnc->rateControlParams.rateControlParamsPreset	= IH265_RATECONTROLPARAMS_USERDEFINED;
		pStaticEnc->rateControlParams.rcAlgo					= IH265_RATECONTROL_CBR;
		pStaticEnc->rateControlParams.qpI						= 28;
		pStaticEnc->rateControlParams.qpMaxI					= 40;
		pStaticEnc->rateControlParams.qpMinI					= 20;
		pStaticEnc->rateControlParams.qpP						= 28;
		pStaticEnc->rateControlParams.qpMaxP					= 40;
		pStaticEnc->rateControlParams.qpMinP					= 20;
		pStaticEnc->rateControlParams.qpOffsetB					= 4;
		pStaticEnc->rateControlParams.qpMaxB					= 40;
		pStaticEnc->rateControlParams.qpMinB					= 20;
		pStaticEnc->rateControlParams.enableFrameSkip			= 0;
		pStaticEnc->rateControlParams.enablePartialFrameSkip	= 0;
		pStaticEnc->rateControlParams.qualityFactorIP			= 0;
		pStaticEnc->rateControlParams.cbQPIndexOffset			= 2;
		pStaticEnc->rateControlParams.crQPIndexOffset			= 2;
		pStaticEnc->rateControlParams.initialBufferLevel		= 2000000;
		pStaticEnc->rateControlParams.hrdBufferSize				= 2000000;
		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		= IH265_SLICECODINGPRESET_USERDEFINED;
		pStaticEnc->loopFilterParams.enableDeblockFilter		= 1;
		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_USERDEFINED;
		pStaticEnc->sliceCodingParams.sliceCodingMode			= 0;
		pStaticEnc->sliceCodingParams.sliceCodingArg			= 0;
		pStaticEnc->sliceCodingParams.enableTiles				= 0;
		pStaticEnc->sliceCodingParams.numTileColumns			= 2;
		pStaticEnc->sliceCodingParams.numTileRows				= 2;
		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 = 1;
		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_USERDEFINED;
		pStaticEnc->interCodingParams.enableTmvp				= 0;
		pStaticEnc->interCodingParams.searchRangeHorP			= 144;
		pStaticEnc->interCodingParams.searchRangeVerP			= 32;
		pStaticEnc->interCodingParams.searchRangeHorB			= 144;
		pStaticEnc->interCodingParams.searchRangeVerB			= 32;
		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;

			//DynamicParams - IVIDENC2_DynamicParams
			IH265VENC_DynamicParams* pDynEnc = (IH265VENC_DynamicParams*)pDynParam; 
			pDynEnc->videnc2DynamicParams.size				= sizeof(IH265VENC_DynamicParams);
			pDynEnc->videnc2DynamicParams.inputWidth		= 1920;
			pDynEnc->videnc2DynamicParams.inputHeight		= 1080;
			pDynEnc->videnc2DynamicParams.refFrameRate		= 30 * 1000;
			pDynEnc->videnc2DynamicParams.targetFrameRate	= 30 * 1000;
			pDynEnc->videnc2DynamicParams.targetBitRate		= 1024*1024;
			pDynEnc->videnc2DynamicParams.intraFrameInterval = 3000; // 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;

enc1920x1080Hpayload_108.zip

  • Hi Marvin,
    Looks like you are using old encoder version. I know this is the latest version available on web.
    We are working towards the web release, mean time please check with latest RTSC lib attached.

    And i have attached the modified config for improvement in quality, which still encode at 30 fps in single chip.

    Regards
    Kuladeepak

    RTSC_Package.zip

    1715.0574.encparam.txt
    		//StaticParams - IVIDENC2_Params
    		pStaticEnc->videnc2Params.size							= sizeof(IH265VENC_Params);
    		pStaticEnc->videnc2Params.encodingPreset                = 4; // 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             = 2; // 1: LOW_DELAY,  2: STORAGE, 4: NONE,  5: USER_DEFINED
    		pStaticEnc->videnc2Params.maxWidth                      = 1920;
    		pStaticEnc->videnc2Params.maxHeight                     = 1080;
    		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                    = 1024*1200; // In bits per second. Should be valid as per LEVEL limit
    		pStaticEnc->videnc2Params.minBitRate                    = 1024*1024; // 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				= 0;
    		pStaticEnc->maxNumRefFrames			= 1;
    		pStaticEnc->enableVirtualTile		= 11;
    		pStaticEnc->disableVirtualTileDependency = 0;
    		pStaticEnc->debugTraceLevel			= 0;
    		pStaticEnc->lastNFramesToLog		= 0;
    		pStaticEnc->enableIntraRDO          = 1;
    		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					= 40;
    		pStaticEnc->rateControlParams.qpMinI					= 20;
    		pStaticEnc->rateControlParams.qpP						= 28;
    		pStaticEnc->rateControlParams.qpMaxP					= 40;
    		pStaticEnc->rateControlParams.qpMinP					= 20;
    		pStaticEnc->rateControlParams.qpOffsetB					= 4;
    		pStaticEnc->rateControlParams.qpMaxB					= 40;
    		pStaticEnc->rateControlParams.qpMinB					= 20;
    		pStaticEnc->rateControlParams.enableFrameSkip			= 0;
    		pStaticEnc->rateControlParams.enablePartialFrameSkip	= 0;
    		pStaticEnc->rateControlParams.qualityFactorIP			= 0;
    		pStaticEnc->rateControlParams.cbQPIndexOffset			= 2;
    		pStaticEnc->rateControlParams.crQPIndexOffset			= 2;
    		pStaticEnc->rateControlParams.initialBufferLevel		= 2000000;
    		pStaticEnc->rateControlParams.hrdBufferSize				= 2000000;
    		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		= IH265_SLICECODINGPRESET_USERDEFINED;
    		pStaticEnc->loopFilterParams.enableDeblockFilter		= 1;
    		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_USERDEFINED;
    		pStaticEnc->sliceCodingParams.sliceCodingMode			= 0;
    		pStaticEnc->sliceCodingParams.sliceCodingArg			= 0;
    		pStaticEnc->sliceCodingParams.enableTiles				= 0;
    		pStaticEnc->sliceCodingParams.numTileColumns			= 2;
    		pStaticEnc->sliceCodingParams.numTileRows				= 2;
    		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 = 1;
    		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_USERDEFINED;
    		pStaticEnc->interCodingParams.enableTmvp				= 0;
    		pStaticEnc->interCodingParams.searchRangeHorP			= 144;
    		pStaticEnc->interCodingParams.searchRangeVerP			= 32;
    		pStaticEnc->interCodingParams.searchRangeHorB			= 144;
    		pStaticEnc->interCodingParams.searchRangeVerB			= 32;
    		pStaticEnc->interCodingParams.interCodingBias			= 0;
    		pStaticEnc->interCodingParams.skipMVCodingBias			= 0;
    		pStaticEnc->interCodingParams.numMergeCandidates		= 3;
    		pStaticEnc->interCodingParams.enableBiPredMode			= 1;
    		pStaticEnc->interCodingParams.enableFastIntraAlgo		= 0;
    
    		//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;
    
    			//DynamicParams - IVIDENC2_DynamicParams
    			IH265VENC_DynamicParams* pDynEnc = (IH265VENC_DynamicParams*)pDynParam; 
    			pDynEnc->videnc2DynamicParams.size				= sizeof(IH265VENC_DynamicParams);
    			pDynEnc->videnc2DynamicParams.inputWidth		= 1920;
    			pDynEnc->videnc2DynamicParams.inputHeight		= 1080;
    			pDynEnc->videnc2DynamicParams.refFrameRate		= 30 * 1000;
    			pDynEnc->videnc2DynamicParams.targetFrameRate	= 30 * 1000;
    			pDynEnc->videnc2DynamicParams.targetBitRate		= 1024*1024;
    			pDynEnc->videnc2DynamicParams.intraFrameInterval = 3000; // 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;
    

  • Hi Marvin,

        Are you still facing blocking artifacts with new library and config.?

    Regards

    Kuladeepak

  • Kuladeepak,

    The blocking issue is due to miss to set supervisour mode of PCIe.
  • Chris Meng,

            Ohh.Ok..In that case can we please close this thread or mark as answered.

    Regards

    Kuladeepak