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.

issues with the encoding

Hi all,

S/w: ipnc rdk v3.0

I have set the data path as below in multich_tristream_fullfeature.c.
NullSrc-->ipcOutVpss-->ipcInVideo-->encoder-->ipcBitsOutRTOS-->ipcBitsInbHLOS-->rtsp Streaming.

Basically I have disabled the camera Link and using NullSrc instead of cameraLink.

But while Running below errors are observed in H26-encoder link.

 [m3video] 8293:!ERROR!:ENCLINK::links_m3video/iva_enc/encLink_h264.c:[195]::INTERNAL ERROR:-1
 [m3video] ALGCONTROL FAILED:CMD:1
 [m3video] ERROR: XDM_UNSUPPORTEDPARAM = 14,
 [m3video] ERROR: XDM_FATALERROR = 15
 [m3video] ERROR: IH264ENC_UNSUPPORTED_VIDENC2DYNAMICPARAMS = 30,
 [m3video]  
 [m3video] 8294:ERR::linkID:10000024::channelID:0::errorCode:-5::FileName:links_m3video/iva_enc/encLink_h264.c::linuNum:1359::errorCondition:
(algStatus == XDM_EOK)
 [m3video] ENCLINK_H264:HEAPID:0        USED:1896
 [m3video]  8295: Assertion @ Line: 890 in links_m3video/iva_enc/encLink_common.c: retVal == ENC_LINK_S_SUCCESS : failed !!!

Same codebase works, if I enable cameraLink instead of NULLSRC Link.

Null Src Link setup are as below.

       NullSrcPrm.outQueParams.nextLink = ipcOutVpssId;//ispId;//SYSTEM_LINK_ID_INVALID;//tiqvgadId;
        NullSrcPrm.tilerEnable = FALSE;
        NullSrcPrm.numOutQue = 1;
        NullSrcPrm.timerPeriod = 33;
        NullSrcPrm.inputInfo.numCh = 1;
        NullSrcPrm.inputInfo.chInfo[0].bufType = SYSTEM_BUF_TYPE_VIDBITSTREAM;
        NullSrcPrm.inputInfo.chInfo[0].codingformat = 0;
        NullSrcPrm.inputInfo.chInfo[0].dataFormat = SYSTEM_DF_YUV420SP_UV;
        NullSrcPrm.inputInfo.chInfo[0].memType = SYSTEM_MT_NONTILEDMEM;
        NullSrcPrm.inputInfo.chInfo[0].startX = 0;
        NullSrcPrm.inputInfo.chInfo[0].startY = 0;
        NullSrcPrm.inputInfo.chInfo[0].width = 1920;
        NullSrcPrm.inputInfo.chInfo[0].height = 1080;
        NullSrcPrm.inputInfo.chInfo[0].pitch[0] = 1920;
        NullSrcPrm.inputInfo.chInfo[0].pitch[1] = 1080;
        NullSrcPrm.inputInfo.chInfo[0].pitch[2] = 1080;
        NullSrcPrm.inputInfo.chInfo[0].scanFormat = SYSTEM_SF_PROGRESSIVE;

What is causing the issue? Any suggestions?

Thank you in advance :)

  • Hello,

    From the log, it looks like the dynamic paramter update of codecs is faling, cna you check what extended error code the codec is returning?

    You can find details of the codec params in the codec userguide, else you can put the dynamic param to BASE CLASS initially to check if the issue does not exisit.

    Then, you move it to extended parameters for codecs, and check which valaues/param is causing it

    Regards,

    Raghu

  • Raghu,

    I think the extended error should be 1<<14+1<<15+1<<30 =  0x2000C000 here.

    ,

    my guess is that some improper Nullsrc link settings might cause some  related settings of encoder to be wrong,

    could you please share what is your current settings of the following parameters in encoder link?

    dynamic parameter settings

    dynamicParams->videnc2DynamicParams.targetFrameRate

    dynamicParams->videnc2DynamicParams.targetBitRate 

    dynamicParams->videnc2DynamicParams.intraFrameInterval 

    dynamicParams->videnc2DynamicParams.generateHeader 

    dynamicParams->videnc2DynamicParams.captureWidth 

    dynamicParams->videnc2DynamicParams.forceFrame

    dynamicParams->videnc2DynamicParams.intraFrameInterval

    dynamicParams->videnc2DynamicParams.inputWidth 

    dynamicParams->videnc2DynamicParams.inputHeight

    dynamicParams->videnc2DynamicParams.size

    dynamicParams->videnc2DynamicParams.intraFrameInterval

    dynamicParams->videnc2DynamicParams.interFrameInterval

    create parameters

    staticParams->videnc2Params.rateControlPreset

    staticParams->maxIntraFrameInterval

    staticParams->enableLongTermRefFrame 

    staticParams->videnc2Params.maxInterFrameInterval

    staticParams->videnc2Params.maxHeight

    staticParams->videnc2Params.maxWidth

     staticParams->vuiCodingParams.numUnitsInTicks

    staticParams->videnc2Params.inputDataMode 

     staticParams->videnc2Params.outputDataMode 

    staticParams->videnc2DynamicParams.mvAccuracy

    THanks!

    Best regards,

    Christian,

  • Hi Raghu and Mingda Shen,

    I resolved the above issue by setting proper buffer type and pitch.

    Now, My encoder thread is running. It consumes the inputs buffers in encLink_tsk.c by calling EncLink_codecProcessData().
    But If I check the output queue of the encoder inside the function EncLink_codecGetProcessedData() using Utils_queIsEmpty(&pObj->processDoneQue), It always says encoder output queue is empty. I am not sure why this is happening. Dynamic/Static params. what I set are as below:

     [m3video]  staticParams->videnc2Params.rateControlPreset =5
     [m3video]  staticParams->maxIntraFrameInterval=2147483640
     [m3video]  staticParams->maxIntraFrameInterval=2147483640
     [m3video]  staticParams->enableLongTermRefFrame =0
     [m3video]  staticParams->videnc2Params.maxInterFrameInterval=1
     [m3video]  staticParams->videnc2Params.maxHeight=1920
     [m3video]  staticParams->videnc2Params.maxWidth=1920
     [m3video]  staticParams->vuiCodingParams.numUnitsInTicks=1000
     [m3video]  staticParams->videnc2Params.inputDataMode =3
     [m3video]  staticParams->videnc2Params.outputDataMode =3
     [m3video]  dynamicParams->videnc2DynamicParams.targetFrameRate = 60000
     [m3video]  dynamicParams->videnc2DynamicParams.targetBitRate = 2000000
     [m3video]  dynamicParams->videnc2DynamicParams.intraFrameInterval = 30  
     [m3video]  dynamicParams->videnc2DynamicParams.generateHeader =0
     [m3video]  dynamicParams->videnc2DynamicParams.captureWidth = 1920
     [m3video]  dynamicParams->videnc2DynamicParams.forceFrame = -1
     [m3video]  dynamicParams->videnc2DynamicParams.intraFrameInterval = 30
     [m3video]  dynamicParams->videnc2DynamicParams.inputWidth = 1920
     [m3video]  dynamicParams->videnc2DynamicParams.inputHeight= 1080
     [m3video]  dynamicParams->videnc2DynamicParams.size = 236
     [m3video]  dynamicParams->videnc2DynamicParams.intraFrameInterval = 30
     [m3video]  dynamicParams->videnc2DynamicParams.interFrameInterval = 1

    Appreciate your help .