YUV格式学习:NV16和YUV422P格式互换
来源:互联网 发布:linux 查看几个cpu 编辑:程序博客网 时间:2024/05/16 06:10
其实以前也实现过SP转P的格式,现在再完善一些,写成此文。由于是相同采样空间的转换,只是个别分量位置的调整,只要明白了Y、U、V分量的布置,就很容易写出来。
代码如下:
/**yyyy yyyyuv uv->yyyy yyyyuuvv*/void yuv422sp_to_yuv422p(unsigned char* yuv422sp, unsigned char* yuv422p, int width, int height){ int i, j; int y_size; int uv_size; unsigned char* p_y1; unsigned char* p_uv; unsigned char* p_y2; unsigned char* p_u; unsigned char* p_v; y_size = uv_size = width * height; p_y1 = yuv422sp; p_uv = yuv422sp + y_size; p_y2 = yuv422p; p_u = yuv422p + y_size; p_v = p_u + width * height / 2; memcpy(p_y2, p_y1, y_size); for (j = 0, i = 0; j < uv_size; j+=2, i++) { p_u[i] = p_uv[j]; p_v[i] = p_uv[j+1]; }}/**yyyy yyyyuuvv->yyyy yyyyuv uv*/void yuv422p_to_yuv422sp(unsigned char* yuv422p, unsigned char* yuv422sp, int width, int height){ int i, j; int y_size; int uv_size; unsigned char* p_y1; unsigned char* p_uv; unsigned char* p_y2; unsigned char* p_u; unsigned char* p_v; y_size = uv_size = width * height; p_y1 = yuv422p; p_y2 = yuv422sp; p_u = p_y1 + y_size; p_v = p_u + width * height / 2; p_uv = p_y2 + y_size; memcpy(p_y2, p_y1, y_size); for (j = 0, i = 0; j < uv_size; j+=2, i++) {// 此处可调整U、V的位置,变成NV16或NV61#if 01 p_uv[j] = p_u[i]; p_uv[j+1] = p_v[i];#else p_uv[j] = p_v[i]; p_uv[j+1] = p_u[i];#endif }}
李迟 2015.8.5 晚上
0 0
- YUV格式学习:NV16和YUV422P格式互换
- YUV格式学习:YUV422P、YV16、NV16、NV61格式转换成RGB24
- YUV422P、YV16、NV16、NV61格式转换成RGB24
- YUV格式学习:NV12和YUV420P格式互换
- YUV格式学习
- YUV格式学习笔记
- YUV格式学习
- bmp和yuv格式
- YUV格式和RGB格式互转
- YUV格式
- YUV格式
- YUV格式
- YUV格式
- YUV格式
- YUV格式
- YUV格式
- YUV格式
- YUV 格式
- bootstrap css样式起步
- 增加eclipse的内存
- ios8 UITableView设置 setSeparatorInset:UIEdgeInsetsZero不起作用的解决办法
- Java线程-----------线程安全与不安全与线程同步synchronized和volatile
- Spark进阶视频之模式匹配下的赋值语句
- YUV格式学习:NV16和YUV422P格式互换
- WPF和Windows Phone Post组装函数
- [经典技巧]android 如何监听输入法是否弹出或隐藏,监听手机是否是全屏切换
- rewrite(摘自Yii2)
- 【操作系统】经典教程同步问题 ---- 生产者和消费者
- 树莓派实战3:配置开机自启动
- linux 使用共享内存
- iOS 8 AutoLayout与Size Class自悟
- Spark进阶视频之模式匹配下的提取器动手构造实战