libyuv接口YUY2ToI420的实际使用
YUY2ToI420
1.接口定义:
// Convert YUY2 to I420.
LIBYUV_API
int YUY2ToI420(const uint8* src_yuy2, int src_stride_yuy2,
uint8* dst_y, int dst_stride_y,
uint8* dst_u, int dst_stride_u,
uint8* dst_v, int dst_stride_v,
int width, int height);
2.实际使用
首先弄清楚两种图片格式的存储格式:
YUV格式在存储上存在两类布局:
Packed:把相邻的几个像素打包起来;比如把水平方向2个像素打包到一个DWORD
Plannar:方式相反;Y分量和UV分量完全分开来保存
YUY2和YV12是最常用的两个代表。
YUY2是packed方式的。水平方向两个像素打包到一个DWORD,并且UV采样率只有Y的一半,这符合人的视觉特征能有效的压缩数据,具体布局为[Y0, U0,Y1,V0]。 这种格式常见于MPEG1的解码器。
YV12则常见于H.264的解码器,它属于plannar方式。对于一个MxN大小的视频来说,数据布局为[Y:M x N] [V:M/2 x N/2] [U:M/2 x N/2]. 也就是说UV的采样率在水平和垂直方向上都只有Y的一半。
i420_image = (uint8*)malloc(image->width * image->height * 1.5);uint8* i420_image_y_ptr = i420_image;uint8* i420_image_u_ptr = i420_image_y_ptr + (image->width * image->height);uint8* i420_image_v_ptr = i420_image_u_ptr + (int)(image->width * image->height * 0.25);libyuv::YUY2ToI420((const uint8*)image->data, image->bytes_per_line, //image->bytes_per_line为422一行的字节数i420_image_y_ptr, image->width,i420_image_u_ptr, (image->width >> 1),i420_image_v_ptr, (image->width >> 1),image->width, image->height);
libyuv接口YUY2ToI420的实际使用相关推荐
- libyuv接口NV12ToI420的实际使用
NV12ToI420 1.接口定义: // Convert NV12 to I420. LIBYUV_API int NV12ToI420(const uint8* src_y, int src_st ...
- 转 Java知识——精华总结
一.java概述与基础知识 1.何为编程? 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路. ...
- 编程资料 -C# 多线程
编程资料 - 多线程 C#多线程编程实例实战 作者: 刘弹 www.ASPCool.com 时间:2003-5-17 上午 10:24:05 阅读次数:10996 单个写入程序/多个阅读程序在.Net ...
- 编程资料 -C# 多线程 1
编程资料 - 多线程 C#多线程编程实例实战 作者: 刘弹 www.ASPCool.com 时间:2003-5-17 上午 10:24:05 阅读次数:10996 单个写入程序/多个阅读程序在.Net ...
- FFmpeg在Windows上设置dshow mjpeg编码+libyuv解码显示测试代码
之前在https://blog.csdn.net/fengbingchun/article/details/103444891中介绍过在Windows上通过ffmpeg dshow设置为mjpeg编解 ...
- 海思3559A上编译libyuv源码操作步骤
1. 下载libyuv源代码,执行: git clone https://chromium.googlesource.com/libyuv/libyuv 2. 通过CMakeLists.txt编译生成 ...
- RGBA、YUV色彩格式及libyuv的使用
最近一段时间因为工作的需要,要使用到libyuv.因为之前写录制视频的时候,也要用到rgb转yuv,自己结合网上的资料做了个实现,记录了点笔记,现在索性一起整理下. 常用的色彩格式 常见的色彩格式主要 ...
- 使用libyuv库解决视频后处理性能不足问题
一.libyuv的优势 libyuv是Google开源的实现各种YUV与RGB之间相互转换.旋转.缩放的库.它是跨平台的,可在Windows.Linux.Mac.Android等操作系统.x86.x6 ...
- libyuv windows x64编译方法
libyuv是Google开源的实现各种YUV与RGB之间相互转换.旋转.缩放的库.它是跨平台的,,支持SSE.AVX.NEON等SIMD指令加速.VS 2015 WIN64等编译出来的库无法使用SI ...
最新文章
- Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置
- Android UI(继承控件)--PopupWindow设置动画
- win服务器文件夹权限设置密码,win服务器 文件夹权限设置
- WebMagic写的网络爬虫优秀文章
- 深入理解java虚拟机 (三) 第二版
- php与mysql实例教程_mysql实例与连接
- 2.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- Kong 的安装和基本概念
- 非常好的关于android安全的博客
- 黑苹果alc269声卡仿冒id_黑苹果定制声卡驱动(ALC892为例)
- java 构建位图_调整位图大小而不创建新位图
- 海尔计算机显卡驱动,海尔t621显卡驱动(最新更新)海尔t68d显卡驱动
- [单片机框架][bsp层][cx32l003][bsp_system_clock] clock配置和使用
- 计算机毕业论文提纲如何写,计算机毕业论文提纲怎么写
- Spring Security,没有看起来那么复杂(附源码)
- 开箱即用的物联网平台-IoTLink
- 关于自动布局(Autolayout)
- C语言 % x的作用,关于c语言%#X意思大全
- 1343476-41-4,Acid-PEG5-NHS ester亲水性PEG间隔物增加了在水介质中的溶解度
- Codeforces 1325 C. Ehab and Path-etic MEXs(贪心构造)
- Skywalking 简介
热门文章
- k8s上部署Harbor通过Nginx-Ingress域名访问
- 中南民族大学计算机图像处理实验报告,中南民族大学数字图像处理实验报告.docx...
- 国内外黑客大会资料下载网址
- MT6762 Android 8.1 打开custom分区,挂载custom分区,OTA升级custom分区
- [AGC001E]BBQ Hard
- android studio上的基本动画实现(第一篇)
- Jetson设备下使用docker报错的排错过程完整记录,failed to create shim: OCI runtime create failed: container_linux.go:38
- 人不可貌象、小三不可斗量
- vivado设计之解读复杂性报告(Complexity Characteristics)
- springboot RabbitMQ整合出现Reply received after timeout 异常