问题标签 [surfaceflinger]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - dumpsys SurfaceFlinger 输出解释
最近,我开始使用dumpsys SurfaceFlinger
收集一些关于android图形的信息。我目前在一个名为 Odroid-XU3 的开发板上工作。显示器是戴尔显示器,通过 HDMI 电缆连接到主板。
在上述命令输出的最后几行中,我有两个显示器,而我只希望有一个。其中一个是Display[0]
,另一个是Display[1]
。每个显示的type
列可以是HWC
或GLES
。有时它们都是 HWC 或 GLES,有时一个是 HWC,另一个是 GLES。
Display[0] 和 Display[1] 有什么区别?我试图找到一个文档来了解如何解释上述命令的输出,但我没有发现任何有用的东西。
android - 如何在 Android 本机上升级和渲染远程(RGB565)帧缓冲区?
我在 Android 4.2.2 上移植了远程帧缓冲区接收 C 代码,它以 RGB565 格式从主机接收帧缓冲区。能够按照标准 android 示例 frameworks/native/services/surfaceflinger/tests/resize/resize.cpp 渲染接收到的帧缓冲区。以下是使用的代码片段
但我无法升级接收到的缓冲区以在 android 上呈现全屏。例如:- 主机发送 800*480 但 android 设备屏幕为 1024*786 也有以下疑问,
1. 在本机中创建表面是否是处理此类问题的正确方法?
2. 如何在 Android 原生上做高档的原始图像和渲染?
3. 在写app的时候,app是否可以控制这个在native上创建的surface?
我是 android 新手,如果有人能引导我走上正确的道路来处理这个问题,那就太好了
android - 如何使用内核中“dumpsys”提供的信息?
我通过dumpsys SurfaceFlinger --latency SurfaceView
.
现在,我想在我为内核编写的一段代码中获得相同的信息。我如何访问内核提供的dumpsys
或dumpsys SurfaceFlinger
内核中提供的信息?我读过从内核中进行系统调用不是一个好主意。我还有哪些其他选择?
android - 如何从用户空间程序访问 SurfaceFlinger?
我想编写一个用户空间程序来与 SurfaceFlinger 对话并调用它的dump
函数。如何访问 SurfaceFlinger 并从我的 C++ 程序中进行这样的调用?
我知道 SurfaceFlinger 在 main_surfaceflinger.cpp 中实例化并发布。我不知道如何在我的 C++ 程序中使用它。
android - 如何使用 valgrind 运行surfaceflinger?
我正在调试内存损坏问题,我想检查 SF 是否正在访问无效内存,但我不知道如何使用命令行启动 SF。请帮忙。
android - Systrace 输出未显示图形/surfaceflinger 事件
我能够运行 systrace,但我看不到 SurfaceFlinger 的跟踪。GPU、bufferQueues 等
我给出了以下命令: systrace.py --time=10 -o mynewtrace.html sched gfx view wm hal video workq
它只为 CPU0、workqueues、irqs、kworker 等提供输出。
在编译内核时我们必须启用任何特定的跟踪器吗?我还缺少什么吗?
谢谢你!
android - 为什么 SurfaceFlinger 渲染图层会倒置
最近,在深入研究SurfaceFlinger
代码时,我发现它使用 1.0f 减去顶点 Y 坐标之类的方法将其图层颠倒了。我感到困惑。他们为什么这样做呢?
android - 视频播放的丢帧问题
我在播放视频时遇到丢帧问题。我们刚刚从 ICS 迁移到 KK4.4。视频非常小,320x240 分辨率。没有音频可以让事情变得简单。
Systrace 位于以下位置:https ://www.dropbox.com/s/bee6xymg3kpn4ft/mytrace2.html?dl=0
我启用了三重缓冲,并且 hwcomposer 正在为 SurfaceFlinger 生成假 vsync。
我可以看到以下问题:
三重缓冲未正确启用,因为视频解码器分配了 7 个缓冲区队列。如果三重缓冲对于从 TimedEventQueue(OnVideoEvent) 排队的每个帧都可以正常工作,那么应该出队的缓冲区应该落后 2 个插槽。例如:如果我们将 buf 4 排队,则 buf 2 应该出队,但出队的是前一个缓冲区,surfaceflinger 仅在下次有机会运行时才释放。因此延迟会导致视频的取消缓冲区赶上来。
SurfaceFlinger 本身需要一些时间才能完成。
对于 30 fps 的视频,Vsync 没有在适当的时间打开,每 33 毫秒。HWComposer 中的 vsync 生成逻辑存在问题,或者由于没有实际缓冲区排队,eventControl 未启用 vsync?
从我所做的以下评论更新:我注意到的其他事情是 async 和 mDequeueBufferCannotBlock 标志都是错误的,因此 getMinUndequeuedBufferCount() 返回 1 ,因此我们看到前一个缓冲区被要求出队,而不是缓冲区后面 2 个插槽. 请让我知道上述理解是否存在漏洞。以及我能做的任何事情来解决这个问题
任何帮助是极大的赞赏。
android - Android Surfaceflinger - 如何访问函数
Android 5.0.1(Galaxy S4 i9505 Imperium rom):我正在尝试访问 SurfaceFlinger 的各种功能,目的是调整硬件层的大小或访问每个硬件层并保存为位图或在单独的 Surface 上显示(从 JAVA 启动),但 Android Studio (1.3,带有 gradle 2.5) 只是向 **** 报告“未定义的引用”。
我已经提取了我在网上找到的 Android.mk 中提到的共享库,它们是 pixelflinger、cutils、log、dl、hardware、hardware_legacy、utils、GLESv1、GLESv2、binder、ui、gui、powermanager、c、skia。
任何人都可以帮忙吗?
android - 用于 Android 虚拟显示的帧侦听器(NDK 内部构建)
我正在为 Android 平台构建一个内部共享库。我有来自设备制造商的签名密钥库。
我的库正在使用来自 Android 源的ScreenRecord.cpp内部文件。使用 MediaCodec 编码器可以正常录制;但是我想访问每一帧,这样我就可以在每一帧被传递给编码器之前应用一些图像覆盖标志。Android 源代码中也有一个覆盖示例,但这仅适用于较新版本的 Android(5.0 / API 21+)。我想为 Android Kitkat (4.4 / API 19) 提供一个覆盖解决方案
这是我从minicap获得的代码示例。
我设置了上面的代码,但是 FrameAvailableListener 的 onFrameAvailable() 方法只被调用一次。即使我在屏幕上做事,它也不会再被调用。我在这里想念什么?在传递给编码器之前是否有任何不那么棘手的方法来访问帧?