[libcamera-devel] [PATCH v2 8/8] android: camera_device: Add stream mapping log

Jacopo Mondi jacopo at jmondi.org
Fri Sep 18 15:50:41 CEST 2020


To ease following how Android stream gets mapped onto libcamera ones
add a (quite verbose) printout before queueing a request to libcamera.

The output looks like:
 0 -  (320x240)[0x00000022] -> (320x240)[NV12] (external)
 1 -  (640x480)[0x00000021] -> (640x480)[NV12] (internal)

Reviewed-by: Hirokazu Honda <hiroh at chromium.org>
Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
 src/android/camera_device.cpp | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index f7e9a1e5f494..a442495563a6 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -1474,9 +1474,12 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques
 	Request *request =
 		camera_->createRequest(reinterpret_cast<uint64_t>(descriptor));
 
+	LOG(HAL, Debug) << "Queueing Request to libcamera with "
+			<< descriptor->numBuffers << " streams";
 	for (unsigned int i = 0; i < descriptor->numBuffers; ++i) {
+		camera3_stream *camera3Stream = camera3Buffers[i].stream;
 		CameraStream *cameraStream =
-			static_cast<CameraStream *>(camera3Buffers[i].stream->priv);
+			static_cast<CameraStream *>(camera3Stream->priv);
 		const StreamConfiguration &config = config_->at(cameraStream->index());
 		Stream *stream = config.stream();
 
@@ -1487,9 +1490,18 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques
 		descriptor->buffers[i].stream = camera3Buffers[i].stream;
 		descriptor->buffers[i].buffer = camera3Buffers[i].buffer;
 
-		/* Mapped streams don't need to be added to the Request. */
-		if (cameraStream->type() == CameraStream::Type::Mapped)
+		std::stringstream ss;
+		ss << i << " - ("
+		   << camera3Stream->width << "x" << camera3Stream->height << ")"
+		   << "[" << utils::hex(camera3Stream->format) << "] -> "
+		   << "(" << config.size.toString() << ")["
+		   << config.pixelFormat.toString() << "]";
+
+		/* Mapped streams don't need buffers added to the Request. */
+		if (cameraStream->type() == CameraStream::Type::Mapped) {
+			LOG(HAL, Debug) << ss.str() << " (mapped)";
 			continue;
+		}
 
 		FrameBuffer *buffer;
 		if (cameraStream->type() == CameraStream::Type::Direct) {
@@ -1501,7 +1513,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques
 			 */
 			buffer = createFrameBuffer(*camera3Buffers[i].buffer);
 			descriptor->frameBuffers.emplace_back(buffer);
-
+			LOG(HAL, Debug) << ss.str() << " (external)";
 		} else {
 			/*
 			 * Get the frame buffer from the CameraStream internal
@@ -1513,6 +1525,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques
 			 * allocator once it has been processed.
 			 */
 			buffer = getBuffer(stream);
+			LOG(HAL, Debug) << ss.str() << " (internal)";
 		}
 		if (!buffer) {
 			LOG(HAL, Error) << "Failed to create buffer";
-- 
2.28.0



More information about the libcamera-devel mailing list