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.

dm368 1080p performance issue

We are having issues getting full 30 fps on 1080p stream for DM368.

The hardware configuration is:

ARM : 486MHz 

DDR :360MHz

HDVICP: 360MHz

The software code base is Appro IPNC Reference Design -1.5 , latest 2.30 codec from TI with linux kernel 2.6.18 and DVSDK version 2.10.01.18

We are running dual H264 streams : one at 1080p stream and the other one at D1 resolution.

Below is the snippet of the profile info of the streams.

//ARM 486Mhz, 360Mhz DDR , 360MHz HDVICP
  Module   | Avg Time/Frame | Frame-rate | Total time | Total Frames |
  CAPTURE  |          35.25 |      28.36 |      63529 |         1802 |
  IPIPE    |                28.62 |      34.94 |      51574 |         1802 |
  ENCODE0  |          31.14 |      32.12 |      56043 |         1800 |
  ENCODE1  |           3.89 |     257.36 |       6994 |         1800 |
  STREAM   |           0.36 |    2774.09 |       1297 |         3598 |


  Module   | Avg Time/Frame | Frame-rate | Total time | Total Frames |
  CAPTURE  |          35.44 |      28.22 |      95783 |         2703 |
  IPIPE    |               28.59 |      34.97 |      77288 |         2703 |
 ENCODE0  |          31.33 |      31.92 |      84625 |         2701 |
 ENCODE1  |           3.86 |     259.12 |      10420 |         2700 |
 STREAM   |           0.35 |    2825.75 |       1911 |         5400 |

Is there a way we can get full 30 fps with the 1080p H264 stream with the hardware/software combination we have? If not, what are the components we should change or modify?

We do have Appro IPNC code version 2.6 for reference. But we are not sure what area to concentrate on to get better performance.

I can provide more details if needed.

Thanks in advance.

  • From the log it looks like you are running in DDR_IN mode.

    PLease run it in AVSERVER_CAPTURE_RAW_IN_MODE_ISIF_IN mode to get maximu performance, you cna use resizer 1 for 10810p and other for D1.

    In DDR IN mode, due to extra DDR copy the performance drop will be seen

    Also, Can you check you codec params to get the best performance for 1080p+D1 config?

    Regards,

    Raghu

    few checks for create params

    encodingPreset = XDM_HIGH_SPEED

    profileIdc = <User_defined>;
    levelIdc <User_defined>;
    Log2MaxFrameNumMinus4 = 0;
    ConstraintSetFlag = 0;
    entropyMode = 1;
    transform8x8FlagIntraFrame = 0;
    transform8x8FlagInterFrame = 1;
    enableVUIparams = <User_defined>;
    meAlgo = 0;
    seqScalingFlag = 1;
    encQuality = 3; /* In case you are using
    encodingPreset = XDM_USERDEFINED */
    enableARM926Tcm = 0;
    enableDDRbuff = 0;
    sliceMode = 0;
    numTemporalLayers = 0;
    svcSyntaxEnable = 0;
    EnableLongTermFrame = 0

    For dynamic params are,

    sliceSize = 0;
    airRate = 0;
    intraFrameQP = <user defined>;
    interPFrameQP = <user defined>;
    initQ = <user defined>;
    rcQMax = <user defined>;
    rcQMin= <user defined>;
    rcQMaxI = <user defined>;
    rcQMinI = <user defined>
    rcAlgo = <user defined>;
    maxDelay = <user defined>;
    aspectRatioX = <user defined>;
    aspectRatioY = <user defined>;
    lfDisableIdc = 0;
    enableBufSEI = <user defined>;
    enablePicTimSEI = <user defined>;
    perceptualRC = 0;
    idrFrameInterval = <user defined>;
    mvSADoutFlag = <user defined>;
    resetHDVICPeveryFrame = 0;
    enableROI = 0;
    metaDataGenerateConsume = 0;
    maxBitrateCVBR = <user defined>;
    interlaceRefMode = <user defined>;
    enableGDR = 0;
    GDRduration = 0;
    GDRinterval = 0;
    LongTermRefreshInterval = 0;
    UseLongTermFrame = 0;
    SetLongTermFrame = 0;
    VUI_Buffer = NULL;
    *CustomScaleMatrix_Buffer = NULL;
    CVBRsensitivity = 0;
    CVBRminbitrate = 0;
    LBRmaxpicsize = 0;
    LBRminpicsize = 0;
    LBRskipcontrol = 0;
    maxHighCmpxIntCVBR = 0;
    disableMVDCostFactor = 0
    putDataGetSpaceFxn = NULL;
    dataSyncHandle = NULL;

  • Hi Raghu,

    Thank you for the reply.

    We are using a camera module which outputs 1080p data in 16-bit YUV 4222 format. When we use the AVSERVER_CAPTURE_RAW_IN_MODE_ISIF_IN mode we do not get proper video. It is a green screen with noise.

    My question is , can we run in "AVSERVER_CAPTURE_RAW_IN_MODE_ISIF_IN"  mode to capture 16-bit YUV 422 format?

    Also according to the document "Suggested settings for (1080P + D1) - 30fps on DM368E" from TI , it says performance can be achieved by running on the fly resize to D1.

    Can you direct us as to what part of the IPNC ref desing code to modify to run in this mode?

    Thanks in advance.





  • Hi

    I am having same issue can any body tell me what is difference between "AVSERVER_CAPTURE_RAW_IN_MODE_ISIF_IN" and "DDR_IN" mode ?

    And in which file I need to look for, to change captureRawInMode ?

    Thanks,

    Jignesh

  • Hi 

    I am curious to know whether you were able to achieve the desired 30 fps and 

    also whether you got the AVSERVER_CAPTURE_RAW_IN_MODE_ISIF_IN capture mode working.

    Thanks 

    Ashok

  • Hi Ashok,

    We were able to achieve 30 fps and we were also able to get AVSERVER_CAPTURE_RAW_IN_MODE_ISIF_IN working.


    Padmini

  • how to set the other clock without arm、ddr and HDVICP? 

  • Hi,

    The file to set the capture mode to ISIF_IN is in 'avServerUI.c' in avserver/common folder.

    The function which does the video capture in ISIF_IN mode is VIDEO_captureTskRunIsifIn().

    Padmiin

  • Hi

    I have 1080p YUV 16bits camera module

    but we can't get 30fps @ single 1080p H.264 Encoding with DM368 (APPRO IPNC SDK)

    How to solve this problem ?

    If you solve this problem, Could you help me~!!