From bbe38bd951b17d6af32a08fdfa6a2d48daa5c923 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Sat, 13 Dec 2003 18:43:03 +0000 Subject: Wrong optimization from my side. Mpeg2enc works now Original commit message from CVS: Wrong optimization from my side. Mpeg2enc works now --- ext/mpeg2enc/gstmpeg2encstreamwriter.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ext/mpeg2enc/gstmpeg2encstreamwriter.cc b/ext/mpeg2enc/gstmpeg2encstreamwriter.cc index 50c70cdf..ba59f3d4 100644 --- a/ext/mpeg2enc/gstmpeg2encstreamwriter.cc +++ b/ext/mpeg2enc/gstmpeg2encstreamwriter.cc @@ -47,8 +47,13 @@ void GstMpeg2EncStreamWriter::PutBits (guint32 val, gint n) { - /* only relevant bits */ - val &= ~(0xffffffffU << n); + /* only relevant bits. Note that (according to Andrew), + * some CPUs do bitshifts modulo wordsize (32), which + * means that we have to check for n != 32 before + * bitshifting to the relevant bits (i.e. 0xffffffff << + * 32 == 0xffffffff). */ + if (n != 32) + val &= ~(0xffffffffU << n); /* write data */ while (n >= outcnt) { -- cgit v1.2.1