/**     * 将bitmap里得到的argb数据转成yuv420sp格式     * 这个yuv420sp数据就可以直接传给MediaCodec,通过AvcEncoder间接进行编码     * @param yuv420sp 用来存放yuv429sp数据     * @param argb 传入argb数据     * @param width   图片width     * @param height 图片height     */    public static void encodeYUV420SP(byte[] yuv420sp, int[] argb, int width, int height) {        final int frameSize = width * height;        int yIndex = 0;        int uvIndex = frameSize;        int a, R, G, B, Y, U, V;        int index = 0;        for (int j = 0; j < height; j++) {            for (int i = 0; i < width; i++) {                a = (argb[index] & 0xff000000) >> 24; // a is not used obviously                R = (argb[index] & 0xff0000) >> 16;                G = (argb[index] & 0xff00) >> 8;                B = (argb[index] & 0xff) >> 0;                // well known RGB to YUV algorithm                Y = ( (  66 * R + 129 * G +  25 * B + 128) >> 8) +  16;                U = ( ( -38 * R -  74 * G + 112 * B + 128) >> 8) + 128;                V = ( ( 112 * R -  94 * G -  18 * B + 128) >> 8) + 128;                // NV21 has a plane of Y and interleaved planes of VU each sampled by a factor of 2                //    meaning for every 4 Y pixels there are 1 V and 1 U.  Note the sampling is every other                //    pixel AND every other scanline.                yuv420sp[yIndex++] = (byte) ((Y < 0) ? 0 : ((Y > 255) ? 255 : Y));                if (j % 2 == 0 && index % 2 == 0) {                    yuv420sp[uvIndex++] = (byte)((V<0) ? 0 : ((V > 255) ? 255 : V));                    yuv420sp[uvIndex++] = (byte)((U<0) ? 0 : ((U > 255) ? 255 : U));                }                index ++;            }        }    }








更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. 【30篇突击 android】源码统计 十七
  5. android json数据传递时编码格式的转换
  6. android BannerView实现自动轮播广告的用法(参考自github)
  7. Android接收/发送jSON数据
  8. Android用户登录数据存储的三种方式
  9. android 播放网络或本地gif格式的动态图片

随机推荐

  1. android中将数据写入手机内存和sdcard中
  2. android与JS交互
  3. Ubuntu 下编译Android(安卓)源代码
  4. android SQLiteDatabase中版本控制作用详
  5. Android 进阶篇之AOP
  6. Android EditText通过imeOptions属性控制
  7. android 源代码在线查看和索引
  8. Android Studio 简介
  9. Android中关于软键盘的一些设置
  10. someone's android note