/* initcamdev(); initscrdev(); while(!stop){ cnfig = getcnfg() data = getapic(cnfg); data1 = decode(data); show(data1,pos) } closedev(); */ int main() { int fd; fd = open_camera_device(); init_camera_device(fd); start_capture(fd); mainloop(fd); stop_capture(fd); close_camera_device(fd); return 0; }
static void * camera_thread(DirectThread *thread, void *arg) { int camera_dev_num = 0; int second_dev_num = -1; int fid; struct stat st; bool same_sensor_flg = false; char *back = "b"; char *front = "f"; int cur_stat = 0; int *num = arg; int width = camera_pixel_width; int height = camera_pixel_height; printf("camera num = %d\n", *num); if (0 == stat("/dev/video3", &st)) { printf("got two sensor at video0 video3\n"); second_dev_num = 3; } #ifndef __GS702C__ else if (0 == stat("/dev/video1", &st)) { printf("got two sensor at video0 video1\n"); second_dev_num = 1; } #endif if (second_dev_num < 0) { same_sensor_flg = true; printf("got two same sensor\n"); } while(true) { do { if(open_camera_device(camera_dev_num, *num) == -1) { printf("open camera %d error\n", camera_dev_num); direct_thread_sleep( 1000000 ); break; } if(init_camera_device(&width, &height) == -1) { printf("init camera %d error\n", camera_dev_num); close_camera_device(); break; } camera_start_capturing(); camera_mainloop(); camera_stop_capturing(); uninit_camera_device(); close_camera_device(); }while(0); if(same_sensor_flg) { fid = open("/sys/bus/platform/devices/camera_flag_device.0/front_back", O_WRONLY); if(0 == cur_stat) { write(fid,back,1); close(fid); cur_stat = 1; } else { write(fid,front,1); close(fid); cur_stat = 0; } } else { if(camera_dev_num) { camera_dev_num = 0; //printf("switch to video0, the rear camera \n"); } else { camera_dev_num = second_dev_num; printf("switch to video%d, front-facing cameras \n", second_dev_num); } } } }