当前位置: 首页 > news >正文

当图像宽高为奇数时,如何计算 I420 格式的uv分量大小

背景

I420 中 yuv 数据存放在3个 planes 中。
网上一般说 I420 数据大小为 widthheight1.5
但是当 width 和 height 是奇数时,这个计算公式会有问题。
I420 中 u 和 v 的宽高分别为 y 的一半。
但是当不能整除时,是如何取整呢?向上还是向下,网上一般都没有细说。

求证过程

今天遇到个问题,和这个相关。网上查询和用 ffmpeg 实验了一下。

网上查询

问了 chatgpt

在这里插入图片描述

google 结果

https://groups.google.com/a/webmproject.org/g/webm-discuss/c/LaCKpqiDTXM
在这里插入图片描述
https://sourceforge.net/p/raw-yuvplayer/bugs/1/

使用 ffmpeg 测试

使用 windows 自动绘图系统,绘制3张 rgb 图片,保存成 bmp 图片。
使用 ffmpeg 命令将图片转化为视频。
使用 ffmpeg 命令将 Mp4 转换为 yuv420p 的 yuv 数据
使用 notepad 打开数据,计算 yuv 的数据长度。
最后计算结果和网络说的一样。

yuv player 播放该 yuv 数据正常

结论

uv 的宽高除以2,需要向上取整,以提高边缘像素精度。但是没有专业的定义,如果大家找到专业定义辛苦贴到评论中。

http://www.lryc.cn/news/142439.html

相关文章:

  • 结构型模式-代理模式
  • SpringBoot+Redis BitMap 实现签到与统计功能
  • P5739 【深基7.例7】计算阶乘
  • scikit-learn中OneHotEncoder用法
  • linux操作系统的权限的深入学习(未完)
  • C 连接MySQL8
  • 福利之舞:员工的心跳与企业的平衡术
  • MyBatis动态语句且如何实现模糊查询及resultType与resultMap的区别---详细介绍
  • 麒麟OS国产系统身份证阅读器web网页开发使用操作流程
  • 前端面试:【事件处理】探索事件流、委托与事件对象
  • c语言函数指针使用例子
  • 云计算技术应用专业实训室建设方案
  • C语言学习之共用体(union)的运用
  • Sentinel 控制台(集群流控管理)
  • PMP P-08 Communication Management
  • matlab中判断数据的奇偶性(mod函数、rem函数)
  • Redis使用
  • #systemverilog# 之 event region 和 timeslot 仿真调度(七)Active/NBA 咋跳转的?
  • 回归预测 | MATLAB实现SSA-ELM麻雀搜索算法优化极限学习机多输入单输出回归预测(多指标,多图)
  • LION AI 大模型落地,首搭星纪元 ES
  • 【AC-自动机】- 字符串的逆序
  • 统计Mysql库中每个表的总行数,解决table_rows不准确问题
  • AWS EC2 docker-compose部署MongoDB4.2
  • IDEA常用插件之类Jar包搜索Maven Search
  • 使用proxman对iOS真机进行抓包
  • sdk manager (ubuntu20.4) 安装
  • Oracle修改字符集为SIMPLIFIED CHINESE_CHINA.ZHS16GBK
  • 函数的参数传递和返回值-PHP8知识详解
  • 【Redis】 Redis短连接的性能优化
  • 无涯教程-分类算法 - 逻辑回归