[FFmpeg-devel] [PATCH v2] lavc/dxv: align to 4x4 blocks instead of 16x16

Martin Storsjö martin at martin.st
Fri Feb 9 21:47:19 EET 2024


On Fri, 9 Feb 2024, Connor Worley wrote:

> The previous assumption that DXV needs to be aligned to 16x16 was
> erroneous. 4x4 works just as well, and FATE decoder tests pass for all
> texture formats.
>
> On the encoder side, we should reject input that isn't 4x4 aligned,
> like the HAP encoder does, and stop aligning to 16x16. This both solves
> the uninitialized reads causing current FATE tests to fail and produces
> smaller encoded outputs.
>
> With regard to correctness, I've checked the decoding path by encoding a
> real-world sample with git master, and decoding it with
>  ffmpeg -i dxt1-master.mov -c:v rawvideo -f framecrc -
> The results are exactly the same between master and this patch.
>
> On the encoding side, I've encoded a real-world sample with both master
> and this patch, and decoded both versions with
>  ffmpeg -i dxt1-{master,patch}.mov -c:v rawvideo -f framecrc -
> Under this patch, results for both inputs are exactly the same.
>
> In other words, the extra padding gained by 16x16 alignment over 4x4
> alignment has no impact on decoded video.
>
> Signed-off-by: Connor Worley <connorbworley at gmail.com>
> ---
> libavcodec/dxv.c            |  6 +++---
> libavcodec/dxvenc.c         | 14 +++++++++++---
> tests/ref/fate/dxv3enc-dxt1 |  2 +-
> 3 files changed, 15 insertions(+), 7 deletions(-)

LGTM, will push soon to get FATE back to green again.

// Martin



More information about the ffmpeg-devel mailing list