[FFmpeg-cvslog] lavc/h274: fix PRNG definition

Niklas Haas git at videolan.org
Thu Sep 28 18:11:57 EEST 2023


ffmpeg | branch: master | Niklas Haas <git at haasn.dev> | Wed Sep 27 15:16:51 2023 +0200| [338a5fcdbe9571e6f22817a111621259d83f2e59] | committer: Niklas Haas

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).

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=338a5fcdbe9571e6f22817a111621259d83f2e59
---

 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);
 }
 



More information about the ffmpeg-cvslog mailing list