mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-24 17:15:07 +03:00
When building the list of supported YUV streams in getYUVResolutions() the CameraConfiguration provided by the caller as first parameters is used. As the CameraConfiguration will be later actually applied to the Camera, avoid any possible overlap of the configuration parameters by using a throw-away CameraConfiguration generated for the Viewfinder stream role in getYUVResolutions(). It's also nicer to avoid having two functions with a similar purpose such as getYUVResolutions() and getRawResolutions() with different parameter lists, as the presence of a CameraConfiguration as first parameter might be confusing to the reader. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
65 lines
1.7 KiB
C++
65 lines
1.7 KiB
C++
/* 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 <map>
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
#include <libcamera/base/class.h>
|
|
|
|
#include <libcamera/camera.h>
|
|
#include <libcamera/formats.h>
|
|
#include <libcamera/geometry.h>
|
|
|
|
#include "camera_metadata.h"
|
|
|
|
class CameraCapabilities
|
|
{
|
|
public:
|
|
CameraCapabilities() = default;
|
|
|
|
int initialize(std::shared_ptr<libcamera::Camera> 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<CameraMetadata> requestTemplatePreview() const;
|
|
std::unique_ptr<CameraMetadata> requestTemplateVideo() const;
|
|
|
|
private:
|
|
LIBCAMERA_DISABLE_COPY_AND_MOVE(CameraCapabilities)
|
|
|
|
struct Camera3StreamConfiguration {
|
|
libcamera::Size resolution;
|
|
int androidFormat;
|
|
};
|
|
|
|
std::vector<libcamera::Size>
|
|
getYUVResolutions(const libcamera::PixelFormat &pixelFormat,
|
|
const std::vector<libcamera::Size> &resolutions);
|
|
std::vector<libcamera::Size>
|
|
getRawResolutions(const libcamera::PixelFormat &pixelFormat);
|
|
int initializeStreamConfigurations();
|
|
|
|
int initializeStaticMetadata();
|
|
|
|
std::shared_ptr<libcamera::Camera> camera_;
|
|
|
|
int facing_;
|
|
int orientation_;
|
|
|
|
std::vector<Camera3StreamConfiguration> streamConfigurations_;
|
|
std::map<int, libcamera::PixelFormat> formatsMap_;
|
|
std::unique_ptr<CameraMetadata> staticMetadata_;
|
|
unsigned int maxJpegBufferSize_;
|
|
};
|
|
|
|
#endif /* __ANDROID_CAMERA_CAPABILITIES_H__ */
|