其实以前也实现过SP转P的格式,现在再完善一些,写成此文。由于是相同采样空间的转换,只是个别分量位置的调整,只要明白了Y、U、V分量的布置,就很容易写出来。

代码如下:

/**
yyyy yyyy
uv    uv
->
yyyy yyyy
uu
vv
*/
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 yyyy
uu
vv
->
yyyy yyyy
uv    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 01p_uv[j] = p_u[i];p_uv[j+1] = p_v[i];
#elsep_uv[j] = p_v[i];p_uv[j+1] = p_u[i];
#endif}
}

李迟 2015.8.5 晚上

YUV格式学习:NV16和YUV422P格式互换相关推荐

  1. FFmpeg学习4:音频格式转换

    前段时间,在学习试用FFmpeg播放音频的时候总是有杂音,网上的很多教程是基于之前版本的FFmpeg的,而新的FFmepg3中audio增加了平面(planar)格式,而SDL播放音频是不支持平面格式 ...

  2. AVI音视频封装格式学习(三)——AVI 数据结构解析

    这里介绍AVI会使用到的数据结构,为了避免翻译引入歧义,决定该部分还是使用英文原文,如后续有时间再进行翻译. AVIMAINHEADER structure The AVIMAINHEADER str ...

  3. ffmpeg4.4项目学习--音视频基本格式

    目录 一.引言 二.音视频基本格式学习 ------> 2.1.图像压缩数据格式 ------> 2.2.PCM ------> 2.3.H264 ------> 2.4.AA ...

  4. 【学习笔记】Windows格式文档转换成Unix格式

    [学习笔记]Windows格式文档转换成Unix格式 我们有时候需要将文档格式从Windows格式转换成Unix格式,Windows下换行是\r\n,而Unix下换行是\n,所以只需要将文档中的\r去 ...

  5. FFmpeg基础库编程开发学习笔记——音频常见格式及字幕格式

    声明一下:这些关于ffmpeg的文章仅仅是用于记录我的学习历程和以便于以后查阅,文章中的一些文字可能是直接摘自于其它文章.书籍或者文献,学习ffmpeg相关知识是为了使用在Android上,我也才是刚 ...

  6. AVI音视频封装格式学习(四)——linux系统C语言AVI格式音视频封装应用

    拖了很久的AVI音视频封装实例,花了一天时间终于调完了,兼容性不是太好,但作为参考学习使用应该没有问题.RIFF和AVI以及WAV格式,可以参考前面的一些文章.这里详细介绍将一个H264视频流和一个2 ...

  7. AVI音视频封装格式学习(五)——h265与PCM合成AVI文件

    不知道是处于版权收费问题还是什么原因,H265现在也并没有非常广泛的被普及.将h265数据合成AVI的资料现在在网上也基本上没有.使用格式化工厂工具将h265数据封装成AVI格式,发现它在封装的时候其 ...

  8. TensorFlow学习笔记之 bmp格式、txt格式数据转换成tfrecord 格式

    目录 一.前言 二.bmp 格式数据转换成 tfrecord 格式的代码 三.txt 格式数据转换成 tfrecord 格式的代码 一.前言 之前我们讲过了关于 tfrecord 格式的相关内容,在这 ...

  9. python word 操作 doc 文件格式转docx 格式 学习笔记

    python word 操作 doc 文件格式转docx 格式 学习笔记 from win32com import client as wc import time # TODO file_0 = & ...

最新文章

  1. 其他发行版本安装深度音乐播放器
  2. 常用命令-临时记录!
  3. 真实实验测试多少节电池可以点亮白炽灯泡!
  4. html5中有哪些新属性,整理HTML5中表单的常用属性及新属性
  5. Java面试题系列之Java基础类库(一)
  6. 第三次学JAVA再学不好就吃翔(part41)--修饰符
  7. 20165201 2017-2018-2 《Java程序设计》第3周学习总结
  8. jQuery图表插件 JS Charts
  9. JavaScript | 将十进制转换为十六进制,反之亦然
  10. 概率论与数理统计思维导图_数学思维到底有多重要?这个学科往往影响国家实力...
  11. 5.1linux_ubuntu常见安装问题
  12. 无敌大奉献:iOS技术开发知识整理
  13. 二十二、软件安装RPM、SRPM与YUM
  14. 视频教程-ArcGIS开发arcpy教程-其他
  15. 华泰证券 python 自动交易软件_有哪些能做自动交易的软件?
  16. [极客时间] 时间复杂度和空间复杂度分析
  17. 怎么查看php配置信息,Wampserver查看php配置信息
  18. 编写一个C语言程序 实现自我介绍,用c语言编程实现,别出心裁的情侣拍照
  19. Xcode中iOS项目目标变为Mac的解决办法
  20. 大数据教你如何购买净化器

热门文章

  1. php编写大型网站问题集
  2. 落户北京经开区 小米汽车首车预计2024年下线并量产 网友:开始存钱!
  3. 网易云音乐IPO拟至少募30.4亿港元 开售半日已获足额认购
  4. 特斯拉股价,真的“血崩”!
  5. 京东健康股价创下新高 市值突破6000亿港元
  6. 60秒语音有救了?曝微信测试语音进度条,内部人士一句话打回原形
  7. 那是财务自由的声音!寒武纪上市造就一批85后亿万富翁
  8. 商汤科技回应“IPO推迟”:“被”IPO,还“被”推迟了
  9. 笑喷!小区封闭男子将头伸出围栏外理发:又好笑又心酸
  10. 巴菲特:马斯克是伟大企业家,但特斯拉股票不是好投资标的