FreeCalypso > hg > themwi-rtp-lib
comparison src/rtp_rx.c @ 23:9e477a4b485a
endp: implement RTP Rx
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 07 Jul 2024 06:27:56 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
22:587437b62ed5 | 23:9e477a4b485a |
---|---|
1 /* | |
2 * Here we implement RTP Rx path via osmo_io callback. | |
3 */ | |
4 | |
5 #include <stdint.h> | |
6 #include <stdbool.h> | |
7 | |
8 #include <osmocom/core/msgb.h> | |
9 #include <osmocom/core/osmo_io.h> | |
10 #include <osmocom/core/socket.h> | |
11 #include <osmocom/core/utils.h> | |
12 | |
13 #include <themwi/rtp/endp.h> | |
14 #include <themwi/rtp/twjit.h> | |
15 #include "endp_internal.h" | |
16 | |
17 static void rtp_rx_cb(struct osmo_io_fd *iofd, int res, struct msgb *msg, | |
18 const struct osmo_sockaddr *saddr) | |
19 { | |
20 struct twrtp_endp *endp = osmo_iofd_get_data(iofd); | |
21 | |
22 if (!msg) | |
23 return; | |
24 if (!endp->remote_set) { | |
25 msgb_free(msg); | |
26 return; | |
27 } | |
28 if (osmo_sockaddr_cmp(saddr, &endp->rtp_remote)) { | |
29 endp->stats.rx_rtp_badsrc++; | |
30 msgb_free(msg); | |
31 return; | |
32 } | |
33 endp->stats.rx_rtp_pkt++; | |
34 if (endp->rx_enable) | |
35 twrtp_jibuf_input(endp->twjit, msg); | |
36 else | |
37 msgb_free(msg); | |
38 } | |
39 | |
40 const struct osmo_io_ops _twrtp_endp_iops_rtp = { | |
41 .recvfrom_cb = rtp_rx_cb, | |
42 }; |