Help for TI J6 H.264 decoder

Any help with decoder parameter values  which can be modified for an enhanced decoder performance on TI J6 running QNX for Carplay h.264 video would be very much helpful to me.

4 Replies

  • Hi Sushil.
    TI 's IVAHD decoder can decode 1920x1080p at 60fps. What performance are you observing for carplay streams?
    Not sure which QNX sdk you are using
    Did you try with linux SDK(GLSDK)?
  • In reply to Ramprasad:

    Thanks a lot Ramprasad for the reply.
    I was stuck at video decoder performance in TI J6 for about a week.
    We are using QNX 6.6 sdk and trying to port carplay on it. Actually the API viddec3_process is taking approx 58ms to decode a frame. we are using 800x480 resolution at 60 fps. below is the parameters being used for the decoder.

    pcodecinterface->params->size = sizeof(IH264VDEC_Params);
    pcodecinterface->params->maxBitRate = 10000000;
    // pcodecinterface->params->displayDelay = IVIDDEC3_DISPLAY_DELAY_AUTO;
    pcodecinterface->params->displayDelay = IVIDDEC3_DECODE_ORDER;
    pcodecinterface->params->numOutputDataUnits = 0;
    pcodecinterface->params->maxWidth = width;

    /*Common Parameters to all decoders*/
    pcodecinterface->params->maxHeight = height;
    pcodecinterface->params->maxFrameRate = 60000;//30000;
    pcodecinterface->params->dataEndianness = XDM_BYTE;
    pcodecinterface->params->forceChromaFormat = XDM_YUV_420SP;
    pcodecinterface->params->operatingMode = IVIDEO_DECODE_ONLY;
    //pcodecinterface->params->displayDelay = IVIDDEC3_DECODE_ORDER;
    pcodecinterface->params->displayBufsMode = IVIDDEC3_DISPLAYBUFS_EMBEDDED;
    pcodecinterface->params->inputDataMode = IVIDEO_ENTIREFRAME;
    pcodecinterface->params->metadataType[0] = IVIDEO_METADATAPLANE_NONE;
    pcodecinterface->params->metadataType[1] = IVIDEO_METADATAPLANE_NONE;
    pcodecinterface->params->metadataType[2] = IVIDEO_METADATAPLANE_NONE;
    pcodecinterface->params->outputDataMode = IVIDEO_ENTIREFRAME;
    pcodecinterface->params->numInputDataUnits = 0;
    pcodecinterface->params->errorInfoMode = IVIDEO_ERRORINFO_OFF;

    DEBUG("dce_alloc VIDDEC3_Params successful pcodecinterface->params=%p", pcodecinterface->params);

    pcodecinterface->h264_params = (IH264VDEC_Params *) pcodecinterface->params;
    // pcodecinterface->h264_params->dpbSizeInFrames = IH264VDEC_DPB_NUMFRAMES_AUTO;
    pcodecinterface->h264_params->dpbSizeInFrames = IH264VDEC_DPB_NUMFRAMES_4;
    pcodecinterface->h264_params->pConstantMemory = 0;
    // pcodecinterface->h264_params->presetLevelIdc = IH264VDEC_LEVEL41;
    pcodecinterface->h264_params->presetLevelIdc = IH264VDEC_LEVEL31;
    pcodecinterface->h264_params->errConcealmentMode = IH264VDEC_APPLY_CONCEALMENT;
    pcodecinterface->h264_params->temporalDirModePred = TRUE;
    pcodecinterface->h264_params->detectCabacAlignErr = IH264VDEC_DISABLE_CABACALIGNERR_DETECTION;

    err = msync((Ptr)pcodecinterface->h264_params, sizeof(IH264VDEC_Params), MS_CACHE_ONLY | MS_SYNC);

    pcodecinterface->codec = VIDDEC3_create(pcodecinterface->engine, "ivahd_h264dec", (VIDDEC3_Params *)pcodecinterface->h264_params);

    Please let me know if we are using some wrong params.
  • In reply to Sushil Singh47:

    HI Susheel,
    Paramters looks fine and there is no tuning parameter for performance enhancement.
    I am not aware of the IPC involved in QNX to Ducalti.

    Will get back to you on this if I get any information.
  • In reply to Ramprasad:

    Thanks for the reply.

    Will share the video decoder logs with time stamp prints, where the API viddec3_process takes approx 58 ms to decode a h.264 frame.