Задать вопрос
  • Как найти цвет пикселя на экране OpenGL ES / NDK?

    @gfirf Автор вопроса
    Попробовал 3ий вариант:
    - screencap - очень медленно (2сек+/снимок), как я понял берет данные с framebuffer, т.е. если приложение не сохраняет туда кадры(например видеоплеер) - получим просто черный скриншот.

    - minicap(https://github.com/openstf/minicap) - быстрый, 10fps+ легко, требует компиляции. Умеет работать как демон. В режим только скриншот - появляются фризы(видимо при сбросе файла на диск), картинка дергается. Только JPG. В Android 4.4(API19) работает с SurfaceFlinger, черных экранов нет.

    - ffmpeg - быстрый, разнообразие входных/выходных форматов, выбор устройства для захвата. При захвате с framebuffer - так же черный экран. Как захватить с SurfaceFlinger - без понятия.

    В исходниках Kodi+Boblight не копался, но видимо там проще - не скриншот видео, а плеер предоставляет нужно информацию о кадре. Так же оказалось проблемой найти подходящий алгоритм для поиска основного/среднего цвета на участке изображения.
    В итоге все способы сводятся к работе с Surfaceflinger (https://source.android.com/devices/graphics/). Если не залезать в NDK с головой - можно попробовать использовать библиотеку minicap.