MtasBitOutputStream.java.html
5.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../.resources/report.css" type="text/css"/><link rel="shortcut icon" href="../.resources/report.gif" type="image/gif"/><title>MtasBitOutputStream.java</title><link rel="stylesheet" href="../.resources/prettify.css" type="text/css"/><script type="text/javascript" src="../.resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../.sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">MTAS</a> > <a href="index.source.html" class="el_package">mtas.codec.payload</a> > <span class="el_source">MtasBitOutputStream.java</span></div><h1>MtasBitOutputStream.java</h1><pre class="source lang-java linenums">package mtas.codec.payload;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
/**
* The Class MtasBitOutputStream.
*/
public class MtasBitOutputStream extends ByteArrayOutputStream {
/** The bit buffer. */
<span class="fc" id="L12"> private int bitBuffer = 0;</span>
/** The bit count. */
<span class="fc" id="L15"> private int bitCount = 0;</span>
/**
* Instantiates a new mtas bit output stream.
*/
<span class="fc" id="L20"> public MtasBitOutputStream() {</span>
<span class="fc" id="L21"> }</span>
/**
* Write bit.
*
* @param value
* the value
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public void writeBit(int value) throws IOException {
<span class="fc" id="L32"> writeBit(value, 1);</span>
<span class="fc" id="L33"> }</span>
/**
* Write bit.
*
* @param value
* the value
* @param number
* the number
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public void writeBit(int value, int number) throws IOException {
<span class="fc bfc" id="L46" title="All 2 branches covered."> while (number > 0) {</span>
<span class="fc" id="L47"> number--;</span>
<span class="fc" id="L48"> bitBuffer |= ((value & 1) << bitCount++);</span>
<span class="fc bfc" id="L49" title="All 2 branches covered."> if (bitCount == 8) {</span>
<span class="fc" id="L50"> createByte();</span>
}
}
<span class="fc" id="L53"> }</span>
/**
* Write elias gamma coding integer.
*
* @param value
* the value
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public void writeEliasGammaCodingInteger(int value) throws IOException {
<span class="pc bpc" id="L64" title="1 of 2 branches missed."> if (value >= 0) {</span>
<span class="fc" id="L65"> writeEliasGammaCodingPositiveInteger(2 * value + 1);</span>
} else {
<span class="nc" id="L67"> writeEliasGammaCodingPositiveInteger(-2 * value);</span>
}
<span class="fc" id="L69"> }</span>
/**
* Write elias gamma coding non negative integer.
*
* @param value
* the value
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public void writeEliasGammaCodingNonNegativeInteger(int value)
throws IOException {
<span class="pc bpc" id="L81" title="1 of 2 branches missed."> if (value >= 0) {</span>
<span class="fc" id="L82"> writeEliasGammaCodingPositiveInteger(value + 1);</span>
}
<span class="fc" id="L84"> }</span>
/**
* Write elias gamma coding positive integer.
*
* @param value
* the value
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public void writeEliasGammaCodingPositiveInteger(int value)
throws IOException {
<span class="pc bpc" id="L96" title="1 of 2 branches missed."> if (value > 0) {</span>
<span class="fc bfc" id="L97" title="All 2 branches covered."> if (value == 1) {</span>
<span class="fc" id="L98"> writeBit(1);</span>
} else {
<span class="fc" id="L100"> writeBit(0);</span>
<span class="fc" id="L101"> writeEliasGammaCodingPositiveInteger(value / 2);</span>
<span class="fc" id="L102"> writeBit(value % 2);</span>
}
}
<span class="fc" id="L105"> }</span>
/*
* (non-Javadoc)
*
* @see java.io.ByteArrayOutputStream#close()
*/
@Override
public void close() throws IOException {
<span class="nc" id="L114"> createByte();</span>
<span class="nc" id="L115"> super.close();</span>
<span class="nc" id="L116"> }</span>
/**
* Creates the byte.
*
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public void createByte() throws IOException {
<span class="fc bfc" id="L125" title="All 2 branches covered."> if (bitCount > 0) {</span>
<span class="fc" id="L126"> bitCount = 0;</span>
<span class="fc" id="L127"> write(bitBuffer);</span>
<span class="fc" id="L128"> bitBuffer = 0;</span>
}
<span class="fc" id="L130"> }</span>
}
</pre><div class="footer"><span class="right">Created with <a href="http://www.eclemma.org/jacoco">JaCoCo</a> 0.7.5.201505241946</span></div></body></html>