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 */