Do not prefetch data too often for short codes.
---
 libavcodec/golomb.h | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/libavcodec/golomb.h b/libavcodec/golomb.h
index 371db4e..3b81327 100644
--- a/libavcodec/golomb.h
+++ b/libavcodec/golomb.h
@@ -55,21 +55,21 @@ static inline int get_ue_golomb(BitstreamContext *bb)
     unsigned int buf;
     int ret;
 
-    buf = bitstream_peek(bb, 32);
+    buf = bitstream_peek(bb, 9);
 
-    if (buf >= (1 << 27)) {
-        buf >>= 32 - 9;
+    if (buf >= (1 << 4)) {
         bitstream_skip(bb, ff_golomb_vlc_len[buf]);
 
         ret = ff_ue_golomb_vlc_code[buf];
         return ret;
     } else {
-        int log = 2 * av_log2(buf) - 31;
-        buf >>= log;
-        buf--;
+        int buf2 = bitstream_peek(bb, 32);
+        int log = 2 * av_log2(buf2) - 31;
+        buf2 >>= log;
+        buf2--;
         bitstream_skip(bb, 32 - log);
 
-        return buf;
+        return buf2;
     }
 }
 
@@ -169,25 +169,25 @@ static inline int get_se_golomb(BitstreamContext *bb)
 {
     unsigned int buf;
 
-    buf = bitstream_peek(bb, 32);
+    buf = bitstream_peek(bb, 9);
 
-    if (buf >= (1 << 27)) {
-        buf >>= 32 - 9;
+    if (buf >= (1 << 4)) {
         bitstream_skip(bb, ff_golomb_vlc_len[buf]);
 
         return ff_se_golomb_vlc_code[buf];
     } else {
-        int log = 2 * av_log2(buf) - 31;
-        buf >>= log;
+        int buf2 = bitstream_peek(bb, 32);
+        int log = 2 * av_log2(buf2) - 31;
+        buf2 >>= log;
 
         bitstream_skip(bb, 32 - log);
 
-        if (buf & 1)
-            buf = -(buf >> 1);
+        if (buf2 & 1)
+            buf2 = -(buf2 >> 1);
         else
-            buf = (buf >> 1);
+            buf2 = (buf2 >> 1);
 
-        return buf;
+        return buf2;
     }
 }
 
-- 
2.1.4

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to