android: hal_manager: Do not hardcode properties

The CameraHalManager::getCameraInfo() method hardcodes the camera facing
side and orientation (which corresponds, confusingly, to libcamera's
location and rotation properties).

Instead of hard-coding the values based on the camera id, inspect the
libcamera properties that report the camera location and rotation in a
new initialize() method, and use them to report the android camera info
and to populate the static metadata buffer.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Jacopo Mondi 2020-05-25 16:08:22 +02:00
parent 0ffb3a20ed
commit 64f4f667ed
3 changed files with 68 additions and 30 deletions

View file

@ -27,12 +27,17 @@ public:
CameraDevice(unsigned int id, const std::shared_ptr<libcamera::Camera> &camera);
~CameraDevice();
int initialize();
int open(const hw_module_t *hardwareModule);
void close();
unsigned int id() const { return id_; }
camera3_device_t *camera3Device() { return &camera3Device_; }
int facing() const { return facing_; }
int orientation() const { return orientation_; }
void setCallbacks(const camera3_callback_ops_t *callbacks);
const camera_metadata_t *getStaticMetadata();
const camera_metadata_t *constructDefaultRequestSettings(int type);
@ -69,6 +74,9 @@ private:
CameraMetadata *staticMetadata_;
std::map<unsigned int, CameraMetadata *> requestTemplates_;
const camera3_callback_ops_t *callbacks_;
int facing_;
int orientation_;
};
#endif /* __ANDROID_CAMERA_DEVICE_H__ */