FreeCalypso > hg > gsm-codec-lib
annotate amrconv/bitmanip.c @ 282:9ee8ad3d4d30
frtest: rm gsmfr-hand-test and gsmfr-max-out utils
These hack programs were never properly documented and were written
only as part of a debug chase, in pursuit of a bug that ultimately
turned out to be in our then-hacky patch to osmo-bts-sysmo,
before beginning of proper patches in Osmocom. These hack programs
need to be dropped from the present sw package because they depend
on old libgsm, and we are eliminating that dependency.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 14 Apr 2024 05:44:47 +0000 |
parents | b092a510141e |
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 } |