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.

Question regarding DM8168 H.264 Encoder slicing capability

Hello - 

I have a question regarding slicing with the H.264 Encoder (REL.500.V.H264AVC.E.IVAHD.02.00.04.01).

We are using release DVRRDK_03.50.00.05 on a DM8168 board.   We will be encoding two YUV inputs simultaneously.    The first will be a HD 1080P60 input and the second will be at SD resolution.

The design is to perform slicing on the HD 1080P60 encoder output.  No encoder slicing will be performed on the SD stream.

Our plan is to use two of the HDVICP2's of the DM8168.  One HDVICP2 for encoding the HD 1080P60 input and the second HDVICP2 for encoding the SD input.

Questions:

Will the H.264 Encoder and software support processing the HD input on one HDVICP2 with output slicing, while processing the second input in parallel on a second HDVICP2 with no slicing? 

My  understanding from the documentation is that slicing and data sync is not supported using the encoder N channel frame processing call: "handle->fxns->processMulti(processList)".    So our plan is to use two separate calls to the single process function: "handle->fxns->ividenc.process".  One to encode the HD input and a second to encode the SD input.  

Would this be a valid approach?

Thank you for your help.

Best Regards,

David

  • To support slice based encoding you should first disable process APIs. This can be done by enabling define in

    /dvr_rdk/mcfw/interfaces/link_api/system_debug.h

    //#define SYSTEM_DEBUG_DISABLE_PROCESS_MULTI

    //Change to

    #define SYSTEM_DEBUG_DISABLE_PROCESS_MULTI

    and rebuild dvr_rdk using make dvr_rdk and use the generated firmware files.

    Refer H264_Encoder_HDVICP2_UserGuide.pdf for additional limitation when using slice mode. For example IH264_SLICEMODE_BYTES and IH264_ENTROPYCODING_CABAC cannot be used together.

     

    The above is from purely codec support.

    DVR RDK framework doesn't support slice based encoding. Supporting sliceBased encoding would require a means of sending a notification to A8 from M3 each time a dataSynchAPI callback from encoder occurs.There would be several changes required to export this info including changes in Venc_getBitstream API.