谁有比较快的转换方法,或者有谁在arm下编译成功了Theorarm,自己写的速度好慢,thx

解决方案 »

  1.   

    参考ffmpeg代码
    不过没试过性能怎么样,或许用opengl的glsl会更块?
    没真机可以测试啊。。哎。。
      

  2.   

    两步走,试试。
    1. YUV420SP to YUV420P
    2. YUV420转RGB565的转换函数
      

  3.   

    Android拍摄视频流的格式转换(YUV --- RGB)
      

  4.   


    for (int j = 0, yp = 0; j < height; j++) {   
            uvp = frameSize + (j >> 1) * width;   
            u = 0;   
            v = 0;   
            for (i = 0; i < width; i++, yp++) {   
                y = (0xff & ((int) yuv420sp[yp])) - 16;   
                if (y < 0) y = 0;   
                if ((i & 1) == 0) {   
                    v = (0xff & yuv420sp[uvp++]) - 128;   
                    u = (0xff & yuv420sp[uvp++]) - 128;   
                }   
                   
                y1192 = 1192 * y;   
                r = (y1192 + 1634 * v);   
                g = (y1192 - 833 * v - 400 * u);   
                b = (y1192 + 2066 * u);   
                   
                if (r < 0) r = 0; else if (r > 262143) r = 262143;   
                if (g < 0) g = 0; else if (g > 262143) g = 262143;   
                if (b < 0) b = 0; else if (b > 262143) b = 262143;   
                   
                rgbBuf[yp * 3] = (byte)(r >> 10);   
                rgbBuf[yp * 3 + 1] = (byte)(g >> 10);   
                rgbBuf[yp * 3 + 2] = (byte)(b >> 10);   
            }   
        }   大部分都是在java中封装,在上层应用里跑肯定死慢死慢,考虑一下在callback之前就转好