From c9b5489c08792729fb5a8a589a5c04e5ca1e2dde Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michaelni@gmx.at>
Date: Sun, 2 Jun 2002 12:13:09 +0000
Subject: [PATCH] fixing get_bits_count at the end

Originally committed as revision 638 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavcodec/common.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/libavcodec/common.c b/libavcodec/common.c
index dadaf5df424..97788ec9dc2 100644
--- a/libavcodec/common.c
+++ b/libavcodec/common.c
@@ -174,6 +174,9 @@ unsigned int get_bits_long(GetBitContext *s, int n)
                 (buf_ptr[-2] << 8) |
                 (buf_ptr[-1]);	    
 #endif
+            val |= bit_buf >> (32 + bit_cnt);
+            bit_buf <<= - bit_cnt;
+            bit_cnt += 32;
         } else {
             buf_ptr -= 4;
             bit_buf = 0;
@@ -185,11 +188,13 @@ unsigned int get_bits_long(GetBitContext *s, int n)
                 bit_buf |= *buf_ptr++ << 8;
             if (buf_ptr < s->buf_end)
                 bit_buf |= *buf_ptr++;
+
+            val |= bit_buf >> (32 + bit_cnt);
+            bit_buf <<= - bit_cnt;
+            bit_cnt += 8*(buf_ptr - s->buf_ptr);
+            if(bit_cnt<0) bit_cnt=0;
         }
         s->buf_ptr = buf_ptr;
-        val |= bit_buf >> (32 + bit_cnt);
-        bit_buf <<= - bit_cnt;
-        bit_cnt += 32;
     }
     s->bit_buf = bit_buf;
     s->bit_cnt = bit_cnt;
-- 
GitLab