当前位置: 首页 > news >正文

其他合成方式介绍

在 SurfaceFlinger 的 Layer 处理逻辑中,除了常见的 Client Composition(GPU合成)Device Composition(HWC合成),还存在一些特殊的合成方式,比如 Sideband、Solid Color 和 Display Decoration。这些都是通过 CompositionType 进行区分的:


 Sideband Composition(旁路流 Sideband 流)

🔹 定义

  • 这是一种 外部流输入(Sideband Stream) 的合成方式,通常用于 低延迟的多媒体流(例如 IPTV、外部解码器视频)。

  • 数据源不是常规的 Graphic Buffer,而是一个 Sideband Stream,它会通过 sideband stream 字段传递,而不是 buffer

🔹 常见应用

  • 硬件视频解码器(比如 MediaTek、Qualcomm 等方案的 Zero-Copy 视频)

  • Wi-Fi Display(Miracast 无线投屏)

  • 低延迟视频流,比如 IPTV 播放

🔹 Dumpsys 里的表现

buffer: buffer=0x0
sideband stream=0xb40000770a9efe60
  • buffer=0x0:表示这个 Layer 没有普通的 GraphicBuffer,而是依赖 sideband stream

  • sideband stream:表示该 Layer 绑定了一个 外部数据流,SurfaceFlinger 不会自己合成,而是交由 HWC 处理。


2️⃣ Solid Color Composition(纯色填充)

🔹 定义

  • 用于绘制 纯色 Layer,通常用于 UI 组件,比如背景、蒙版等,不需要绑定 Buffer。

  • 颜色信息存储在 color 字段,而不是 buffer

🔹 常见应用

  • 透明遮罩(比如暗淡背景层)

  • 渐变背景(如果不使用着色器的话)

  • 系统 UI(比如通知栏背景)

🔹 Dumpsys 里的表现

buffer: buffer=0x0
color=[0.000000 0.000000 0.000000] 
  • buffer=0x0:这个 Layer 不使用 Buffer,直接填充颜色。

  • color=[R G B]:RGB 颜色值(范围 0.0 - 1.0)。


3️⃣ Display Decoration(显示装饰)

🔹 定义

  • 这是 专门用于系统装饰的 Layer,通常和 圆角裁剪(Rounded Corners)、水滴屏(Notch)、屏下指纹动画 相关。

  • 这些 Layer 通常不会参与普通应用的合成,而是专门用于屏幕的 UI 效果。

🔹 常见应用

  • 屏幕圆角遮罩

  • 挖孔屏的 UI 裁剪

  • 屏下指纹动画

  • Always-On Display(AOD,息屏显示)

🔹 Dumpsys 里的表现

* Layer 0xb40000776aa87410 (Display Overlays#65)
  • 这个 Layer 一般和 Display Overlays 相关,是 SurfaceFlinger 额外创建的系统 UI 组件。

  • 可能包含特殊的 Dataspace(比如 Dataspace::DISPLAY_DECORATION)。


总结

Composition 类型描述典型应用是否绑定 Buffer
Sideband Composition旁路流输入,直接由 HWC 处理硬件解码视频流(IPTV、Wi-Fi Display)❌ 绑定 sideband stream
Solid Color Composition纯色填充UI 背景、透明蒙版❌ 绑定 color
Display Decoration系统 UI 装饰圆角、挖孔、水滴屏、AOD✅ 可能绑定特殊 Buffer

实际上一般的Video硬解播放也不会走sideband stream,可能只能tunnel mode才会走。 

相关文章:

  • nacos集群部署
  • 【redis】summary
  • rust 同时处理多个异步任务,并在一个任务完成退出
  • PythonJSON解析如何优雅处理嵌套JSON字符串
  • springboot中使用async实现异步编程
  • Docker Compose 部署Nginx反向代理 tomcat
  • 每日算法-250407
  • 数字经济产业标杆:树莓集团如何塑造产业服务价值体系
  • 没有独立显卡如何安装torch
  • 极简设计的力量:用 `apiStore` 提升项目效率与稳定性
  • oracle查询是否锁表了
  • Objective-C语言的编程范式
  • 昇腾910b多机部署deepseek-r1-w8a8量化全攻略
  • Hive 常见面试 300 问
  • leetcode 368. 最大整除子集 中等
  • Scala(六)
  • Matlab绘图—‘‘错误使用 plot输入参数的数目不足‘‘
  • 工程项目中通讯协议常见问题
  • 零代码构建AI知识库:基于亮数据网页抓取API的维基百科数据自动化采集实战
  • 昂贵的DOM操作:一次DOM导致的性能问题排查记录
  • 普京调整俄陆军高层人事任命
  • 中央军委决定调整组建3所军队院校
  • 透视社会组织创新实践中的花开岭现象:与乡村发展的融合共进
  • 陕西河南山西等地将现“干热风”灾害,小麦产区如何防范?
  • 外媒:初步结果显示,菲律宾前总统杜特尔特当选达沃市市长
  • 在对国宝的探索中,让美育浸润小学校园与家庭