Age | Commit message (Collapse) | Author |
|
The MappedFrameBuffer helper class has been updated in the libcamera
source code.
This makes use of the new enum MapFlags type, and corrects the mapping
changes that were made during 8708904fad6f ("libcamera:
mapped_framebuffer: Return plane begin address by MappedBuffer::maps()")
This update also brings back isolated IPA functionality to this external
IPA, which is otherwise broken due to the offset/plane changes.
The files are renamed to mapped_framebuffer to match the naming in
libcamera, but are kept within the 'libcamera-helper' hierarchy of the
IPA.
Also, a minor todo is added to IPAIPU3::mapBuffers, to highlight that we
could potentially map Statistics buffers as read only rather than
read/write if we could correctly identify them.
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
|
The IPU3 interface was updated in 4c1fc33d8ab9 ("libcamera: ipu3: Drop
entityControls map") where the sensor controls are given their own
dedicated control list and is named accordingly.
Update the IPU3 IPA to match the new interface update.
Reviewed-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
|
|
In commit 11fe4333c54d ("libcamera: ipu3: Initialize controls in the
IPA") the interface for the IPA was updated and the creation of exposure
and frame duration controls are now the responsibility of the IPA.
In libcamera, the code that creates these controls was moved to the
integrated IPA for the IPU3.
Duplicate the implementation here.
Acked-by: Umang Jain <umang.jain@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
|
|
During development, the IPA relied upon tuning database files copied
from Chrome OS, duplicated in this repository, and installed in a second
location on the target, in /usr/share/libcamera/ipa/ipu3/. Having two
copies of the same files on the target devices is not only pointless,
it also causes an issue with some Soraka models that use a different
sensor module, with a different tuning file.
Use the tuning files from Chrome OS directly and drop our copies.
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
|
|
In commit 91d06ae2fc61("libcamera: file: Use Flags<> class for open
flags"), type-safe file mode flags are introduced. Adapt our usage
accordingly in BinaryData, which uses the File class from libcamera.
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
|
|
In libcamera commit 6a31a8d8e274 ("libcamera: buffer: Rename buffer.h to
framebuffer.h"), the public header buffer.h was renamed.
Update the usage accordingly.
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
|
|
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
|
|
Utilise the AIQ and AIC libraries to handle image control within the IPU3.
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
|
|
Provide a support layer for the AIC abstraction of the IPU configuration
layer.
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
|
|
Import and construct the IPU3ISPPipe to provide the callback hooks
required by the ia_imaging libraries.
We need to set 'MACRO_KBL_AIC' for rgbir_2500_config
aic config parameter since it's wrapped in #ifdefs
directives.
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
|
|
The Parameter Encoder is imported from the ChromeOS implementation, with
some small changes to fit style and support building independantly.
The parameter encoders have assertions in them to check that the
required input data is valid. ispAwbFrEncode() is currently disabled
due to failing assertions around grid widths.
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
|
|
The AIQ class is the entry point for running IPA algorithms for the
requested frame and handles the statistics being generated. It comprises
of wrapping the ia_aiq_*_run() functions and provide helper functions
that take in the input parameters and location for their results after
the run. These results(AiqResults) can be used for subsequent runs and
setting statistics as required.
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
|
|
This is will be used to convert statistics received from kernel to
AIQ stats format. Specific 3a conversion functions will be added in
IPAIP3Stats in subsequent commits.
ipu3_stats_get_3a() will extract, memcpy each of 3A relevant structures.
It's is intended just before setting the stats for next frame in
AIQ::setStatistics().
It receives ipu3_uapi_stats_3a struct from the kernel. This API will be
developed per parameter of ipu3_uapi_stats_3a struct in subsequent
commit.
IPAIPU3Stats will be responsible to take in the AIQ algorithms results
set and hardware statistics as input and generate(and convert) AIQ
consumable ia_aiq_statistics_input_param structure.
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
|
|
Import the SharedItemPool implementation to managed grid
buffers.
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
|
|
Import the AiqInputParameters structures to facilitate configuring and
managing the algorithms as they run.
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
|
|
The AIQ results structures returned from the AIQ library has many
complex and deeply nested data structures which must be copied out.
This class handles the correct initialisation of a full set of AIQ
results, along with the allocations required, and the ability to copy
data into those structures correctly.
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
|
|
The AIQ class loads data as instances of ia_binary_data.
The data for this structure should be loaded from files, and the
lifetime of the data is managed by the lifetime of the class.
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
|
|
libia_imaging is provided by the ChromeOS system, however the headers
aren't installed at the system's $includedir locations. We need to carry
them in-tree, to be able to use them.
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
|
|
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
|
|
Import the raw Intel IPU3 IPA from libcamera master at revision
b2cc8a2f57333f. Also, copy the build enviroment and adapt the
meson.build to build the shared library.
The ipu3.cpp is now ready for integration with the Intel IPA library.
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
|
|
This libcamera internal class, needs to be imported from
libcamera code base, in order to have standalone ipu3-ipa
build. Other libcamera components required by ipu3-ipa, will
be linked through libcamera_platform.so in subsequent commit.
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
|
|
Provide an IPA implementation for the Intel IPU3 using the Intel IA
Imaging library to handle the image algorithm control and configuration
of the IPU3 hardware.
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
|