diff --git a/src/IrisCamera.cpp b/src/IrisCamera.cpp index 465c71235eed018748d8ef790ea6b3151cd1787d..cbcd38d64592da8614b3ac4940fa36a597751e05 100644 --- a/src/IrisCamera.cpp +++ b/src/IrisCamera.cpp @@ -499,48 +499,47 @@ void Camera::getDetectorImageSize(Size& size) const void Camera::getImageType(ImageType& type) const { DEB_MEMBER_FUNCT(); - // enum int16 imageFormat; - // CameraContext* ctx = contexts[cSingleCamIndex]; - // if (IsParamAvailable(ctx->hcam, PARAM_BIT_DEPTH, "PARAM_BIT_DEPTH")) - // if (PV_OK != pl_get_param(ctx->hcam, PARAM_BIT_DEPTH, ATTR_CURRENT, (void*)& imageFormat)) { - // THROW_HW_ERROR(Error) << pl_error_code() << " Could not read CCD X resolution"; - // } - - // switch (imageFormat) - // { - // case - // PL_IMAGE_FORMAT_MONO16: - // PL_IMAGE_FORMAT_BAYER16: - // type = Bpp16; - - // case - // PL_IMAGE_FORMAT_MONO8: - // PL_IMAGE_FORMAT_BAYER8: - // type = Bpp8; - - // case - // PL_IMAGE_FORMAT_MONO24: - // PL_IMAGE_FORMAT_BAYER24: - // PL_IMAGE_FORMAT_RGB24: - // type = Bpp24; - - // // case PL_IMAGE_FORMAT_RGB48: - // // type = Bpp - - // // case PL_IMAGE_FORMAT_RGB72: - // // type = Bpp64; - - // case - // PL_IMAGE_FORMAT_MONO32: - // PL_IMAGE_FORMAT_BAYER32: - // type = Bpp32; - // break; + enum int16 imageFormat; + CameraContext* ctx = contexts[cSingleCamIndex]; + if (IsParamAvailable(ctx->hcam, PARAM_IMAGE_FORMAT, "PARAM_IMAGE_FORMAT")) + if (PV_OK != pl_get_param(ctx->hcam, PARAM_IMAGE_FORMAT, ATTR_CURRENT, (void*)& imageFormat)) { + _printError("Could not read image format"); + } + + // switch between PL_IMAGE_FORMATS enum + switch (imageFormat) + { + case + PL_IMAGE_FORMAT_MONO16: + PL_IMAGE_FORMAT_BAYER16: + type = ImageType::Bpp16; + break; + + case + PL_IMAGE_FORMAT_MONO8: + PL_IMAGE_FORMAT_BAYER8: + type = ImageType::Bpp8; + break; + + case + PL_IMAGE_FORMAT_MONO24: + PL_IMAGE_FORMAT_BAYER24: + PL_IMAGE_FORMAT_RGB24: + type = ImageType::Bpp24; + break; + + case + PL_IMAGE_FORMAT_MONO32: + PL_IMAGE_FORMAT_BAYER32: + type = ImageType::Bpp32; + break; - // default: - // THROW_HW_ERROR(Error) << "Unsupported Pixel Format: " << imageFormat; - // break; - // } - type = ImageType::Bpp16; + default: + // values of PL_IMAGE_FORMAT_RGB48, PL_IMAGE_FORMAT_RGB72 does not seem to be supported in lima + _printError("Unsupported Pixel Format: " + std::to_string(imageFormat)); + break; + } + type = ImageType::Bpp16; } // // ----------------------------------------------------- @@ -553,21 +552,22 @@ void Camera::setImageType(ImageType type) int32 imageType; switch (type) { - case Bpp8: - imageType = PL_IMAGE_FORMAT_MONO8; - case Bpp24: - imageType = PL_IMAGE_FORMAT_MONO24; - case Bpp16: - imageType = PL_IMAGE_FORMAT_MONO16; - break; - - default: - _printError("Cannot change the pixel format of the camera!"); - break; + case Bpp8: + imageType = PL_IMAGE_FORMAT_MONO8; + case Bpp24: + imageType = PL_IMAGE_FORMAT_MONO24; + case Bpp16: + imageType = PL_IMAGE_FORMAT_MONO16; + break; + + default: + _printError("Cannot change the pixel format of the camera!"); + break; } CameraContext* ctx = contexts[cSingleCamIndex]; uns16 isAccessable; + if (PV_OK != pl_get_param(ctx->hcam, PARAM_IMAGE_FORMAT, ATTR_ACCESS, (void*)& isAccessable)) { _printError("Could not read image format parameter"); } @@ -576,6 +576,11 @@ void Camera::setImageType(ImageType type) _printError("Could not set image type"); } } + + if (!isAccessable) { + _printError("Cannot access image format parameter"); + } + ctx->imageFormat = imageType; } void Camera::getDetectorType(std::string& type) const