如何在 H.264 中更改宏块的大小?

问题描述

我正在使用 ffmpeg api 来实现这篇论文(Passthrough+: Real-time Stereoscopic View Synthesis for Mobile Mixed Reality)。在本文中,他们使用 8x8 宏块来计算运动矢量。然而,大多数宏块是由 ffmpeg 以 16x16 像素编码的。如何使用 ffmpeg api 强制宏块大小为 8x8(或者可以通过修改 libavcodec/libx264.c 来完成)?

解决方法

你不能。

H.264 规范 ISO 14496-10 将宏块定义为

一个 16x16 的亮度样本块和两个相应的色度块 具有三个样本数组或 16x16 块的图片样本 单色图片或使用编码的图片的样本 三个独立的色彩平面。

当然,这些可以进一步分段以进行“帧间预测”,但宏块大小根据定义是固定的。