zoukankan      html  css  js  c++  java
  • android Surface相关

    生产消费模型

    BufferQueue

    Android通过BufferQueue管理图像图层数据的跨进程传输。BufferQueue的两端分别是图像数据的生产者和消费者。

    GraphicBuffer

    单帧图像,系统分配和回收.
    Buffer传递通过文件句柄.BufferQueue有2-3个GraphicBuffer.

    Surface

    生产者.native层是ANativeWindow形式. 由WMS(WindowManagerService)管理.

    SurfaceFlinger 是一种消费者

    接受多个来源的图形显示数据,将他们合成,然后发送到显示设备。

    SurfaceTexture

    一种消费者, 消费图像数据. Buffer转换为GL的纹理(Texture). 创建后由Surface连接, Surface有个构造函数参数是SurfaceTexture.

    Surface 使用

    应用窗口

    应用窗口包括Activity和Dialog,他们的显示Surface都是通过请求WMS(WindowManagerService)创建,最终由SurfaceFlinger创建。
    在生产者这一端,应用可以通过CPU在Canvas上作图,也可以通过转换为GLSurface,有GL作图。
    消费者即为SurfaceFlinger的Layer,在hardware支持的情况下,也可能由硬件composer消耗。

    SurfaceView

    SurfaceView有独立与应用窗口的Surface,同样也可以由应用通过Canvas或者GL作图,更常见的是交由MediaCodec(视频播放)或者Camera(视频录制)填充数据。

    • 优点:
      可以在一个独立的线程中进行绘制,不会影响主线程
      使用双缓冲机制,播放视频时画面更流畅
    • 缺点:
      Surface不在View hierachy中,它的显示也不受View的属性控制,所以不能进行平移,缩放等变换,也不能放在其它ViewGroup中。SurfaceView 不能嵌套使用。

    TextureView

    TextureView将图像数据转换为GL的Texture,并显示在应用窗口上,因此其显示的内容与应用窗口的其他元素是时间同步的。
    TextureView的SurfaceTexture可以转换为Surface来使用,通过Canvas或者GL作图,也可以由MediaCodec或者Camera填充数据。

    • 优点:
      支持移动、旋转、缩放等动画,支持截图
    • 缺点:
      必须在硬件加速的窗口中使用,占用内存比SurfaceView高,在5.0以前在主线程渲染,5.0以后有单独的渲染线程。

    MediaCodec

    在视频编码场景,与视频播放情况相反,由MediaCodec创建Surface,该Surface可以由应用、Camera填充数据。

    VirtualDisplay

    VirtualDisplay向Surface填充数据,由SurfaceFlinger管理,SurfaceFlinger将Layer读到到数据也通过GL叠加合成到VirtualDisplay上。如果将VirtualDisplay于TextureView结合,你将会看到图像无穷递归的科幻场景

  • 相关阅读:
    [译文] 实体与值对象到底是不是一回事?
    实现 WebApi 自托管服务宿主于 WinForms 及其交互
    [译文] C# 8 已成旧闻, 向前, 抵达 C# 9!
    [译文] 为什么你在 C# 里总是应该使用 "var" 关键字
    通过设置iis在局域网中访问网页
    windows 10 安装使用kafka
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 4) 整合Polly实现瞬时故障处理
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 3) 使用Handler实现传出请求中间件
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 2) 定义命名化和类型化的客户端
    Asp.net Core 2.0 OpenId Connect Handler缺失Claims?
  • 原文地址:https://www.cnblogs.com/WillingCPP/p/14544324.html
Copyright © 2011-2022 走看看