Lesen Sie effizient die durchschnittliche Farbe des von XBMC gerenderten Bildschirminhalts

Ich möchte die durchschnittliche Farbe des Bildschirminhalts ermitteln, wenn XBMC ausgeführt wird, um die Farbe des Umgebungslichts eines Fernsehgeräts zu ändern. XBMC läuft auf einem kleinen HTPC mit OpenGL ES 2.0-Hardware (Raspberry Pi) und einer von Debian abgeleiteten Distribution. Ich muss wohl vom Bildschirm aus lesenBildspeicher, Framebuffer in dem XBMC mit OpenGL zeichnet. (Zumindest denke und hoffe ich, dass XBMC alles mit OpenGL rendert.)

Ist es möglich, den OpenGL-Frame-Puffer zu lesen, der die gesamte Bildschirmausgabe darstellt? Was brauche ich, um darauf zuzugreifen? Benötige ich auch einen eigenen Render-Kontext, um auf den Frame-Puffer des Bildschirms zuzugreifen? (Ich rendere nichts von mir selbst auf dem Bildschirm, ich möchte nurlesen).

Effiziente Berechnung der durchschnittlichen Farbe ist die nächste Aufgabe. Ich denke darüber nach, jeden achten oder sechzehnten Pixel pro Zeile / Spalte zu lesen (würde ausreichen, wir sprechen von 1080p HD-Filmen) und dann den Durchschnitt der CPU zu berechnen. Alle Ideen für eine bessere Lösung sind willkommen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage