Slim numerical data compression
1.0
Main Page
Classes
Files
File List
File Members
src
slim_single_codec.h
Go to the documentation of this file.
1
// -*- mode: c++; -*-
2
7
8
#ifndef SLIM_SINGLE_CODEC_H
9
#define SLIM_SINGLE_CODEC_H
10
11
#include "
bitstream.h
"
12
13
14
19
inline
void
mexp_golomb_write
(
obitstream
*ob, uint32_t u,
20
unsigned
int
order=1) {
21
unsigned
int
n =
bit_size
(u);
22
if
(n > order) {
23
ob->
write_unary
(n-order);
24
ob->
writebits
(u, n-1);
25
}
else
{
26
ob->
write_unary
(0);
27
ob->
writebits
(u, order);
28
}
29
}
30
31
32
37
inline
uint32_t
mexp_golomb_read_u32
(
ibitstream
*ib,
38
unsigned
int
order=1) {
39
40
uint32_t n_minus_order = ib->
read_unary
();
41
if
(n_minus_order > 0) {
42
int
n_minus_1 = n_minus_order + order - 1;
43
44
uint32_t uval = ib->
readbits
(n_minus_1);
45
return
uval | bitNset[n_minus_1];
46
}
else
{
47
return
ib->
readbits
(order);
48
}
49
}
50
51
52
53
54
55
#endif // #ifndef SLIM_SINGLE_CODEC_H
Generated by
1.8.3.1