aboutsummaryrefslogtreecommitdiffstats
path: root/src/libmsc
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2012-01-20 20:33:37 +0100
committerNeels Hofmeyr <neels@hofmeyr.de>2017-12-01 03:37:42 +0100
commit52f0fec05a26cdfff5ce437c741cd46428d9d0bf (patch)
tree30ab3e41247f8b1470318241bd7198de0bcfceb8 /src/libmsc
parent3948ede88b65e8d01131cd96b92101d82da1ba49 (diff)
Adding handling of BFI (Bad Frame Indicatior) of received TRAU frames
If a bad TRAU frame is received, it is forwarded to MNCC application as GSM_TCHF_BAD_FRAME. The application can now handle the GAP of missing audio. (e.g. with extrapolation) If TRAU frames are forwarded via RTP, bad frames are dropped, but frame counter and timestamp of RTP sender state is increased.
Diffstat (limited to 'src/libmsc')
-rw-r--r--src/libmsc/mncc_sock.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/libmsc/mncc_sock.c b/src/libmsc/mncc_sock.c
index ad0f27f63..da69dae34 100644
--- a/src/libmsc/mncc_sock.c
+++ b/src/libmsc/mncc_sock.c
@@ -56,7 +56,8 @@ int mncc_sock_from_cc(struct gsm_network *net, struct msgb *msg)
* otherwise we send it through MNCC interface */
if (msg_type == GSM_TCHF_FRAME
|| msg_type == GSM_TCHF_FRAME_EFR
- || msg_type == GSM_TCHF_FRAME_HR) {
+ || msg_type == GSM_TCHF_FRAME_HR
+ || msg_type == GSM_TCHF_BAD_FRAME) {
struct gsm_trans *trans = trans_find_by_callref(net, mncc_in->callref);
if (trans && trans->cc.rs) {
@@ -72,7 +73,8 @@ int mncc_sock_from_cc(struct gsm_network *net, struct msgb *msg)
"but socket is gone\n", get_mncc_name(msg_type));
if (msg_type != GSM_TCHF_FRAME
&& msg_type != GSM_TCHF_FRAME_EFR
- && msg_type != GSM_TCHF_FRAME_HR) {
+ && msg_type != GSM_TCHF_FRAME_HR
+ && msg_type != GSM_TCHF_BAD_FRAME) {
/* release the request */
struct gsm_mncc mncc_out;
memset(&mncc_out, 0, sizeof(mncc_out));