Применение пользовательских фильтров к выходу камеры
Как применить пользовательские фильтры к отдельным кадрам на выходе камеры и показать их.
Что я пробовал до сих пор:
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?