From 338a5fcdbe9571e6f22817a111621259d83f2e59 Mon Sep 17 00:00:00 2001 From: Niklas Haas Date: Wed, 27 Sep 2023 15:16:51 +0200 Subject: [PATCH] lavc/h274: fix PRNG definition The spec specifies x^31 + x^3 + 1 as the polynomial, but the diagram in Figure 1-1 omits the +1 offset. The initial implementation was based on the diagram, but this is wrong (produces subtly incorrect results). --- libavcodec/h274.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/h274.c b/libavcodec/h274.c index a69f941142..fc111cdb50 100644 --- a/libavcodec/h274.c +++ b/libavcodec/h274.c @@ -38,7 +38,7 @@ static void prng_shift(uint32_t *state) { // Primitive polynomial x^31 + x^3 + 1 (modulo 2) uint32_t x = *state; - uint8_t feedback = (x >> 2) ^ (x >> 30); + uint8_t feedback = 1u ^ (x >> 2) ^ (x >> 30); *state = (x << 1) | (feedback & 1u); }