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.

TDA2EXEVM: Encoder Force NAL unit

Part Number: TDA2EXEVM

Hi

I am using vision sdk version 2.12.  I am trying to capture and encode to h264 bitstream. I need NAL unit in every I-frame, but the encoder is giving at the start of sequence. How to force the encoder to set NAL unit at every I-frame.

I tried with "staticParams->nalUnitControlParams.naluPresentMaskIntraPicture" value of 0x2102

"ENCLINK_H264_SETNALU_MASK_SPS(staticParams->nalUnitControlParams.naluPresentMaskIntraPicture);
ENCLINK_H264_SETNALU_MASK_PPS(staticParams->nalUnitControlParams.naluPresentMaskIntraPicture);
ENCLINK_H264_SETNALU_MASK_SEI(staticParams->nalUnitControlParams.naluPresentMaskIntraPicture);"

Any suggestions?

Regards,

Raja Sekar M

  • Hi Raja,

    I have forwarded your question to VisonSDK experts to comment.

    Regards,
    Yordan
  • Are you looking to output all frames are IDR frames?

  • Pls find below the H264 Encoder configuration to output IDR only frames.

                createStaticPrm->format                 = IVIDEO_H264HP;
                createStaticPrm->profile                = 100;
                createStaticPrm->dataLayout             = FIELD_SEPARATED;
                createStaticPrm->fieldMergeEncodeEnable = FALSE;
                createStaticPrm->enableAnalyticinfo     = 0;
                createStaticPrm->enableWaterMarking     = 0;
                createStaticPrm->maxBitRate             = -1;
                createStaticPrm->encodingPreset         = XDM_USER_DEFINED;
                createStaticPrm->rateControlPreset      = IVIDEO_LOW_DELAY;
                createStaticPrm->enableHighSpeed        = FALSE;
                createStaticPrm->enableSVCExtensionFlag = FALSE;
                createStaticPrm->numTemporalLayer       = 0;
                createStaticPrm->overrideInputScanFormat= 0;
                createStaticPrm->fieldPicEncode         = 0;
                createStaticPrm->IDRFrameInterval       = 30;

                createDynamicPrm->intraFrameInterval    = 1;
                createDynamicPrm->targetBitRate         = 10*1000*1000;
                createDynamicPrm->interFrameInterval    = 1;
                createDynamicPrm->mvAccuracy            = IVIDENC2_MOTIONVECTOR_QUARTERPEL;
                createDynamicPrm->inputFrameRate        = 30;
                createDynamicPrm->rcAlg                 = 0;
                createDynamicPrm->qpMin                 = 0;
                createDynamicPrm->qpMax                 = 51;
                createDynamicPrm->qpInit                = 25;
                createDynamicPrm->vbrDuration           = 8;
                createDynamicPrm->vbrSensitivity        = 0;
                createDynamicPrm->maxPicSizeRatioI      = 1;


    regards, Shiju

  • Hi Shiju,

    I tried with above settings, still having the same problem. I want to control this parameter "IDRFrameInterval".

    Any suggestion?

    Regards,
    Raja Sekar M
  • Hi
    I have valiadted this on top of VSDK3.0, exporting these paramters to Application layer is still not supported in VSDK3.0. You may need to hardcod these values in encLink_h264.c file

    regards, Shiju
  • Hi Shiju,

    When setting "encodingPreset" to "XDM_USER_DEFINED" getting below error,

    [HOST] [IPU2 ] 30.705209 s: CAPTURE: Start in progress !!!
    [HOST] [IPU2 ] 30.708930 s: CAPTURE: Start Done !!!
    [HOST] [IPU2 ] 30.769169 s: ENCODE: DEBUG Enclink_H264EncodeFrame outArgs->videnc2OutArgs.encodedFrameType = -1
    [HOST] [IPU2 ] 30.769291 s: ENCODE: ERROR: ALGPROCESS FAILED (status=0xffffffff) !!!
    [HOST] [IPU2 ] 30.769383 s: ENCODE: ERROR in Enclink_h264EncodeFrame.Status[-1]
    [HOST] [IPU2 ] 30.769596 s: ENCODE: DEBUG Enclink_H264EncodeFrame outArgs->videnc2OutArgs.encodedFrameType = -1
    [HOST] [IPU2 ] 30.769779 s: ENCODE: ERROR: ALGPROCESS FAILED (status=0xffffffff) !!!
    [HOST] [IPU2 ] 30.769871 s: ENCODE: ERROR in Enclink_h264EncodeFrame.Status[-1]
    [HOST] [IPU2 ] 30.789239 s: ENCODE: DEBUG Enclink_H264EncodeFrame outArgs->videnc2OutArgs.encodedFrameType = -1
    [HOST] [IPU2 ] 30.789361 s: ENCODE: ERROR: ALGPROCESS FAILED (status=0xffffffff) !!!

    Any Suggestion?

    Regards,
    Raja Sekar M
  • Hi,

    Is there any document/link available for h264 codec?

    Regards,
    Raja Sekar M
  • Hi

    Yes, pls find the user guide unde \ti_components\codecs\ivahd_h264enc_02_00_09_01_production\packages\ti\sdo\codecs\h264enc\docs

    regards, Shiju

  • Hi Shiju,

    Can you please suggest on the above issue?

    Regards,
    Raja Sekar M
  • Hi,

    Below is the error message when "encodingPreset" is set to "XDM_USER_DEFINED" , The same error is occurring for all channels(0,1 &2)

    [HOST] [IPU2 ] 30.456475 s: ENCODE: Creating CH2 of 1280 x 720, pitch = (1280, 1280) [1] [0], bitrate = 1048 Kbps ...
    [HOST] [IPU2 ] 30.529219 s: ENCODE: CH2: H264EncCreated:H264ENC_TI DEV.500.V.H264AVC.E.IVAHD.02.00.09.01
    [HOST] [IPU2 ] 30.529768 s: ENCODE: ERROR: ALGCONTROL FAILED CMD=0x00000001 (status=ffffffff) !!!
    [HOST] [IPU2 ] 30.529890 s: LINK ERR::linkID:9000044::channelID:2::errorCode:-5::FileName:links_ipu/iva/iva_enc/encLink_h264.c::linuNum:1145::errorCondition:(algStatus == XDM_EOK)
    [HOST] [IPU2 ] 30.530134 s: ENCODE: ERROR: ALGCONTROL FAILED CMD=0x00000000 (status=ffffffff) !!!
    [HOST] [IPU2 ] 30.530256 s:
    [HOST] [IPU2 ] 30.537546 s: ENCODE: ERROR: ALGCONTROL FAILED CMD=0x00000005 (status=ffffffff) !!!
    [HOST] [IPU2 ] 30.537668 s: LINK ERR::linkID:9000044::channelID:2::errorCode:-8::FileName:links_ipu/iva/iva_enc/encLink_h264.c::linuNum:1163::errorCondition:(algStatus == XDM_EOK)
    [HOST] [IPU2 ] 30.537851 s: ENCODE: All CH Create ... DONE !!!
    [HOST] [IPU2 ] 30.539132 s: ENCODE: Create ... DONE !!!

    Any Suggestion?

    Regards,
    Raja Sekar M.
  • hi
    Pls find below the H264 Encoder configuration to output IDR only frames.

    createStaticPrm->format = IVIDEO_H264HP;
    createStaticPrm->profile = 100;
    createStaticPrm->dataLayout = FIELD_SEPARATED;
    createStaticPrm->fieldMergeEncodeEnable = FALSE;
    createStaticPrm->enableAnalyticinfo = 0;
    createStaticPrm->enableWaterMarking = 0;
    createStaticPrm->maxBitRate = -1;
    createStaticPrm->encodingPreset = XDM_USER_DEFINED;
    createStaticPrm->rateControlPreset = IVIDEO_LOW_DELAY;
    createStaticPrm->enableHighSpeed = FALSE;
    createStaticPrm->enableSVCExtensionFlag = FALSE;
    createStaticPrm->numTemporalLayer = 0;
    createStaticPrm->overrideInputScanFormat= 0;
    createStaticPrm->fieldPicEncode = 0;
    createStaticPrm->IDRFrameInterval = 30;

    createDynamicPrm->intraFrameInterval = 1;
    createDynamicPrm->targetBitRate = 10*1000*1000;
    createDynamicPrm->interFrameInterval = 1;
    createDynamicPrm->mvAccuracy = IVIDENC2_MOTIONVECTOR_QUARTERPEL;
    createDynamicPrm->inputFrameRate = 30;
    createDynamicPrm->rcAlg = 0;
    createDynamicPrm->qpMin = 0;
    createDynamicPrm->qpMax = 51;
    createDynamicPrm->qpInit = 25;
    createDynamicPrm->vbrDuration = 8;
    createDynamicPrm->vbrSensitivity = 0;
    createDynamicPrm->maxPicSizeRatioI = 1;


    regards, Shiju