Add mbtk_loopbuff and rtp support.
Change-Id: Idc80af4efb8ff76c4afc59fdf1d3896b453e6ff4
diff --git a/mbtk/mbtk_rtpd/inc/mbtk_rtp_internal.h b/mbtk/mbtk_rtpd/inc/mbtk_rtp_internal.h
new file mode 100755
index 0000000..70995dc
--- /dev/null
+++ b/mbtk/mbtk_rtpd/inc/mbtk_rtp_internal.h
@@ -0,0 +1,123 @@
+/*
+* mbtk_rtp.h
+*
+* MBTK RTP(VOIP) internal header file.
+*
+* Author : lb
+* Date : 2024/12/2 14:14:06
+*/
+#ifndef _MBTK_RTP_INTERNAL_H
+#define _MBTK_RTP_INTERNAL_H
+#include "mbtk_type.h"
+#include "mbtk_audio2.h"
+#include "mbtk_ril_api.h"
+#include "mbtk_loop_buffer.h"
+
+#define MBTK_IND_START_FLAG 0xFF
+#define MBTK_IND_END_FLAG 0xEE
+
+#define RTP_UDP_SER_PORT_DEFAULT 53248
+#define RTP_UDP_CLI_PORT_DEFAULT 55555
+#define RTP_IPC_SOCK_PATH "/tmp/mbtk_rtp_sock"
+
+#define RTP_SAMPLE_NUMBER 2 // 2 Byte for every sample.
+#define RTP_DEFAULT_MTU 1280
+#define MAX_IOVECS 16
+
+typedef void (*rtp_socket_read_cb_func)(int fd);
+
+typedef enum {
+ RTP_STATE_DISABLE = 0, // RTP disable,do nothing. Only wait audio mode change.
+ RTP_STATE_ENABLE, // RTP enable,but not on call.
+ RTP_STATE_VOIP_PROCESS // RTP enable and on call.
+} rtp_state_enum;
+
+typedef enum {
+ RTP_UDP_SER_STATE_IDEL,
+ RTP_UDP_SER_STATE_STARTING,
+ RTP_UDP_SER_STATE_RUNNING,
+ RTP_UDP_SER_STATE_STOPING
+} rtp_udp_ser_state_enum;
+
+typedef enum {
+ RTP_VOIP_SER_STATE_IDEL,
+ RTP_VOIP_SER_STATE_STARTING,
+ RTP_VOIP_SER_STATE_RUNNING,
+ RTP_VOIP_SER_STATE_STOPING
+} rtp_voip_ser_state_enum;
+
+typedef struct {
+ rtp_state_enum rtp_state_pre;
+ rtp_state_enum rtp_state_cur;
+ int volume;
+ char remote_ip[20];
+ int server_port; // Must be 53248 (remote port)
+ int client_port; // local port
+
+ char vlan[32];
+ mbtk_audio_sample_rate_enum sample_rate;
+ int channel; // Only support : 1
+} rtp_config_t;
+
+typedef struct {
+ uint32 version; // 2 (2 bit)
+ uint32 padding; // 0 (1 bit)
+ uint32 extension; // 0 (1 bit)
+ uint32 csrc_count; // 1 (4 bit)
+
+ uint32 marker; // 0 (1 bit)
+ uint32 payload_type; // 0x60 (7 bit)
+
+ uint32 sequence; // (16 bit)
+
+ uint32 timestamp; // (32 bit)
+
+ uint32 ssrc; // 0xFFFF0000 (32 bit)
+
+ uint32 csrc; // 0xFFFF0000 (32 bit)
+} rtp_header_info_t;
+
+typedef struct {
+ int fd;
+ rtp_socket_read_cb_func read_cb;
+} rtp_socket_info_t;
+
+typedef struct {
+ uint32 mtu;
+
+ uint32 pack_size;
+ struct iovec iov[MAX_IOVECS];
+ int iov_idx;
+
+ uint8 remain_buff[RTP_DEFAULT_MTU];
+ uint32 remain_buff_len;
+} rtp_udp_send_info_t;
+
+typedef struct {
+ bool first_packet;
+ uint32_t offset;
+
+ mbtk_loop_buff_handle *recv_buff;
+} rtp_udp_recv_info_t;
+
+typedef struct {
+ mbtk_ril_handle* ril_handle;
+ int epoll_fd;
+
+ rtp_socket_info_t unix_sock_cli;
+
+ rtp_socket_info_t udp_recv_sock; // Server
+ rtp_socket_info_t udp_send_sock; // Client
+
+ uint32 frame_size;
+ uint32 playback_size;
+ uint32 sample_for_ms;
+
+ rtp_udp_send_info_t send;
+ rtp_udp_recv_info_t recv;
+
+ pthread_cond_t cond;
+ pthread_mutex_t mutex;
+} rtp_info_t;
+
+#endif /* _MBTK_RTP_INTERNAL_H */