/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright (C) 2018, Google Inc.
*
* camera.cpp - Camera device
*/
#include <libcamera/camera.h>
#include <array>
#include <atomic>
#include <iomanip>
#include <libcamera/base/log.h>
#include <libcamera/base/thread.h>
#include <libcamera/color_space.h>
#include <libcamera/framebuffer_allocator.h>
#include <libcamera/request.h>
#include <libcamera/stream.h>
#include "libcamera/internal/camera.h"
#include "libcamera/internal/camera_controls.h"
#include "libcamera/internal/formats.h"
#include "libcamera/internal/pipeline_handler.h"
#include "libcamera/internal/request.h"
/**
* \file libcamera/camera.h
* \brief Camera device handling
*
* \page camera-model Camera Model
*
* libcamera acts as a middleware between applications and camera hardware. It
* provides a solution to an unsolvable problem: reconciling applications,
* which need to run on different systems without dealing with device-specific
* details, and camera hardware, which exhibits a wide variety of features,
* limitations and architecture variations. In order to do so, it creates an
* abstract camera model that hides the camera hardware from applications. The
* model is designed to strike the right balance between genericity, to please
* generic applications, and flexibility, to expose even the most specific
* hardware features to the most demanding applications.
*
* In libcamera, a Camera is defined as a device that can capture frames
* continuously from a camera sensor and store them in memory. If supported by
|