int main() { int ret = 0; void * mV4l2_ctx = NULL; int mCaptureFormat; int width = 1280; int height = 720; int number = 0; struct v4l2_buffer buf; memset(&buf, 0, sizeof(buf)); mV4l2_ctx = CreateV4l2Context(); setV4L2DeviceName(mV4l2_ctx, "/dev/video1"); // open v4l2 camera device ret = OpenCamera(mV4l2_ctx); if (ret != 0) { LOGE("openCameraDevice failed\n"); return ret; } StartCamera(mV4l2_ctx, &width, &height); while(number < 300) { CameraGetOneframe(mV4l2_ctx,&buf); CameraReturnOneframe(mV4l2_ctx,buf.index); LOGD("test, number: %d",number); number ++; } StopCamera(mV4l2_ctx); CloseCamera(mV4l2_ctx); DestroyV4l2Context(mV4l2_ctx); mV4l2_ctx = NULL; return 0; }
static int startcamera(AWCameraDevice *p) { AWCameraDevice* camera_dev = (AWCameraDevice *)(p); AWCameraContext* CameraCtx = NULL; int err = 0; if(!camera_dev) return -1; CameraCtx = (AWCameraContext*)(camera_dev->context); if(CameraCtx->callback.cookie == NULL) { LOGE("should set callback before start Camera"); return -1; } camera_dev->isYUYV = 0; setV4L2DeviceName(CameraCtx->v4l2ctx, camera_dev->deviceName ); OpenCamera(CameraCtx->v4l2ctx); StartCamera(CameraCtx->v4l2ctx, &CameraCtx->width, &CameraCtx->height); camera_dev->isYUYV = V4L2_PIX_FMT_YUYV == v4l2GetCaptureFmt(CameraCtx->v4l2ctx); err = getFrameRate(CameraCtx->v4l2ctx); LOGD("Camera FPS=%d", err ); set_state(CameraCtx, 1); // Create the camera thread err = pthread_create(&CameraCtx->thread_id, NULL, CameraThread, camera_dev); if (err || !CameraCtx->thread_id) { LOGE("Create thread error"); return -1; } return 0; }