[FFmpeg-devel] [PATCH 1/3] lavc/h274: fix PRNG definition
Niklas Haas
ffmpeg at haasn.xyz
Wed Sep 27 16:56:15 EEST 2023
From: Niklas Haas <git at haasn.dev>
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 a69f9411429..fc111cdb50d 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);
}
--
2.42.0
More information about the ffmpeg-devel
mailing list