android hwcomposer 抓取各个显示图层的raw显示数据

2023-11-07

amlogic 平台
void fill_color(void *vaddr)
{
    int cnt;
    unsigned int * p_data;

    p_data = (unsigned int *)vaddr;
    for( int i=0x00; i<256*1920; i++ ){
         p_data[i] = 0xffff00ff;
    }


}
//ctx->gralloc_module->base.registerBuffer(&(context->gralloc_module->base),display_ctx->fb_hnd);

//dump layer but need selinux permission: surfaceflinger default no permission to write
static void dump_layer_list(struct hwc_composer_device_1 * dev,  hwc_display_contents_1_t * HwDisplay)
{
    char value[PROPERTY_VALUE_MAX];
    property_get("debug.sf.dumptofile", value, "0");
    int dump = atoi(value);


    struct hwc_context_1_t* ctx = (struct hwc_context_1_t *)dev;
    
   // gralloc_module_t* module = dev->gralloc_module;

    gralloc_module_t* module = &ctx->gralloc_module->base;
    
    ALOGE( "dump = %d", dump );
    ALOGE( "HwDisplay->numHwLayers = %d", HwDisplay->numHwLayers );

 
    if (!dump || !HwDisplay || HwDisplay->numHwLayers < 2)
    {
        //return;
    }
 
    static int frame_count = 0;
    frame_count++;
 
    for (size_t i = 0; i < HwDisplay->numHwLayers - 1; i++)
    {
        hwc_layer_1_t * layer  = &HwDisplay->hwLayers[i];
        int cur_w, cur_h, format, size;
        if ( layer->handle == NULL)
        {ALOGE( "dump = xxxx layer->handle" );
            continue;
        }
        private_handle_t* handle = ( private_handle_t*)layer->handle;
        cur_w = handle->width;
        cur_h = handle->height;
        format = handle->format;
        size = handle->size;
        void *vaddr =  (void *) handle->base;
        module->lock(module, handle, GRALLOC_USAGE_SW_READ_OFTEN|GRALLOC_USAGE_SW_WRITE_OFTEN,
                     0, 0, cur_w, cur_h, &vaddr);

        //GRALLOC_USAGE_SW_WRITE_OFTEN GRALLOC_USAGE_SW_READ_OFTEN

        //memset( vaddr, 0xff, 512*1024 );


        private_handle_t const* hnd = reinterpret_cast<private_handle_t const*>(layer->handle);
                     ALOGV("%d: hnd->flags 0x%x, %d-%d-%d-%d",i,hnd->flags,
                      layer->displayFrame.left,
                      layer->displayFrame.top,
                      layer->displayFrame.right - layer->displayFrame.left,
                      layer->displayFrame.bottom - layer->displayFrame.top);
                     over_layer_type  overlayer_type = OVER_LAYER_VD1_NROMAL;

                    if ((hnd->flags & private_handle_t::PRIV_FLAGS_VIDEO_OVERLAY)){
                         fill_color(vaddr);
                    }

        #if 0
        //cur_w = HWC_ALIGN(cur_w, 16);
        char fname[256] = "/data/misc/surface/Layer";
        snprintf(fname, 256,  "%s_%d-%d_%dx%d-%d.raw", fname, frame_count, i, cur_w, cur_h, format);
        int fd = open(fname, O_CREAT | O_RDWR, 0666);
        if(fd < 0)
        {
            ALOGE("open file failed %s:(errnor=%d)", fname, errno);
        }
        else
        {
            write(fd, vaddr, size);
            close(fd);
        }
        #endif
        
        module->unlock(module, handle);
    }
}
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android hwcomposer 抓取各个显示图层的raw显示数据 的相关文章

  • AWS MobileHub:重命名 Android / iOS 示例项目

    我是 AWS Mobilehub 的新手 我喜欢它允许我使用 AWS 配置选项创建项目 但是 当我尝试构建应用程序 ios swift android 时 它总是使用我的示例项目作为项目名称 在 AWS 项目的大多数配置设置中 例如使用 c
  • 如何消除警告:使用“$”而不是“.”对于 Eclipse 中的内部类

    我是 Android 开发新手 当我将 eclipse 和 Android SDK 更新到最新版本后 我收到警告 Use instead of for inner classes or use only lowercase letters
  • 发送 OneSignal 推送通知时 Android 应用程序崩溃

    Android 应用程序在发送信号推送通知后立即崩溃 我收到这个错误 尝试查看其他 stackoverflow 答案 但没有帮助 请检查下面的代码 build gradle 和错误 不明白为什么它不起作用 P 请检查下面的代码 build
  • LibGdx 如何使用 OrthographicCamera 滚动?

    我已经找了 10 个小时 字面意思 我已经完成了 我需要问一下 事情是我正在学习如何使用 LibGdx 来编写 Java 游戏 我正在做一个水平太空飞船游戏 所以 我最糟糕的问题是我不知道如何滚动 我认为绘制会更好地解释 我想绘制一个巨大的
  • 您能让 Tomcat 6 stdout.log 文件表现得像 log4j DailyRollingFileAppender 吗?

    我们使用的是 Tomcat 6 的 Windows 安装 默认情况下 我们应用程序的 log4j 输出将转到 catalina base logs stdout log 文件 该日志文件仅在我们重新启动 Tomcat 时滚动 并且文件名始终
  • 如何查看Android Asset资源?

    我想检查 assets 文件夹中是否存在文件 我怎样才能做到呢 请帮忙 我向我的应用程序类之一添加了一个辅助方法 我假设 应用程序运行时 资产列表不会更改 the List
  • 即使获得平台签名也无法读取系统文件

    我已经构建了一个自定义 Android ROM 我已经使用平台签名签署了我的应用程序并添加了android sharedUserId android uid system 在清单文件中 我的应用程序被授予所有 签名 和 系统 级别权限 但不
  • java JFileChooser 文件大小过滤器

    我知道我可以按文件类型进行过滤 但是可以按文件大小进行过滤吗 例如 JFileChooser 仅显示 3 MB 以内的图片 简短的回答应该是 你尝试过什么 长答案是肯定的 JFileChooser fc new JFileChooser f
  • Java String.format 向整数添加空格

    我有一小段代码 我不明白输出 此输出向我的字符串格式文本添加空格 我做错了什么吗 public class HelloWorld public static void main String args int a1 540 int a2 4
  • 如何增加颤振中切屑的宽度

    我想增加宽度Chip 我怎样才能实现这个目标 Chip elevation 6 0 backgroundColor Colors white shape RoundedRectangleBorder borderRadius BorderR
  • java 属性文件作为枚举

    是否可以将属性文件转换为枚举 我有一个包含很多设置的属性文件 例如 equipment height equipment widht equipment depth and many more like this and not all a
  • Android Lollipop BLE 扫描 - 获取没有重复的外设

    Android Lollipop 引入了一种扫描 BLE 外设的新方法 通过蓝牙扫描仪 http developer android com reference android bluetooth le BluetoothLeScanner
  • Android 上的 Jetty 上的 Jersey 抛出 ContainerException:“不存在 WebApplication 提供程序”

    我正在尝试在 Android 上的 Jetty 上运行 Jersey 我创建了一个 Android 它使用 Jersey Servlet 实例化 Jetty 服务器 无论如何 当我启动 Jetty 并访问 REST 资源时 在我的例子中 h
  • 哪种 Java DOM 包装器是最好或最受欢迎的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在高速缓存中存储图像

    我对此完全空白 我想从 URL 下载图像 并且必须将其存储在内部 以便下次我不需要连接到网络 而是从缓存中检索它 但我不知道该怎么做 谁能帮我提供一个代码片段 import java io BufferedInputStream impor
  • DeadSystemException启动服务Android 7

    在过去的几周里 我在我的事故报告中看到 Fatal Exception java lang RuntimeException Unable to start service com MyService ef705d8 with Intent
  • RMI 服务器:rmiregistry 或 LocateRegistry.createRegistry

    对于服务器端的RMI 我们需要启动吗rmiregistry程序 或者只是调用LocateRegistry createRegistry 如果两者都可以的话 各有什么优点和缺点 他们是同一件事 rmiregistry是一个单独的程序 您可以从
  • JDK 7 的快速调试/调试构建

    我正在寻找 JDK 的调试 或者我猜他们称之为快速调试构建 以启用在运行时生成的打印程序集以及查找性能问题时所需的其他诊断 就目前情况而言 我似乎找不到可以直接使用的 现成的 快速调试构建二进制包 有人可以帮我提供下载链接 或者至少提供有关
  • 日期时间解析异常

    解析日期时 我的代码中不断出现异常错误 日期看起来像这样 Wed May 21 00 00 00 EDT 2008 这是尝试读取它的代码 DateTimeFormatter formatter DateTimeFormatter ofPat
  • 使用 Android 的 Mobile Vision API 扫描二维码

    我跟着这个tutorial http code tutsplus com tutorials reading qr codes using the mobile vision api cms 24680关于如何构建可以扫描二维码的 Andr

随机推荐

  • 最易上手的测试用例设计方法

    NO 1 lt lt 测试用例设计方法 gt gt 以下是八种常见的测试用例设计方法 包括等价类 边界值 判定表 因果图 正交实验 状态迁移图 场景法和错误推测 详述如下 等价类划分法 Equivalence Partitioning 策略
  • C++新特性16_写时拷贝(解决浅拷贝在某一个类对象中的资源进行修改,所有引用该资源的对象全部会被修改的问题;解决办法:在所有改变值的地方,重新分配内存,改变的是拷贝的值,而不影响原有对象中共享资源)

    C 新特性16 写时拷贝 1 问题 如果共享资源中的值发生了变化 那么其他使用该共享资源的值如何保持不变 2 解决思路 使用引用计数时 当发生共享资源值改变的时候 需要对其资源进行重新的拷贝 这样改变的是拷贝的值 而不影响原有的对象中的共享
  • 母版页禁用Enter提交表单

    在母版页里面由于使用了form 常常需要禁用enter提交表单 因为内容页或者母版页自身有如果有type submit 的button 当textbox聚焦时 按下enter都会触发表单的默认提交 不论是IE还是firefox 于是需要在o
  • python json串合并

    获取cookie def get login cookies self str1 str2 str3 str4 str5 str6 try 必须要有的cookie字段 var items bizuin data bizuin data ti
  • 1*1卷积核的作用及其应用举例

    1 降维和升维 通过使用 1x1 卷积核 可以改变输入张量的通道数 当输入张量的通道数较大时 使用 1x1 卷积核进行卷积操作可以将通道数减小 从而降低模型的计算复杂度 相反 如果需要增加通道数 也可以使用 1x1 卷积核进行升维操作 im
  • 标签href几种使用

    a标签的最重要功能是实现超链接和锚点 a标签里href属性是我们经常用的 其实它的值有很多种 可能我们往往会忽略 今天分享一下a标签的属性值及用法 1 href 这是一个比较常用的方法 是标签内置的一个方法 用于网页返回顶部较多 比如在底部
  • 深度学习------tensorflow2.0,keras实现CNN(mnist、cifar2、cifar10:ResNet-34、ResNet-18)

    1 ResNet 34卷积神经网络 cifar10 随着网络的加深 出现了训练集准确率下降 错误率上升的现象 就是所谓的 退化 问题 按理说更深的模型不应当比它浅的模型产生更高的错误率 这不是由于过拟合产生的 而是由于模型复杂时 SGD的优
  • qt day 5

    实现局域网的网络聊天室功能 1 gt 服务器代码 widget h ifndef WIDGET H define WIDGET H include
  • IDEA安装教程(多图预警)

    简介 关于IDEA的介绍 引用自百度百科 IDEA全称 IntelliJ IDEA 是java编程语言开发的集成环境 IntelliJ在业界被公认为最好的java开发工具 尤其在智能代码助手 代码自动提示 重构 J2EE支持 各类版本工具
  • 集简云简化流程模板,轻松实现工作流程自动化

    集简云平台内置大量自动化流程模板 用户可以在 模板中心 搜索应用名称 选择适合自己的场景 直接使用 本期分享集简云自动化工作流程 模板推荐 模板1 小鹅通新增订单后同步到seatable并更新微伴助手用户信息 集成应用 小鹅通 SeaTab
  • [终端配色方案]

    配色方案 一 Iterm2 设置Color Preferences gt Profiles gt Colors Brighten bold text去掉 选择solarized 选择xterm 256color 二 Iterm2 Shell
  • Restful风格

    文章目录 前言 一 Restful风格是什么 二 Restful风格里面的请求方式 1 Get 2 POST 3 PUT 4 DELETE 这四个在项目接口中分别代表的是查 增 改 删 三 Restful风格的Controller如何实现
  • django静态文件无法访问解决方案

    nginx配置如下 For more information on configuration see Official English Documentation http nginx org en docs Official Russi
  • 开发日记2021-17、20周

    2021 4 19 温习了下观察者模式 学习了状态模式 但是感觉状态模式不是太能把握透彻 代码结构不太一样 理解起来有些偏差 写着写着就陷入到了沉思中 总会忘记要把想法记下来 这里就是草稿就是思路演练场 这里写下的东西不需要完美 只要记录下
  • 【Clion+CubeMX开发STM32】(二)创建自己的工程

    目录 新建工程 修改芯片型号 添加自己的文件 将自己的文件添加Cmake项目 修改CMakeLists template txt 烧录程序 编写 cfg文件 编写 cfg文件 新建工程 打开你的Clion 点击新建工程 在左侧找到STM32
  • 期货开户寻找交易确定性

    1 寻找确定性 都说金融是概率游戏 大家都是说胜率有多少 没有谁敢说行情能100 确定 但傅海棠却提出 在特定情况下 能找到100 确定的行情 他的这个观点也一度引起了广泛的争议 傅海棠说 物极必反 必 是100 不是概率 关键是找到那个
  • Unity3D之sprite动画(Animation)的制作

    实例说明 忍者跑酷的player动画制作 这些都是用Sprite做的动画 在prioject面板里的一组sprite里面点击 之后看属性面板的Sprite Editor对这组Sprite进行编辑 下面先编辑一个idle状态的动画 首先选择第
  • 贝叶斯推断及其互联网应用(一)

    贝叶斯推断及其互联网应用 一 投递人 itwriter 发布于 2011 08 25 14 03 评论 6 有1981人阅读 原文链接 收藏 一年前的这个时候 我正在翻译Paul Graham的 黑客与画家 那本书大部分谈的是技术哲学 但是
  • 二、水平管道中CO2气液两相的流量研究

    水平管道中CO2气液两相的流量研究 3 1 引言 在CCS系统的CO2管道运输过程中 由于传输距离较长且受到管道周围环境的影响 管道中的CO2不可避免的会发生相态的改变 产生气液两相CO2流 因此 本研究基于多传感器系统的测量方法 对水平管
  • android hwcomposer 抓取各个显示图层的raw显示数据

    amlogic 平台 void fill color void vaddr int cnt unsigned int p data p data unsigned int vaddr for int i 0x00 i lt 256 1920