ROHC compression/decompression library
Data Structures | Functions
comp_wlsb.h File Reference

Window-based Least Significant Bits (W-LSB) encoding. More...

#include "interval.h"
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>
Include dependency graph for comp_wlsb.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  c_window
 One W-LSB window entry. More...
 
struct  c_wlsb
 One W-LSB encoding object. More...
 

Functions

bool wlsb_new (struct c_wlsb *const wlsb, const size_t window_width)
 Create a new Window-based Least Significant Bits (W-LSB) encoding object. More...
 
bool wlsb_copy (struct c_wlsb *const dst, const struct c_wlsb *const src)
 Create a new Window-based Least Significant Bits (W-LSB) encoding object from another. More...
 
void wlsb_free (struct c_wlsb *const wlsb)
 Destroy a Window-based LSB (W-LSB) encoding object. More...
 
void c_add_wlsb (struct c_wlsb *const wlsb, const uint32_t sn, const uint32_t value)
 Add a value into a W-LSB encoding object. More...
 
bool wlsb_is_kp_possible_8bits (const struct c_wlsb *const wlsb, const uint8_t value, const size_t k, const rohc_lsb_shift_t p)
 Find out whether the given number of bits is enough to encode value. More...
 
bool wlsb_is_kp_possible_16bits (const struct c_wlsb *const wlsb, const uint16_t value, const size_t k, const rohc_lsb_shift_t p)
 Find out whether the given number of bits is enough to encode value. More...
 
bool wlsb_is_kp_possible_32bits (const struct c_wlsb *const wlsb, const uint32_t value, const size_t k, const rohc_lsb_shift_t p)
 Find out whether the given number of bits is enough to encode value. More...
 
size_t wlsb_ack (struct c_wlsb *const wlsb, const uint32_t sn_bits, const size_t sn_bits_nr)
 Acknowledge based on the Sequence Number (SN) More...
 
bool wlsb_is_sn_present (struct c_wlsb *const wlsb, const uint32_t sn)
 Whether the given SN is present in the given WLSB window. More...
 

Detailed Description

Window-based Least Significant Bits (W-LSB) encoding.

Author
Didier Barvaux didie.nosp@m.r.ba.nosp@m.rvaux.nosp@m.@tou.nosp@m.louse.nosp@m..viv.nosp@m.eris..nosp@m.com
David Moreau from TAS

Function Documentation

◆ c_add_wlsb()

void c_add_wlsb ( struct c_wlsb *const  wlsb,
const uint32_t  sn,
const uint32_t  value 
)

Add a value into a W-LSB encoding object.

Parameters
wlsbThe W-LSB object
snThe Sequence Number (SN) for the new entry
valueThe value to base the LSB coding on

◆ wlsb_ack()

size_t wlsb_ack ( struct c_wlsb *const  wlsb,
const uint32_t  sn_bits,
const size_t  sn_bits_nr 
)

Acknowledge based on the Sequence Number (SN)

Removes all window entries older (and including) than the one that matches the given SN bits.

Parameters
wlsbThe W-LSB object
sn_bitsThe LSB of the SN to acknowledge
sn_bits_nrThe number of LSB of the SN to acknowledge
Returns
The number of acked window entries

◆ wlsb_copy()

bool wlsb_copy ( struct c_wlsb *const  dst,
const struct c_wlsb *const  src 
)

Create a new Window-based Least Significant Bits (W-LSB) encoding object from another.

Parameters
[in,out]dstThe W-LSB encoding object to create
srcThe W-LSB encoding object to copy
Returns
true if the W-LSB encoding object was created, false if it was not

◆ wlsb_free()

void wlsb_free ( struct c_wlsb *const  wlsb)

Destroy a Window-based LSB (W-LSB) encoding object.

Parameters
wlsbThe W-LSB object to destroy

◆ wlsb_is_kp_possible_16bits()

bool wlsb_is_kp_possible_16bits ( const struct c_wlsb *const  wlsb,
const uint16_t  value,
const size_t  k,
const rohc_lsb_shift_t  p 
)

Find out whether the given number of bits is enough to encode value.

The function is dedicated to 16-bit fields.

Parameters
wlsbThe W-LSB object
valueThe value to encode using the LSB algorithm
kThe number of bits for encoding
pThe shift parameter p
Returns
true if the number of bits is enough for encoding or not

◆ wlsb_is_kp_possible_32bits()

bool wlsb_is_kp_possible_32bits ( const struct c_wlsb *const  wlsb,
const uint32_t  value,
const size_t  k,
const rohc_lsb_shift_t  p 
)

Find out whether the given number of bits is enough to encode value.

The function is dedicated to 32-bit fields.

Parameters
wlsbThe W-LSB object
valueThe value to encode using the LSB algorithm
kThe number of bits for encoding
pThe shift parameter p
Returns
true if the number of bits is enough for encoding or not

◆ wlsb_is_kp_possible_8bits()

bool wlsb_is_kp_possible_8bits ( const struct c_wlsb *const  wlsb,
const uint8_t  value,
const size_t  k,
const rohc_lsb_shift_t  p 
)

Find out whether the given number of bits is enough to encode value.

The function is dedicated to 8-bit fields.

Parameters
wlsbThe W-LSB object
valueThe value to encode using the LSB algorithm
kThe number of bits for encoding
pThe shift parameter p
Returns
true if the number of bits is enough for encoding or not

◆ wlsb_is_sn_present()

bool wlsb_is_sn_present ( struct c_wlsb *const  wlsb,
const uint32_t  sn 
)

Whether the given SN is present in the given WLSB window.

Parameters
wlsbThe WLSB in which to search for the SN
snThe SN to search for
Returns
true if the SN is found, false if not

◆ wlsb_new()

bool wlsb_new ( struct c_wlsb *const  wlsb,
const size_t  window_width 
)

Create a new Window-based Least Significant Bits (W-LSB) encoding object.

Parameters
[in,out]wlsbThe W-LSB encoding object to create
window_widthThe number of entries in the window (power of 2)
Returns
true if the W-LSB encoding object was created, false if it was not