0

Surfaceflinger によって合成されるレイヤーのコンテンツを読み取るプロジェクトに取り組んでいます。

具体的には、合成されるレイヤーがすべて1 ビット 0 またはすべて 0 ビットであるかどうかを確認する必要があります。

これは、SurfaceFlinger による合成の前にいくつかの最適化を適用するためです。

(独自のログ メッセージを追加して) adb-logcatを介してバッファーの作成を追跡しましたが、レイヤーの実際のコンテンツを読み取る方法が見つかりませんでした。

これが可能かどうか誰か教えてもらえますか?

4

1 に答える 1

0

一般的に、そうではありません。たとえば、レイヤーが DRM で保護されたビデオを表示している場合、データを読み取ることはできません。

保護されていないレイヤーの場合、ピクセル値を読み取ることができますglReadPixels()-- SurfaceFlinger のスクリーンショット コードには、空白のスクリーンショットをチェックするために有効にできるコードがあります -- しかし、これは遅くなります。

すべてのレイヤーが RGB であるとは限らないことに注意してください。レイヤーが YUV の場合、「すべてゼロ」のレイヤーは実際にはくすんだ緑色になります。

于 2014-06-06T17:39:21.943 に答える