FreeCalypso > hg > gsm-codec-lib
annotate libtwamr/ietf_fo.c @ 466:0c4e1bc06740
amrefr-encode-r: use the new DHF xform that matches T-Mobile
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Sun, 12 May 2024 21:44:59 +0000 |
| parents | ebe499058c63 |
| children |
| rev | line source |
|---|---|
|
441
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * The function implemented in this module groks the first octet of |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * an RFC 4867 payload and tells the calling application how many more |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 * bytes need to be read, or if the frame type is invalid. |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 */ |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <stdint.h> |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include "tw_amr.h" |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 static const uint8_t extra_bytes_per_ft[9] = |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 {12, 13, 15, 17, 19, 20, 26, 31, 5}; |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 int amr_ietf_grok_first_octet(uint8_t fo) |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 { |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 uint8_t ft; |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 ft = (fo & 0x78) >> 3; |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 if (ft == AMR_FT_NODATA) |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 return 0; |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 if (ft > MRDTX) |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 return -1; |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 return extra_bytes_per_ft[ft]; |
|
ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 } |
