[PATCH v3 0/7] Camera synchronisation

David Plowman david.plowman at raspberrypi.com
Thu Jan 9 15:32:04 CET 2025


Hi everyone

Here's what I think is version 3 (?) of this patch set. The main
change here is just that the Sync controls have been made Raspberry Pi
specific. Note also that the "FrameWallClock control" patch is still
here (doesn't appear to have been merged at the time of writing).

Those interested in how a timing offset could be supplied should look
at the 4th patch ("Add wallclock timestamp support"). A proposed
"SyncOffset" control value would get remembered in applyControls(),
and then in processStats() it could be used in place of the offset
value from the SyncStatus (that pops out of the sync algorithm). Hope
that's clear!

Thanks
David

David Plowman (6):
  controls: Add FrameWallClock control
  libcamera: Add ClockRecovery class to generate wallclock timestamps
  controls: Add camera synchronisation controls for Raspberry Pi
  pipeline: rpi:: Add wallclock timestamp support
  ipa: rpi: sync: Add an implementation of the camera sync algorithm
  ipa: rpi: vc4: Update all tuning files for sync algorithm

Naushir Patuck (1):
  ipa: rpi: Add base classes and plumbing for sync algorithm

 include/libcamera/internal/clock_recovery.h   |  68 ++++
 include/libcamera/internal/meson.build        |   1 +
 src/ipa/rpi/common/ipa_base.cpp               |  78 ++++-
 src/ipa/rpi/common/ipa_base.h                 |   4 +-
 src/ipa/rpi/controller/meson.build            |   1 +
 src/ipa/rpi/controller/rpi/sync.cpp           | 330 ++++++++++++++++++
 src/ipa/rpi/controller/rpi/sync.h             |  68 ++++
 src/ipa/rpi/controller/sync_algorithm.h       |  31 ++
 src/ipa/rpi/controller/sync_status.h          |  27 ++
 src/ipa/rpi/vc4/data/imx219.json              |   7 +-
 src/ipa/rpi/vc4/data/imx219_noir.json         |   7 +-
 src/ipa/rpi/vc4/data/imx283.json              |   7 +-
 src/ipa/rpi/vc4/data/imx290.json              |   7 +-
 src/ipa/rpi/vc4/data/imx296.json              |   7 +-
 src/ipa/rpi/vc4/data/imx296_mono.json         |   7 +-
 src/ipa/rpi/vc4/data/imx378.json              |   7 +-
 src/ipa/rpi/vc4/data/imx477.json              |   7 +-
 src/ipa/rpi/vc4/data/imx477_noir.json         |   7 +-
 src/ipa/rpi/vc4/data/imx477_scientific.json   |   7 +-
 src/ipa/rpi/vc4/data/imx519.json              |   7 +-
 src/ipa/rpi/vc4/data/imx708.json              |   7 +-
 src/ipa/rpi/vc4/data/imx708_noir.json         |   7 +-
 src/ipa/rpi/vc4/data/imx708_wide.json         |   7 +-
 src/ipa/rpi/vc4/data/imx708_wide_noir.json    |   7 +-
 src/ipa/rpi/vc4/data/ov5647.json              |   7 +-
 src/ipa/rpi/vc4/data/ov5647_noir.json         |   7 +-
 src/ipa/rpi/vc4/data/se327m12.json            |   7 +-
 src/libcamera/clock_recovery.cpp              | 230 ++++++++++++
 src/libcamera/control_ids_core.yaml           |  15 +
 src/libcamera/control_ids_rpi.yaml            | 113 ++++++
 src/libcamera/meson.build                     |   1 +
 .../pipeline/rpi/common/pipeline_base.cpp     |   5 +
 .../pipeline/rpi/common/pipeline_base.h       |   3 +
 src/libcamera/pipeline/rpi/vc4/vc4.cpp        |  10 +-
 34 files changed, 1086 insertions(+), 25 deletions(-)
 create mode 100644 include/libcamera/internal/clock_recovery.h
 create mode 100644 src/ipa/rpi/controller/rpi/sync.cpp
 create mode 100644 src/ipa/rpi/controller/rpi/sync.h
 create mode 100644 src/ipa/rpi/controller/sync_algorithm.h
 create mode 100644 src/ipa/rpi/controller/sync_status.h
 create mode 100644 src/libcamera/clock_recovery.cpp

-- 
2.39.5



More information about the libcamera-devel mailing list