[libcamera-devel] [PATCH v1 09/10] pipeline: raspberrypi: Add minimal memory usage config file

Naushir Patuck naush at raspberrypi.com
Fri Oct 14 15:18:45 CEST 2022


Add a platform configuration file that allocates the least amount of frame
buffer memory possible. This configuration does come with the following
compromises:

- Startup frame drops are disabled, so the first few frames will not have
fully converged AE/AWB/ALSC applied.

- Applications must provide ISP Output0 and Unicam Image (if a RAW stream is
configured) buffers in requests.

- Only 1 Unicam Image buffer will be allocated if a RAW stream is not
configured, causing the framerate to be effectively halved.

To use the configuration on the Raspberry Pi platform, invoke the application
with the following prepended to the command line:

LIBCAMERA_RPI_CONFIG_FILE=/usr/local/share/libcamera/pipeline/raspberrypi/minimal_memory.json

Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
---
 .../pipeline/raspberrypi/data/meson.build     |  1 +
 .../raspberrypi/data/minimal_mem.json         | 28 +++++++++++++++++++
 2 files changed, 29 insertions(+)
 create mode 100644 src/libcamera/pipeline/raspberrypi/data/minimal_mem.json

diff --git a/src/libcamera/pipeline/raspberrypi/data/meson.build b/src/libcamera/pipeline/raspberrypi/data/meson.build
index 232f8b43c5fd..0592fc53877d 100644
--- a/src/libcamera/pipeline/raspberrypi/data/meson.build
+++ b/src/libcamera/pipeline/raspberrypi/data/meson.build
@@ -2,6 +2,7 @@
 
 conf_files = files([
     'default.json',
+    'minimal_mem.json',
 ])
 
 install_data(conf_files,
diff --git a/src/libcamera/pipeline/raspberrypi/data/minimal_mem.json b/src/libcamera/pipeline/raspberrypi/data/minimal_mem.json
new file mode 100644
index 000000000000..fb306aa08f94
--- /dev/null
+++ b/src/libcamera/pipeline/raspberrypi/data/minimal_mem.json
@@ -0,0 +1,28 @@
+{
+        "version": 1.0,
+        "target": "bcm2835",
+
+        "pipeline_handler":
+        {
+                # The minimum number of internal buffers to be allocated for Unicam.
+                # This value must less than or equal to min_total_unicam_buffers.
+                "min_unicam_buffers": 0,
+
+                # The minimum total (internal + external) buffer count used for Unicam.
+                # The number of internal buffers allocated for Unicam is given by:
+                # internal buffer count = max(min_unicam_buffers,
+                #                             min_total_unicam_buffers - external buffer count)
+                "min_total_unicam_buffers": 1,
+
+                # The number of internal buffers used for ISP Output0.
+                "num_output0_buffers": 0,
+
+                # Override any request from the IPA to drop a number of startup frames.
+                "disable_startup_frame_drops": true,
+
+                # Always process a pending request with the last captured sensor frame.
+                # Note that this might lead to avoidable frame drops during periods
+                # of transient heavey CPU loading.
+                "return_newest_frames": false
+        }
+}
-- 
2.25.1



More information about the libcamera-devel mailing list