summaryrefslogtreecommitdiff
path: root/src/qcam/assets/feathericons/plus.svg
diff options
context:
space:
mode:
authorNaushir Patuck <naush@raspberrypi.com>2021-02-18 12:48:24 +0000
committerKieran Bingham <kieran.bingham@ideasonboard.com>2021-02-19 11:37:39 +0000
commitb147de25537652f8dabf40d5165350dad083a28a (patch)
treed0cdcdbcb8592b2c72574fc111889a6252f6177d /src/qcam/assets/feathericons/plus.svg
parenta6c41759fcdd90f395ea90040e55d1b881ea04f6 (diff)
pipeline: raspberrypi: Update the lens shading control in-place
Only update the lens shading control if it is present in the ControlList. Add the dmabuf file descriptor to the lens shading control in-place rather than taking a copy. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/qcam/assets/feathericons/plus.svg')
0 files changed, 0 insertions, 0 deletions
> */ #define ENABLE_EMBEDDED_DATA 0 #include "cam_helper.h" #if ENABLE_EMBEDDED_DATA #include "md_parser.h" #endif using namespace RPiController; /* * We care about one gain register and a pair of exposure registers. Their I2C * addresses from the Sony IMX219 datasheet: */ constexpr uint32_t gainReg = 0x157; constexpr uint32_t expHiReg = 0x15a; constexpr uint32_t expLoReg = 0x15b; constexpr uint32_t frameLengthHiReg = 0x160; constexpr uint32_t frameLengthLoReg = 0x161; constexpr std::initializer_list<uint32_t> registerList [[maybe_unused]] = { expHiReg, expLoReg, gainReg, frameLengthHiReg, frameLengthLoReg }; class CamHelperImx219 : public CamHelper { public: CamHelperImx219(); uint32_t gainCode(double gain) const override; double gain(uint32_t gainCode) const override; unsigned int mistrustFramesModeSwitch() const override; bool sensorEmbeddedDataPresent() const override; private: /* * Smallest difference between the frame length and integration time, * in units of lines. */ static constexpr int frameIntegrationDiff = 4; void populateMetadata(const MdParser::RegisterMap &registers, Metadata &metadata) const override; }; CamHelperImx219::CamHelperImx219() #if ENABLE_EMBEDDED_DATA : CamHelper(std::make_unique<MdParserSmia>(registerList), frameIntegrationDiff) #else : CamHelper({}, frameIntegrationDiff) #endif { } uint32_t CamHelperImx219::gainCode(double gain) const { return (uint32_t)(256 - 256 / gain); } double CamHelperImx219::gain(uint32_t gainCode) const { return 256.0 / (256 - gainCode); } unsigned int CamHelperImx219::mistrustFramesModeSwitch() const { /* * For reasons unknown, we do occasionally get a bogus metadata frame * at a mode switch (though not at start-up). Possibly warrants some * investigation, though not a big deal. */ return 1; } bool CamHelperImx219::sensorEmbeddedDataPresent() const { return ENABLE_EMBEDDED_DATA; } void CamHelperImx219::populateMetadata(const MdParser::RegisterMap &registers, Metadata &metadata) const { DeviceStatus deviceStatus; deviceStatus.shutterSpeed = exposure(registers.at(expHiReg) * 256 + registers.at(expLoReg)); deviceStatus.analogueGain = gain(registers.at(gainReg)); deviceStatus.frameLength = registers.at(frameLengthHiReg) * 256 + registers.at(frameLengthLoReg); metadata.set("device.status", deviceStatus); } static CamHelper *create() { return new CamHelperImx219(); } static RegisterCamHelper reg("imx219", &create);