libosmocodec  0.9.6.20171026
Osmocom codec library
codec.h
Go to the documentation of this file.
1 
3 #pragma once
4 
5 #include <stdint.h>
6 #include <stdbool.h>
7 
8 #include <osmocom/core/utils.h>
9 
10 extern const uint16_t gsm610_bitorder[]; /* FR */
11 extern const uint16_t gsm620_unvoiced_bitorder[]; /* HR unvoiced */
12 extern const uint16_t gsm620_voiced_bitorder[]; /* HR voiced */
13 extern const uint16_t gsm660_bitorder[]; /* EFR */
14 
15 extern const uint16_t gsm690_12_2_bitorder[]; /* AMR 12.2 kbits */
16 extern const uint16_t gsm690_10_2_bitorder[]; /* AMR 10.2 kbits */
17 extern const uint16_t gsm690_7_95_bitorder[]; /* AMR 7.95 kbits */
18 extern const uint16_t gsm690_7_4_bitorder[]; /* AMR 7.4 kbits */
19 extern const uint16_t gsm690_6_7_bitorder[]; /* AMR 6.7 kbits */
20 extern const uint16_t gsm690_5_9_bitorder[]; /* AMR 5.9 kbits */
21 extern const uint16_t gsm690_5_15_bitorder[]; /* AMR 5.15 kbits */
22 extern const uint16_t gsm690_4_75_bitorder[]; /* AMR 4.75 kbits */
23 
24 extern const struct value_string osmo_amr_type_names[];
25 
27  AMR_4_75 = 0,
28  AMR_5_15 = 1,
29  AMR_5_90 = 2,
30  AMR_6_70 = 3,
31  AMR_7_40 = 4,
32  AMR_7_95 = 5,
33  AMR_10_2 = 6,
34  AMR_12_2 = 7,
35  AMR_SID = 8,
40 };
41 
43  AMR_BAD = 0,
45 };
46 
51 static inline bool osmo_amr_is_speech(enum osmo_amr_type ft)
52 {
53  switch (ft) {
54  case AMR_4_75:
55  case AMR_5_15:
56  case AMR_5_90:
57  case AMR_6_70:
58  case AMR_7_40:
59  case AMR_7_95:
60  case AMR_10_2:
61  case AMR_12_2:
62  return true;
63  default:
64  return false;
65  }
66 }
67 
68 bool osmo_fr_check_sid(const uint8_t *rtp_payload, size_t payload_len);
69 bool osmo_hr_check_sid(const uint8_t *rtp_payload, size_t payload_len);
70 int osmo_amr_rtp_enc(uint8_t *payload, uint8_t cmr, enum osmo_amr_type ft,
71  enum osmo_amr_quality bfi);
72 int osmo_amr_rtp_dec(const uint8_t *payload, int payload_len, uint8_t *cmr,
73  int8_t *cmi, enum osmo_amr_type *ft,
74  enum osmo_amr_quality *bfi, int8_t *sti);
Definition: codec.h:37
const struct value_string osmo_amr_type_names[]
Definition: gsm690.c:221
Definition: codec.h:31
Definition: codec.h:36
Definition: codec.h:32
osmo_amr_quality
Definition: codec.h:42
osmo_amr_type
Definition: codec.h:26
Definition: codec.h:28
Definition: codec.h:35
Definition: codec.h:44
int osmo_amr_rtp_enc(uint8_t *payload, uint8_t cmr, enum osmo_amr_type ft, enum osmo_amr_quality bfi)
Encode various AMR parameters from RTP payload (RFC 4867)
Definition: gsm690.c:299
Definition: codec.h:38
Definition: codec.h:29
const uint16_t gsm690_5_15_bitorder[]
Definition: gsm690.c:186
const uint16_t gsm690_12_2_bitorder[]
Definition: gsm690.c:41
Definition: codec.h:30
const uint16_t gsm610_bitorder[]
Definition: gsm610.c:38
Definition: codec.h:33
Definition: codec.h:34
Definition: codec.h:43
Definition: codec.h:27
const uint16_t gsm690_10_2_bitorder[]
Definition: gsm690.c:73
bool osmo_hr_check_sid(const uint8_t *rtp_payload, size_t payload_len)
Check whether RTP frame contains HR SID code word according to TS 101 318 §5.2.2. ...
Definition: gsm620.c:281
bool osmo_fr_check_sid(const uint8_t *rtp_payload, size_t payload_len)
Check whether RTP frame contains FR SID code word according to TS 101 318 §5.1.2. ...
Definition: gsm610.c:307
const uint16_t gsm690_4_75_bitorder[]
Definition: gsm690.c:204
const uint16_t gsm690_6_7_bitorder[]
Definition: gsm690.c:146
const uint16_t gsm690_7_4_bitorder[]
Definition: gsm690.c:124
int osmo_amr_rtp_dec(const uint8_t *payload, int payload_len, uint8_t *cmr, int8_t *cmi, enum osmo_amr_type *ft, enum osmo_amr_quality *bfi, int8_t *sti)
Decode various AMR parameters from RTP payload (RFC 4867) acording to 3GPP TS 26.101.
Definition: gsm690.c:251
const uint16_t gsm620_voiced_bitorder[]
Definition: gsm620.c:154
static bool osmo_amr_is_speech(enum osmo_amr_type ft)
Check if given AMR Frame Type is a speech frame.
Definition: codec.h:51
Definition: codec.h:39
const uint16_t gsm690_7_95_bitorder[]
Definition: gsm690.c:101
const uint16_t gsm660_bitorder[]
Definition: gsm660.c:36
const uint16_t gsm690_5_9_bitorder[]
Definition: gsm690.c:167
const uint16_t gsm620_unvoiced_bitorder[]
Definition: gsm620.c:35