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.

TDA4VM: CSI1 app_multi_cam

Part Number: TDA4VM

Hi TI experts,

My software version is:
  PDK-RTOS :processor-sdk-rtos-j721e-evm-08_06_00_12
  PDK-LINUX:processor-sdk-linux-08_06_00

data_flow:

max9295A*2->max96792A->CSI1

When we ./run_app_single_cam.sh:

Please choose between 0 and 11

Select camera port index 0-11 :

4

Single camera is working when we select port4.

When numChan is set to 2 in

static IssSensor_CreateParams gw_ar0233CreatePrms = {

2, /*numChan*/

}

obj->sensorObj.num_cameras_enabled = 0x10;

obj->sensorObj.ch_mask = 0x10;

./run_app_multi_cam.sh gets stuck after running:

app_run_graph_for_one_pipeline: frame 1 beginning, pipeline:-2,line:1264

app_run_graph_for_one_pipeline: frame 2 beginning, pipeline:-1,line:1264

log:

1 sensor(s) found Supported sensor list:

a: GW_AR0233_UYVY

Select a sensor above or press '0' to autodetect the sensor a Sensor

a

selected: GW_AR0233_UYVY

LDC Selection Yes(1)/No(0)

 0

Max number of cameras supported by sensor GW_AR0233_UYVY = 2

Please enter number of cameras to be enabled

2

What modifications did we miss? Looking forward to your reply

Regards,

Barry

  • When numChan is set to 2 in

    static IssSensor_CreateParams gw_ar0233CreatePrms = {

    1,   /*numChan*/

    }

    Max number of cameras supported by sensor GW_AR0233_UYVY = 1

    Please enter number of cameras to be enabled

    1

    ./run_app_multi_cam.sh The stuck log is also the same.

    app_run_graph_for_one_pipeline: frame 1 beginning, pipeline:-2,line:1264

    app_run_graph_for_one_pipeline: frame 2 beginning, pipeline:-1,line:1264

    What modifications can we try? Please help us support.

    Regards,

    Barry

  • Hi,

    For the single cam, you are connecting on CSI1 port (i.e. port 4) right?

    Are you connecting the 2 cam also only on CSI1?

    I think multicam demo would require a continuous cameras on all ports till port 4 or 5, 

    i.e. if you give number of sensor as 2, it expects the sensor to be at port 0 and 1. Have you modified the demo to take this into consideration?

    Regards,

    Nikhil

  • Hi expert,

    thank you for your reply .

    After we set sensorObj->ch_mask = 0x30, he started working.

    We want to convert the YUV422 UYVY of capture into RGB565. How should we implement this conversion node?

    Looking forward for your reply, thank you

    Regards,

    Barry

  • Hi TI expert,

    Are there any supported nodes for converting yuv422 to rgb565? Please help us confirm.

    How do we need to implement this function?

    Looking forward to reply, thank you

    Regards,

    Barry

  • Hi Barry,

    YUV422 to RGB565 conversion could be done by the DSS_M2M node.

    The output image format on OpenVX would be TIVX_DF_IMAGE_RGB565 and the input format is VX_DF_IMAGE_UYVY.

    Regards,

    Nikhil

  • Hi Nikhil,

    thank you for your reply,

    We are doing:

    PDK-RTOS:processor-sdk-rtos-j721e-evm-08_06_00_12

    PDK-LINUX:processor-sdk-linux-08_06_00

    After I used m2m node to set the data type to TIVX_DF_IMAGE_RGB565 in run_app_multi_cam.sh, the error was reported as follows:

    apps/basic_demos/app_multi_cam/main.c
    
    
    root@j7-evm:/opt/vision_apps# ./run_app_multi_cam.s
    
    initializing sensor GW_AR0233_UYVY 
    Sensor init done!
    [FMT-CONV-MODULE]: Num Channels 1 WxH 1920x1536
    FMT Conversion init done!
    Display init done!
    App Init Done! 
    Graph create done!
    Capture graph done!
    Fmt Conversion graph done!
    Display graph done!
        39.219062 s:  VX_ZONE_ERROR:[tivxSetNodeParameterNumBufByIndex:2319] Invalid parameters
    App Create Graph Done! 
        39.219262 s:  VX_ZONE_ERROR:[tivxAddKernelDisplayM2MValidate:179] 'output' should be an image of type:
     VX_DF_IMAGE_RGB or VX_DF_IMAGE_RGBX or VX_DF_IMAGE_UYVY or VX_DF_IMAGE_NV12 
        39.219273 s:  VX_ZONE_ERROR:[ownGraphNodeKernelValidate:531] node kernel validate failed for kernel c1
        39.219279 s:  VX_ZONE_ERROR:[vxVerifyGraph:1941] Node kernel Validate failed
        39.219285 s:  VX_ZONE_ERROR:[vxVerifyGraph:2109] Graph verify failed
        
    
    patch:
    
    diff --git a/PDK0806_RTOS/vision_apps/apps/basic_demos/app_multi_cam/main.c b/PDK0806_RTOS/vision_apps/apps/basic_demos/app_multi_cam/main.c
    index b4c8b13501..5d11f5bb09 100755
    --- a/PDK0806_RTOS/vision_apps/apps/basic_demos/app_multi_cam/main.c
    +++ b/PDK0806_RTOS/vision_apps/apps/basic_demos/app_multi_cam/main.c
    @@ -76,6 +76,7 @@
     #include "app_ldc_module.h"
     #include "app_img_mosaic_module.h"
     #include "app_display_module.h"
    +#include "app_fmt_cnv_module.h"
     #include "app_test.h"
     
     #define CAPTURE_BUFFER_Q_DEPTH  (4)
    @@ -95,6 +96,7 @@ typedef struct {
         LDCObj        ldcObj1;
         ImgMosaicObj  imgMosaicObj;
         DisplayObj    displayObj;
    +    FmtConvObj    fmtConvObj;
     
         vx_char output_file_path[APP_MAX_FILE_PATH];
     
    @@ -155,7 +157,7 @@ static void app_pipeline_params_defaults(AppObj *obj);
     static void add_graph_parameter_by_node_index(vx_graph graph, vx_node node, vx_uint32 node_parameter_index);
     static vx_int32 calc_grid_size(vx_uint32 ch);
     static void set_img_mosaic_params(ImgMosaicObj *imgMosaicObj, vx_uint32 in_width, vx_uint32 in_height, vx_int32 numCh, ObjArrSplitObj *objArrSplitObj, int32_t enable_split_graph);
    -static void app_draw_graphics(Draw2D_Handle *handle, Draw2D_BufInfo *draw2dBufInfo, uint32_t update_type);
    +// static void app_draw_graphics(Draw2D_Handle *handle, Draw2D_BufInfo *draw2dBufInfo, uint32_t update_type);
     
     static void app_show_usage(vx_int32 argc, vx_char* argv[])
     {
    @@ -654,6 +656,7 @@ vx_int32 app_multi_cam_main(vx_int32 argc, vx_char* argv[])
         /*Config parameter reading*/
         app_parse_cmd_line_args(obj, argc, argv);
     
    +    obj->sensorObj.ch_mask = 0x30;  //(0~7 4号位)
         /* Querry sensor parameters */
         status = app_querry_sensor(&obj->sensorObj);
         if(1 == obj->sensorObj.sensor_out_format)
    @@ -740,7 +743,7 @@ vx_int32 app_multi_cam_main(vx_int32 argc, vx_char* argv[])
     static vx_status app_init(AppObj *obj)
     {
         vx_status status = VX_SUCCESS;
    -    app_grpx_init_prms_t grpx_prms;
    +    // app_grpx_init_prms_t grpx_prms;
     
         if (1U == obj->enable_configure_hwa_freq)
         {
    @@ -791,6 +794,14 @@ static vx_status app_init(AppObj *obj)
             status = app_init_capture(obj->context, &obj->captureObj, &obj->sensorObj, "capture_obj", CAPTURE_BUFFER_Q_DEPTH);
         }
     
    +    if (status == VX_SUCCESS)
    +    {
    +        obj->fmtConvObj.color_format = TIVX_DF_IMAGE_RGB565;
    +        status = app_init_fmt_conv(obj->context,
    +            &obj->fmtConvObj, &obj->sensorObj, "fmt_conv_obj");
    +        APP_PRINTF("FMT Conversion init done!\n");
    +    }
    +
         if( (1 == obj->enable_split_graph) && (status == VX_SUCCESS) )
         {
             obj->objArrSplitObj.input_arr = obj->captureObj.raw_image_arr[0];
    @@ -844,9 +855,9 @@ static vx_status app_init(AppObj *obj)
             APP_PRINTF("Display init done!\n");
         }
     
    -    appGrpxInitParamsInit(&grpx_prms, obj->context);
    -    grpx_prms.draw_callback = app_draw_graphics;
    -    appGrpxInit(&grpx_prms);
    +    // appGrpxInitParamsInit(&grpx_prms, obj->context);
    +    // grpx_prms.draw_callback = app_draw_graphics;
    +    // appGrpxInit(&grpx_prms);
     
         appPerfPointSetName(&obj->total_perf , "TOTAL");
         appPerfPointSetName(&obj->fileio_perf, "FILEIO");
    @@ -861,6 +872,9 @@ static void app_deinit(AppObj *obj)
         app_deinit_capture(&obj->captureObj, CAPTURE_BUFFER_Q_DEPTH);
         APP_PRINTF("Capture deinit done!\n");
     
    +    app_deinit_fmt_conv(&obj->fmtConvObj);
    +    APP_PRINTF("FMT Conversion deinit done!\n");
    +
         if(1 == obj->enable_split_graph)
         {
             app_deinit_obj_arr_split(&obj->objArrSplitObj);
    @@ -910,7 +924,7 @@ static void app_deinit(AppObj *obj)
         app_deinit_display(&obj->displayObj);
         APP_PRINTF("Display deinit done!\n");
     
    -    appGrpxDeInit();
    +    // appGrpxDeInit();
     
         tivxHwaUnLoadKernels(obj->context);
         tivxImagingUnLoadKernels(obj->context);
    @@ -926,6 +940,9 @@ static void app_delete_graph(AppObj *obj)
         app_delete_capture(&obj->captureObj);
         APP_PRINTF("Capture delete done!\n");
     
    +    app_delete_fmt_conv(&obj->fmtConvObj);
    +    APP_PRINTF("Fmt Conversion delete done!\n");
    +
         if(1 == obj->enable_split_graph)
         {
             app_delete_obj_arr_split(&obj->objArrSplitObj);
    @@ -988,6 +1005,13 @@ static vx_status app_create_graph(AppObj *obj)
             APP_PRINTF("Capture graph done!\n");
         }
     
    +    if(status == VX_SUCCESS)
    +    {
    +        status = app_create_graph_fmt_conv(obj->graph,
    +            &obj->fmtConvObj, obj->captureObj.raw_image_arr[0]);
    +        APP_PRINTF("Fmt Conversion graph done!\n");
    +    }
    +
         if( (1 == obj->enable_split_graph) && (status == VX_SUCCESS) )
         {
             status = app_create_graph_obj_arr_split(obj->graph, &obj->objArrSplitObj);
    @@ -1128,7 +1152,8 @@ static vx_status app_create_graph(AppObj *obj)
         }
         else
         {
    -        display_in_image = (vx_image)vxGetObjectArrayItem(obj->captureObj.raw_image_arr[0], 0);
    +        // display_in_image = (vx_image)vxGetObjectArrayItem(obj->captureObj.raw_image_arr[0], 0);
    +        display_in_image = (vx_image)vxGetObjectArrayItem(obj->fmtConvObj.arr, 0);
         }
     
         if(status == VX_SUCCESS)
    @@ -1145,6 +1170,7 @@ static vx_status app_create_graph(AppObj *obj)
             graph_parameters_queue_params_list[graph_parameter_index].graph_parameter_index = graph_parameter_index;
             graph_parameters_queue_params_list[graph_parameter_index].refs_list_size = CAPTURE_BUFFER_Q_DEPTH;
             graph_parameters_queue_params_list[graph_parameter_index].refs_list = (vx_reference*)&obj->captureObj.raw_image_arr[0];
    +        // graph_parameters_queue_params_list[graph_parameter_index].refs_list = (vx_reference*)&obj->fmtConvObj.arr;
             graph_parameter_index++;
     
             if((obj->en_out_img_write == 1) || (obj->test_mode == 1))
    @@ -1215,6 +1241,14 @@ static vx_status app_create_graph(AppObj *obj)
                     APP_PRINTF("Pipeline params setup done!\n");
                 }
             }
    +
    +        if (status == VX_SUCCESS)
    +        {
    +            status = tivxSetNodeParameterNumBufByIndex(
    +                obj->fmtConvObj.node, 1, APP_BUFFER_Q_DEPTH);
    +            status = tivxSetNodeParameterNumBufByIndex(
    +                obj->fmtConvObj.node, 2, APP_BUFFER_Q_DEPTH);
    +        }
         }
     
         return status;
    @@ -1392,6 +1426,7 @@ static vx_status app_run_graph(AppObj *obj)
             APP_PRINTF("appStartImageSensor returned with status: %d\n", status);
         }
     
    +    tivxTaskWaitMsecs(10000);
         if(0 == obj->enable_viss)
         {
             obj->vissObj.en_out_viss_write = 0;
    @@ -1497,7 +1532,7 @@ static void app_default_param_set(AppObj *obj)
     
         obj->sensorObj.enable_ldc = 0;
         obj->sensorObj.num_cameras_enabled = 1;
    -    obj->sensorObj.ch_mask = 0x1;
    +    obj->sensorObj.ch_mask = 0x30;
         obj->sensorObj.usecase_option = APP_SENSOR_FEATURE_CFG_UC0;
     }
     
    @@ -1616,17 +1651,17 @@ static void add_graph_parameter_by_node_index(vx_graph graph, vx_node node, vx_u
         vxReleaseParameter(&parameter);
     }
     
    -static void app_draw_graphics(Draw2D_Handle *handle, Draw2D_BufInfo *draw2dBufInfo, uint32_t update_type)
    -{
    -    appGrpxDrawDefault(handle, draw2dBufInfo, update_type);
    +// static void app_draw_graphics(Draw2D_Handle *handle, Draw2D_BufInfo *draw2dBufInfo, uint32_t update_type)
    +// {
    +//     appGrpxDrawDefault(handle, draw2dBufInfo, update_type);
     
    -    if(update_type == 0)
    -    {
    -        Draw2D_FontPrm sHeading;
    +//     if(update_type == 0)
    +//     {
    +//         Draw2D_FontPrm sHeading;
     
    -        sHeading.fontIdx = 4;
    -        Draw2D_drawString(handle, 700, 5, "Multi Cam Demo", &sHeading);
    -    }
    +//         sHeading.fontIdx = 4;
    +//         Draw2D_drawString(handle, 700, 5, "Multi Cam Demo", &sHeading);
    +//     }
     
    -  return;
    -}
    +//   return;
    +// }

    Did we miss something?

    Looking forward for your reply, thank you

    Regards,

    Barry

  • When I add TIVX_DF_IMAGE_RGB565,graph started working.

    kernels_j7/hwa/host/vx_display_m2m_host.c:

    if( ((vx_df_image)VX_DF_IMAGE_RGB != output_fmt) &&
    ((vx_df_image)VX_DF_IMAGE_RGBX != output_fmt) &&
    ((vx_df_image)TIVX_DF_IMAGE_RGB565 != output_fmt) &&
    ((vx_df_image)VX_DF_IMAGE_UYVY != output_fmt) &&
    ((vx_df_image)VX_DF_IMAGE_YUYV != output_fmt) &&
    ((vx_df_image)VX_DF_IMAGE_NV12 != output_fmt))
     
    But the picture I saw is like this. Is there something wrong with our settings?
    Looking forward to the expert's reply.

    Regards,

    Barry

  • Hi Nikhil,Brijesh,

    The attachment tie2e1.zip upstairs is the output display after we add the conversion node.

    What configuration did we miss? Or is there a problem with the settings somewhere?

    What can we try?

    Looking forward to your reply, thank you

    Regards,

    Barry

  • Hi Barry,

    The display m2m node has 3 parameters. 

    1. Display configuration - Can you share what is the display m2m parameter struct values you have set in the application? i.e. pipe, overlay etc..

    2. Input image and output image - Can you let me know the parameters given to vxCreateImage() for input and output?

    Regards,

    Nikhil

  • Hi Nikhil,

    I will upload our code for adding and calling M2M.

    We are on SDK8.6

    PDK-RTOS:processor-sdk-rtos-j721e-evm-08_06_00_12

    PDK-LINUX:processor-sdk-linux-08_06_00

    Add to:

    modules/src/app_fmt_cnv_module.c

    modules/include/app_fmt_cnv_module.h

    modules/src/app_fmt_cnv_module.c:
    
    #include "app_fmt_cnv_module.h"
    
    vx_status app_init_fmt_conv(
        vx_context context, FmtConvObj *fmtObj, SensorObj *sensorObj, char *objName)
    {
        vx_status status = VX_SUCCESS;
        vx_image out_img;
    
        fmtObj->num_ch = sensorObj->num_cameras_enabled;
    
        printf ("[FMT-CONV-MODULE]: Num Channels %d WxH %dx%d\n", fmtObj->num_ch,
            sensorObj->sensorParams.sensorInfo.raw_params.width,
            sensorObj->sensorParams.sensorInfo.raw_params.height);
    
        out_img  = vxCreateImage(context,
            sensorObj->sensorParams.sensorInfo.raw_params.width,
            sensorObj->sensorParams.sensorInfo.raw_params.height,
            fmtObj->color_format);
        status = vxGetStatus((vx_reference)out_img);
    
        if(status == VX_SUCCESS)
        {
            fmtObj->arr  = vxCreateObjectArray(context,
                (vx_reference)out_img, fmtObj->num_ch);
            vxReleaseImage(&out_img);
    
            status = vxGetStatus((vx_reference)fmtObj->arr);
            if(status != VX_SUCCESS)
            {
                printf("[FMT-CONV-MODULE] Unable to create output array! \n");
            }
            else
            {
                tivx_display_m2m_params_init(&fmtObj->m2m_params);
                fmtObj->m2m_params.instId     = 0u;
                /* Only one pipeline is supported */
                fmtObj->m2m_params.numPipe    = 1u;
                fmtObj->m2m_params.pipeId[0U] = 3u;
                fmtObj->m2m_params.overlayId  = 3u;
    
                fmtObj->m2m_obj = vxCreateUserDataObject(
                    context, "tivx_display_m2m_params_t",
                    sizeof(tivx_display_m2m_params_t), &fmtObj->m2m_params);
    
                status = vxGetStatus((vx_reference)fmtObj->m2m_obj);
                if(status != VX_SUCCESS)
                {
                    printf("[FMT-CONV-MODULE] Unable to create m2m object! \n");
                }
            }
       }
        else
        {
            printf("[FMT-CONV-MODULE] Unable to create output image template! \n");
        }
    
        return status;
    }
    
    void app_deinit_fmt_conv(FmtConvObj *obj)
    {
        vxReleaseUserDataObject(&obj->m2m_obj);
    
        vxReleaseObjectArray(&obj->arr);
    }
    
    void app_delete_fmt_conv(FmtConvObj *obj)
    {
        if(obj->node != NULL)
        {
            vxReleaseNode(&obj->node);
        }
    }
    
    vx_status app_create_graph_fmt_conv(vx_graph graph, FmtConvObj *obj, vx_object_array input_img_arr)
    {
        vx_status status = VX_SUCCESS;
        vx_image input, output;
        vx_bool replicate[] = {vx_false_e, vx_true_e, vx_true_e};
    
        input = (vx_image)vxGetObjectArrayItem((vx_object_array)input_img_arr, 0);
        if(obj->arr != NULL)
        {
            output = (vx_image)vxGetObjectArrayItem((vx_object_array)obj->arr, 0);
        }
    
        obj->node = tivxDisplayM2MNode(graph, obj->m2m_obj, input, output);
        status = vxGetStatus((vx_reference)obj->node);
    
        if(status == VX_SUCCESS)
        {
            vxSetNodeTarget(obj->node, VX_TARGET_STRING, TIVX_TARGET_DISPLAY_M2M1);
            vxSetReferenceName((vx_reference)obj->node, "FmtConvNode");
    
            vxReplicateNode(graph, obj->node, replicate, 3);
        }
        else
        {
            printf("[FMT-CONV-MODULE] Unable to create scaler node! \n");
        }
    
        vxReleaseImage(&input);
        vxReleaseImage(&output);
    
        return status;
    }
    
    modules/include/app_fmt_cnv_module.h
    
    #ifndef _APP_FMT_CONV_MODULE
    #define _APP_FMT_CONV_MODULE
    
    #include "app_modules.h"
    #include "app_sensor_module.h"
    
    typedef struct
    {
        vx_node                         node;
        vx_object_array                 arr;
        tivx_display_m2m_params_t       m2m_params;
        vx_user_data_object             m2m_obj;
        vx_char                         objName[APP_MODULES_MAX_OBJ_NAME_SIZE];
        vx_int32                        num_ch;
        vx_int32                        color_format;
    } FmtConvObj;
    
    vx_status app_init_fmt_conv(vx_context context, FmtConvObj *fmtObj, SensorObj *sensorObj, char *objName);
    void app_deinit_fmt_conv(FmtConvObj *obj);
    void app_delete_fmt_conv(FmtConvObj *obj);
    vx_status app_create_graph_fmt_conv(vx_graph graph, FmtConvObj *scalerObj, vx_object_array input_img_arr);
    #endif
    
    

    In addition,

    we added M2M in

    apps/basic_demos/app_multi_cam/main.c

    
    --- a/PDK0806_RTOS/vision_apps/apps/basic_demos/app_multi_cam/main.c
    +++ b/PDK0806_RTOS/vision_apps/apps/basic_demos/app_multi_cam/main.c
    @@ -76,6 +76,7 @@
     #include "app_ldc_module.h"
     #include "app_img_mosaic_module.h"
     #include "app_display_module.h"
    +#include "app_fmt_cnv_module.h"
     #include "app_test.h"
     
     #define CAPTURE_BUFFER_Q_DEPTH  (4)
    @@ -95,6 +96,7 @@ typedef struct {
         LDCObj        ldcObj1;
         ImgMosaicObj  imgMosaicObj;
         DisplayObj    displayObj;
    +    FmtConvObj    fmtConvObj;
     
         vx_char output_file_path[APP_MAX_FILE_PATH];
     
    @@ -155,7 +157,7 @@ static void app_pipeline_params_defaults(AppObj *obj);
     static void add_graph_parameter_by_node_index(vx_graph graph, vx_node node, vx_uint32 node_parameter_index);
     static vx_int32 calc_grid_size(vx_uint32 ch);
     static void set_img_mosaic_params(ImgMosaicObj *imgMosaicObj, vx_uint32 in_width, vx_uint32 in_height, vx_int32 numCh, ObjArrSplitObj *objArrSplitObj, int32_t enable_split_graph);
    -static void app_draw_graphics(Draw2D_Handle *handle, Draw2D_BufInfo *draw2dBufInfo, uint32_t update_type);
    +// static void app_draw_graphics(Draw2D_Handle *handle, Draw2D_BufInfo *draw2dBufInfo, uint32_t update_type);
     
     static void app_show_usage(vx_int32 argc, vx_char* argv[])
     {
    @@ -654,6 +656,7 @@ vx_int32 app_multi_cam_main(vx_int32 argc, vx_char* argv[])
         /*Config parameter reading*/
         app_parse_cmd_line_args(obj, argc, argv);
     
    +    obj->sensorObj.ch_mask = 0x30;  //
         /* Querry sensor parameters */
         status = app_querry_sensor(&obj->sensorObj);
         if(1 == obj->sensorObj.sensor_out_format)
    @@ -740,7 +743,7 @@ vx_int32 app_multi_cam_main(vx_int32 argc, vx_char* argv[])
     static vx_status app_init(AppObj *obj)
     {
         vx_status status = VX_SUCCESS;
     
         if (1U == obj->enable_configure_hwa_freq)
         {
    @@ -791,6 +794,14 @@ static vx_status app_init(AppObj *obj)
             status = app_init_capture(obj->context, &obj->captureObj, &obj->sensorObj, "capture_obj", CAPTURE_BUFFER_Q_DEPTH);
         }
     
    +    if (status == VX_SUCCESS)
    +    {
    +        obj->fmtConvObj.color_format = TIVX_DF_IMAGE_RGB565;
    +        status = app_init_fmt_conv(obj->context,
    +            &obj->fmtConvObj, &obj->sensorObj, "fmt_conv_obj");
    +        APP_PRINTF("FMT Conversion init done!\n");
    +    }
    +
         if( (1 == obj->enable_split_graph) && (status == VX_SUCCESS) )
         {
             obj->objArrSplitObj.input_arr = obj->captureObj.raw_image_arr[0];
    @@ -844,9 +855,9 @@ static vx_status app_init(AppObj *obj)
             APP_PRINTF("Display init done!\n");
         }
    
     
         appPerfPointSetName(&obj->total_perf , "TOTAL");
         appPerfPointSetName(&obj->fileio_perf, "FILEIO");
    @@ -861,6 +872,9 @@ static void app_deinit(AppObj *obj)
         app_deinit_capture(&obj->captureObj, CAPTURE_BUFFER_Q_DEPTH);
         APP_PRINTF("Capture deinit done!\n");
     
    +    app_deinit_fmt_conv(&obj->fmtConvObj);
    +    APP_PRINTF("FMT Conversion deinit done!\n");
    +
         if(1 == obj->enable_split_graph)
         {
             app_deinit_obj_arr_split(&obj->objArrSplitObj);
    @@ -910,7 +924,7 @@ static void app_deinit(AppObj *obj)
         app_deinit_display(&obj->displayObj);
         APP_PRINTF("Display deinit done!\n");
     
         tivxHwaUnLoadKernels(obj->context);
         tivxImagingUnLoadKernels(obj->context);
    @@ -926,6 +940,9 @@ static void app_delete_graph(AppObj *obj)
         app_delete_capture(&obj->captureObj);
         APP_PRINTF("Capture delete done!\n");
     
    +    app_delete_fmt_conv(&obj->fmtConvObj);
    +    APP_PRINTF("Fmt Conversion delete done!\n");
    +
         if(1 == obj->enable_split_graph)
         {
             app_delete_obj_arr_split(&obj->objArrSplitObj);
    @@ -988,6 +1005,13 @@ static vx_status app_create_graph(AppObj *obj)
             APP_PRINTF("Capture graph done!\n");
         }
     
    +    if(status == VX_SUCCESS)
    +    {
    +        status = app_create_graph_fmt_conv(obj->graph,
    +            &obj->fmtConvObj, obj->captureObj.raw_image_arr[0]);
    +        APP_PRINTF("Fmt Conversion graph done!\n");
    +    }
    +
         if( (1 == obj->enable_split_graph) && (status == VX_SUCCESS) )
         {
             status = app_create_graph_obj_arr_split(obj->graph, &obj->objArrSplitObj);
    @@ -1128,7 +1152,8 @@ static vx_status app_create_graph(AppObj *obj)
         }
         else
         {
    -        display_in_image = (vx_image)vxGetObjectArrayItem(obj->captureObj.raw_image_arr[0], 0);
    +        // display_in_image = (vx_image)vxGetObjectArrayItem(obj->captureObj.raw_image_arr[0], 0);
    +        display_in_image = (vx_image)vxGetObjectArrayItem(obj->fmtConvObj.arr, 0);
         }
     
         if(status == VX_SUCCESS)
    @@ -1145,6 +1170,7 @@ static vx_status app_create_graph(AppObj *obj)
             graph_parameters_queue_params_list[graph_parameter_index].graph_parameter_index = graph_parameter_index;
             graph_parameters_queue_params_list[graph_parameter_index].refs_list_size = CAPTURE_BUFFER_Q_DEPTH;
             graph_parameters_queue_params_list[graph_parameter_index].refs_list = (vx_reference*)&obj->captureObj.raw_image_arr[0];
    +        // graph_parameters_queue_params_list[graph_parameter_index].refs_list = (vx_reference*)&obj->fmtConvObj.arr;
             graph_parameter_index++;
     
             if((obj->en_out_img_write == 1) || (obj->test_mode == 1))
    @@ -1215,6 +1241,14 @@ static vx_status app_create_graph(AppObj *obj)
                     APP_PRINTF("Pipeline params setup done!\n");
                 }
             }
    +
    +        if (status == VX_SUCCESS)
    +        {
    +            // status = tivxSetNodeParameterNumBufByIndex(
    +            //     obj->fmtConvObj.node, 1, APP_BUFFER_Q_DEPTH);
    +            status = tivxSetNodeParameterNumBufByIndex(
    +                obj->fmtConvObj.node, 2, APP_BUFFER_Q_DEPTH);
    +        }
         }
     
         return status;
    @@ -1392,6 +1426,7 @@ static vx_status app_run_graph(AppObj *obj)
             APP_PRINTF("appStartImageSensor returned with status: %d\n", status);
         }
     
    +    tivxTaskWaitMsecs(10000);
         if(0 == obj->enable_viss)
         {
             obj->vissObj.en_out_viss_write = 0;
    @@ -1408,8 +1443,11 @@ static vx_status app_run_graph(AppObj *obj)
     
         for(frame_id = 0; frame_id < obj->num_frames_to_run; frame_id++)
         {
    +        printf("write_file:%d,en_out_capture_write:%d,line:%d \n", obj->write_file,obj->captureObj.en_out_capture_write,__LINE__);
    +        
             if(obj->write_file == 1)
             {
    +            //obj->captureObj.en_out_capture_write = 1;
                 if((obj->captureObj.en_out_capture_write == 1) && (status == VX_SUCCESS))
                 {
                     status = app_send_cmd_capture_write_node(&obj->captureObj, frame_id, obj->num_frames_to_write, obj->num_frames_to_skip);
    @@ -1497,7 +1535,7 @@ static void app_default_param_set(AppObj *obj)
     
         obj->sensorObj.enable_ldc = 0;
         obj->sensorObj.num_cameras_enabled = 1;
    -    obj->sensorObj.ch_mask = 0x1;
    +    obj->sensorObj.ch_mask = 0x30;
         obj->sensorObj.usecase_option = APP_SENSOR_FEATURE_CFG_UC0;
     }
     
    @@ -1616,17 +1654,17 @@ static void add_graph_parameter_by_node_index(vx_graph graph, vx_node node, vx_u
         vxReleaseParameter(&parameter);
     }

    Can you tell me what I missed? Looking forward to the expert's reply.

    Regards,

    Barry

  • Hi expert,

    Can you update it for us?

    Regards,

    Barry

  • Hi expert,

    We need to convert the captured YUV422 to RGB565, and then send the RGB565 to the display node for display.

    1.If TDA4VM M2M node does not support converting YUV422 to RGB565 ,

    Please respond to us with a clear conclusion, thank you

    2.If the captured YUV422 can be converted to RGB565 before displaying,

    how should it be changed?

    Please reply for us, thank you

    Regards,

    Barry

  • Hi Barry,

    Sorry for the delay in response.

    The implementation looks fine to me.

    Could you read the register 0x04AF0020 and let me know the value? This should tell if the format is set correctly. The value expected to be set for RGB565 is 0x3 in the register bit [1:6] and the enable should be 1 [bit 0]

    Let us continue the discussion in this thread and close the below thread to avoid duplication.

    (+) TDA4VM:yuv422 convert node - Processors forum - Processors - TI E2E support forums

    Regards,

    Nikhil

  • Hi Nikhil,

    Thank you very much for your reply.

    1./run_app_multi_cam.sh before execution:
    root@j7-evm:/opt/vision_apps# devmem2 0x04AF0020
    /dev/mem opened.
    Memory mapped at address 0xffff94bcf000.
    Read at address 0x04AF0020 (0xffff94bcf020): 0x00000000
    root@j7-evm:/opt/vision_apps#
    root@j7-evm:/opt/vision_apps# ./run_app_multi_cam.sh

    root@j7-evm:/opt/vision_apps#

    2./run_app_multi_cam.sh is executing:

    0x04AF0020:0x0880006
    0x04AF0020:0x0880006
    0x04AF0020:0x0880006

    3../run_app_multi_cam.sh 'X' After exiting:

    Memory mapped at address 0xffff990ee000.
    /dev/mem opened.
    Memory mapped at address 0xffff8d89d000.
    Read at address 0x04AF0020 (0xffff8d89d020): 0x00080006
    /dev/mem opened.
    Memory mapped at address 0xffff9048a000.
    Read at address 0x04AF0020 (0xffff9048a020): 0x00080006
    /dev/mem opened.
    Memory mapped at address 0xffff8d7dc000.
    Read at address 0x04AF0020 (0xffff8d7dc020): 0x00080006


    Looking forward to your reply.

    Regards,

    Barry

  • Hi Nikhil,
    The data_type input output in the app_init_fmt_conv function is as follows:

    log:
    capture_node_config Done status:0,line:265
    [FMT-CONV-MODULE]: Num Channels 1 WxH 1920x1536
    sensorParams.sensorInfo.raw_params.format[0].pixel_container:1498831189,fmtObj->color_format:892745042
    FMT Conversion init done!
    dispId:0,display_width:1280,display_height:800,line:109
    Display init done!
    App Init Done!
    Graph create done!
    Capture graph done!
    Fmt Conversion graph done!
    Display graph done!
    App Create Graph Done!

    Please let the experts reply for us, thank you.

    Regards,

    Barry

  • Hi Barry, 

    The configuration looks fine, I would have to try and reproduce this at my end to check what the issue is. 

    I will take the single cam example to begin with and do capture (UYVY) -> display m2m (RGB565) -> display and let you know the result.

    Meanwhile, the image that you shared, was that from the output of display (i.e. seen on the display) or the output of dss_m2m?

    Regards,

    Nikhil

  • Hi Nikhil,

    Your reply is important to us.

    I found that when I run in ./run_app_multi_cam.sh, pressing 'S' on the console has no effect and cannot save the image.

    Therefore, the picture ZIP I uploaded came from the screen display, and I recorded a short video.

    rgb565.zip

    It seemed that there was no problem in real time, but the display was still abnormal. (Both pictures and videos come from the display, and are both

    obj->fmtConvObj.color_format = TIVX_DF_IMAGE_RGB565 Phenomenon after adding)

    Looking forward to your reply.

    Regards,

    Barry

  • Hi Barry,

    Can you please save 150 registers from offset 0x04AF0000? Lets see if it is configured correctly.

    Regards,

    Brijesh

  • Hi Brijesh,

    Our development board currently does not have network and CCS interfaces.

    What method can we use to dump these registers while ./run_app_multi_cam.sh is running?

    Regards,

    Barry

  • You can use k3conf utility or memdump utility from Linux.

    Regards,

    Brijesh

  • Hi Brijesh,

    thank you for your reply

    But after run_app_multi_cam.sh is run, the serial port cannot be input. In this case, is there a patch we can refer to?

    Regards,

    Barry

  • Well, you can run in background mode or if you have ethernet connected, you can do telnet to the board and then can get the register values. 

    Regards,

    Brijesh

  • Hi Brijesh,

    thank you for your reply

    We tried to run run_app_multi_cam.sh in background mode,

    but when we exited after entering a, it didn’t work.

    root@j7-evm:/opt/vision_apps#

    root@j7-evm:/opt/vision_apps# ./run_app_multi_cam.sh & a: GW_AR0233_UYVY

    Select a sensor above or press '0' to autodetect the sensor

    a

    -sh: a: command not found

    [2]+ Stopped(SIGTTIN) ./run_app_multi_cam.sh

    root@j7-evm:/opt/vision_apps#

    Below are the registers we dumped when running run_app_multi_cam.sh.

    
    [MCU2_0]     65.818512 s:  0x04AF0020:0x00080006,line:308 
    [MCU2_0]     65.818560 s:  0x04AF0024:0x3c000000,line:309 
    [MCU2_0]     65.818604 s:  0x04AF0028:0xba763000,line:310 
    [MCU2_0]     65.818647 s:  0x04AF002c:0x00000000,line:311 
    [MCU2_0]     65.818689 s:  0x04AF0030:0x00000000,line:312 
    [MCU2_0]     65.818732 s:  0x04AF0034:0x00000000,line:313 
    [MCU2_0]     65.818774 s:  0x04AF0038:0x00001000,line:314 
    [MCU2_0]     65.818817 s:  0x04AF003c:0x00160008,line:315 
    [MCU2_0]     65.818858 s:  0x04AF0040:0x00000000,line:316 
    [MCU2_0]     65.818901 s:  0x04AF0044:0x00000000,line:317 
    [MCU2_0]     65.818944 s:  0x04AF0048:0x00000000,line:318 
    [MCU2_0]     65.818986 s:  0x04AF004c:0x00000000,line:319 
    [MCU2_0]     65.819028 s:  0x04AF0050:0x00000000,line:320 
    [MCU2_0]     65.819070 s:  0x04AF0054:0x00000000,line:321 
    [MCU2_0]     65.819112 s:  0x04AF0058:0x00000000,line:322 
    [MCU2_0]     65.819154 s:  0x04AF005c:0x00200000,line:323 
    [MCU2_0]     65.819196 s:  0x04AF0060:0x00200000,line:324 
    [MCU2_0]     65.819240 s:  0x04AF0064:0x00200000,line:325 
    [MCU2_0]     65.819283 s:  0x04AF0068:0x00200000,line:326 
    [MCU2_0]     65.819336 s:  0x04AF006c:0x00000000,line:327 
    [MCU2_0]     65.819380 s:  0x04AF0070:0x00000000,line:328 
    [MCU2_0]     65.819424 s:  0x04AF0074:0x00000000,line:329 
    [MCU2_0]     65.819466 s:  0x04AF0078:0x00000000,line:330 
    [MCU2_0]     65.819508 s:  0x04AF007c:0x00000000,line:331 
    [MCU2_0]     65.819550 s:  0x04AF0080:0x00000000,line:332 
    [MCU2_0]     65.819592 s:  0x04AF0084:0x00000000,line:333 
    [MCU2_0]     65.819634 s:  0x04AF0088:0x00000000,line:334 
    [MCU2_0]     65.819675 s:  0x04AF008c:0x00000000,line:335 
    [MCU2_0]     65.819719 s:  0x04AF0090:0x00000000,line:336 
    [MCU2_0]     65.819762 s:  0x04AF0094:0x00000000,line:337 
    [MCU2_0]     65.819804 s:  0x04AF0098:0x00000000,line:338 
    [MCU2_0]     65.819846 s:  0x04AF009c:0x00000000,line:339 
    [MCU2_0]     65.819889 s:  0x04AF00A0:0x00000000,line:340 
    [MCU2_0]     65.819931 s:  0x04AF00A4:0x00000000,line:341 
    [MCU2_0]     65.819974 s:  0x04AF00A8:0x00000000,line:342 
    [MCU2_0]     65.820016 s:  0x04AF00AC:0x00000000,line:343 
    [MCU2_0]     65.820058 s:  0x04AF00B0:0x00000000,line:344 
    [MCU2_0]     65.820101 s:  0x04AF00B4:0x00000000,line:345 
    [MCU2_0]     65.820143 s:  0x04AF00B8:0x00000000,line:346 
    [MCU2_0]     65.820187 s:  0x04AF00BC:0x00000000,line:347 
    [MCU2_0]     65.820229 s:  0x04AF00C0:0x00000000,line:348 
    [MCU2_0]     65.820279 s:  0x04AF00C4:0x00000000,line:349 
    [MCU2_0]     65.820325 s:  0x04AF00C8:0x00000000,line:350 
    [MCU2_0]     65.820368 s:  0x04AF00CC:0x00000000,line:351 
    [MCU2_0]     65.820411 s:  0x04AF00D0:0x00000000,line:352 
    [MCU2_0]     65.820453 s:  0x04AF0020:0x00000000,line:353 
    [MCU2_0]     65.820495 s:  0x04AF00D8:0x00000000,line:354 
    [MCU2_0]     65.820538 s:  0x04AF00DC:0x00000000,line:355 
    [MCU2_0]     65.820580 s:  0x04AF00E0:0x00000000,line:356 
    [MCU2_0]     65.820625 s:  0x04AF00E4:0x00000000,line:357 
    [MCU2_0]     65.820667 s:  0x04AF00E8:0x00000000,line:358 
    [MCU2_0]     65.820712 s:  0x04AF00EC:0x00000000,line:359 
    [MCU2_0]     65.820753 s:  0x04AF00F0:0x00000000,line:360 
    [MCU2_0]     65.820795 s:  0x04AF00F4:0x00000000,line:361 
    [MCU2_0]     65.820838 s:  0x04AF00F8:0x00000000,line:362 
    [MCU2_0]     65.820880 s:  0x04AF00FC:0x00000000,line:363 
    [MCU2_0]     65.820923 s:  0x04AF0100:0x00000000,line:364 
    [MCU2_0]     65.820965 s:  0x04AF0104:0x00000000,line:365 
    [MCU2_0]     65.821009 s:  0x04AF0108:0x00000000,line:366 
    [MCU2_0]     65.821051 s:  0x04AF010C:0x00000000,line:367 
    [MCU2_0]     65.821093 s:  0x04AF0110:0x00000000,line:368 
    [MCU2_0]     65.821135 s:  0x04AF0114:0x00000
    000,line:369 
        65.830178 s: ISS: Starting sensor ok ######  [GW_AR0233_UYVY] ... !!!
    
    
    
     =========================
     Demo : Camera Demo
     =========================
    
     s: Save CSIx, VISS and LDC outputs
    
     p: Print performance statistics
    
     x: Exit
    
     Enter Choice:     66.155290 s: ISS: Starting status:0 ######  [GW_AR0233_UYVY] ... !!!
    [MCU2_0]     65.821177 s:  0x04AF0118:0x00000000,line:370 
    [MCU2_0]     65.821219 s:  0x04AF011C:0x00000000,line:371 
    [MCU2_0]     65.821266 s:  0x04AF0120:0x00000000,line:372 
    [MCU2_0]     65.821309 s:  0x04AF0124:0x00000000,line:373 
    [MCU2_0]     65.821351 s:  0x04AF0128:0x00000000,line:374 
    [MCU2_0]     65.821394 s:  0x04AF012C:0x00000000,line:375 
    [MCU2_0]     65.821435 s:  0x04AF0130:0x00000000,line:376 
    [MCU2_0]     65.821479 s:  0x04AF0134:0x00000000,line:377 
    [MCU2_0]     65.821521 s:  0x04AF0138:0x00000000,line:378 
    [MCU2_0]     65.821564 s:  0x04AF013C:0x00000000,line:379 
    [MCU2_0]     65.821607 s:  0x04AF0140:0x00000000,line:380 
    [MCU2_0]     65.821651 s:  0x04AF0144:0x00000000,line:381 
    [MCU2_0]     65.821694 s:  0x04AF0148:0x00000000,line:382 
    [MCU2_0]     65.821737 s:  0x04AF014C:0x00000000,line:383 
    [MCU2_0]     65.821779 s:  0x04AF0150:0x00000000,line:384 
    [MCU2_0]     65.821823 s:  0x04AF0154:0x00000000,line:385 
    [MCU2_0]     65.821865 s:  0x04AF0158:0x00000000,line:386 
    [MCU2_0]     65.821908 s:  0x04AF0160:0x00000000,line:387 
    [MCU2_0]     65.821950 s:  0x04AF0164:0x00000000,line:388 
    [MCU2_0]     65.821992 s:  0x04AF0168:0x00000000,line:389 
    [MCU2_0]     65.822036 s:  0x04AF016C:0x00000000,line:390 
    [MCU2_0]     65.822078 s:  0x04AF0170:0x00000000,line:391 
    [MCU2_0]     65.822120 s:  0x04AF0174:0x00000000,line:392 
    [MCU2_0]     65.822163 s:  0x04AF0178:0x00000000,line:393 
    [MCU2_0]     65.822209 s:  0x04AF017C:0x00000000,line:394 
    [MCU2_0]     65.822252 s:  0x04AF0180:0x00000000,line:395 
    [MCU2_0]     65.822296 s:  0x04AF0184:0x00000000,line:396 
    [MCU2_0]     65.822339 s:  0x04AF0188:0x00000000,line:397 
    [MCU2_0]     65.822381 s:  0x04AF018C:0x00000000,line:398 
    [MCU2_0]     65.822424 s:  0x04AF0190:0x00000000,line:399 
    [MCU2_0]     65.822466 s:  0x04AF0194:0x00000000,line:400 
    [MCU2_0]     65.822509 s:  0x04AF0020:0x00000000,line:401 
    [MCU2_0]     65.822551 s:  0x04AF019C:0x00000000,line:402 
    [MCU2_0]     65.822592 s:  0x04AF01A0:0x00000000,line:403 
    [MCU2_0]     65.822635 s:  0x04AF01A4:0x00000000,line:404 
    [MCU2_0]     65.822678 s:  0x04AF01A8:0x00000000,line:405 
    [MCU2_0]     65.822720 s:  0x04AF01AC:0x00000000,line:406 
    [MCU2_0]     65.822763 s:  0x04AF01B0:0x00000000,line:407 
    [MCU2_0]     65.822806 s:  0x04AF01B4:0x00000000,line:408 
    [MCU2_0]     65.822848 s:  0x04AF01B8:0x00000000,line:409 
    [MCU2_0]     65.822890 s:  0x04AF01BC:0x00000000,line:410 
    [MCU2_0]     65.822933 s:  0x04AF01C0:0x00000000,line:411 
    [MCU2_0]     65.822975 s:  0x04AF01C4:0x00000000,line:412 
    [MCU2_0]     65.823017 s:  0x04AF01C8:0x00000000,line:413 
    [MCU2_0]     65.823060 s:  0x04AF01CC:0x00000000,line:414 
    [MCU2_0]     65.823102 s:  0x04AF01D0:0x00000000,line:415 
    [MCU2_0]     65.823149 s:  0x04AF01D4:0x00000000,line:416 
    [MCU2_0]     65.823193 s:  0x04AF01D8:0x00000000,line:417 
    [MCU2_0]     65.823236 s:  0x04AF01DC:0x00000000,line:418 
    [MCU2_0]     65.823279 s:  0x04AF01E0:0x00000000,line:419 
    [MCU2_0]     65.823322 s:  0x04AF01E4:0x00000000,line:420 
    [MCU2_0]     65.823364 s:  0x04AF01E8:0x00000000,line:421 
    [MCU2_0]     65.823407 s:  0x04AF01EC:0x00000000,line:422 
    [MCU2_0]     65.823450 s:  0x04AF01F0:0x00000000,line:423 
    [MCU2_0]     65.823492 s:  0x04AF01F4:0x00000000,line:424 
    [MCU2_0]     65.823535 s:  0x04AF01F8:0x00000000,line:425 
    [MCU2_0]     65.823579 s:  0x04AF0204:0x00000000,line:426 
    [MCU2_0]     65.823623 s:  0x04AF0208:0x05ff077f,line:427 
    [MCU2_0]     65.823667 s:  0x04AF0210:0x05ff077f,line:428 
    [MCU2_0]     65.823710 s:  0x04AF0214:0x00000000,line:429 
    [MCU2_0]     65.823753 s:  0x04AF021C:0x00000000,line:430 
    [MCU2_0]     65.823795 s:  0x04AF0224:0x00000001,line:431 
    [MCU2_0]     65.823837 s:  0x04AF0228:0x00000000,line:432 
    [MCU2_0]     65.823880 s:  0x04AF022C:0x00000000,line:433 
    [MCU2_0]     65.823922 s:  0x04AF0230:0x00000000,line:434 
    [MCU2_0]     65.823965 s:  0x04AF0234:0x00000000,line:435 
    [MCU2_0]     65.824007 s:  0x04AF0238:0x00000000,line:436 
    [MCU2_0]     65.824050 s:  0x04AF0248:0x00000000,line:437 
    [MCU2_0]     65.824152 s:  0x04AF0020:0x00080006,line:308 
    [MCU2_0]     65.824195 s:  0x04AF0024:0x3c000000,line:309 
    [MCU2_0]     65.824237 s:  0x04AF0028:0xba763000,line:310 
    [MCU2_0]     65.824279 s:  0x04AF002c:0x00000000,line:311 
    [MCU2_0]     65.824321 s:  0x04AF0030:0x00000000,line:312 
    [MCU2_0]     65.824363 s:  0x04AF0034:0x00000000,line:313 
    [MCU2_0]     65.824405 s:  0x04AF0038:0x00001000,line:314 
    [MCU2_0]     65.824447 s:  0x04AF003c:0x00160008,line:315 
    [MCU2_0]     65.824489 s:  0x04AF0040:0x00000000,line:316 
    [MCU2_0]     65.824530 s:  0x04AF0044:0x00000000,line:317 
    [MCU2_0]     65.824572 s:  0x04AF0048:0x00000000,line:318 
    [MCU2_0]     65.824614 s:  0x04AF004c:0x00000000,line:319 
    [MCU2_0]     65.824656 s:  0x04AF0050:0x00000000,line:320 
    [MCU2_0]     65.824698 s:  0x04AF0054:0x00000000,line:321 
    [MCU2_0]     65.824740 s:  0x04AF0058:0x00000000,line:322 
    [MCU2_0]     65.824782 s:  0x04AF005c:0x00200000,line:323 
    [MCU2_0]     65.824824 s:  0x04AF0060:0x00200000,line:324 
    [MCU2_0]     65.824866 s:  0x04AF0064:0x00200000,line:325 
    [MCU2_0]     65.824908 s:  0x04AF0068:0x00200000,line:326 
    [MCU2_0]     65.824950 s:  0x04AF006c:0x00000000,line:327 
    [MCU2_0]     65.824992 s:  0x04AF0070:0x00000000,line:328 
    [MCU2_0]     65.825034 s:  0x04AF0074:0x00000000,line:329 
    [MCU2_0]     65.825081 s:  0x04AF0078:0x00000000,line:330 
    [MCU2_0]     65.825124 s:  0x04AF007c:0x00000000,line:331 
    [MCU2_0]     65.825166 s:  0x04AF0080:0x00000000,line:332 
    [MCU2_0]     65.825208 s:  0x04AF0084:0x00000000,line:333 
    [MCU2_0]     65.825250 s:  0x04AF0088:0x00000000,line:334 
    [MCU2_0]     65.825292 s:  0x04AF008c:0x00000000,line:335 
    [MCU2_0]     65.825334 s:  0x04AF0090:0x00000000,line:336 
    [MCU2_0]     65.825376 s:  0x04AF0094:0x00000000,line:337 
    [MCU2_0]     65.825418 s:  0x04AF0098:0x00000000,line:338 
    [MCU2_0]     65.825460 s:  0x04AF009c:0x00000000,line:339 
    [MCU2_0]     65.825502 s:  0x04AF00A0:0x00000000,line:340 
    [MCU2_0]     65.825544 s:  0x04AF00A4:0x00000000,line:341 
    [MCU2_0]     65.825586 s:  0x04AF00A8:0x00000000,line:342 
    [MCU2_0]     65.825628 s:  0x04AF00AC:0x00000000,line:343 
    [MCU2_0]     65.825671 s:  0x04AF00B0:0x00000000,line:344 
    [MCU2_0]     65.825712 s:  0x04AF00B4:0x00000000,line:345 
    [MCU2_0]     65.825754 s:  0x04AF00B8:0x00000000,line:346 
    [MCU2_0]     65.825796 s:  0x04AF00BC:0x00000000,line:347 
    [MCU2_0]     65.825838 s:  0x04AF00C0:0x00000000,line:348 
    [MCU2_0]     65.825881 s:  0x04AF00C4:0x00000000,line:349 
    [MCU2_0]     65.825924 s:  0x04AF00C8:0x00000000,line:350 
    [MCU2_0]     65.825966 s:  0x04AF00CC:0x00000000,line:351 
    [MCU2_0]     65.826008 s:  0x04AF00D0:0x00000000,line:352 
    [MCU2_0]     65.826053 s:  0x04AF0020:0x00000000,line:353 
    [MCU2_0]     65.826097 s:  0x04AF00D8:0x00000000,line:354 
    [MCU2_0]     65.826140 s:  0x04AF00DC:0x00000000,line:355 
    [MCU2_0]     65.826182 s:  0x04AF00E0:0x00000000,line:356 
    [MCU2_0]     65.826224 s:  0x04AF00E4:0x00000000,line:357 
    [MCU2_0]     65.826265 s:  0x04AF00E8:0x00000000,line:358 
    [MCU2_0]     65.826308 s:  0x04AF00EC:0x00000000,line:359 
    [MCU2_0]     65.826350 s:  0x04AF00F0:0x00000000,line:360 
    [MCU2_0]     65.826392 s:  0x04AF00F4:0x00000000,line:361 
    [MCU2_0]     65.826434 s:  0x04AF00F8:0x00000000,line:362 
    [MCU2_0]     65.826476 s:  0x04AF00FC:0x00000000,line:363 
    [MCU2_0]     65.826518 s:  0x04AF0100:0x00000000,line:364 
    [MCU2_0]     65.826559 s:  0x04AF0104:0x00000000,line:365 
    [MCU2_0]     65.826602 s:  0x04AF0108:0x00000000,line:366 
    [MCU2_0]     65.826644 s:  0x04AF010C:0x00000000,line:367 
    [MCU2_0]     65.826686 s:  0x04AF0110:0x00000000,line:368 
    [MCU2_0]     65.826728 s:  0x04AF0114:0x00000000,line:369 
    [MCU2_0]     65.826770 s:  0x04AF0118:0x00000000,line:370 
    [MCU2_0]     65.826812 s:  0x04AF011C:0x00000000,line:371 
    [MCU2_0]     65.826854 s:  0x04AF0120:0x00000000,line:372 
    [MCU2_0]     65.826895 s:  0x04AF0124:0x00000000,line:373 
    [MCU2_0]     65.826937 s:  0x04AF0128:0x00000000,line:374 
    [MCU2_0]     65.826979 s:  0x04AF012C:0x00000000,line:375 
    [MCU2_0]     65.827027 s:  0x04AF0130:0x00000000,line:376 
    [MCU2_0]     65.827068 s:  0x04AF0134:0x00000000,line:377 
    [MCU2_0]     65.827110 s:  0x04AF0138:0x00000000,line:378 
    [MCU2_0]     65.827152 s:  0x04AF013C:0x00000000,line:379 
    [MCU2_0]     65.827194 s:  0x04AF0140:0x00000000,line:380 
    [MCU2_0]     65.827236 s:  0x04AF0144:0x00000000,line:381 
    [MCU2_0]     65.827279 s:  0x04AF0148:0x00000000,line:382 
    [MCU2_0]     65.827321 s:  0x04AF014C:0x00000000,line:383 
    [MCU2_0]     65.827363 s:  0x04AF0150:0x00000000,line:384 
    [MCU2_0]     65.827407 s:  0x04AF0154:0x00000000,line:385 
    [MCU2_0]     65.827449 s:  0x04AF0158:0x00000000,line:386 
    [MCU2_0]     65.827493 s:  0x04AF0160:0x00000000,line:387 
    [MCU2_0]     65.827535 s:  0x04AF0164:0x00000000,line:388 
    [MCU2_0]     65.827577 s:  0x04AF0168:0x00000000,line:389 
    [MCU2_0]     65.827619 s:  0x04AF016C:0x00000000,line:390 
    [MCU2_0]     65.827661 s:  0x04AF0170:0x00000000,line:391 
    [MCU2_0]     65.827703 s:  0x04AF0174:0x00000000,line:392 
    [MCU2_0]     65.827744 s:  0x04AF0178:0x00000000,line:393 
    [MCU2_0]     65.827786 s:  0x04AF017C:0x00000000,line:394 
    [MCU2_0]     65.827828 s:  0x04AF0180:0x00000000,line:395 
    [MCU2_0]     65.827870 s:  0x04AF0184:0x00000000,line:396 
    [MCU2_0]     65.827912 s:  0x04AF0188:0x00000000,line:397 
    [MCU2_0]     65.827958 s:  0x04AF018C:0x00000000,line:398 
    [MCU2_0]     65.828002 s:  0x04AF0190:0x00000000,line:399 
    [MCU2_0]     65.828045 s:  0x04AF0194:0x00000000,line:400 
    [MCU2_0]     65.828086 s:  0x04AF0020:0x00000000,line:401 
    [MCU2_0]     65.828128 s:  0x04AF019C:0x00000000,line:402 
    [MCU2_0]     65.828170 s:  0x04AF01A0:0x00000000,line:403 
    [MCU2_0]     65.828212 s:  0x04AF01A4:0x00000000,line:404 
    [MCU2_0]     65.828254 s:  0x04AF01A8:0x00000000,line:405 
    [MCU2_0]     65.828296 s:  0x04AF01AC:0x00000000,line:406 
    [MCU2_0]     65.828338 s:  0x04AF01B0:0x00000000,line:407 
    [MCU2_0]     65.828380 s:  0x04AF01B4:0x00000000,line:408 
    [MCU2_0]     65.828422 s:  0x04AF01B8:0x00000000,line:409 
    [MCU2_0]     65.828464 s:  0x04AF01BC:0x00000000,line:410 
    [MCU2_0]     65.828506 s:  0x04AF01C0:0x00000000,line:411 
    [MCU2_0]     65.828549 s:  0x04AF01C4:0x00000000,line:412 
    [MCU2_0]     65.828591 s:  0x04AF01C8:0x00000000,line:413 
    [MCU2_0]     65.828633 s:  0x04AF01CC:0x00000000,line:414 
    [MCU2_0]     65.828675 s:  0x04AF01D0:0x00000000,line:415 
    [MCU2_0]     65.828716 s:  0x04AF01D4:0x00000000,line:416 
    [MCU2_0]     65.828758 s:  0x04AF01D8:0x00000000,line:417 
    [MCU2_0]     65.828800 s:  0x04AF01DC:0x00000000,line:418 
    [MCU2_0]     65.828842 s:  0x04AF01E0:0x00000000,line:419 
    [MCU2_0]     65.828884 s:  0x04AF01E4:0x00000000,line:420 
    [MCU2_0]     65.828931 s:  0x04AF01E8:0x00000000,line:421 
    [MCU2_0]     65.828974 s:  0x04AF01EC:0x00000000,line:422 
    [MCU2_0]     65.829015 s:  0x04AF01F0:0x00000000,line:423 
    [MCU2_0]     65.829057 s:  0x04AF01F4:0x00000000,line:424 
    [MCU2_0]     65.829100 s:  0x04AF01F8:0x00000000,line:425 
    [MCU2_0]     65.829440 s:  0x04AF0204:0x00000000,line:426 
    [MCU2_0]     65.829509 s:  0x04AF0208:0x05ff077f,line:427 
    [MCU2_0]     65.829555 s:  0x04AF0210:0x05ff077f,line:428 
    [MCU2_0]     65.829597 s:  0x04AF0214:0x00000000,line:429 
    [MCU2_0]     65.829641 s:  0x04AF021C:0x00000000,line:430 
    [MCU2_0]     65.829685 s:  0x04AF0224:0x00000001,line:431 
    [MCU2_0]     65.829728 s:  0x04AF0228:0x00000000,line:432 
    [MCU2_0]     65.829770 s:  0x04AF022C:0x00000000,line:433 
    [MCU2_0]     65.829812 s:  0x04AF0230:0x00000000,line:434 
    [MCU2_0]     65.829853 s:  0x04AF0234:0x00000000,line:435 
    [MCU2_0]     65.829912 s:  0x04AF0238:0x00000000,line:436 
    [MCU2_0]     65.829956 s:  0x04AF0248:0x00000000,line:437 
    
    
    

    Looking forward to your reply

    Regards,

    Barry

  • Hi Barry,

    Thank you for sharing the registers. We will go through this. 

    Meanwhile 2 experiments from your end.

    1. I believe you are running 2 cam in the multicam demo right? Could you run just 1 cam and check if you are seeing this issue?

    2. I did a change in the single cam demo by adding the dss_m2m to this which outputs RGB565 format to the display node. Since I do not have a YUV sensor with me, I tested this using the YUV422 testpattern from the UB960 Deserializer, and i was getting the expected output.

    Could you apply this patch and let me know if you are able to stream your sensor by converting it to RGB565 by DSS_M2M?

    /cfs-file/__key/communityserver-discussions-components-files/791/dss_5F00_m2m_5F00_single_5F00_cam.patch

    If you are able to stream with this, then there would be no issue with the node.

    Regards,

    Nikhil

  • Hi Nikhil,

    thank you for your reply.

    1. I believe you are running 2 cam in the multicam demo right? Could you run just 1 cam and check if you are seeing this issue?

          -----, I only enabled 1 camera in the multicam demo, and the result was the same as executing the singlecamera demo;

    2. I added the patch, and it looks the same as the effect I had after adding M2M in the multicam demo.

    Here is the YUV image saved after I added the patch and executed singlecamera demo and pressed 'S':

    capture parameter input:1920*1536

    YUV file name /opt/vision_apps/test_data/cap_0001.yuv

    imgaddr_width = 1920

    imgaddr_height = 1536

    imgaddr_stride = 3840

    width=1920

    height=1536

    i 9324...

    cap_yuv.zip

    And the output seen on the display (taken picture):

    display parameter output: 1280*800

    1d1fcfc7-df3c-491c-b00f-9761f6272d28.zip

    Looking forward for your reply, thank you

    Regards,

    Barry

  • Hi Nikhil,

    Our purpose is to make the camera output to the display screen for normal display;

    1. When I run run_app_single_cam.sh and press 'S', the saveimage looks OK, as follows:

    img_width = 1920

    img_height = 1536

    cap0002.zip

    2. But the screen display as follows is abnormal:

    disp_params.outWidth  = 1280;

    disp_params.outHeight = 800;

    origin.zip

    The data flow is:

    TDA4VM->DSI->max96789->max96752->lcd (LCD is the LVDS interface)

    3. We also tried to convert the format to TIVX_DF_IMAGE_RGB565 for output, and the screen display changed but it was still abnormal:

    fmt.zip

    How can we make the screen display properly? Can you send us a thread with related questions? Please help us,thank you.

    Looking forward to the expert's reply

    Regards,

    Barry

  • Hi,

    2. But the screen display as follows is abnormal:

    disp_params.outWidth  = 1280;

    disp_params.outHeight = 800;

    origin.zip

    The data flow is:

    We also tried to convert the format to TIVX_DF_IMAGE_RGB565 for output, and the screen display changed but it was still abnormal:

    Sorry, i am a bit confused here.

    Your graph is the below right?

    (A) Capture node (UYVY) -> Display M2M node (UYVY -> RGB565) -> Display node

    Are you able to get correct output on the display with the below graph?

    (B) Capture node (UYVY) -> Display node

    If you are getting correct display above, then have you tried the below

    (C) Capture node (UYVY) -> Display M2M node (UYVY -> UYVY) -> Display node

    So from the above (A) (B) and (C), which are the working and non-working scenarios?

    You had shared (2) and (3), this is related to which one among (A) , (B) and (C)?

    Regards,

    Nikhil

  • Hi Nikhil,

    thank you for your reply.

    Our goal is that the output from the camera to the screen can be displayed normally.

    Because the output display was abnormal, we tried to add an M2M conversion node and found that the output was still abnormal.

    The M2M node is a test we did ourselves. If it misleads you, please ignore point 3 I mentioned above;

    So our question is:

    1. When I run run_app_single_cam.sh and press 'S', the saveimage looks OK, as follows:

    img_width = 1920

    img_height = 1536

    1207.cap0002.zip

    2. But the screen display as follows is abnormal:

    disp_params.outWidth  = 1280;

    disp_params.outHeight = 800;

    3364.origin.zip

    The data flow is:

    1920x1536 Capture node (UYVY)-->DSI->max96789->max96752-->1280x800 LCD (lcd is the LVDS interface)

    Looking forward to your reply.

    Regards,

    Barry

  • Hi Nikhil,

    Hi Brijesh,

    This problem troubles us very much. We hope to get your support. Thank you.

    Regards,

    Barry

  • Hi,

    The data flow is:

    1920x1536 Capture node (UYVY)-->DSI->max96789->max96752-->1280x800 LCD (lcd is the LVDS interface)

    Ok, now since the Display M2M is out of the picture and the capture node is giving output correctly, that would leave us with your display.

    Did you bring your display up before? i.e. is the configuration of the serdes and that path been validated with some known data?

    Regards,

    Nikhil

  • Hi Nikhil,Brijesh,

    I solved this problem by configuring max96752.

    Thanks to the experts for their support, close this question.

    Regards,

    Barry

  • Thanks Barry, closing this ticket.