android: camera_device: Load make and model from platform settings

In ChromeOS the camera make and model is saved in
/var/cache/camera/camera.prop. Load and save these values at
construction time, if available.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Paul Elder 2021-01-21 17:44:14 +09:00
parent 3a3f6ae22e
commit 229653a59b
2 changed files with 28 additions and 0 deletions

View file

@ -9,6 +9,7 @@
#include "camera_ops.h" #include "camera_ops.h"
#include "post_processor.h" #include "post_processor.h"
#include <fstream>
#include <sys/mman.h> #include <sys/mman.h>
#include <tuple> #include <tuple>
#include <vector> #include <vector>
@ -351,6 +352,28 @@ CameraDevice::CameraDevice(unsigned int id, const std::shared_ptr<Camera> &camer
* streamConfiguration. * streamConfiguration.
*/ */
maxJpegBufferSize_ = 13 << 20; /* 13631488 from USB HAL */ maxJpegBufferSize_ = 13 << 20; /* 13631488 from USB HAL */
maker_ = "libcamera";
model_ = "cameraModel";
/* \todo Support getting properties on Android */
std::ifstream fstream("/var/cache/camera/camera.prop");
if (!fstream.is_open())
return;
std::string line;
while (std::getline(fstream, line)) {
std::string::size_type delimPos = line.find("=");
if (delimPos == std::string::npos)
continue;
std::string key = line.substr(0, delimPos);
std::string val = line.substr(delimPos + 1);
if (!key.compare("ro.product.model"))
model_ = val;
else if (!key.compare("ro.product.manufacturer"))
maker_ = val;
}
} }
CameraDevice::~CameraDevice() CameraDevice::~CameraDevice()

View file

@ -55,6 +55,8 @@ public:
return config_.get(); return config_.get();
} }
const std::string &maker() const { return maker_; }
const std::string &model() const { return model_; }
int facing() const { return facing_; } int facing() const { return facing_; }
int orientation() const { return orientation_; } int orientation() const { return orientation_; }
unsigned int maxJpegBufferSize() const { return maxJpegBufferSize_; } unsigned int maxJpegBufferSize() const { return maxJpegBufferSize_; }
@ -125,6 +127,9 @@ private:
std::map<int, libcamera::PixelFormat> formatsMap_; std::map<int, libcamera::PixelFormat> formatsMap_;
std::vector<CameraStream> streams_; std::vector<CameraStream> streams_;
std::string maker_;
std::string model_;
int facing_; int facing_;
int orientation_; int orientation_;