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.

TDA2PXEVM: Encoder drops some frames

Part Number: TDA2PXEVM

Hello,

I am trying to record video (640x480) to a memory card using an encoder in h.264 format. But when I run the recorded video using the decoder, I notice that some of the frames are dropped. What could be the problem?

My encoder settings: 

pLinkChPrm->format = SYSTEM_IVIDEO_H264HP;
pLinkChPrm->profile = 100;
pLinkChPrm->dataLayout = VENC_FIELD_SEPARATED;
pLinkChPrm->fieldMergeEncodeEnable = FALSE;
pLinkChPrm->enableAnalyticinfo = 0;
pLinkChPrm->enableWaterMarking = 0;
pLinkChPrm->maxBitRate = -1;
pLinkChPrm->encodingPreset = SYSTEM_XDM_HIGH_SPEED_MED_QUALITY;

//pLinkChPrm->encodingPreset = SYSTEM_XDM_USER_DEFINED;
pLinkChPrm->rateControlPreset = SYSTEM_IVIDEO_STORAGE;
pLinkChPrm->enableHighSpeed = FALSE;
pLinkChPrm->enableSVCExtensionFlag = FALSE;
pLinkChPrm->numTemporalLayer = 0;
pLinkChPrm->overrideInputScanFormat = 0;
pLinkChPrm->fieldPicEncode = 0;
pLinkChPrm->IDRFrameInterval = 30;

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

Regards,

Filipp

  • Filipp,

    I was a little confused whether the problem is on the encoder or the decoder.

    Have you played back this file on the PC player and does the video look ok? Indicating that this is a decoder issue. But if the video is fine then we have to look into the encoder.

    Are you recording this via GStreamer and with the native SDK on TI EVM?

    Please share these details also.

    Regards

    Karthik

  • Hello,

    Yes, I also played this video file on a PC player, and some frames were also lost.

    I recorded video using the encoder link in the VisionSDK v3.08

    That's my usecase for recording:

    IssCapture -> IssM2mIsp -> Dup -> Display
    Dup -> Encode -> Null_EncodeCAN
    IssM2mIsp -> Alg_IssAewb

    Regards,

    Filipp

  • Hi Filipp,

    Can you share the complete(static and dynamic) encoder parameter settings? The encoder version which you are using(It is mentioned in the Release notes of H.264 Encoder)?

  • Hello,

    Thanks for your reply.

    I'm using 02.00.09 version of encoder.

    My static encoder settings:

    pLinkChPrm->format = SYSTEM_IVIDEO_H264HP;
    pLinkChPrm->profile = 100;
    pLinkChPrm->dataLayout = VENC_FIELD_SEPARATED;
    pLinkChPrm->fieldMergeEncodeEnable = FALSE;
    pLinkChPrm->enableAnalyticinfo = 0;
    pLinkChPrm->enableWaterMarking = 0;
    pLinkChPrm->maxBitRate = -1;
    pLinkChPrm->encodingPreset = SYSTEM_XDM_HIGH_SPEED_MED_QUALITY;
    pLinkChPrm->rateControlPreset = SYSTEM_IVIDEO_STORAGE;
    pLinkChPrm->enableHighSpeed = FALSE;
    pLinkChPrm->enableSVCExtensionFlag = FALSE;
    pLinkChPrm->numTemporalLayer = 0;
    pLinkChPrm->overrideInputScanFormat = 0;
    pLinkChPrm->fieldPicEncode = 0;
    pLinkChPrm->IDRFrameInterval = 30;

    My dynamic encoder settings:

    [IPU1-0] 166.732538 s: --------- CH 0 : H264 ENC : Dynamic Params -------
    [IPU1-0] 166.732629 s:
    [IPU1-0] 166.732660 s: videnc2DynamicParams -> inputHeight : 480
    [IPU1-0] 166.732751 s: videnc2DynamicParams -> inputWidth : 640
    [IPU1-0] 166.732873 s: videnc2DynamicParams -> refFrameRate : 30000
    [IPU1-0] 166.732995 s: videnc2DynamicParams -> targetFrameRate : 30000
    [IPU1-0] 166.733056 s: videnc2DynamicParams -> targetBitRate : 10000000
    [IPU1-0] 166.733148 s: videnc2DynamicParams -> intraFrameInterval : 30
    [IPU1-0] 166.733239 s: videnc2DynamicParams -> generateHeader : 0
    [IPU1-0] 166.733331 s: videnc2DynamicParams -> captureWidth : 640
    [IPU1-0] 166.733422 s: videnc2DynamicParams -> forceFrame : -1
    [IPU1-0] 166.733483 s: videnc2DynamicParams -> interFrameInterval : 1
    [IPU1-0] 166.733575 s: videnc2DynamicParams -> mvAccuracy : 2
    [IPU1-0] 166.733666 s: videnc2DynamicParams -> sampleAspectRatioHeight : 1
    [IPU1-0] 166.733727 s: videnc2DynamicParams -> sampleAspectRatioWidth : 1
    [IPU1-0] 166.733849 s: videnc2DynamicParams -> ignoreOutbufSizeFlag : 1
    [IPU1-0] 166.733941 s: videnc2DynamicParams -> lateAcquireArg : -1
    [IPU1-0] 166.734002 s:
    [IPU1-0] 166.734063 s: rateControlParams -> rateControlParamsPreset : 0
    [IPU1-0] 166.734124 s: rateControlParams -> scalingMatrixPreset : 1
    [IPU1-0] 166.734215 s: rateControlParams -> rcAlgo : 0
    [IPU1-0] 166.734307 s: rateControlParams -> qpI : -1
    [IPU1-0] 166.734398 s: rateControlParams -> qpMaxI : 36
    [IPU1-0] 166.734490 s: rateControlParams -> qpMinI : 10
    [IPU1-0] 166.734581 s: rateControlParams -> qpP : -1
    [IPU1-0] 166.734642 s: rateControlParams -> qpMaxP : 40
    [IPU1-0] 166.734734 s: rateControlParams -> qpMinP : 10
    [IPU1-0] 166.734886 s: rateControlParams -> qpOffsetB : 4
    [IPU1-0] 166.734978 s: rateControlParams -> qpMaxB : 44
    [IPU1-0] 166.735069 s: rateControlParams -> qpMinB : 10
    [IPU1-0] 166.735161 s: rateControlParams -> allowFrameSkip : 0
    [IPU1-0] 166.735222 s: rateControlParams -> removeExpensiveCoeff : 0
    [IPU1-0] 166.735313 s: rateControlParams -> chromaQPIndexOffset : 0
    [IPU1-0] 166.735405 s: rateControlParams -> IPQualityFactor : 0
    [IPU1-0] 166.735496 s: rateControlParams -> initialBufferLevel : 0
    [IPU1-0] 166.735588 s: rateControlParams -> HRDBufferSize : 20000000
    [IPU1-0] 166.735679 s: rateControlParams -> minPicSizeRatioI : 0
    [IPU1-0] 166.735740 s: rateControlParams -> maxPicSizeRatioI : 640
    [IPU1-0] 166.735862 s: rateControlParams -> minPicSizeRatioP : 0
    [IPU1-0] 166.735954 s: rateControlParams -> maxPicSizeRatioP : 0
    [IPU1-0] 166.736045 s: rateControlParams -> minPicSizeRatioB : 0
    [IPU1-0] 166.736137 s: rateControlParams -> maxPicSizeRatioB : 0
    [IPU1-0] 166.736198 s: rateControlParams -> enablePRC : 1
    [IPU1-0] 166.736289 s: rateControlParams -> enablePartialFrameSkip : 0
    [IPU1-0] 166.736381 s: rateControlParams -> discardSavedBits : 0
    [IPU1-0] 166.736472 s: rateControlParams -> VBRDuration : 8
    [IPU1-0] 166.736564 s: rateControlParams -> VBRsensitivity : 0
    [IPU1-0] 166.736625 s: rateControlParams -> skipDistributionWindowLength : 5
    [IPU1-0] 166.736716 s: rateControlParams -> numSkipInDistributionWindow : 1
    [IPU1-0] 166.736808 s: rateControlParams -> enableHRDComplianceMode : 1
    [IPU1-0] 166.736930 s: rateControlParams -> frameSkipThMulQ5 : 0
    [IPU1-0] 166.736991 s: rateControlParams -> vbvUseLevelThQ5 : 0
    [IPU1-0] 166.737082 s:
    [IPU1-0] 166.737113 s: interCodingParams -> interCodingPreset : 0
    [IPU1-0] 166.737204 s: interCodingParams -> searchRangeHorP : 144
    [IPU1-0] 166.737296 s: interCodingParams -> searchRangeVerP : 32
    [IPU1-0] 166.737357 s: interCodingParams -> searchRangeHorB : 144
    [IPU1-0] 166.737448 s: interCodingParams -> searchRangeVerB : 16
    [IPU1-0] 166.737509 s: interCodingParams -> interCodingBias : 1
    [IPU1-0] 166.737601 s: interCodingParams -> skipMVCodingBias : 1
    [IPU1-0] 166.737662 s: interCodingParams -> minBlockSizeP : 0
    [IPU1-0] 166.737723 s: interCodingParams -> minBlockSizeB : 0
    [IPU1-0] 166.737845 s: interCodingParams -> meAlgoMode : 0
    [IPU1-0] 166.737906 s:
    [IPU1-0] 166.737967 s: intraCodingParams -> intraCodingPreset : 0
    [IPU1-0] 166.738028 s: intraCodingParams -> lumaIntra4x4Enable : 0
    [IPU1-0] 166.738119 s: intraCodingParams -> lumaIntra8x8Enable : 255
    [IPU1-0] 166.738211 s: intraCodingParams -> lumaIntra16x16Enable : 15
    [IPU1-0] 166.738302 s: intraCodingParams -> chromaIntra8x8Enable : 15
    [IPU1-0] 166.738363 s: intraCodingParams -> chromaComponentEnable : 1
    [IPU1-0] 166.738455 s: intraCodingParams -> intraRefreshMethod : 0
    [IPU1-0] 166.738546 s: intraCodingParams -> intraRefreshRate : 0
    [IPU1-0] 166.738607 s: intraCodingParams -> gdrOverlapRowsBtwFrames : 0
    [IPU1-0] 166.738699 s: intraCodingParams -> constrainedIntraPredEnable : 0
    [IPU1-0] 166.738790 s: intraCodingParams -> intraCodingBias : 0
    [IPU1-0] 166.738882 s:
    [IPU1-0] 166.738943 s: sliceCodingParams -> sliceCodingPreset : -96
    [IPU1-0] 166.739004 s: sliceCodingParams -> sliceMode : 416
    [IPU1-0] 166.739095 s: sliceCodingParams -> sliceUnitSize : 131074
    [IPU1-0] 166.739156 s: sliceCodingParams -> sliceStartOffset : [0 12 -66]
    [IPU1-0] 166.739278 s: sliceCodingParams -> streamFormat : -66
    [IPU1-0] 166.739339 s:
    [IPU1-0] 166.739400 s: sliceGroupChangeCycle : 0
    [IPU1-0] 166.739461 s: searchCenter : 0
    [IPU1-0] 166.739522 s: enableStaticMBCount : 0
    [IPU1-0] 166.739583 s: enableROI : 262400

    Regards,

    Filipp

  • Hi,

    Thank you for sharing the params and codec version.

    Can you try setting the below?

    • pLinkChPrm->encodingPreset  = XDM_USER_DEFINED
    • pLinkChPrm->rateControlPreset = IVIDEO_USER_DEFINED
    • rateControlParams -> rateControlParamsPreset = 1
    • rateControlParams -> initialBufferLevel = rateControlParams -> HRDBufferSize = (2 * videnc2DynamicParams -> targetBitRate) for VBR
  • Hi Prashanth,

    I tried to change settings of encoder, as you said, but I couldn't change the last one (rateControlParams -> initialBufferLevel = rateControlParams -> HRDBufferSize = (2 * videnc2DynamicParams -> targetBitRate)).

    Despite the fact that in all configuration functions specified that InitialBufferLevel = HRDBufferSize, it remains equal to 0. I don't understand how to change it.

    My current settings:

    [IPU1-0] 15.940675 s: --------- CH 0 : H264 ENC : Dynamic Params -------
    [IPU1-0] 15.940767 s:
    [IPU1-0] 15.940797 s: videnc2DynamicParams -> inputHeight : 480
    [IPU1-0] 15.940858 s: videnc2DynamicParams -> inputWidth : 640
    [IPU1-0] 15.941011 s: videnc2DynamicParams -> refFrameRate : 30000
    [IPU1-0] 15.941102 s: videnc2DynamicParams -> targetFrameRate : 30000
    [IPU1-0] 15.941194 s: videnc2DynamicParams -> targetBitRate : 10000000
    [IPU1-0] 15.941285 s: videnc2DynamicParams -> intraFrameInterval : 30
    [IPU1-0] 15.941346 s: videnc2DynamicParams -> generateHeader : 0
    [IPU1-0] 15.941438 s: videnc2DynamicParams -> captureWidth : 640
    [IPU1-0] 15.941529 s: videnc2DynamicParams -> forceFrame : -1
    [IPU1-0] 15.941590 s: videnc2DynamicParams -> interFrameInterval : 1
    [IPU1-0] 15.941682 s: videnc2DynamicParams -> mvAccuracy : 2
    [IPU1-0] 15.941773 s: videnc2DynamicParams -> sampleAspectRatioHeight : 1
    [IPU1-0] 15.941834 s: videnc2DynamicParams -> sampleAspectRatioWidth : 1
    [IPU1-0] 15.941926 s: videnc2DynamicParams -> ignoreOutbufSizeFlag : 1
    [IPU1-0] 15.942048 s: videnc2DynamicParams -> lateAcquireArg : -1
    [IPU1-0] 15.942139 s:
    [IPU1-0] 15.942200 s: rateControlParams -> rateControlParamsPreset : 1
    [IPU1-0] 15.942261 s: rateControlParams -> scalingMatrixPreset : 0
    [IPU1-0] 15.942353 s: rateControlParams -> rcAlgo : 0
    [IPU1-0] 15.942444 s: rateControlParams -> qpI : 25
    [IPU1-0] 15.942536 s: rateControlParams -> qpMaxI : 51
    [IPU1-0] 15.942597 s: rateControlParams -> qpMinI : 0
    [IPU1-0] 15.942688 s: rateControlParams -> qpP : 25
    [IPU1-0] 15.942780 s: rateControlParams -> qpMaxP : 51
    [IPU1-0] 15.942871 s: rateControlParams -> qpMinP : 0
    [IPU1-0] 15.942963 s: rateControlParams -> qpOffsetB : 4
    [IPU1-0] 15.943054 s: rateControlParams -> qpMaxB : 44
    [IPU1-0] 15.943146 s: rateControlParams -> qpMinB : 10
    [IPU1-0] 15.943237 s: rateControlParams -> allowFrameSkip : 0
    [IPU1-0] 15.943298 s: rateControlParams -> removeExpensiveCoeff : 0
    [IPU1-0] 15.943390 s: rateControlParams -> chromaQPIndexOffset : 0
    [IPU1-0] 15.943481 s: rateControlParams -> IPQualityFactor : 0
    [IPU1-0] 15.943573 s: rateControlParams -> initialBufferLevel : 0
    [IPU1-0] 15.943634 s: rateControlParams -> HRDBufferSize : 2500000
    [IPU1-0] 15.943725 s: rateControlParams -> minPicSizeRatioI : 0
    [IPU1-0] 15.943817 s: rateControlParams -> maxPicSizeRatioI : 0
    [IPU1-0] 15.943908 s: rateControlParams -> minPicSizeRatioP : 0
    [IPU1-0] 15.944000 s: rateControlParams -> maxPicSizeRatioP : 0
    [IPU1-0] 15.944091 s: rateControlParams -> minPicSizeRatioB : 0
    [IPU1-0] 15.944183 s: rateControlParams -> maxPicSizeRatioB : 0
    [IPU1-0] 15.944274 s: rateControlParams -> enablePRC : 1
    [IPU1-0] 15.944335 s: rateControlParams -> enablePartialFrameSkip : 0
    [IPU1-0] 15.944427 s: rateControlParams -> discardSavedBits : 1
    [IPU1-0] 15.944519 s: rateControlParams -> VBRDuration : 8
    [IPU1-0] 15.944610 s: rateControlParams -> VBRsensitivity : 0
    [IPU1-0] 15.944671 s: rateControlParams -> skipDistributionWindowLength : 5
    [IPU1-0] 15.944763 s: rateControlParams -> numSkipInDistributionWindow : 2
    [IPU1-0] 15.944854 s: rateControlParams -> enableHRDComplianceMode : 1
    [IPU1-0] 15.944946 s: rateControlParams -> frameSkipThMulQ5 : 0
    [IPU1-0] 15.945037 s: rateControlParams -> vbvUseLevelThQ5 : 0
    [IPU1-0] 15.945129 s:
    [IPU1-0] 15.945159 s: interCodingParams -> interCodingPreset : 0
    [IPU1-0] 15.945251 s: interCodingParams -> searchRangeHorP : 144
    [IPU1-0] 15.945312 s: interCodingParams -> searchRangeVerP : 32
    [IPU1-0] 15.945403 s: interCodingParams -> searchRangeHorB : 144
    [IPU1-0] 15.945464 s: interCodingParams -> searchRangeVerB : 16
    [IPU1-0] 15.945556 s: interCodingParams -> interCodingBias : 1
    [IPU1-0] 15.945617 s: interCodingParams -> skipMVCodingBias : 1
    [IPU1-0] 15.945708 s: interCodingParams -> minBlockSizeP : 0
    [IPU1-0] 15.945769 s: interCodingParams -> minBlockSizeB : 0
    [IPU1-0] 15.945830 s: interCodingParams -> meAlgoMode : 0
    [IPU1-0] 15.945922 s:
    [IPU1-0] 15.945983 s: intraCodingParams -> intraCodingPreset : 0
    [IPU1-0] 15.946074 s: intraCodingParams -> lumaIntra4x4Enable : 0
    [IPU1-0] 15.946135 s: intraCodingParams -> lumaIntra8x8Enable : 255
    [IPU1-0] 15.946227 s: intraCodingParams -> lumaIntra16x16Enable : 15
    [IPU1-0] 15.946318 s: intraCodingParams -> chromaIntra8x8Enable : 15
    [IPU1-0] 15.946379 s: intraCodingParams -> chromaComponentEnable : 1
    [IPU1-0] 15.946471 s: intraCodingParams -> intraRefreshMethod : 0
    [IPU1-0] 15.946562 s: intraCodingParams -> intraRefreshRate : 0
    [IPU1-0] 15.946623 s: intraCodingParams -> gdrOverlapRowsBtwFrames : 0
    [IPU1-0] 15.946715 s: intraCodingParams -> constrainedIntraPredEnable : 0
    [IPU1-0] 15.946806 s: intraCodingParams -> intraCodingBias : 0
    [IPU1-0] 15.946867 s:
    [IPU1-0] 15.946898 s: sliceCodingParams -> sliceCodingPreset : -96
    [IPU1-0] 15.947020 s: sliceCodingParams -> sliceMode : 24992
    [IPU1-0] 15.947111 s: sliceCodingParams -> sliceUnitSize : 155906
    [IPU1-0] 15.947203 s: sliceCodingParams -> sliceStartOffset : [0 12 -66]
    [IPU1-0] 15.947294 s: sliceCodingParams -> streamFormat : -66
    [IPU1-0] 15.947386 s:
    [IPU1-0] 15.947416 s: sliceGroupChangeCycle : 0
    [IPU1-0] 15.947477 s: searchCenter : 0
    [IPU1-0] 15.947569 s: enableStaticMBCount : 0
    [IPU1-0] 15.947630 s: enableROI : 262400

    Regards,

    Filipp

  • Hi,

    Despite the fact that in all configuration functions specified that InitialBufferLevel = HRDBufferSize, it remains equal to 0. I don't understand how to change it.

    Does that mean even if you set the initialBufferLevel = 2 * targetBitrate, it is resetting back to zero? That should not happen! Can you please check who is resetting it?