Как применить настраиваемые фильтры к отдельным кадрам на выходе камеры и показать их.
То, что я пробовал до сих пор:
mCamera.setPreviewCallback(new CameraGreenFilter());
public class CameraGreenFilter implements PreviewCallback {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
final int len = data.length;
for(int i=0; i<len; ++i){
data[i] *= 2;
}
}
}
Хотя его имя содержит «зеленый», на самом деле я просто хочу как-то изменить значения (в этом случае цвета будут немного усилены). Короче говоря, не работает.
Я понял, что байтовый массив data является копией вывода камеры; но на самом деле это не помогает, потому что мне нужен «настоящий» буфер.
Я слышал, что это можно реализовать с помощью openGL. Звучит очень сложно.
Есть ли способ попроще? Иначе, как будет работать это сопоставление openGL-surfaceView?