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.

DM6467 h.264 encoder bitrate control



I succeeded in forcing IDR frames required for streaming random access, but some problem still exists.

This is piece of code I use:

if(frameCnt%30 == 0)

{

        if(params.rateControlPreset != IVIDEO_NONE)

                   extDynParams.videncDynamicParams.generateHeader = XDM_GENERATE_HEADER;

        extDynParams.videncDynamicParams.forceFrame = IVIDEO_IDR_FRAME;

        ret = VIDENC1_control(Venc1_getVisaHandle(hVe1), XDM_SETPARAMS, (VIDENC1_DynamicParams *)&extDynParams, &encStatus);

}

else if(extDynParams.videncDynamicParams.forceFrame == IVIDEO_IDR_FRAME)

{

          extDynParams.videncDynamicParams.generateHeader = XDM_ENCODE_AU;

          extDynParams.videncDynamicParams.forceFrame = IVIDEO_P_FRAME;

          ret = VIDENC1_control(Venc1_getVisaHandle(hVe1), XDM_SETPARAMS, (VIDENC1_DynamicParams *)&extDynParams, &encStatus);

}

When I set params.rateControlPreset = IVIDEO_NONE, encoder generates IDR frame with SPS/PPS headers. (Next P-frame also contain unneeded header).

But if I want to control bitrate and set params.rateControlPreset = IVIDEO_LOW_DELAY or IVIDEO_STORAGE, SPS/PPS headers are no longer generated.

When I try to force them (as in code above), I see visual image jumping (when I play the encoded strean) on every IDR frame.

What is the cause of this issue?