一.对yuv的认识

  yuv是一种颜色编码系统,它将图像的亮度和色度分离开来。y表示亮度,即黑白信息;uv表示色度,即颜色信息。yuv常用于视频压缩和传输中,因为它可以更有效地表示人眼对亮度和色度的敏感度不同的特性。人眼对亮度更加敏感,而对色度则不那么敏感。这就是为什么在视频压缩中,可以通过减少色度分量的采样率以减少数据量,而不会对观看体验产生明显的影响。

  yuv中最常用的采样方式是4:2:0,在这种采样方式下,亮度分量y和色度分量uv的比例位4:1:1,即每4个亮度分量共享1组色度分量。而yuv的存储格式主要分为两种:

  • planar:平面格式,指先存储所有的y分量,然后再存储u分量和v分量,其中uv的顺序可以互换
  • packed:打包格式,指每个像素点的 y、u、v 分量是连续交替存储的

二.yuv420p和yuv420sp的分类以及它们的区别

  yuv420p和yuv420sp都是planar平面格式,区别仅在于对uv分量的存取。yuv420p是先存储完所有的u分量,然后再存储v分量,或者反过来。而yuv420sp是uv/vu交替存储。常见的基于yuv4:2:0的采样格式如下表:

  yuv4:2:0采样 yuv4:2:0采样
yuv420p yv12格式 yu12格式/i420格式
yuv420sp nv12格式 nv21格式

  见下图,是yuv420p的存储示意图:

  图中先存储完所有的y分量后再存储u和v分量,其中u在v的前面,这也称为yu12/i420格式,如果先v再u的话,就是yv12格式。

  见下图,再来看一下yuv420sp的存储示意图:

  图中先存储完所有的y分量,然后交替存储u和v分量,其中u在v的前面,这种方式也称为nv12格式,如果先v再u,则称为nv21格式。

对yuv存储格式中的yuv420p和yuv420sp的理解的更多相关文章

  1. 音视频编解码: YUV存储格式中的YUV420P,YUV420SP,NV12, NV21理解(转)

    概述  之前介绍了YUV码流的采样格式,下面分析下YUV码流的存储格式,YUV码流的存储格式与采样格式息息相关.总的来讲,YUV存储格式主要分为两种: planar 平面格式 指先连续存储所有像素点的 ...

  2. 关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)

    关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)   作者:王可利(Star·星星) HTML中 相对定位:position:relative; 绝对定位:position ...

  3. IIFE-js中(function(){…})()立即执行函数写法理解

    介绍IIFE IIFE的性能 使用IIFE的好处 IIFE最佳实践 jQuery优化 在Bootstrap源码(具体请看<Bootstrap源码解析>)和其他jQuery插件经常看到如下的 ...

  4. 关于 js 中的 call 和 apply使用理解

    关于 js 中的 call 和 apply使用理解 在学习新的东西时候,碰到以前看过而又不理解,或则记忆不深的地方不妨回头看看书里知识点,有助于加深理解.正所谓--温故而知新. 废话不多说,直接上代码 ...

  5. C++的IO处理中的头文件以及类理解(2)<sstream>头文件

    C++的IO处理中的头文件以及类理解(2)<sstream>头文件 头文件<sstream>中定义的类型都继承iostream头文件中定义的类型.除了继承得来的操作,sstre ...

  6. 3个问题:MySQL 中 character set 与 collation 的理解;utf8_general_ci 与 utf8_unicode_ci 区别;uft8mb4 默认collation:utf8mb4_0900_ai_ci 的含义

    MySQL 中 character set 与 collation 的理解 出处:https://www.cnblogs.com/EasonJim/p/8128196.html 推荐: 编码使用 uf ...

  7. 关于Java中语句符号及格式的理解

    关于Java中语句符号及格式的理解 这篇文章是撰写的第一篇文章,在此作一下博主是一名在读的工科研究生,种种原因,研二开始决定转行从事程序员工作.开始的自学之路并不算非常顺畅,也走了一点弯路,但一直都坚 ...

  8. matlab中矩阵式子的不成熟理解

    matlab中的矩阵式的系统方式理解:一个矩阵式代表一个系统的作用,列代表输入,行代表输出,有多少列就有多少输入,有多少行就有多少输出,矩阵式的相加代表的是线性系统的叠加作用,矩阵式的相乘代表的是两个 ...

  9. STL 中的map 与 hash_map的理解

    可以参考侯捷编著的<STL源码剖析> STL 中的map 与 hash_map的理解 1.STL的map底层是用红黑树存储的,查找时间复杂度是log(n)级别: 2.STL的hash_ma ...

  10. Java中关于static语句块的理解

    Java中关于static语句块的理解 一.static块会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法. 实例一 public class A{ String name ...

随机推荐

  1. [转帖]KVM调整磁盘大小

    https://www.jianshu.com/p/5ca598424eb9 一台win10的虚拟机磁盘空间不足了,需要调整磁盘的大小.上网搜索KVM调整磁盘大小,结果得出的博客都说只有raw格式的能 ...

  2. [转帖]GPT4All 一个开源 ChatGPT

    https://zhuanlan.zhihu.com/p/618947904 通用预训练语言模型. ChatGPT 正在迅速发展与传播,新的大型语言模型 (LLM) 正在以越来越快的速度开发.就在过去 ...

  3. goofys 鲲鹏上面编译挂载与性能测试

    goofys 鲲鹏上面编译挂载与性能测试 介质 使用go进行编译. 官网上面有 amd64的介质,但是没有aarch64的介质 需要自行编译 前几天一直编译失败. 周天在家自己测试了一把,根据gith ...

  4. Kernel 内核支持的方法查询

    今天同事说自己的一个项目出现了报错如图: 报错的机器是 Windows XP 想找一个 windows XP的机器验证一下: 然后 想通过百度搜索确认一下 这个问题 但是发现基本上效果不大 改用了bi ...

  5. vite配置开发环境和生产环境

    为什么需要境变量的配置 在很多的时候,我们会遇见这样的问题. 开发环境的接口是:http://test.com/api 但是我们的生产环境地址是:http://yun.com/api 此时,我们打包的 ...

  6. Python 潮流周刊第 37 期(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  7. SqlSugar的Select用法

    Select 位置 正常情况:应该在最后面, 一般是 .Where(..).OrderBy(..).Select(..).ToList() 特殊情况:如果Select不是最后一个位置,则Select要 ...

  8. 8.1 Windows驱动开发:内核文件读写系列函数

    在应用层下的文件操作只需要调用微软应用层下的API函数及C库标准函数即可,而如果在内核中读写文件则应用层的API显然是无法被使用的,内核层需要使用内核专有API,某些应用层下的API只需要增加Zw开头 ...

  9. C/C++ 简单特征码匹配

    特征码定位查杀 简单提取一段特征码字段. 代码编写. #include <stdio.h> #include <Windows.h> #define FileLEN 20 // ...

  10. 编译Nginx服务部署静态网站

    Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件 (IMAP/POP3) 代理服务器,并在一个BSD-like协议下发行.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在 ...