Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(543)

Side by Side Diff: third_party/lzma/v4_65/files/Java/SevenZip/Compression/RangeCoder/Decoder.java

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 package SevenZip.Compression.RangeCoder;
2 import java.io.IOException;
3
4 public class Decoder
5 {
6 static final int kTopMask = ~((1 << 24) - 1);
7
8 static final int kNumBitModelTotalBits = 11;
9 static final int kBitModelTotal = (1 << kNumBitModelTotalBits);
10 static final int kNumMoveBits = 5;
11
12 int Range;
13 int Code;
14
15 java.io.InputStream Stream;
16
17 public final void SetStream(java.io.InputStream stream)
18 {
19 Stream = stream;
20 }
21
22 public final void ReleaseStream()
23 {
24 Stream = null;
25 }
26
27 public final void Init() throws IOException
28 {
29 Code = 0;
30 Range = -1;
31 for (int i = 0; i < 5; i++)
32 Code = (Code << 8) | Stream.read();
33 }
34
35 public final int DecodeDirectBits(int numTotalBits) throws IOException
36 {
37 int result = 0;
38 for (int i = numTotalBits; i != 0; i--)
39 {
40 Range >>>= 1;
41 int t = ((Code - Range) >>> 31);
42 Code -= Range & (t - 1);
43 result = (result << 1) | (1 - t);
44
45 if ((Range & kTopMask) == 0)
46 {
47 Code = (Code << 8) | Stream.read();
48 Range <<= 8;
49 }
50 }
51 return result;
52 }
53
54 public int DecodeBit(short []probs, int index) throws IOException
55 {
56 int prob = probs[index];
57 int newBound = (Range >>> kNumBitModelTotalBits) * prob;
58 if ((Code ^ 0x80000000) < (newBound ^ 0x80000000))
59 {
60 Range = newBound;
61 probs[index] = (short)(prob + ((kBitModelTotal - prob) > >> kNumMoveBits));
62 if ((Range & kTopMask) == 0)
63 {
64 Code = (Code << 8) | Stream.read();
65 Range <<= 8;
66 }
67 return 0;
68 }
69 else
70 {
71 Range -= newBound;
72 Code -= newBound;
73 probs[index] = (short)(prob - ((prob) >>> kNumMoveBits)) ;
74 if ((Range & kTopMask) == 0)
75 {
76 Code = (Code << 8) | Stream.read();
77 Range <<= 8;
78 }
79 return 1;
80 }
81 }
82
83 public static void InitBitModels(short []probs)
84 {
85 for (int i = 0; i < probs.length; i++)
86 probs[i] = (kBitModelTotal >>> 1);
87 }
88 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698