/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2021, Google Inc. * * camera_capabilities.h - Camera static properties manager */ #ifndef __ANDROID_CAMERA_CAPABILITIES_H__ #define __ANDROID_CAMERA_CAPABILITIES_H__ #include #include #include #include #include #include #include #include "camera_metadata.h" class CameraCapabilities { public: CameraCapabilities() = default; int initialize(std::shared_ptr camera, int orientation, int facing); CameraMetadata *staticMetadata() const { return staticMetadata_.get(); } libcamera::PixelFormat toPixelFormat(int format) const; unsigned int maxJpegBufferSize() const { return maxJpegBufferSize_; } std::unique_ptr requestTemplatePreview() const; std::unique_ptr requestTemplateVideo() const; private: LIBCAMERA_DISABLE_COPY_AND_MOVE(CameraCapabilities) struct Camera3StreamConfiguration { libcamera::Size resolution; int androidFormat; }; std::vector getYUVResolutions(libcamera::CameraConfiguration *cameraConfig, const libcamera::PixelFormat &pixelFormat, const std::vector &resolutions); std::vector getRawResolutions(const libcamera::PixelFormat &pixelFormat); int initializeStreamConfigurations(); int initializeStaticMetadata(); std::shared_ptr camera_; int facing_; int orientation_; std::vector streamConfigurations_; std::map formatsMap_; std::unique_ptr staticMetadata_; unsigned int maxJpegBufferSize_; }; #endif /* __ANDROID_CAMERA_CAPABILITIES_H__ */