FreeCalypso > hg > themwi-rtp-lib
diff include/endp.h @ 19:b8cb5146e5b4
endp: beginning
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 07 Jul 2024 02:14:01 +0000 |
parents | |
children | 695fdb670d30 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/endp.h Sun Jul 07 02:14:01 2024 +0000 @@ -0,0 +1,60 @@ +/* + * twrtp_endp is the big abstraction provided by libtwrtp: a complete + * RTP endpoint with RTP & RTCP sockets, sending and receiving both types + * of packets, and incorporating twjit. + */ + +#pragma once + +#include <stdint.h> +#include <stdbool.h> + +#include <osmocom/core/osmo_io.h> +#include <osmocom/core/socket.h> + +#include <themwi/rtp/twjit.h> + +struct twrtp_endp_tx { + uint32_t ssrc; + uint32_t ts; + uint16_t seq; + bool started; + bool restart; +}; + +struct twrtp_endp_stats { + uint32_t rx_rtp_pkt; + uint32_t rx_rtp_badsrc; + uint32_t rx_rtcp_pkt; + uint32_t rx_rtcp_badsrc; + uint32_t tx_rtp_pkt; + uint32_t tx_rtp_bytes; + uint32_t tx_rtcp_pkt; +}; + +struct twrtp_endp { + /* the root of the matter: the two sockets */ + int rtp_fd; + int rtcp_fd; + struct osmo_io_fd *iofd_rtp; + struct osmo_io_fd *iofd_rtcp; + struct osmo_sockaddr rtp_remote; + struct osmo_sockaddr rtcp_remote; + /* Rx and Tx state */ + struct twrtp_jibuf_inst *twjit; + /* RTCP Rx structure to be inserted here */ + struct twrtp_endp_tx tx; + /* always have to have stats */ + struct twrtp_endp_stats stats; + /* bool flags at the end for structure packing optimization */ + bool register_done; + bool remote_set; + bool rx_enable; +}; + +/* public API functions */ + +struct twrtp_endp *twrtp_endp_create(void *ctx, + struct twrtp_jibuf_config *config); + +void twrtp_endp_destroy(struct twrtp_endp *endp);