Files
external_libcamera/src/ipa/meson.build
Andrey Konovalov c987946e43 libcamera: ipa: Add Soft IPA
Define the Soft IPA main and event interfaces, add the Soft IPA
implementation.

The current src/ipa/meson.build assumes the IPA name to match the
pipeline name. For this reason "-Dipas=simple" is used for the
Soft IPA module.

Auto exposure/gain and AWB implementation by Dennis, Toon and Martti.

Auto exposure/gain targets a Mean Sample Value of 2.5 following
the MSV calculation algorithm from:
https://www.araa.asn.au/acra/acra2007/papers/paper84final.pdf

Use CameraSensorHelper to convert the analogue gain code read from the
camera sensor into real analogue gain value. In the future this makes
it possible to use faster AE/AGC algorithm. Right now the CameraSensorHelper
lets us use the full range of analogue gain values.

If there is no CameraSensorHelper for the camera sensor in use, a
warning log message is printed.

Tested-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> # sc8280xp Lenovo x13s
Tested-by: Pavel Machek <pavel@ucw.cz>
Reviewed-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Andrey Konovalov <andrey.konovalov@linaro.org>
Co-developed-by: Dennis Bonke <admin@dennisbonke.com>
Signed-off-by: Dennis Bonke <admin@dennisbonke.com>
Co-developed-by: Marttico <g.martti@gmail.com>
Signed-off-by: Marttico <g.martti@gmail.com>
Co-developed-by: Toon Langendam <t.langendam@gmail.com>
Signed-off-by: Toon Langendam <t.langendam@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2024-04-16 13:00:21 +01:00

81 lines
2.4 KiB
Meson

# SPDX-License-Identifier: CC0-1.0
ipa_includes = [
libcamera_includes,
]
ipa_install_dir = libcamera_libdir
ipa_data_dir = libcamera_datadir / 'ipa'
ipa_sysconf_dir = libcamera_sysconfdir / 'ipa'
config_h.set('IPA_CONFIG_DIR',
'"' + get_option('prefix') / ipa_sysconf_dir +
':' + get_option('prefix') / ipa_data_dir + '"')
config_h.set('IPA_MODULE_DIR',
'"' + get_option('prefix') / ipa_install_dir + '"')
summary({
'IPA_CONFIG_DIR' : config_h.get('IPA_CONFIG_DIR'),
'IPA_MODULE_DIR' : config_h.get('IPA_MODULE_DIR'),
}, section : 'Paths')
subdir('libipa')
ipa_sign = files('ipa-sign.sh')
ipa_names = []
ipa_modules = get_option('ipas')
# Tests require the vimc IPA, similar to vimc pipline-handler for their
# execution. Include it automatically when tests are enabled.
if get_option('test') and 'vimc' not in ipa_modules
message('Enabling vimc IPA to support tests')
ipa_modules += ['vimc']
endif
enabled_ipa_modules = []
enabled_ipa_names = []
ipa_names = []
subdirs = []
foreach pipeline : pipelines
# The current implementation expects the IPA module name to match the
# pipeline name.
# \todo Make the IPA naming scheme more flexible.
if not ipa_modules.contains(pipeline)
continue
endif
enabled_ipa_names += pipeline
# Allow multi-level directory structuring for the IPAs if needed.
pipeline = pipeline.split('/')[0]
if pipeline in subdirs
continue
endif
subdirs += pipeline
subdir(pipeline)
# Don't reuse the pipeline variable below, the subdirectory may have
# overwritten it.
endforeach
# The ipa-sign-install.sh script which uses the enabled_ipa_modules variable
# will itself prepend MESON_INSTALL_DESTDIR_PREFIX to each ipa module name,
# therefore we must not include the prefix string here.
foreach ipa_name : ipa_names
enabled_ipa_modules += ipa_install_dir / ipa_name + '.so'
endforeach
if ipa_sign_module
# Regenerate the signatures for all IPA modules. We can't simply install the
# .sign files, as meson strips the DT_RPATH and DT_RUNPATH from binaries at
# install time, which invalidates the signatures.
meson.add_install_script('ipa-sign-install.sh',
ipa_priv_key.full_path(),
enabled_ipa_modules,
install_tag : 'runtime')
endif