FreeCalypso > hg > gsm-codec-lib
annotate amrconv/bitmanip.c @ 302:f469bad44c0e
doc/Binary-file-format: s/gsm_explode/gsmfr_unpack_to_array/
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Mon, 15 Apr 2024 18:45:08 +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 } |
