diff --git a/src/WideAngleCameraSensor.cc b/src/WideAngleCameraSensor.cc index a851287d..832df8c2 100644 --- a/src/WideAngleCameraSensor.cc +++ b/src/WideAngleCameraSensor.cc @@ -333,6 +333,12 @@ bool WideAngleCameraSensor::CreateCamera() case sdf::PixelFormatType::RGB_INT8: this->dataPtr->camera->SetImageFormat(gz::rendering::PF_R8G8B8); break; + case sdf::PixelFormatType::L_INT8: + this->dataPtr->camera->SetImageFormat(gz::rendering::PF_L8); + break; + case sdf::PixelFormatType::L_INT16: + this->dataPtr->camera->SetImageFormat(gz::rendering::PF_L16); + break; default: gzerr << "Unsupported pixel format [" << static_cast<int>(pixelFormat) << "]\n"; @@ -367,7 +373,9 @@ void WideAngleCameraSensor::OnNewWideAngleFrame( { std::lock_guard<std::mutex> lock(this->dataPtr->mutex); - unsigned int len = _width * _height * _channels; + unsigned int bytesPerChannel = rendering::PixelUtil::BytesPerChannel( + this->dataPtr->camera->ImageFormat()); + unsigned int len = _width * _height * _channels * bytesPerChannel; unsigned int bufferSize = len * sizeof(unsigned char); if (!this->dataPtr->imageBuffer) @@ -467,6 +475,12 @@ bool WideAngleCameraSensor::Update( format = gz::common::Image::RGB_INT8; msgsPixelFormat = msgs::PixelFormatType::RGB_INT8; break; + case gz::rendering::PF_L8: + msgsPixelFormat = msgs::PixelFormatType::L_INT8; + break; + case gz::rendering::PF_L16: + msgsPixelFormat = msgs::PixelFormatType::L_INT16; + break; default: gzerr << "Unsupported pixel format [" << this->dataPtr->camera->ImageFormat() << "]\n";