FreeCalypso > hg > gsm-codec-lib
annotate miscutil/bitmanip.c @ 118:cc08498ed21b
libgsmefr: factor out q_plsf_5 tables into their own C module
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 10 Dec 2022 01:28:05 +0000 |
parents | 41f1ae68d253 |
children |
rev | line source |
---|---|
19
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
101
d86f866489e9
gsm-amr2efr utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
19
diff
changeset
|
2 * This module provides two utility functions that serve as building blocks |
d86f866489e9
gsm-amr2efr utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
19
diff
changeset
|
3 * for frame bit reordering operations. |
19
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 */ |
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 |
101
d86f866489e9
gsm-amr2efr utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
19
diff
changeset
|
6 #include <stdint.h> |
19
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 |
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 msb_get_bit(buf, bn) |
101
d86f866489e9
gsm-amr2efr utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
19
diff
changeset
|
9 uint8_t *buf; |
19
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 { |
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 int pos_byte = bn >> 3; |
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 int pos_bit = 7 - (bn & 7); |
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 |
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 return (buf[pos_byte] >> pos_bit) & 1; |
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 } |
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 |
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 msb_set_bit(buf, bn, bit) |
101
d86f866489e9
gsm-amr2efr utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
19
diff
changeset
|
18 uint8_t *buf; |
19
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 { |
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 int pos_byte = bn >> 3; |
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 int pos_bit = 7 - (bn & 7); |
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 |
107
41f1ae68d253
amr2efr & efr2amr cosmetic: cleaner approach to bit reshuffling
Mychaela Falconia <falcon@freecalypso.org>
parents:
101
diff
changeset
|
23 if (bit) |
41f1ae68d253
amr2efr & efr2amr cosmetic: cleaner approach to bit reshuffling
Mychaela Falconia <falcon@freecalypso.org>
parents:
101
diff
changeset
|
24 buf[pos_byte] |= (1 << pos_bit); |
41f1ae68d253
amr2efr & efr2amr cosmetic: cleaner approach to bit reshuffling
Mychaela Falconia <falcon@freecalypso.org>
parents:
101
diff
changeset
|
25 else |
41f1ae68d253
amr2efr & efr2amr cosmetic: cleaner approach to bit reshuffling
Mychaela Falconia <falcon@freecalypso.org>
parents:
101
diff
changeset
|
26 buf[pos_byte] &= ~(1 << pos_bit); |
19
7960744ba19c
frtest: gsmfr-cvt-dlcap program based on fc-tch2fr
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 } |