libcamera 的第一个版本,这是一个用于支持摄像头的堆栈。 Linux

经过四年的开发,libcamera 项目的第一个版本(0.0.1)已经发布,它提供了一个用于操作摄像机、照相机和电视调谐器的软件栈。 Linux, Android ChromeOS 将继续开发 V4L2 API,并最终将其替换为 V4L2。由于该库的 API 仍在不断发展且尚未完全稳定,因此该项目一直采用持续开发模式,没有发布单独的版本。为了满足发行版跟踪影响兼容性的 API 变更以及简化库打包的需求,现在决定定期发布版本,以反映 ABI 和 API 的变更程度。该项目的代码使用 C++ 编写,并采用 LGPLv2.1 许可证。

该项目由多媒体内核子系统的开发人员开发。 Linux 与一些相机制造商合作,以期通过提供支持来使情况正常化。 Linux 智能手机和嵌入式设备的摄像头都依赖于专有驱动程序。内核中已经包含了这些功能。 Linux V4L2 API 最初是为与传统独立网络摄像头配合使用而设计的,但对于最近将 MCU 功能转移到 CPU 的趋势,它适应性较差。

传统相机的主要图像处理操作是在相机内置的专用处理器 (MCU) 上执行,而在嵌入式设备中,为了降低成本,这些功能由主 CPU 承担,需要复杂的驱动程序来执行。包括非开源许可组件。 作为 libcamera 项目的一部分,开源软件支持者和硬件制造商试图创建一个折衷的解决方案,一方面满足开源软件开发人员的需求,另一方面可以保护相机制造商的知识产权。

libcamera提供的协议栈完全在用户空间实现。为了确保与现有软件环境和应用程序的兼容性,它为V4L、Gstreamer和其他API提供了互操作层。 Android 相机硬件抽象层 (HAL)。相机专用的专有硬件交互组件以模块的形式实现,运行在独立的进程中,并通过进程间通信 (IPC) 与库进行通信。这些模块无法直接访问设备,而是通过中间 API 访问硬件。请求会经过验证、过滤,并限制为仅访问控制相机所需的功能。

该库还提供对用于处理和提高图像和视频质量的算法的访问(白平衡调整、降噪、视频稳定、自动对焦、曝光选择等),这些算法可以以开放外部库或专有库的形式连接隔离模块。 该 API 提供对多种功能的访问,例如确定现有外部和内置摄像头的功能、使用设备配置文件、处理摄像头连接和断开事件、管理单个帧级别的摄像头数据捕获以及将图像与闪光灯同步。 可以与系统中的多个摄像机分开工作,并组织从一台摄像机同时捕获多个视频流(例如,一个用于视频会议的低分辨率,另一个用于存档记录到磁盘的高分辨率)。

来源: opennet.ru

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster