mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-14 07:59:44 +03:00
pipeline: ipa: raspberrypi: Refactor and move the Raspberry Pi code
Split the Raspberry Pi pipeline handler and IPA source code into common and VC4/BCM2835 specific file structures. For the pipeline handler, the common code files now live in src/libcamera/pipeline/rpi/common/ and the VC4-specific files in src/libcamera/pipeline/rpi/vc4/. For the IPA, the common code files now live in src/ipa/rpi/{cam_helper,controller}/ and the vc4 specific files in src/ipa/rpi/vc4/. With this change, the camera tuning files are now installed under share/libcamera/ipa/rpi/vc4/. To build the pipeline and IPA, the meson configuration options have now changed from "raspberrypi" to "rpi/vc4": meson setup build -Dipas=rpi/vc4 -Dpipelines=rpi/vc4 Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
46aefed208
commit
726e9274ea
121 changed files with 172 additions and 109 deletions
76
src/ipa/rpi/controller/af_algorithm.h
Normal file
76
src/ipa/rpi/controller/af_algorithm.h
Normal file
|
@ -0,0 +1,76 @@
|
|||
/* SPDX-License-Identifier: BSD-2-Clause */
|
||||
/*
|
||||
* Copyright (C) 2022, Raspberry Pi Ltd
|
||||
*
|
||||
* af_algorithm.hpp - auto focus algorithm interface
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <optional>
|
||||
|
||||
#include <libcamera/base/span.h>
|
||||
|
||||
#include "algorithm.h"
|
||||
|
||||
namespace RPiController {
|
||||
|
||||
class AfAlgorithm : public Algorithm
|
||||
{
|
||||
public:
|
||||
AfAlgorithm(Controller *controller)
|
||||
: Algorithm(controller) {}
|
||||
|
||||
/*
|
||||
* An autofocus algorithm should provide the following calls.
|
||||
*
|
||||
* Where a ControlList combines a change of AfMode with other AF
|
||||
* controls, setMode() should be called first, to ensure the
|
||||
* algorithm will be in the correct state to handle controls.
|
||||
*
|
||||
* setLensPosition() returns true if the mode was AfModeManual and
|
||||
* the lens position has changed, otherwise returns false. When it
|
||||
* returns true, hwpos should be sent immediately to the lens driver.
|
||||
*
|
||||
* getMode() is provided mainly for validating controls.
|
||||
* getLensPosition() is provided for populating DeviceStatus.
|
||||
*/
|
||||
|
||||
enum AfRange { AfRangeNormal = 0,
|
||||
AfRangeMacro,
|
||||
AfRangeFull,
|
||||
AfRangeMax };
|
||||
|
||||
enum AfSpeed { AfSpeedNormal = 0,
|
||||
AfSpeedFast,
|
||||
AfSpeedMax };
|
||||
|
||||
enum AfMode { AfModeManual = 0,
|
||||
AfModeAuto,
|
||||
AfModeContinuous };
|
||||
|
||||
enum AfPause { AfPauseImmediate = 0,
|
||||
AfPauseDeferred,
|
||||
AfPauseResume };
|
||||
|
||||
virtual void setRange([[maybe_unused]] AfRange range)
|
||||
{
|
||||
}
|
||||
virtual void setSpeed([[maybe_unused]] AfSpeed speed)
|
||||
{
|
||||
}
|
||||
virtual void setMetering([[maybe_unused]] bool use_windows)
|
||||
{
|
||||
}
|
||||
virtual void setWindows([[maybe_unused]] libcamera::Span<libcamera::Rectangle const> const &wins)
|
||||
{
|
||||
}
|
||||
virtual void setMode(AfMode mode) = 0;
|
||||
virtual AfMode getMode() const = 0;
|
||||
virtual bool setLensPosition(double dioptres, int32_t *hwpos) = 0;
|
||||
virtual std::optional<double> getLensPosition() const = 0;
|
||||
virtual void triggerScan() = 0;
|
||||
virtual void cancelScan() = 0;
|
||||
virtual void pause(AfPause pause) = 0;
|
||||
};
|
||||
|
||||
} // namespace RPiController
|
Loading…
Add table
Add a link
Reference in a new issue