status_e UVCVisionCam::releaseBuffers(VisionCamPort_e port __attribute__((unused))) { if (v4l2_free(m_dev)) return STATUS_SUCCESS; else return STATUS_FAILURE; }
void vid_free(vid_t vid) { struct vid *v = vid; v4l2_stop_capture(v->cam); fbd_free(v->fbd); if (v->enc) jpg_enc_free(v->enc); if (v->dec) jpg_dec_free(v->dec); v4l2_free(v->cam); free(v); }
int main(int argc, char *argv[]) { app_t a = app_create(0); v4l2_dev_t v = v4l2_create(a, "/dev/video2", 0, 0); v4l2_set_img_proc(v, img_proc, v); v4l2_start_capture(v); app_exec(a); v4l2_stop_capture(v); v4l2_free(v); app_free(a); return 0; }
int main(int argc, char *argv[]) { app_t a = app_create(0); jpg_dec_t d = jpg_dec_create(); v4l2_dev_t v = v4l2_create(a, NULL, 0, 0); v4l2_set_img_proc(v, img_proc, d); v4l2_start_capture(v); app_exec(a); v4l2_stop_capture(v); v4l2_free(v); jpg_dec_free(d); app_free(a); return 0; }
vid_t vid_create(struct wcamsrv *ws) { struct v4l2_fmtdesc fmt; struct vid *v = calloc(1, sizeof(struct vid)); if (!v) { perror("vid_create"); return NULL; } v->srv = ws; v->cam = v4l2_create(v->srv->app, cfg_get_camdev(v->srv->cfg), cfg_get_cam_fmt_nr(v->srv->cfg), cfg_get_cam_frm_nr(v->srv->cfg)); if (v->cam == NULL) goto err_mem; if (pthread_mutex_init(&v->tran_frm_mutex, NULL)) { perror("vid_create: pthread_mutex_init"); goto err_v4l2; } v4l2_get_fmt(v->cam, 0, &fmt); if (fmt.pixelformat == V4L2_PIX_FMT_JPEG) { v4l2_set_img_proc(v->cam, handle_jpeg_img_proc, v); v->dec = jpg_dec_create(); if (v->dec == NULL) goto err_mutex; } else if (fmt.pixelformat == V4L2_PIX_FMT_YUYV) { v4l2_set_img_proc(v->cam, handle_yuyv_img_proc, v); v->enc = jpg_enc_create(); if (v->enc == NULL) goto err_mutex; } else { pr_debug("Capture video format is %s, but now we just " "support JPEG and YUYV.\n", fmt.description); goto err_mutex; } v->fbd = fbd_create(0, cfg_get_fb_bpp(v->srv->cfg), 0, 0, cfg_get_fb_width(v->srv->cfg), cfg_get_fb_height(v->srv->cfg)); if (v->fbd == NULL) goto err_codec; if (v4l2_start_capture(v->cam)) goto err_fbd; return v; err_fbd: fbd_free(v->fbd); err_codec: if (v->enc) jpg_enc_free(v->enc); if (v->dec) jpg_dec_free(v->dec); err_mutex: pthread_mutex_destroy(&v->tran_frm_mutex); err_v4l2: v4l2_free(v->cam); err_mem: free(v); return NULL; }