从 2025 年 3 月 27 日起,我们建议使用 android-latest-release
而不是 aosp-main
来构建 AOSP 并为其做贡献。有关详情,请参阅AOSP 变更。
单生产者、多消费者相机缓冲区传输
使用收藏集保持井井有条 根据您的偏好保存内容并进行分类。
此功能引入了一组方法,允许相机客户端在捕获会话处于活动状态且相机流式传输正在进行时动态添加和移除输出图面。新的输出可以映射到用户选择的特定共享相机流。添加图面后,可以随时移除。
总体思路是在多个输出图面中共享与特定相机流相关联的缓冲区。内部引用计数器会跟踪缓冲区,因为当缓冲区准备好在消费者端进行进一步处理时。当所有消费者完成各自的任务后,缓冲区将被取消排队,并可供相机使用。
图 1. 缓冲区共享
图 1 描述了一个示例场景,其中相机流 2 处理的缓冲区在相机服务中专用共享输出流内的流拆分器组件中进行动态附加和分离、引用计数和管理。
示例和源代码
此功能的核心实现可以在 Camera3StreamSplitter
模块中找到。有关此功能的文档,请参阅开发者参考
实现
由于此功能在框架侧实现,因此 Camera HAL 侧不需要实现。
验证
您的实现必须通过 CTS 测试用例,这些用例涵盖了来自 MultiViewTest 模块和 native JNI library(用于原生 API)的此功能。
此页面上的内容和代码示例受内容许可中描述的许可协议约束。Java 和 OpenJDK 是 Oracle 和/或其关联公司的商标或注册商标。
上次更新时间:2025-02-05 UTC。
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-02-05 UTC."],[],[]]