IOutputStream& BinaryOutputStream::write(const void* data, const uint32_t size) { requestSize(size); Memory::Copy(mBuffer.getRawData() + mSize, data, size); mSize += size; return *this; }
void CDigitalCamera::PowerOnComplete(TInt aError) { TCameraInfo cameraInfo; iCamera->CameraInfo(cameraInfo); if ((aError == KErrNone) && (cameraInfo.iOptionsSupported & TCameraInfo::EViewFinderBitmapsSupported) && (cameraInfo.iOrientation == TCameraInfo::EOrientationOutwards)) { TSize requestSize(iViewportSize); LOGARG("Requesting viewfinder size %d x %d", requestSize.iWidth, requestSize.iHeight); TRAPD(error, iCamera->StartViewFinderL(CCamera::EFormatFbsBitmapColor16MU, requestSize)); LOGARG("Obtaining viewfinder size %d x %d", requestSize.iWidth, requestSize.iHeight); iObserver.CameraReady(error); } else { // Either power complete error or viewfinder bitmap unsupported iObserver.CameraReady(KErrNotSupported); } }
void VideoInput::configure_v4l2(int index, bool silent) { #ifdef Q_OS_LINUX cv::Size requestSize(0,0); int CameraNumber = index; /* Print the CameraNumber at the end of the string with a width of one character */ char deviceName[V4L2_MAX_DEVICE_DRIVER_NAME]; sprintf(deviceName, "/dev/video%1d", CameraNumber); /* Test using an open to see if this new device name really does exists. */ int deviceHandle = open(deviceName, O_RDONLY); if (deviceHandle != -1) { //find the maximum resolution struct v4l2_fmtdesc fmtdesc; fmtdesc.index = 0; fmtdesc.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; while (ioctl(deviceHandle, VIDIOC_ENUM_FMT, &fmtdesc)==0 && fmtdesc.index!=EINVAL) { if (!silent) { fprintf(stderr, "v4l cam %d, pixel_format %d: %s\n", CameraNumber, fmtdesc.index, fmtdesc.description); } struct v4l2_frmsizeenum frmsizeenum; frmsizeenum.index = 0; frmsizeenum.pixel_format = fmtdesc.pixelformat; while (ioctl(deviceHandle, VIDIOC_ENUM_FRAMESIZES, &frmsizeenum)==0 && frmsizeenum.index!=EINVAL) { cv::Size size; if (frmsizeenum.type==V4L2_FRMSIZE_TYPE_DISCRETE) { size = cv::Size(frmsizeenum.discrete.width, frmsizeenum.discrete.height); } else { size = cv::Size(frmsizeenum.stepwise.max_width, frmsizeenum.stepwise.min_height); } if (requestSize.width<size.width) { requestSize = size; } if (!silent) { fprintf(stderr, "v4l cam %d, supported size w=%d h=%d\n", CameraNumber, size.width, size.height); } ++frmsizeenum.index; } ++fmtdesc.index; } } close(deviceHandle); // RSA_HACK: if (requestSize.width == 2304 && requestSize.height == 1296) { requestSize.width = 1920; requestSize.height = 1080; } if (_video_capture && requestSize.width>0) { if (!silent) { fprintf(stderr, " *** v4l cam %d, selected size w=%d h=%d\n", CameraNumber, requestSize.width, requestSize.height); } cvSetCaptureProperty(_video_capture, CV_CAP_PROP_FRAME_WIDTH, requestSize.width); cvSetCaptureProperty(_video_capture, CV_CAP_PROP_FRAME_HEIGHT, requestSize.height); } #endif //Q_OS_LINUX }