#include #include #include #include #include #include "sp_vio.h" int main() { const int out_w = 1920; const int out_h = 1080; int widths[] = {out_w}; int heights[] = {out_h}; sp_sensors_parameters parms0; memset(&parms0, 0, sizeof(parms0)); parms0.fps = -1; parms0.raw_width = 1920; parms0.raw_height = 1080; sp_sensors_parameters parms1; memset(&parms1, 0, sizeof(parms1)); parms1.fps = -1; parms1.raw_width = 1920; parms1.raw_height = 1080; void *vio0 = sp_init_vio_module(); void *vio1 = sp_init_vio_module(); if (!vio0 || !vio1) { printf("[Error] sp_init_vio_module failed! vio0=%p vio1=%p\n", vio0, vio1); return -1; } // camera0: host0 int ret0 = sp_open_camera_v2(vio0, 0, 0, 1, &parms0, widths, heights); printf("sp_open_camera_v2 cam0(host0) ret=%d\n", ret0); // camera1: host1 int ret1 = sp_open_camera_v2(vio1, 0, 1, 1, &parms1, widths, heights); printf("sp_open_camera_v2 cam1(host1) ret=%d\n", ret1); if (ret0 != 0 || ret1 != 0) { printf("[Error] open failed: ret0=%d ret1=%d\n", ret0, ret1); if (vio0) { sp_vio_close(vio0); sp_release_vio_module(vio0); } if (vio1) { sp_vio_close(vio1); sp_release_vio_module(vio1); } return -2; } usleep(500 * 1000); // 等半秒让底层稳定 int frame_size = out_w * out_h * 3 / 2; // NV12 char *buf0 = (char *)malloc(frame_size); char *buf1 = (char *)malloc(frame_size); if (!buf0 || !buf1) { printf("[Error] malloc failed!\n"); sp_vio_close(vio0); sp_vio_close(vio1); sp_release_vio_module(vio0); sp_release_vio_module(vio1); return -3; } memset(buf0, 0, frame_size); memset(buf1, 0, frame_size); int g0 = sp_vio_get_frame(vio0, buf0, out_w, out_h, 2000); int g1 = sp_vio_get_frame(vio1, buf1, out_w, out_h, 2000); printf("sp_vio_get_frame cam0 ret=%d\n", g0); printf("sp_vio_get_frame cam1 ret=%d\n", g1); if (g0 == 0) { FILE *fp0 = fopen("cam0_1920x1080_nv12.yuv", "wb"); if (fp0) { fwrite(buf0, 1, frame_size, fp0); fclose(fp0); printf("saved cam0_1920x1080_nv12.yuv\n"); } } if (g1 == 0) { FILE *fp1 = fopen("cam1_1920x1080_nv12.yuv", "wb"); if (fp1) { fwrite(buf1, 1, frame_size, fp1); fclose(fp1); printf("saved cam1_1920x1080_nv12.yuv\n"); } } free(buf0); free(buf1); sp_vio_close(vio0); sp_vio_close(vio1); sp_release_vio_module(vio0); sp_release_vio_module(vio1); printf("done\n"); return 0; }