slim_single_codec.h

Go to the documentation of this file.
00001 // -*-  mode: c++; -*-
00002 
00007 
00008 #ifndef SLIM_SINGLE_CODEC_H
00009 #define SLIM_SINGLE_CODEC_H
00010 
00011 #include "bitstream.h"
00012 
00013 
00014 
00019 inline void mexp_golomb_write(obitstream *ob, uint32_t u, 
00020                               unsigned int order=1) {
00021   unsigned int n = bit_size(u);
00022   if (n > order) {
00023     ob->write_unary(n-order);
00024     ob->writebits(u, n-1);
00025   } else {
00026     ob->write_unary(0);
00027     ob->writebits(u, order);
00028   }
00029 }
00030 
00031 
00032 
00037 inline uint32_t mexp_golomb_read_u32(ibitstream *ib,
00038                                      unsigned int order=1) {
00039 
00040   uint32_t n_minus_order = ib->read_unary();
00041   if (n_minus_order > 0) {
00042     int n_minus_1 = n_minus_order + order - 1;
00043 
00044     uint32_t uval = ib->readbits(n_minus_1);
00045     return uval | bitNset[n_minus_1];
00046   } else {
00047     return ib->readbits(order);
00048   }
00049 }
00050 
00051 
00052 
00053 
00054 
00055 #endif  // #ifndef SLIM_SINGLE_CODEC_H

Generated on Mon Jun 15 14:43:45 2009 for Slim numerical data compression by  doxygen 1.5.8