android: camera_device: Report RAW capability if supported

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>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Niklas Söderlund 2020-07-21 00:16:24 +02:00
parent d4de037a8a
commit 7876d631d9

View file

@ -15,6 +15,7 @@
#include <libcamera/formats.h> #include <libcamera/formats.h>
#include <libcamera/property_ids.h> #include <libcamera/property_ids.h>
#include "libcamera/internal/formats.h"
#include "libcamera/internal/log.h" #include "libcamera/internal/log.h"
#include "libcamera/internal/utils.h" #include "libcamera/internal/utils.h"
@ -755,6 +756,17 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
std::vector<uint8_t> availableCapabilities = { std::vector<uint8_t> availableCapabilities = {
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE, ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE,
}; };
/* Report if camera supports RAW. */
std::unique_ptr<CameraConfiguration> cameraConfig =
camera_->generateConfiguration({ StillCaptureRaw });
if (cameraConfig && !cameraConfig->empty()) {
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, staticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_CAPABILITIES,
availableCapabilities.data(), availableCapabilities.data(),
availableCapabilities.size()); availableCapabilities.size());