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.

HDVICP H.264 blocks in processMulti

Hello,

I am working on a video solution based on the IPNC_RDK_3.2.0 that considers to use the H.264 encoder for a 1280x720 YUV420SP input.

For the link and encoder configuration I have adapted the configuration provided with the example in multich_encode_decode.c for my sensor.

Sensor is working fine ISP is producing the correct YUV frames for input to the encoder.

As encoder I am using DEV.500.V.H264AVC.E.IVAHD.02.00.04.00 running on m3video.

My problem is that the call to processMulti() in encLink_h264.c does not return from the codec-library code.

Hereafter you will find the dump of the dynamic parameter settings. I also checked the IVAHD and it is powered and clocked with 450Mhz.

Please could anyone help me to clarify:

- What could be the reason that the call to the codec function processMulti doesn't terminate?

- How do I get more insights into what is going on in the codec library?

Thank you very much!

Kind regards,

Joachim

Dump of the H.264 params from the m3video.

[m3video] --------- CH 0 : H264 ENC : Dynamic Params -------
[m3video]
[m3video] videnc2DynamicParams -> inputHeight : 720
[m3video] videnc2DynamicParams -> inputWidth : 1280
[m3video] videnc2DynamicParams -> refFrameRate : 30000
[m3video] videnc2DynamicParams -> targetFrameRate : 30000
[m3video] videnc2DynamicParams -> targetBitRate : 2000000
[m3video] videnc2DynamicParams -> intraFrameInterval : 30
[m3video] videnc2DynamicParams -> generateHeader : 0
[m3video] videnc2DynamicParams -> captureWidth : 1280
[m3video] videnc2DynamicParams -> forceFrame : -1
[m3video] videnc2DynamicParams -> interFrameInterval : 1
[m3video] videnc2DynamicParams -> mvAccuracy : 2
[m3video] videnc2DynamicParams -> sampleAspectRatioHeight : 720
[m3video] videnc2DynamicParams -> sampleAspectRatioWidth : 1280
[m3video] videnc2DynamicParams -> ignoreOutbufSizeFlag : 1
[m3video] videnc2DynamicParams -> lateAcquireArg : 0
[m3video]
[m3video] rateControlParams -> rateControlParamsPreset : 1
[m3video] rateControlParams -> scalingMatrixPreset : 1
[m3video] rateControlParams -> rcAlgo : 0
[m3video] rateControlParams -> qpI : -1
[m3video] rateControlParams -> qpMaxI : 40
[m3video] rateControlParams -> qpMinI : 10
[m3video] rateControlParams -> qpP : -1
[m3video] rateControlParams -> qpMaxP : 40
[m3video] rateControlParams -> qpMinP : 10
[m3video] rateControlParams -> qpOffsetB : 4
[m3video] rateControlParams -> qpMaxB : 44
[m3video] rateControlParams -> qpMinB : 10
[m3video] rateControlParams -> allowFrameSkip : 0
[m3video] rateControlParams -> removeExpensiveCoeff : 0
[m3video] rateControlParams -> chromaQPIndexOffset : 0
[m3video] rateControlParams -> IPQualityFactor : 0
[m3video] rateControlParams -> initialBufferLevel : 4000000
[m3video] rateControlParams -> HRDBufferSize : 4000000
[m3video] rateControlParams -> minPicSizeRatioI : 0
[m3video] rateControlParams -> maxPicSizeRatioI : 640
[m3video] rateControlParams -> minPicSizeRatioP : 0
[m3video] rateControlParams -> maxPicSizeRatioP : 0
[m3video] rateControlParams -> minPicSizeRatioB : 0
[m3video] rateControlParams -> maxPicSizeRatioB : 0
[m3video] rateControlParams -> enablePRC : 1
[m3video] rateControlParams -> enablePartialFrameSkip : 0
[m3video] rateControlParams -> discardSavedBits : 1
[m3video] rateControlParams -> VBRDuration : 8
[m3video] rateControlParams -> VBRsensitivity : 0
[m3video] rateControlParams -> skipDistributionWindowLength : 5
[m3video] rateControlParams -> numSkipInDistributionWindow : 1
[m3video] rateControlParams -> enableHRDComplianceMode : 1
[m3video] rateControlParams -> frameSkipThMulQ5 : 0
[m3video] rateControlParams -> vbvUseLevelThQ5 : 0
[m3video]
[m3video] interCodingParams -> interCodingPreset : 0
[m3video] interCodingParams -> searchRangeHorP : 144
[m3video] interCodingParams -> searchRangeVerP : 32
[m3video] interCodingParams -> searchRangeHorB : 144
[m3video] interCodingParams -> searchRangeVerB : 16
[m3video] interCodingParams -> interCodingBias : 1
[m3video] interCodingParams -> skipMVCodingBias : 1
[m3video] interCodingParams -> minBlockSizeP : 0
[m3video] interCodingParams -> minBlockSizeB : 0
[m3video] interCodingParams -> meAlgoMode : 0
[m3video]
[m3video] intraCodingParams -> intraCodingPreset : 0
[m3video] intraCodingParams -> lumaIntra4x4Enable : 0
[m3video] intraCodingParams -> lumaIntra8x8Enable : 255
[m3video] intraCodingParams -> lumaIntra16x16Enable : 15
[m3video] intraCodingParams -> chromaIntra8x8Enable : 15
[m3video] intraCodingParams -> chromaComponentEnable : 1
[m3video] intraCodingParams -> intraRefreshMethod : 0
[m3video] intraCodingParams -> intraRefreshRate : 0
[m3video] intraCodingParams -> gdrOverlapRowsBtwFrames : 0
[m3video] intraCodingParams -> constrainedIntraPredEnable : 0
[m3video] intraCodingParams -> intraCodingBias : 0
[m3video]
[m3video] sliceCodingParams -> sliceCodingPreset : 1
[m3video] sliceCodingParams -> sliceMode : 0
[m3video] sliceCodingParams -> sliceUnitSize : 0
[m3video] sliceCodingParams -> sliceStartOffset : [0 0 0]
[m3video] sliceCodingParams -> streamFormat : 0
[m3video]
[m3video] sliceGroupChangeCycle : 0
[m3video] searchCenter : 32767
[m3video] enableStaticMBCount : 0
[m3video] enableROI : 0

  • Hello,

    There is latest v3.5 release available, please use this and this has latest version of codec and updates to enclink included

    Meantime, we will analyse the logs and vlaues you shared and get back on this

    Regards,

    Raghu

  • Dear Raghu,

    Thank you for your quick reply.

    It would be nice if you could check the parameters. In parallelI will check with my TI contact where to get the 3.5 RDK.

    In order to investigate further: Do you know if the encoder library provides some traces that can be activated in order to check in wich state the IVA is?

    Thanks in advance

    Regards,

    Joachim

  • Dear Raghu,

    I switched my project to the 3.5 RDK as you proposed. Unfortunately the H.264 encoding blocks also in this configuration.

    I am able to encode the first frame but the next one is stuck in IVAHD.

    In the function Enlink_h264EncoderFrameBatch() there is a call to the process() function of the H.264 encode library - this function does not return if it is called for the second frame.

    So my questions are:

    - What could hinder this function to return?

    - How could I check if IVAHD is in a good condition?

    If you have any further Idea I would appreciate if you could share it with me.

    Thank you very much for your help.

    Kidn regards,

    Joachim