Procesando marcos de cámara Android en tiempo real

Estoy tratando de crear una aplicación de Android que procesará los marcos de la cámara en tiempo real. Para empezar, solo quiero mostrar una versión en escala de grises de lo que ve la cámara. Me las arreglé para extraer los valores apropiados de la matriz de bytes en elonPreviewFrame método. A continuación se muestra solo un fragmento de mi código:

byte[] pic;
int pic_size;
Bitmap picframe;
public void onPreviewFrame(byte[] frame, Camera c)
{
    pic_size = mCamera.getParameters().getPreviewSize().height * mCamera.getParameters().getPreviewSize().width;
    pic = new byte[pic_size];
    for(int i = 0; i < pic_size; i++)
    {
        pic[i] = frame[i];
    }
    picframe = BitmapFactory.decodeByteArray(pic, 0, pic_size);
}

El primero[width*height] valores de labyte[] frame array son los valores de luminancia (escala de grises). Una vez que los extraje, ¿cómo los visualizo en la pantalla como una imagen? Tampoco es una matriz 2D, entonces, ¿cómo especificaría el ancho y la altura?

Respuestas a la pregunta(3)

Su respuesta a la pregunta