libosmocodec 0.9.6-23.20170220git32ee5af8.fc42
Osmocom codec library
Loading...
Searching...
No Matches
codec.h
1#pragma once
2
3#include <stdint.h>
4#include <stdbool.h>
5
6#include <osmocom/core/utils.h>
7
8extern const uint16_t gsm610_bitorder[]; /* FR */
9extern const uint16_t gsm620_unvoiced_bitorder[]; /* HR unvoiced */
10extern const uint16_t gsm620_voiced_bitorder[]; /* HR voiced */
11extern const uint16_t gsm660_bitorder[]; /* EFR */
12
13extern const uint16_t gsm690_12_2_bitorder[]; /* AMR 12.2 kbits */
14extern const uint16_t gsm690_10_2_bitorder[]; /* AMR 10.2 kbits */
15extern const uint16_t gsm690_7_95_bitorder[]; /* AMR 7.95 kbits */
16extern const uint16_t gsm690_7_4_bitorder[]; /* AMR 7.4 kbits */
17extern const uint16_t gsm690_6_7_bitorder[]; /* AMR 6.7 kbits */
18extern const uint16_t gsm690_5_9_bitorder[]; /* AMR 5.9 kbits */
19extern const uint16_t gsm690_5_15_bitorder[]; /* AMR 5.15 kbits */
20extern const uint16_t gsm690_4_75_bitorder[]; /* AMR 4.75 kbits */
21
22extern const struct value_string osmo_amr_type_names[];
23
24enum osmo_amr_type {
25 AMR_4_75 = 0,
26 AMR_5_15 = 1,
27 AMR_5_90 = 2,
28 AMR_6_70 = 3,
29 AMR_7_40 = 4,
30 AMR_7_95 = 5,
31 AMR_10_2 = 6,
32 AMR_12_2 = 7,
33 AMR_SID = 8,
34 AMR_GSM_EFR_SID = 9,
35 AMR_TDMA_EFR_SID = 10,
36 AMR_PDC_EFR_SID = 11,
37 AMR_NO_DATA = 15,
38};
39
40enum osmo_amr_quality {
41 AMR_BAD = 0,
42 AMR_GOOD = 1
43};
44
49static inline bool osmo_amr_is_speech(enum osmo_amr_type ft)
50{
51 switch (ft) {
52 case AMR_4_75:
53 case AMR_5_15:
54 case AMR_5_90:
55 case AMR_6_70:
56 case AMR_7_40:
57 case AMR_7_95:
58 case AMR_10_2:
59 case AMR_12_2:
60 return true;
61 default:
62 return false;
63 }
64}
65
66bool osmo_fr_check_sid(uint8_t *rtp_payload, size_t payload_len);
67bool osmo_hr_check_sid(uint8_t *rtp_payload, size_t payload_len);
68int osmo_amr_rtp_enc(uint8_t *payload, uint8_t cmr, enum osmo_amr_type ft,
69 enum osmo_amr_quality bfi);
70int osmo_amr_rtp_dec(const uint8_t *payload, int payload_len, uint8_t *cmr,
71 int8_t *cmi, enum osmo_amr_type *ft,
72 enum osmo_amr_quality *bfi, int8_t *sti);