[libcamera-devel] [PATCH 10/10] android: libcamera: add useful debug prints
Jacopo Mondi
jacopo at jmondi.org
Thu Oct 27 18:55:45 CEST 2022
Hi Nicholas
On Thu, Oct 27, 2022 at 12:55:15AM -0500, Nicholas Roth via libcamera-devel wrote:
> From: Nicholas Roth <nicholas at rothemail.net>
>
> I identified opportunities to make libcamera's log output easier to
> understand while working to get it working on my Android device as a
> HAL. These additional logging statements came out of that and will
> hopefully prove useful to Android distribution maintainers with the same
> goal as mine and to users who attempt to debug tools like Waydroid.
>
> Signed-off-by: Nicholas Roth <nicholas at rothemail.net>
> ---
> src/android/camera_capabilities.cpp | 12 +++++++++---
> src/android/camera_hal_manager.cpp | 3 ++-
> src/libcamera/base/log.cpp | 4 +++-
> src/libcamera/v4l2_subdevice.cpp | 2 +-
> 4 files changed, 15 insertions(+), 6 deletions(-)
>
> diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp
> index 64bd8dde..ef0d10d0 100644
> --- a/src/android/camera_capabilities.cpp
> +++ b/src/android/camera_capabilities.cpp
> @@ -374,14 +374,20 @@ void CameraCapabilities::computeHwLevel(
> camera_metadata_enum_android_info_supported_hardware_level
> hwLevel = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_FULL;
>
> - if (!caps.count(ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR))
> + if (!caps.count(ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR)) {
> + LOG(HAL, Info) << noFull << "missing manual sensor";
> hwLevel = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED;
> + }
>
> - if (!caps.count(ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING))
> + if (!caps.count(ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MANUAL_POST_PROCESSING)) {
> + LOG(HAL, Info) << noFull << "missing manual post processing";
> hwLevel = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED;
> + }
>
> - if (!caps.count(ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE))
> + if (!caps.count(ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE)) {
> + LOG(HAL, Info) << noFull << "missing burst capture";
> hwLevel = ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED;
> + }
Fine with me if it makes things easier for you
>
> found = staticMetadata_->getEntry(ANDROID_SYNC_MAX_LATENCY, &entry);
> if (!found || *entry.data.i32 != 0) {
> diff --git a/src/android/camera_hal_manager.cpp b/src/android/camera_hal_manager.cpp
> index 7512cc4e..7fac4e3f 100644
> --- a/src/android/camera_hal_manager.cpp
> +++ b/src/android/camera_hal_manager.cpp
> @@ -140,7 +140,8 @@ void CameraHalManager::cameraAdded(std::shared_ptr<Camera> cam)
> */
> if (!isCameraExternal && !halConfig_.exists()) {
> LOG(HAL, Error)
> - << "HAL configuration file is mandatory for internal cameras";
> + << "HAL configuration file is mandatory for internal cameras."
> + << " Camera NOT loaded: \"" << cam->id() << "\"";
that capital "NOT" is a bit bold :)
If you want to add information I would maybe
<< " Camera " << cam->id() << " failed to load";
I don't think you need "" around the camera id (we don't have it in
the other error messages)
> return;
> }
>
> diff --git a/src/libcamera/base/log.cpp b/src/libcamera/base/log.cpp
> index 55fbd7b0..88800158 100644
> --- a/src/libcamera/base/log.cpp
> +++ b/src/libcamera/base/log.cpp
> @@ -625,8 +625,10 @@ void Logger::parseLogFile()
> void Logger::parseLogLevels()
> {
> const char *debug = utils::secure_getenv("LIBCAMERA_LOG_LEVELS");
> - if (!debug)
> + if (!debug) {
> + syslog(LOG_INFO, "Could not find LIBCAMERA_LOG_LEVELS in env");
> return;
> + }
This doesn't seems something to report everytime the library is loaded
>
> for (const char *pair = debug; *debug != '\0'; pair = debug) {
> const char *comma = strchrnul(debug, ',');
> diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp
> index 15e8206a..f3e25b86 100644
> --- a/src/libcamera/v4l2_subdevice.cpp
> +++ b/src/libcamera/v4l2_subdevice.cpp
> @@ -392,7 +392,7 @@ int V4L2Subdevice::getSelection(unsigned int pad, unsigned int target,
> if (ret < 0) {
> LOG(V4L2, Error)
> << "Unable to get rectangle " << target << " on pad "
> - << pad << ": " << strerror(-ret);
> + << pad << ": " << strerror(-ret) << ".";
Do we end all other error messages with a full stop ? Why this one
should ?
> return ret;
> }
>
> --
> 2.34.1
>
More information about the libcamera-devel
mailing list