camera数据从RX bypass给TX时,只需要配置set_bypass_channels就可以吗?bypass后串行器的初始化在哪里实现呢?
camera数据从RX bypass给TX时,只需要配置set_bypass_channels就可以吗?bypass后串行器的初始化在哪里实现呢?


在J5上RX bypass给TX,需要在cim配置下mipi/function内通过enable_bypass=1使能bypass,同时mipi配置文件中dev下enable=1(tx0)/2(tx1)使能对应tx。其中rx0/rx2可bypass给tx0,rx1/rx3可bypass给tx1。
bypass后的串行器的初始化默认由接收侧统一配置解串与加串,若有单独配置bypass后的串行器需求,可参考sensor库内dummy的实现。
谢谢~

您好:
也就是4路模组接入96712后进J5,之后其中一路要bypass输出给UB953。
这里是可以的,但这里的"bypass"可能有2种方式:
一种是直接rx原数据(输入是raw还是yuv?),这种方式会将该rx的所有4路都bypass,之后由UB953内选其中1路使用,该方式注意格式与分辨率都是原sensor输入的,同时还需注UB953的MIPI速率可能不能满足输出需求。
另一种是前视进J5之后,通过内部模块处理之后(可以scale),之后数据到DDR内,要通过IDU模块将其读取后再通过TX设备输出给UB953,该种方式可以改变分辨率,1个TX只能输出1路,格式为YUV422。
从您描述的"既做前视又做DVR",猜测可能是上述方式2(一般前视分辨率较高,DVR可能要求不用那么高,而且如果是raw的话,应该要过ISP处理之后才能DVR录制使用吧)?

您好:
使用方式2的话,可以通过idu从pym或gdc内取出转换后的2m数据进行输出,若直接使用API方式直接取图再设idu输出即可。
enum J5_DISPLAY_TYPE {
SRC_OUTPUT = 1,
US0,
GS0,
GS1,
GS2,
GS3,
GS4,
BL0,
BL1,
BL2,
BL3,
BL4,
DS0,
DS1,
DS2,
DS3,
DS4,
DS5 = 18,
GDC0 = 37,
};
谢谢~
您好兰工:
根据回复,基于camera_test写了一段代码,有些问题还需您帮忙解答一下。
请问以下方式符合逻辑吗?另外红色字体的个人理解如有问题请帮忙指正一下,谢谢。
ret = hb_vio_init(vio_cfg_file);
ret = hb_cam_init(cam_index, j5dev_file);
for (i=0;i < port_num;i++) {
ret = hb_vio_start_pipeline(i);
}
for (i=0;i < port_num;i++) {
ret = hb_cam_start(i);
}
ret = hb_vin_init(0, j5dev_file);
ret = hb_disp_init_dev_cfg(idu_num, iar_file);
ret = hb_disp_start_id(idu_num);
hb_disp_layer_off_id(2, idu_num);
hb_disp_layer_off_id(3, idu_num);
while(1)
{
for(i=0;i
//此接口是从pym中获取YUV420,NV12格式数据
ret = hb_vio_get_data(i, HB_VIO_PYM_DATA_V2 , &pym_buf_2);
if (ret < 0) {
printf("vio get pym info fail,port=%d\n",i);
continue;
} else {
//此接口是将从pym中获取的数据,通过idu发送给mipi tx
ret = hb_disp_set_video_bufaddr_id(g_yuv, g_yuv + 3840*2160 * 2 / 3, NULL, NULL, idu_num);
ret = hb_disp_get_display_done_id(idu_num);
}
hb_vio_free_pymbuf(i, HB_VIO_PYM_DATA_V2 ,&pym_buf_2);
}
}
"outputconfig":
{
"output_mode": 4,
//以下宽高配置,是否可以理解为将camera的3840x2160转给tx后转换成了1920x1080
"panel_width": 1920,
"panel_height": 1080,
"display_addr_type": 0,
"display_cam_no": 0,
"display_addr_type_layer1": 0,
"display_cam_no_layer1": 0,
"backlight_level": 10,
"panel_type": 1,
"bg_color": 16744328,
"contrast_en": 0,
"contrast_val": 0,
"bright_en": 0,
"bright_val": 0,
"off_contrast": 0,
"sat_en": 0,
"sat_val": 0,
"hue_en": 0,
"theta_sign": 0,
"theta_abs": 0,
"dithering_en": 0,
"dithering_flag": 0,
"gamma_en": 0,
"gamma_val": 0,
"user_refresh": 1,
"user_refresh_layer1": 1,
"rotate": 0,
"platform": 1,
"big_endian": 0
}

您好:
hb_disp_set_video_bufaddr_id(直接用2m图层的指针)
3. 这个看上去是要将所有pipe的数据都要通过idu输出? 是否应该只是8m这路的要idu输出?
4. 目前的idu显示是通过api方式写的,也可能通过json中直接配置指定pipe路的2m层(参考上条答复),这样只要init与start,和正常pym取图使用即可,底层将自动将相应图层idu显示输出(不必每帧做hb_disp_set_video_bufaddr_id),如果有特别需求,如要多路交叉输出,或要在图上绘画等,还是可以用API方式;
您好兰工:
您上面说有两种方式可以输出,对于这两种方式在使用方法上我还有一些疑问:
方式1.可以通过idu从pym内取出转换后的2m数据进行输出:
是否可以理解为,之前调试时使用的camera_test(vio_init、cam_init、start pipeline、vio_get_data)测试程序不变,只需要修改vpm_config.json里面gs或者bl图层的配置,并且不需要配置idu.json,底层就会自动输出给tx?
方式2.若直接使用API方式直接取图再设idu输出:
需要添加idu init和start,以及hb_disp_set_video_bufaddr_id等相关接口,并且需要配置idu.json?