[FFmpeg-cvslog] ralf: read Huffman code lengths without GetBitContext
Kostya Shishkov
git at videolan.org
Sun Mar 25 03:10:31 CEST 2012
ffmpeg | branch: master | Kostya Shishkov <kostya.shishkov at gmail.com> | Sat Mar 24 07:29:51 2012 +0100| [494bce6224c7da6a174fb16a49ed26e5aab32af1] | committer: Kostya Shishkov
ralf: read Huffman code lengths without GetBitContext
Those descriptions are stored in nibbles, so they are easy to extract.
And this way we don't need to pad tables for possible bit reader overreads.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=494bce6224c7da6a174fb16a49ed26e5aab32af1
---
libavcodec/ralf.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/libavcodec/ralf.c b/libavcodec/ralf.c
index 38e7e69..0e5b046 100644
--- a/libavcodec/ralf.c
+++ b/libavcodec/ralf.c
@@ -80,17 +80,17 @@ static int init_ralf_vlc(VLC *vlc, const uint8_t *data, int elems)
int counts[17], prefixes[18];
int i, cur_len;
int max_bits = 0;
- GetBitContext gb;
-
- init_get_bits(&gb, data, elems * 4);
+ int nb = 0;
for (i = 0; i <= 16; i++)
counts[i] = 0;
for (i = 0; i < elems; i++) {
- cur_len = get_bits(&gb, 4) + 1;
+ cur_len = (nb ? *data & 0xF : *data >> 4) + 1;
counts[cur_len]++;
max_bits = FFMAX(max_bits, cur_len);
lens[i] = cur_len;
+ data += nb;
+ nb ^= 1;
}
prefixes[1] = 0;
for (i = 1; i <= 16; i++)
More information about the ffmpeg-cvslog
mailing list