我正在做一个项目,这个项目涉及到读取一个图层的内容,这个图层将由surfaceflinger合成。
我特别需要检查要合成的层是全1位0还是全0位。
这是为了在SurfaceFlinger合成前应用一些优化。
我通过adb-logcat(通过添加我自己的日志消息)跟踪缓冲区的创建,但无法找到读取层实际内容的方法。
谁能告诉我这是可能的,如果是,怎么做?
一般来说,它不是。例如,如果该层正在显示受drm保护的视频,则无法读取数据。
对于未受保护的图层,你可以用glReadPixels()
读取像素值——在SurfaceFlinger的截图代码中有一些代码可以用来检查空白截图——但这将会很慢。
请记住,不是所有的图层都是RGB的。如果图层为YUV,则"全零"图层实际上是暗绿色。