.gear/rules | 2 + .../tags/9e3a83c03bab65b745eea2482be78077b409a2b5 | 158 ++++++++++++++++++ .gear/tags/list | 1 + libcamera.spec | 181 +++++++++++++++++++++ 4 files changed, 342 insertions(+) diff --git a/.gear/rules b/.gear/rules new file mode 100644 index 00000000..4b0460ca --- /dev/null +++ b/.gear/rules @@ -0,0 +1,2 @@ +tar: v@version@:. +diff: v@version@:. . diff --git a/.gear/tags/9e3a83c03bab65b745eea2482be78077b409a2b5 b/.gear/tags/9e3a83c03bab65b745eea2482be78077b409a2b5 new file mode 100644 index 00000000..8a9b6d34 --- /dev/null +++ b/.gear/tags/9e3a83c03bab65b745eea2482be78077b409a2b5 @@ -0,0 +1,158 @@ +object 668a5e674aed65b8982b449b4bed58ff7e3e1413 +type commit +tag v0.1.0 +tagger Kieran Bingham 1689508000 +0100 + +libcamera v0.1.0 + +ABI Compliance: + +abi-compliance-checker reports 99% binary compatibility and 81.4% source +compatibilty between version 0.0.5 and 0.1. + + - Binary compatibility: 99% + - Source compatibility: 81.4% + - Total binary compatibility problems: 4, warnings: 2 + - Total source compatibility problems: 165, warnings: 7 + +Now that we have funtional ABI validation, the soname has been updated from +libcamera.so.0.0.5 to libcamera.so.0.1. + +Future releases will now maintain the same soname until an ABI breakage is +detected to reduce the repackaging and rebuilding of other components that may +use libcamera. The abi-compatibility report can now be generated with the new +utility './utils/abi-compat.sh'. + +Key differences here are due to preventing the installation of internal and +private headers in the packaging process, and most of this API compatibility +should not be visible to applications with the exception of: + +- Camera::generateConfiguration ( StreamRoles const& roles ) + + The StreamRoles type definition has been removed. This is now handled as a + Span to prevent unnecessary allocations and copies. + +- CameraManager::addCamera ( std::shared_ptr camera, std::vectorconst& devnums ) +- CameraManager::get ( dev_t devnum ) +- CameraManager::removeCamera ( std::shared_ptr camera ) + + These functions of the CameraManager were for use exclusively by the V4L2 + adaptation layer, and not intended for use by applications. This has now been + reworked to use the new SystemDevices and the redundant functions removed. + +The ABI/API breakages have been introduced by: + + 5ca0c9276f28 ("libcamera: CameraManager: Remove ::get(dev_t)") + 26a4b83d1b94 ("libcamera: Remove `StreamRoles` alias") + 63966ae587d7 ("libcamera: base: Do not install private headers") + +Core: + - libcamera: v4l2_videodevice: Use O_CLOEXEC when exporting DMA buffers + - libcamera: ipa_manager: Allow IPA loading in nested subdirs + - meson: Fix usage of overwritten pipeline variable + - subprojects: Drop leftovers of pybind11 + - camera_sensor: ipa: core: Add CFA pattern to IPACameraSensorInfo + - libcamera: controls: Define a default lens position behaviour + - libcamera: internal: request: convert to pragma once + - libcamera: camera_manager: Move private implementation to internal + - libcamera: camera_manager: Move {add,remove}Camera to internal + - libcamera: properties: Provide a Devices camera property + - libcamera: pipeline: Register device numbers with camera + - libcamera: camera_sensor: Adjust properties::Rotation + - libcamera: meson: Allow PH to change libcamera_deps + - libcamera: base: Move thread_annotations to private + - libcamera: base: Do not install private headers + - utils: ABI Compatibility checker + - meson: Use x.y soname versioning + - libcamera: camera: Take span of StreamRole instead of vector + - libcamera: Remove `StreamRoles` alias + - utils: ipu3-capture.sh: Fix the script to work with recent media-ctl versions + - Documentation: Add predefined macros from config.h to Doxyfile + - utils: checkstyle: Add __repr__ method to CommitFile class + - utils: checkstyle: Support running checkers selectively + - utils: checkstyle: Don't include commit ID in commit title + - utils: checkstyle: Add trailers checker + - tests: gstreamer: Test cameras' enumeration from GstDeviceProvider + - meson: Fix space around colon issues + - libcamera: Add option to configure udev support + - libcamera: CameraManager: Remove ::get(dev_t) + - tests: gstreamer: Fix compiler error with gcc 8.4.0 + +ipa: + - meson: ipa: Add mapping for pipeline handler to mojom interface file + - libcamera: ipa: Remove character restriction on the IPA name + - ipa: meson: Allow nested IPA directory structures + - ipa: raspberrypi: Introduce IpaBase class + - ipa: raspberrypi: agc: Move weights out of AGC + - ipa: rkisp1: agc: drop hard-coded analogue gain range + - libipa: camera_sensor_helper: Add IMX327 helper + - pipeline: rpi: ipa_base: Parse config files after platformRegister() + - libcamera: camera_sensor: Add Sony IMX327 sensor properties + - ipa: rpi: imx296: Small refinements to the IMX296 mono sensor tuning + - ipa: rpi: Handle controls for mono variant sensors + - libcamera: controls: Drop reference to IPA in controls documentation + - libipa: camera_sensor_helper: Restore alphabetical order + - ipa: ipu3: agc: Drop hard-codec analogue gain max + - ipa: rkisp1: agc: Restore minimum analogue gain limit + - pipeline: ipa: rpi: Return lens controls from ipa->configure() + - ipa: rpi: Set lens position to hyperfocal on startup + - ipa: rpi: tunings: Add missing short and long exposure profiles + - ipa: rpi: agc: Use std::string instead of char arrays + - ipa: rpi: agc: Gracefully handle missing agc modes + - ipa: rpi: agc: Do not switch to a default if a mode is unavailable + - ipa: rpi: imx708: Fix mode switch drop frame count + - ipa: rpi: imx296_mono: Disable all colour shading + +pipeline: + - libcamera: pipeline: simple: Add support for ST's DCMIPP + - pipeline: meson: Allow nested pipeline handler directory structures + - pipeline: ipa: raspberrypi: Refactor and move the Raspberry Pi code + - pipeline: raspberrypi: rpi_stream: Set invalid buffer to id == 0 + - pipeline: ipa: raspberrypi: Restructure the IPA mojom interface + - pipeline: raspberrypi: Make RPi::Stream::name() return const std::string & + - pipeline: raspberrypi: Introduce PipelineHandlerBase class + - pipeline: raspberrypi: Add stream flags to RPi::Stream + - libcamera: rkisp1: Generate config using main path + - libcamera: rkisp1: Crop on ISP before downscaling + - libcamera: rkisp1: Assign sizes to roles + - libcamera: rkisp1: Fix enumeration of RAW formats + - pipeline: rpi: Do not return an error from pipeline config file handling + - libcamera: pipeline: simple: Support TI CSI-RX + - pipeline: rpi: Account for Bayer packing when validating format + +apps: + - apps: qcam: Remove redundant check + - v4l2: Move the v4l2 compat layer to libexec/libcamera + - android: mm: generic: use GRALLOC_HARDWARE_MODULE_ID + - android: mm: Stub libhardware for build tests + - py: Fix CameraManager.version property + - py: Move ColorSpace and Transform classes to separate files + - py: Use exceptions instead of returning error codes + - py: unittests.py: Add weakref helpers and use del + - py: Move to mainline pybind11 version + - py: Fix code formatting + - py: unittests.py: Fix type checker warnings + - gstreamer: Add enable_auto_focus option to the GStreamer plugin + - gstreamer: Drop libcamera_private dependency + - apps: Add ipa-verify application + - v4l2: v4l2_camera_proxy: Prevent ioctl sign-extensions + - v4l2: Use SystemDevices properties to identify cameras + +Signed-off-by: Kieran Bingham +-----BEGIN PGP SIGNATURE----- + +iQJUBAABCgA+FiEEkC3XmD+9KP3jctR6oR5GchCkYf0FAmSz2KAgHGtpZXJhbi5i +aW5naGFtQGlkZWFzb25ib2FyZC5jb20ACgkQoR5GchCkYf3pwg//eNcbeb5SeWfH +CexME0ZOkyr/qlqowb0QfuTLTndwLtcj4EXEN6MwsgaVu0usAMbyu89QHnlAsiyF +uzShmpmZj67iXyu0Ce+PgptGesF/3Te/bmzKqex6pnpAPqiWkqjdxQdBicY1tLvO +i7MZGLX00C0wj25vKj/MHD5QeiGtpEU+hCTu8vjWcaX7K57M2JGYX0PB3F5YmDPk +JYe89Bf5Iyjl1CnnRmxftw/a2sccC/ng8EQHA67oe8AVe29LBOyD7a3Rckfegy/q +DJJ/VceP29+kKzVrLhtc6fcJvDX8Fd2qjV9zHQqiLjzclQDO2aoH6JvHcumK72K3 +vjAnX0dmBeO7onZSoy5rCiOcu9R1P7Xf//VpgL9lSp2iJF9PTfOmTV2C/LGvjsgN +W4YZG88YvoanEzmW2P8A0HY4cI/ZcXhbqHzKtvbkwNiunxMZKKh+GNdHLPM2/pAn +F7EbDeTSWsOVVKSBArLYS5nhEF+2YsRSeqiVKT6GobG+dMpcxtICjj/mYDnmUy2e +9oD3RIFgB0iaFqCjp4jShAedlbHcbtHRMGtz5sQytm7pA8pJyrR125PaD/MxPuMO +YnGLrtYW1HZviby7itFzacVWmw1ExsQDGfpyMt+f1H8ukmLwC/bA6GRsPgTdLJny +aUqc6yQ03g1DJIa+jAFHTbb51v3HWg8= +=xvVI +-----END PGP SIGNATURE----- diff --git a/.gear/tags/list b/.gear/tags/list new file mode 100644 index 00000000..67ef308c --- /dev/null +++ b/.gear/tags/list @@ -0,0 +1 @@ +9e3a83c03bab65b745eea2482be78077b409a2b5 v0.1.0 diff --git a/libcamera.spec b/libcamera.spec new file mode 100644 index 00000000..fccf776a --- /dev/null +++ b/libcamera.spec @@ -0,0 +1,181 @@ +%define _libexecdir %_prefix/libexec + +%def_enable test +%def_disable check + +Name: libcamera +Version: 0.1.0 +Release: alt2 +Epoch: 1 + +Summary: A complex camera support library for Linux +License: LGPL-2.1-or-later +Group: Video +Url: https://libcamera.org/ + +Source: %name-%version.tar +Patch: %name-%version-%release.patch + +BuildRequires(pre): rpm-macros-meson +BuildRequires: gcc-c++ meson >= 0.56 +BuildRequires: openssl boost-devel qt5-tools-devel +BuildRequires: pkgconfig(gnutls) +BuildRequires: pkgconfig(gstreamer-1.0) +BuildRequires: pkgconfig(gstreamer-video-1.0) +BuildRequires: pkgconfig(gstreamer-allocators-1.0) +BuildRequires: pkgconfig(libevent_pthreads) +BuildRequires: pkgconfig(Qt5Core) +BuildRequires: pkgconfig(Qt5Gui) +BuildRequires: pkgconfig(Qt5Widgets) +BuildRequires: pkgconfig(udev) +BuildRequires: pkgconfig(yaml-0.1) +BuildRequires: pkgconfig(libexif) +BuildRequires: pkgconfig(libtiff-4) +BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(libjpeg) +BuildRequires: pkgconfig(sdl2) +BuildRequires: python3(jinja2) +BuildRequires: python3(yaml) +BuildRequires: python3(ply) +%{?_enable_test:BuildRequires: pkgconfig(gtest)} + +%package -n gst-plugins-%{name}1.0 +Summary: A complex camera support library for Linux +Group: System/Libraries + +%package -n qcam +Summary: A complex camera support library for Linux +Group: Video + +%package devel +Summary: A complex camera support library for Linux +Group: Development/C + +%description +An open source camera stack and framework for Linux, Android, and ChromeOS. + +%description -n gst-plugins-%{name}1.0 +An open source camera stack and framework for Linux, Android, and ChromeOS. +This package contains libcamera gstreamer plugin. + +%description -n qcam +An open source camera stack and framework for Linux, Android, and ChromeOS. +This package contains Qt-based libcamera utility. + +%description devel +An open source camera stack and framework for Linux, Android, and ChromeOS. +This package contains development part of libcamera. + +%prep +%setup +%patch -p1 + +%ifarch %e2k +sed -i "s|_symbol('QOpenGLWidget', |(|" src/apps/qcam/meson.build +# workaround for EDG frontend +sed -i "s|g_autofree gchar \*|g_autofree_edg(gchar) |" src/gstreamer/gstlibcamerasrc.cpp +sed -i "s|\"caps\", caps|\"caps\", (GstCaps*)caps|" src/gstreamer/gstlibcameraprovider.cpp +%endif + +%ifarch armh +%define platdefs auto +%endif +%ifarch aarch64 +%define platdefs auto +%endif +%ifarch %ix86 x86_64 +%define platdefs auto +%endif +%ifnarch armh aarch64 %ix86 x86_64 +%define platdefs uvcvideo +%endif + +%build +%add_optflags %(getconf LFS_CFLAGS) +%meson \ + -Dpipelines=%platdefs \ + -Dv4l2=true \ + -Dwerror=false \ + %{?_enable_test:-Dtest=true} +%nil +%meson_build + +%install +%meson_install +mkdir -p %buildroot%_libdir/libcamera %buildroot%_datadir/libcamera + +%check +%__meson_test -v + +%files +%_bindir/cam +%{?_enable_test:%_bindir/lc-compliance +%_libexecdir/%name/vimc_ipa_proxy} +%_bindir/libcamerify +%ifarch %ix86 x86_64 +%_libexecdir/%name/ipu3_ipa_proxy +%endif +%ifarch aarch64 +%_libexecdir/%name/raspberrypi_ipa_proxy +%_libexecdir/%name/rkisp1_ipa_proxy +%endif +%ifarch armh +%_libexecdir/%name/raspberrypi_ipa_proxy +%_libexecdir/%name/rkisp1_ipa_proxy +%endif +%_libdir/%name +%_libdir/%name-base.so.* +%_libdir/%name.so.* +# moved to libexecdir since 0.1.0 +%_libexecdir/%name/v4l2-compat.so +%_datadir/%name/ + +%files -n gst-plugins-%{name}1.0 +%_libdir/gstreamer-1.0/* + +%files -n qcam +%_bindir/qcam + +%files devel +%_includedir/%name +%_libdir/%name-base.so +%_libdir/%name.so +%_pkgconfigdir/%name-base.pc +%_pkgconfigdir/%name.pc + +%changelog +* Fri Jul 21 2023 Yuri N. Sedunov 1:0.1.0-alt2 +- set 'pipelines' to 'auto' for %%ix86, x86_64, aarch64 and armh + +* Thu Jul 20 2023 Yuri N. Sedunov 1:0.1.0-alt1 +- 0.1.0 + +* Tue May 02 2023 Yuri N. Sedunov 1:0.0.5-alt1.1 +- 0.0.5 + +* Thu Apr 27 2023 Michael Shigorin 1:0.0.4-alt1.1 +- E2K: updated sed patch + +* Sun Feb 05 2023 Yuri N. Sedunov 1:0.0.4-alt1 +- 0.0.4 + +* Mon Dec 26 2022 Yuri N. Sedunov 1:0.0.3-alt1 +- updated to v0.0.3-10-g0a8ac1ee + +* Thu Nov 24 2022 Yuri N. Sedunov 1:0.0.2-alt1 +- 0.0.2 + +* Mon Oct 17 2022 Yuri N. Sedunov 1:0.0.1-alt1 +- v0.0.1 release + +* Thu Sep 16 2021 Ilya Kurdyukov 0.0.20210204-alt3 +- fixes for Elbrus build + +* Fri Apr 02 2021 Sergey Bolshakov 0.0.20210204-alt2 +- fix build with recent gstreamer + +* Thu Feb 04 2021 Sergey Bolshakov 0.0.20210204-alt1 +- updated from git.336de7af + +* Tue Nov 03 2020 Sergey Bolshakov 0.0.20201028-alt1 +- initial