diff options
-rw-r--r-- | ext/mpeg2enc/gstmpeg2encstreamwriter.cc | 9 |
1 files 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) { |