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?