aboutsummaryrefslogtreecommitdiffstats
path: root/include/osmocom/bsc/codec_pref.h
blob: adefe0473d7f08df6846b367b7820de1cf7e5dfc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#pragma once

#include <stdbool.h>
#include <osmocom/gsm/protocol/gsm_04_08.h>

struct gsm0808_channel_type;
struct gsm0808_speech_codec_list;
struct gsm_audio_support;
struct bts_codec_conf;
struct bsc_msc_data;
struct gsm_bts;
struct channel_mode_and_rate;

enum rate_pref {
	RATE_PREF_NONE,
	RATE_PREF_HR,
	RATE_PREF_FR,
};

int match_codec_pref(struct channel_mode_and_rate *ch_mode_rate,
		     const struct gsm0808_channel_type *ct,
		     const struct gsm0808_speech_codec_list *scl,
		     const struct bsc_msc_data *msc,
		     const struct gsm_bts *bts, enum rate_pref rate_pref);

void gen_bss_supported_codec_list(struct gsm0808_speech_codec_list *scl,
				  const struct bsc_msc_data *msc,
				  const struct gsm_bts *bts);

int calc_amr_rate_intersection(struct gsm48_multi_rate_conf *c,
			       const struct gsm48_multi_rate_conf *b,
			       const struct gsm48_multi_rate_conf *a);

int check_codec_pref(struct llist_head *mscs);