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

背景

I420 中 yuv 数据存放在3个 planes 中。

网上一般说 I420 数据大小为 widthheight 1.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,需要向上取整,以提高边缘像素精度。但是没有专业的定义,如果大家找到专业定义辛苦贴到评论中。

相关推荐
zhousenshan4 小时前
uv打包工具介绍
uv
ch_atu2 天前
虚拟环境-uv的使用
python·uv
Luminbox紫创测控2 天前
可调UV宽光谱高功率的LED太阳能模拟器
人工智能·测试工具·汽车·安全性测试·uv·测试标准
joopthd2 天前
打破进口垄断:TDLAS/UV-DOAS/FTIR 全光谱检测国产器件全产业链布局(江苏旭海光电技术梳理)
运维·人工智能·uv·激光气体检测
IT界的老黄牛4 天前
uv 常用命令速查:一个工具干掉 pip + venv + pyenv + pipx + poetry,Python 工具链从此清爽
python·pip·uv·虚拟环境·包管理·命令速查
xier_ran5 天前
uv 与 conda 详解:Python 环境管理的两条路线
python·conda·uv
接针5 天前
UV 常用命令
python·uv
lxw18449125147 天前
Python uv 完整使用教程
python·conda·pip·uv
MC皮蛋侠客9 天前
uv 系列(二):创建现代 Python 项目——pyproject.toml与项目结构
python·uv
MC皮蛋侠客9 天前
uv 系列(三):依赖、锁文件与环境同步——可重复构建的核心
python·uv