[libcamera-devel] [PATCH v2 0/5] libcamera: pipeline: Add Intel IPU3 pipeline handler
Jacopo Mondi
jacopo at jmondi.org
Wed Jan 16 14:59:44 CET 2019
Hello second iteration for the IPU3 pipeline manager.
Dropped from the series the awkward patch than made Camera's destructors public
and used them in VIMC and IPU3 pipeline handler. Cameras are just "put" at
pipeline handler destruction time. This will possibly be reworked when the
lifetime of Camera devices will be re-worked.
I have here added a patch to actually set (and get) a MediaEntity devnode path,
and a little patch to make the pipeline handlers name a bit more expressive than
just the class names.
On the real meat of the series: the IPU3 pipeline handler. I included
suggestions from Niklas and Laurent on re-ordering the media device acquisition,
and made a bit more clear what is going on when operating on maps as suggested
by Kieran. Also, I made sure camera names are now unique in the system.
Overall, I have expanded comments as bit, as I agree with Niklas this class
should serve as example for future pipeline handlers, so it is worth having a
few comments more than necessary there.
I have kept in patch [1/5] modifications to the list-cameras test, even if I
have there included comments received on v1. I assume more comments will arrive
on this.
Tested on Soraka, where cameras gets enumerated as:
root at libcamera:/home/cam/libcamera_deploy# ./test/list-cameras
[3:07:00.815060285] DBG pipeline_handler.cpp:119 Registered pipeline handler "VIMC virtual driver pipeline handler"
[3:07:00.815296070] DBG pipeline_handler.cpp:119 Registered pipeline handler "Intel IPU3 pipeline handler"
[3:07:00.816056718] DBG device_enumerator.cpp:214 New media device "ipu3-imgu" created from /dev/media1
[3:07:00.816625144] DBG device_enumerator.cpp:214 New media device "ipu3-cio2" created from /dev/media0
[3:07:00.817116059] DBG device_enumerator.cpp:255 Successful match for media device "ipu3-cio2"
[3:07:00.817132343] DBG device_enumerator.cpp:255 Successful match for media device "ipu3-imgu"
[3:07:00.817157509] DBG media_device.cpp:672 ov13858 2-0010[0] -> ipu3-csi2 0[0]: 0
[3:07:00.817165563] DBG media_device.cpp:672 ov5670 4-0036[0] -> ipu3-csi2 1[0]: 0
[3:07:00.817198891] DBG media_device.cpp:672 ov13858 2-0010[0] -> ipu3-csi2 0[0]: 1
[3:07:00.817232593] INFO ipu3.cpp:249 Registered Camera[0] "ov13858 0" connected to CSI-2 receiver 0
[3:07:00.817247081] DBG media_device.cpp:672 ov5670 4-0036[0] -> ipu3-csi2 1[0]: 1
[3:07:00.817258419] INFO ipu3.cpp:249 Registered Camera[1] "ov5670 1" connected to CSI-2 receiver 1
[3:07:00.817269201] DBG ipu3.cpp:147 "Intel IPU3" pipeline handler initialized with 2 cameras registered
[3:07:00.817279348] DBG pipeline_handler.cpp:150 Pipeline handler "Intel IPU3 pipeline handler" matched
Found camera 'ov13858 0
Found camera 'ov5670 1
Thanks
j
Jacopo Mondi (5):
test: list-cameras: Make test output more verbose
libcamera: media_object: Add functions to entities
libcamera: media_object: Set devnode in MediaEntity
libcamera: pipeline: Allows more expressive names
libcamera: pipeline: Add Intel IPU3 pipeline
src/libcamera/include/media_object.h | 3 +
src/libcamera/include/pipeline_handler.h | 4 +-
src/libcamera/media_object.cpp | 33 ++-
src/libcamera/pipeline/ipu3/ipu3.cpp | 263 +++++++++++++++++++++++
src/libcamera/pipeline/ipu3/meson.build | 3 +
src/libcamera/pipeline/meson.build | 2 +
src/libcamera/pipeline/vimc.cpp | 2 +-
test/list-cameras.cpp | 41 +++-
8 files changed, 335 insertions(+), 16 deletions(-)
create mode 100644 src/libcamera/pipeline/ipu3/ipu3.cpp
create mode 100644 src/libcamera/pipeline/ipu3/meson.build
--
2.20.1
More information about the libcamera-devel
mailing list