CameraDevice* camera_device_open(const char* name, int inp_channel) { struct v4l2_cropcap cropcap; struct v4l2_crop crop; LinuxCameraDevice* cd; /* Allocate and initialize the descriptor. */ cd = _camera_device_alloc(); //cd->device_name = name != NULL ? ASTRDUP(name) : ASTRDUP("/dev/video0"); //Gemdroid added cd->device_name = name != NULL ? ASTRDUP(name) : ASTRDUP("/dev/video1"); //Gemdroid added cd->input_channel = inp_channel; /* Open the device. */ if (_camera_device_open(cd)) { _camera_device_free(cd); return NULL; } /* Select video input, video standard and tune here. */ cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; _xioctl(cd->handle, VIDIOC_CROPCAP, &cropcap); crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; crop.c = cropcap.defrect; /* reset to default */ _xioctl (cd->handle, VIDIOC_S_CROP, &crop); return &cd->header; }
void camera_device_close(CameraDevice* cd) { /* Sanity checks. */ if (cd == NULL || cd->opaque == NULL) { E("%s: Invalid camera device descriptor", __FUNCTION__); } else { WndCameraDevice* wcd = (WndCameraDevice*)cd->opaque; _camera_device_free(wcd); } }
void camera_device_close(CameraDevice* ccd) { LinuxCameraDevice* cd; /* Sanity checks. */ if (ccd != NULL && ccd->opaque != NULL) { cd = (LinuxCameraDevice*)ccd->opaque; _camera_device_free(cd); } else { E("%s: Invalid camera device descriptor", __FUNCTION__); } }
CameraDevice* camera_device_open(const char* name, int inp_channel) { WndCameraDevice* wcd; /* Allocate descriptor and initialize windows-specific fields. */ wcd = _camera_device_alloc(); if (wcd == NULL) { E("%s: Unable to allocate WndCameraDevice instance", __FUNCTION__); return NULL; } wcd->window_name = (name != NULL) ? ASTRDUP(name) : ASTRDUP(_default_window_name); if (wcd->window_name == NULL) { E("%s: Unable to save window name", __FUNCTION__); _camera_device_free(wcd); return NULL; } wcd->input_channel = inp_channel; /* Create capture window that is a child of HWND_MESSAGE window. * We make it invisible, so it doesn't mess with the UI. Also * note that we supply standard HWND_MESSAGE window handle as * the parent window, since we don't want video capturing * machinery to be dependent on the details of our UI. */ wcd->cap_window = capCreateCaptureWindow(wcd->window_name, WS_CHILD, 0, 0, 0, 0, HWND_MESSAGE, 1); if (wcd->cap_window == NULL) { E("%s: Unable to create video capturing window '%s': %d", __FUNCTION__, wcd->window_name, GetLastError()); _camera_device_free(wcd); return NULL; } /* Save capture window descriptor as window's user data. */ capSetUserData(wcd->cap_window, wcd); return &wcd->header; }