[libcamera-devel] [PATCH 00/21] Implement control serialization
Jacopo Mondi
jacopo at jmondi.org
Tue Sep 24 19:24:42 CEST 2019
Hello, this series implements and test serialization of Control and
V4L2Controls.
It is based on v2 of the just sent
"[PATCH v2 0/5] libcamera: Control framework backend rework"
The series stats by defining an interface for serializable types, which should
implement the serialize() and deserialize() operations.
It provides an helper class with methods to serialize/deserialize DataValue and
DataInfo types (introduced in the above mentioned series) to a known memory
format. Space optimization are indeed possible, this is just an initial version.
It then makes ControlList and V4L2ControlList containers of DataValue instances
and ControlInfoMap and V4L2ControlInfoMap containers of DataInfo.
Once all types are backed by serializable classes (DataValue and DataInfo) it
is possible to easy implements their serialization/deserialization processes.
Tests are added for all the 4 serializable types.
The last 7 patches, based on the out-of-tree:
"ipa: Remove IPAInterface::init()"
"ipa: Convert the IPA API to plain C"
(here included for reference)
are proof of concept (POC) patches which implements serialization of a
ControlList in the dummy_ipa class, adding support for setting controls to the
cam application. Being POC patches I have not added documentation there, expect
Doxygen warnings on this part of the series.
Thanks
j
Jacopo Mondi (20):
libcamera: utils: Provide an ALIGN macro
libcamera: Define interface for serializable data types
libcamera: Implement serialization helper class
libcamera: controls: Implement ControlList serialization
libcamera: controls: Make ControlInfoMap a class
libcamera: controls: Implement ControlInfoMap serialization
libcamera: v4l2_controls: Make V4L2Control a DataValue
libcamera: v4l2_controls: Implement V4L2ControlList serialization
libcamera: v4l2_controls: Make V4L2ControlInfoMap a class
libcamera: v4l2_controls: Implement V4L2ControlInfoMap serialization
libcamera: controls: Remove explicit from ControlInfo constructor
test: serialization: Add control serialization test
test: serialization: Add control info serialization test
test: serialization: Add V4L2ControlList serialization test
test: serialization: Add V4L2ControlInfoList serialization test
ipa: Convert the IPA API to plain C
POC: Add control related operation to IPA
POC: dummy_ipa: printout deserialize control value
POC: vimc: Initialize and set controls from request
POC: cam: Set random controls
Niklas Söderlund (1):
ipa: Remove IPAInterface::init()
Documentation/Doxyfile.in | 1 +
Documentation/meson.build | 2 +
include/ipa/ipa_interface.h | 27 +-
include/libcamera/controls.h | 36 +-
include/libcamera/meson.build | 1 +
include/libcamera/serializable.h | 44 ++
src/cam/capture.cpp | 12 +
src/cam/capture.h | 2 +
src/ipa/ipa_dummy.cpp | 32 +-
src/ipa/libipa/ipa_interface_wrapper.cpp | 95 ++++
src/ipa/libipa/ipa_interface_wrapper.h | 35 ++
src/ipa/libipa/meson.build | 10 +
src/ipa/meson.build | 3 +
src/libcamera/controls.cpp | 208 ++++++++-
src/libcamera/include/ipa_context_wrapper.h | 33 ++
src/libcamera/include/ipa_module.h | 5 +-
src/libcamera/include/meson.build | 2 +
src/libcamera/include/serializer.h | 93 ++++
src/libcamera/include/utils.h | 2 +
src/libcamera/include/v4l2_controls.h | 45 +-
src/libcamera/ipa_context_wrapper.cpp | 71 +++
src/libcamera/ipa_interface.cpp | 80 +++-
src/libcamera/ipa_manager.cpp | 67 ++-
src/libcamera/ipa_module.cpp | 23 +-
src/libcamera/meson.build | 3 +
src/libcamera/pipeline/uvcvideo.cpp | 6 +-
src/libcamera/pipeline/vimc.cpp | 16 +-
src/libcamera/proxy/ipa_proxy_linux.cpp | 17 +-
.../proxy/worker/ipa_proxy_linux_worker.cpp | 8 +-
src/libcamera/serializable.cpp | 110 +++++
src/libcamera/serializer.cpp | 420 ++++++++++++++++++
src/libcamera/utils.cpp | 11 +
src/libcamera/v4l2_controls.cpp | 242 ++++++++--
src/libcamera/v4l2_device.cpp | 11 +-
test/meson.build | 1 +
test/serialization/control_info_list.cpp | 122 +++++
test/serialization/control_list.cpp | 101 +++++
test/serialization/meson.build | 14 +
test/serialization/serialization_test.cpp | 292 ++++++++++++
test/serialization/serialization_test.h | 86 ++++
test/serialization/v4l2_control_info_list.cpp | 107 +++++
test/serialization/v4l2_control_list.cpp | 114 +++++
42 files changed, 2510 insertions(+), 100 deletions(-)
create mode 100644 include/libcamera/serializable.h
create mode 100644 src/ipa/libipa/ipa_interface_wrapper.cpp
create mode 100644 src/ipa/libipa/ipa_interface_wrapper.h
create mode 100644 src/ipa/libipa/meson.build
create mode 100644 src/libcamera/include/ipa_context_wrapper.h
create mode 100644 src/libcamera/include/serializer.h
create mode 100644 src/libcamera/ipa_context_wrapper.cpp
create mode 100644 src/libcamera/serializable.cpp
create mode 100644 src/libcamera/serializer.cpp
create mode 100644 test/serialization/control_info_list.cpp
create mode 100644 test/serialization/control_list.cpp
create mode 100644 test/serialization/meson.build
create mode 100644 test/serialization/serialization_test.cpp
create mode 100644 test/serialization/serialization_test.h
create mode 100644 test/serialization/v4l2_control_info_list.cpp
create mode 100644 test/serialization/v4l2_control_list.cpp
--
2.23.0
More information about the libcamera-devel
mailing list