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.

Gradual Decoder Refresh or comparable on DM8168?

Hi,

The H.264 encoder for the DM36x supports gradual decoder refresh.

See:  http://processors.wiki.ti.com/index.php/H.264_DM36x_Ver_2.0_Codec#Gradual_Decoder_Refresh_.28GDR.29

Is there a comparable mode or another method of spreading out the IntraFrame load in the H.264 encoder for the DM8168?

If so, how is it configured?

Thank you.


  • Concerning GRADUAL DECODER REFRESH on 8168, the following provided by email from TI:

    -------------------------------------------------------------------------------
    Few suggestions & sequence to be followed to enable GDR is as follows,

    1. GDR settings @ create time -- Setting static params.

    staticParams->intracodingParams.intraCodingPreset = 1 - User defined
    staticParams->intracodingParams.intraRefreshMethod= 4 - GDR
    staticParams->intracodingParams.intraRefreshRate=  Number of rows gdr'd every frame(for eg : 4)
    staticParams->intracodingParams.gdrOverlapRowsBtwFrames= gdr'd row overlap per frame(less than intraRefreshRate & for eg : 1)

    2. GDR settings @ Dynamic level  -- control call with argument as XDM_SETPARAMS.

    DynamicParams->intracodingParams.intraCodingPreset = 1
    DynamicParams->intracodingParams.intraRefreshMethod= 4
    DynamicParams->intracodingParams.intraRefreshRate=  Number of rows gdr'd every frame(for eg : 4)
    DynamicParams->intracodingParams.gdrOverlapRowsBtwFrames= gdr'd row overlap per frame(less than intraRefreshRate & for eg : 1)
    DynamicParams->intraRefreshRateGDRDynamic =  same as intraRefreshRate
    DynamicParams->gdrOverlapRowsBtwFramesDynamic =  same as gdrOverlapRowsBtwFrames


    3. Enable the GDR by

    IVIDENC2_InArgs::control = IH264ENC_CTRL_START_GDR
    -------------------------------------------------------------------------------

    When static and dynamic parameters are set per steps 1 and 2 in the above recommendations the OMX component hangs going from LOADED to IDLE. 

    For generating IDR frames on the fly we use OMX_IndexconfigVideoIntraVOPRefresh, setting IntraRefreshVOP to OMX_TRUE and calling OMX_SetConfig.  Is there a similar mechanism for IH264ENC_CTRL_START_GDR using OMX? 

    Encoder is ivahd_h264enc_02_00_02_02_production

    OMX is omx_05_02_00_38


    Thank you for your assistance.

     

  • Team,

    Steps 1 and 2 (in the above post by Edward ) are just used to configure GDR parameters to the encoder.

    Triggering GDR can be done by setting IVIDENC2_InArgs::control = IH264ENC_CTRL_START_GDR. This is done during the process call. The frames encoded onwards this process call will have intra-row(s) as specified in the settings.

    We do have force_skip request to encoder by process call method , IVIDENC2_InArgs::control = IVIDENC2_CTRL_FORCESKIP, 

    So Triggering GDR also goes in the same way.

    Mechanism for GDR and mechanism for IDR frame request are totally different, 

    *) IDR frame request is done by setting videnc2DynamicParams.forceFrame = IVIDEO_IDR_FRAME then followed by XDM_SETPARAMS control call. 

    *) GDR request is done by setting  IVIDENC2_InArgs::control = IH264ENC_CTRL_START_GDR with process call.

    Thank you.