From: Alexandra Hájková <[email protected]>
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 648f924..cbb5d12 100644
--- a/libavcodec/golomb.h
+++ b/libavcodec/golomb.h
@@ -54,20 +54,20 @@ static inline int get_ue_golomb(BitstreamContext *bc)
{
unsigned int buf;
- buf = bitstream_peek(bc, 32);
+ buf = bitstream_peek(bc, 9);
- if (buf >= (1 << 27)) {
- buf >>= 32 - 9;
+ if (buf >= (1 << 4)) {
bitstream_skip(bc, ff_golomb_vlc_len[buf]);
return ff_ue_golomb_vlc_code[buf];
} else {
- int log = 2 * av_log2(buf) - 31;
- buf >>= log;
- buf--;
+ unsigned int buf2 = bitstream_peek(bc, 32);
+ int log = 2 * av_log2(buf2) - 31;
+ buf2 >>= log;
+ buf2--;
bitstream_skip(bc, 32 - log);
- return buf;
+ return buf2;
}
}
@@ -167,25 +167,25 @@ static inline int get_se_golomb(BitstreamContext *bc)
{
unsigned int buf;
- buf = bitstream_peek(bc, 32);
+ buf = bitstream_peek(bc, 9);
- if (buf >= (1 << 27)) {
- buf >>= 32 - 9;
+ if (buf >= (1 << 4)) {
bitstream_skip(bc, ff_golomb_vlc_len[buf]);
return ff_se_golomb_vlc_code[buf];
} else {
- int log = 2 * av_log2(buf) - 31;
- buf >>= log;
+ unsigned int buf2 = bitstream_peek(bc, 32);
+ int log = 2 * av_log2(buf2) - 31;
+ buf2 >>= log;
bitstream_skip(bc, 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