Message ID | 20200729111202.3812677-4-niklas.soderlund@ragnatech.se |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
Hi Niklas, On Wed, Jul 29, 2020 at 01:12:02PM +0200, Niklas Söderlund wrote: > Probe the libcamera Camera for RAW support and if supported report RAW > capability in the static metadata reported to Android. > > Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> > --- > src/android/camera_device.cpp | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp > index c31950db78a588ed..7764c6aee9b8e587 100644 > --- a/src/android/camera_device.cpp > +++ b/src/android/camera_device.cpp > @@ -15,6 +15,7 @@ > #include <libcamera/formats.h> > #include <libcamera/property_ids.h> > > +#include "libcamera/internal/formats.h" > #include "libcamera/internal/log.h" > #include "libcamera/internal/utils.h" > > @@ -735,6 +736,15 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() > std::vector<uint8_t> availableCapabilities = { > ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE, > }; > + > + /* Report if camera supports RAW. */ > + std::unique_ptr<CameraConfiguration> cameraConfig = > + camera_->generateConfiguration({ StillCaptureRaw }); If the camera does not support RAW, then generateConfiguration returns a nullptr. You should check if cameraConfig is valid before accessing it. The idea is good and questions on v1 clarified. Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Thanks j > + const PixelFormatInfo &info = > + PixelFormatInfo::info(cameraConfig->at(0).pixelFormat); > + if (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW) > + availableCapabilities.push_back(ANDROID_REQUEST_AVAILABLE_CAPABILITIES_RAW); > + > staticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_CAPABILITIES, > availableCapabilities.data(), > availableCapabilities.size()); > -- > 2.27.0 > > _______________________________________________ > libcamera-devel mailing list > libcamera-devel@lists.libcamera.org > https://lists.libcamera.org/listinfo/libcamera-devel
diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index c31950db78a588ed..7764c6aee9b8e587 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -15,6 +15,7 @@ #include <libcamera/formats.h> #include <libcamera/property_ids.h> +#include "libcamera/internal/formats.h" #include "libcamera/internal/log.h" #include "libcamera/internal/utils.h" @@ -735,6 +736,15 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() std::vector<uint8_t> availableCapabilities = { ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE, }; + + /* Report if camera supports RAW. */ + std::unique_ptr<CameraConfiguration> cameraConfig = + camera_->generateConfiguration({ StillCaptureRaw }); + const PixelFormatInfo &info = + PixelFormatInfo::info(cameraConfig->at(0).pixelFormat); + if (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW) + availableCapabilities.push_back(ANDROID_REQUEST_AVAILABLE_CAPABILITIES_RAW); + staticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_CAPABILITIES, availableCapabilities.data(), availableCapabilities.size());
Probe the libcamera Camera for RAW support and if supported report RAW capability in the static metadata reported to Android. Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> --- src/android/camera_device.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+)