我正在开发一个Android Camera应用程序。 当我处理框架时,遇到了一些麻烦。
在相机的onPreviewFrame(字节[]数据,摄像头摄像头)功能,我设置数据的格式是NV21 fromat,由于NV21是支持所有的Android设备。
当我使用MediaCodec编码帧时,KEY_COLOR_FORMAT为COLOR_FormatYUV420SemiPlanar( NV12 )。
所以我需要将NV21转换为NV12。
而且,框架旋转-90度,我要旋转回来,意味着旋转90度。
我通过使用java做到了:
// 1. rotate 90 degree clockwise
// 2. convert NV21 to NV12
private byte[] rotateYUV420SemiPlannerFrame(byte[] input, int width, int height) {
//from:https://github.com/upyun/android-push-sdk/blob/7d74e3c941bbede0b6f9f588b1d4e7926a5f2733/uppush/src/main/java/com/upyun/hardware/VideoEncoder.java
int frameSize = width * height;
byte[] output = new byte[frameSize * 3 / 2];
int i = 0;
for (int col = 0; col < width; col++) {
for (int row = height - 1; row >= 0; r