NV21转YUV420P的代码,测试通过
最编程
2024-08-15 15:27:25
...
public final static int NV21_TO_yuv420P(byte[] dst, byte[] src, int w, int h)
{
int ysize = w * h;
int usize = w * h * 1 / 4;
byte[] dsttmp = dst;
// y
System.arraycopy(src, 0, dst, 0, ysize);
// u, 1/4
int srcPointer = ysize;
int dstPointer = ysize;
int count = usize;
while (count > 0)
{
srcPointer++;
dst[dstPointer] = src[srcPointer];
dstPointer++;
srcPointer++;
count--;
}
// v, 1/4
srcPointer = ysize;
count = usize;
while (count > 0)
{
dst[dstPointer] = src[srcPointer];
dstPointer++;
srcPointer += 2;
count--;
}
dst = dsttmp;
// _EF_TIME_DEBUG_END(0x000414141);
return 0;
}
{
int ysize = w * h;
int usize = w * h * 1 / 4;
byte[] dsttmp = dst;
// y
System.arraycopy(src, 0, dst, 0, ysize);
// u, 1/4
int srcPointer = ysize;
int dstPointer = ysize;
int count = usize;
while (count > 0)
{
srcPointer++;
dst[dstPointer] = src[srcPointer];
dstPointer++;
srcPointer++;
count--;
}
// v, 1/4
srcPointer = ysize;
count = usize;
while (count > 0)
{
dst[dstPointer] = src[srcPointer];
dstPointer++;
srcPointer += 2;
count--;
}
dst = dsttmp;
// _EF_TIME_DEBUG_END(0x000414141);
return 0;
}
推荐阅读
-
如何实现neon优化的yuv420转rgb24汇编代码,iOS/Android可用的具体操作步骤
-
比较YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P和YUV444P:理解并解析YUV420P的不同之处
-
比较YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P和YUV444P的图解差异
-
不同YUV格式的解读:YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P和YUV444P的差异解析
-
RGB转换NV21(YUV的一种储存格式)(代码实现)
-
区分概念:yuv420,yuv420p,yuv420sp,nv12,nv21,I420,YV12的差异
-
NV21转YUV420P的代码,测试通过
-
[转]图解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别
-
【音视频】解析yuv420p转化为rgb的原理及代码实现(第三部分. 代码)
-
YUV转RGB的常见代码