libcamera/utils
Jacopo Mondi 7fde7c7aeb ipa: proxy_worker: Reset ControlSerializer on worker
When running the IPA in isolated mode, each side of the IPC boundary
has an instance of the ControlSerializer class which is used to
serializer/deserialize controls before transmitting them on the wire.

The IPAProxyWorker, which creates and manages the process the IPA runs in,
does not reset its ControlSerializer upon an IPA::configure() call, while
the IPAProxy does, effectively creating a misalignment between the
two sides of the fence.

This obviously creates issues as one side of the IPC runs with a
populated and possibly stale cache of ControlInfoMap references, while the
other side gets reset every time a new configuration is applied to the
Camera.

Fix that by resetting the IPAProxyWorker ControlSerializer on an
IPA configure() call.

This change fixes an issue which is easily triggered by running two
consecutive capture sessions with the IPA running in isolated mode:
ERROR Serializer control_serializer.cpp:520 Can't deserialize ControlList: unknown ControlInfoMap

Fixes: 7832e19a59 ("utils: ipc: add templates for code generation for IPC mechanism")
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2021-09-27 14:35:51 +02:00
..
hooks utils: hooks: pre-push: Reject commits with a Change-Id 2020-11-02 01:03:31 +02:00
ipc ipa: proxy_worker: Reset ControlSerializer on worker 2021-09-27 14:35:51 +02:00
ipu3 licenses: License all meson files under CC0-1.0 2020-05-13 16:46:24 +03:00
raspberrypi utils: raspberrypi: ctt: Fix namespace for sklearn NearestCentroid function 2021-08-03 10:54:26 +03:00
rkisp1 utils: rkisp1: Don't enable immutable link 2020-03-20 01:44:57 +01:00
tracepoints utils: tracepoints: Add simple statistics script 2020-11-03 11:33:41 +09:00
checkstyle.py utils: checkstyle.py: Use single-quoted strings when possible 2021-08-27 19:26:03 +03:00
gen-controls.py utils: gen-controls: Fix enumerators documentation 2020-12-27 12:28:00 +02:00
gen-formats.py utils: gen-formats: Support big-endian DRM formats 2021-02-01 22:33:55 +02:00
gen-header.sh libcamera: Move Header generation utilities to utils 2020-09-24 10:55:49 +01:00
gen-ipa-priv-key.sh libcamera: ipa: Move key generation to utils 2020-09-24 10:56:22 +01:00
gen-ipa-pub-key.py libcamera: ipa: Move key generation to utils 2020-09-24 10:56:22 +01:00
gen-version.sh libcamera: Add build time to version string for dirty builds 2020-08-06 16:20:15 +02:00
meson.build README, meson: Add dependency on ply and jinja2 for IPA interface generation 2020-11-11 19:23:16 +09:00
update-kernel-headers.sh utils: Add kernel headers update script 2021-03-08 16:54:29 +02:00
update-mojo.sh utils: update-mojo.sh: Add script for updating mojo 2021-05-26 13:03:12 +09:00