一.对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. [转帖]配置ftp连接对象存储bucket子目录的方法

    https://developer.jdcloud.com/article/1838 配置ftp连接对象存储bucket子目录的方法  京东云技术交付部  2021-01-27 IP归属:未知 441 ...

  2. [转帖]查询机器序列号--Linux/esxi/windows

    https://www.jianshu.com/p/6abaea79e0c3 Ipmitool--Linux&Esxi&Windows # ipmitool fru list|grep ...

  3. 【转帖】让互联网更快:新一代QUIC协议在腾讯的技术实践分享

    https://www.cnblogs.com/jb2011/p/8458549.html 本文来自腾讯资深研发工程师罗成在InfoQ的技术分享. 1.前言 如果:你的 App,在不需要任何修改的情况 ...

  4. [转帖] Linux命令拾遗-文本处理篇

    https://www.cnblogs.com/codelogs/p/16060413.html 简介# 这是Linux命令拾遗系列的第二篇,本篇主要介绍Linux中与文本处理相关的命令,如xargs ...

  5. ESXi重置密码以及修改网络IP地址的方法

    Study From https://www.cnblogs.com/mk21/p/15784082.html 前期公司有部分虚拟化的服务器因为只通过vCenter进行管理. 导致密码遗失. 最近因为 ...

  6. 一招轻松解决node内存溢出问题

    node启动项目造成内存溢出的解决办法 我们在使用node启动项目的时在项目较大的时候,可能会造成内存溢出.为什么会造成内存溢出呢? 要回答上面这个问题,我们要了解node中是如何分配内存的. Nod ...

  7. 2020美亚个人赛wp

    案例背景 2020年9月,数名信用卡持有人向警方报案,指他们的信用卡被不知名人士在一家本地网上商店购买手机.订单大部分来自海外的网络地址,但有一宗订单来自本地.警方经调查后发现该本地网络地址的注册地址 ...

  8. Go 跟踪函数调用链,理解代码更直观

    Go 跟踪函数调用链,理解代码更直观 目录 Go 跟踪函数调用链,理解代码更直观 一.引入 二.自动获取所跟踪函数的函数名 三.增加 Goroutine 标识 四.让输出的跟踪信息更具层次感 五.利用 ...

  9. [1] 以逆向的角度来看流程控制语句——if

    [1] 以逆向的角度来看流程控制语句--if 1. if语句(单分支) ​ if语句转换的条件跳转指令与if语句的判断结果是相反的, 因为C语言是根据代码行的位置决定编译后二进制代码地址高低的,即低行 ...

  10. clion运行单个c和c++文件(.c.cpp)

    运行方法 在clion中安装插件:C/C++Single File Execution 在要执行的cpp文件中添加main函数 在cpp文件的编辑器界面中点右键会出现[Add executable f ...