|
|
|
@ -83,31 +83,31 @@ bool kernel_init_table(void) {
|
|
|
|
|
if (!kernel.is_open)
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
struct rtpengine_command_init cmd;
|
|
|
|
|
ssize_t ret;
|
|
|
|
|
|
|
|
|
|
cmd.cmd = REMG_INIT;
|
|
|
|
|
|
|
|
|
|
cmd.init = (struct rtpengine_init_info) {
|
|
|
|
|
.last_cmd = __REMG_LAST,
|
|
|
|
|
.msg_size = {
|
|
|
|
|
[REMG_INIT] = sizeof(struct rtpengine_command_init),
|
|
|
|
|
[REMG_ADD_TARGET] = sizeof(struct rtpengine_command_add_target),
|
|
|
|
|
[REMG_DEL_TARGET] = sizeof(struct rtpengine_command_del_target),
|
|
|
|
|
[REMG_ADD_DESTINATION] = sizeof(struct rtpengine_command_destination),
|
|
|
|
|
[REMG_ADD_CALL] = sizeof(struct rtpengine_command_add_call),
|
|
|
|
|
[REMG_DEL_CALL] = sizeof(struct rtpengine_command_del_call),
|
|
|
|
|
[REMG_ADD_STREAM] = sizeof(struct rtpengine_command_add_stream),
|
|
|
|
|
[REMG_DEL_STREAM] = sizeof(struct rtpengine_command_del_stream),
|
|
|
|
|
[REMG_PACKET] = sizeof(struct rtpengine_command_packet),
|
|
|
|
|
[REMG_INIT_PLAY_STREAMS] = sizeof(struct rtpengine_command_init_play_streams),
|
|
|
|
|
[REMG_GET_PACKET_STREAM] = sizeof(struct rtpengine_command_get_packet_stream),
|
|
|
|
|
[REMG_PLAY_STREAM_PACKET] = sizeof(struct rtpengine_command_play_stream_packet),
|
|
|
|
|
[REMG_PLAY_STREAM] = sizeof(struct rtpengine_command_play_stream),
|
|
|
|
|
[REMG_STOP_STREAM] = sizeof(struct rtpengine_command_stop_stream),
|
|
|
|
|
[REMG_FREE_PACKET_STREAM] = sizeof(struct rtpengine_command_free_packet_stream),
|
|
|
|
|
struct rtpengine_command_init cmd = {
|
|
|
|
|
.cmd = REMG_INIT,
|
|
|
|
|
.init = {
|
|
|
|
|
.last_cmd = __REMG_LAST,
|
|
|
|
|
.msg_size = {
|
|
|
|
|
[REMG_INIT] = sizeof(struct rtpengine_command_init),
|
|
|
|
|
[REMG_ADD_TARGET] = sizeof(struct rtpengine_command_add_target),
|
|
|
|
|
[REMG_DEL_TARGET] = sizeof(struct rtpengine_command_del_target),
|
|
|
|
|
[REMG_ADD_DESTINATION] = sizeof(struct rtpengine_command_destination),
|
|
|
|
|
[REMG_ADD_CALL] = sizeof(struct rtpengine_command_add_call),
|
|
|
|
|
[REMG_DEL_CALL] = sizeof(struct rtpengine_command_del_call),
|
|
|
|
|
[REMG_ADD_STREAM] = sizeof(struct rtpengine_command_add_stream),
|
|
|
|
|
[REMG_DEL_STREAM] = sizeof(struct rtpengine_command_del_stream),
|
|
|
|
|
[REMG_PACKET] = sizeof(struct rtpengine_command_packet),
|
|
|
|
|
[REMG_INIT_PLAY_STREAMS] = sizeof(struct rtpengine_command_init_play_streams),
|
|
|
|
|
[REMG_GET_PACKET_STREAM] = sizeof(struct rtpengine_command_get_packet_stream),
|
|
|
|
|
[REMG_PLAY_STREAM_PACKET] = sizeof(struct rtpengine_command_play_stream_packet),
|
|
|
|
|
[REMG_PLAY_STREAM] = sizeof(struct rtpengine_command_play_stream),
|
|
|
|
|
[REMG_STOP_STREAM] = sizeof(struct rtpengine_command_stop_stream),
|
|
|
|
|
[REMG_FREE_PACKET_STREAM] = sizeof(struct rtpengine_command_free_packet_stream),
|
|
|
|
|
},
|
|
|
|
|
.rtpe_stats = rtpe_stats,
|
|
|
|
|
},
|
|
|
|
|
.rtpe_stats = rtpe_stats,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ret = write(kernel.fd, &cmd, sizeof(cmd));
|
|
|
|
@ -159,14 +159,15 @@ void kernel_shutdown_table(void) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void kernel_add_stream(struct rtpengine_target_info *mti) {
|
|
|
|
|
struct rtpengine_command_add_target cmd;
|
|
|
|
|
ssize_t ret;
|
|
|
|
|
|
|
|
|
|
if (!kernel.is_open)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
cmd.cmd = REMG_ADD_TARGET;
|
|
|
|
|
cmd.target = *mti;
|
|
|
|
|
struct rtpengine_command_add_target cmd = {
|
|
|
|
|
.cmd = REMG_ADD_TARGET,
|
|
|
|
|
.target = *mti,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ret = write(kernel.fd, &cmd, sizeof(cmd));
|
|
|
|
|
if (ret == sizeof(cmd))
|
|
|
|
@ -176,14 +177,15 @@ void kernel_add_stream(struct rtpengine_target_info *mti) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void kernel_add_destination(struct rtpengine_destination_info *mdi) {
|
|
|
|
|
struct rtpengine_command_destination cmd;
|
|
|
|
|
ssize_t ret;
|
|
|
|
|
|
|
|
|
|
if (!kernel.is_open)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
cmd.cmd = REMG_ADD_DESTINATION;
|
|
|
|
|
cmd.destination = *mdi;
|
|
|
|
|
struct rtpengine_command_destination cmd = {
|
|
|
|
|
.cmd = REMG_ADD_DESTINATION,
|
|
|
|
|
.destination = *mdi,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ret = write(kernel.fd, &cmd, sizeof(cmd));
|
|
|
|
|
if (ret == sizeof(cmd))
|
|
|
|
@ -210,13 +212,14 @@ bool kernel_del_stream(struct rtpengine_command_del_target *cmd) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
unsigned int kernel_add_call(const char *id) {
|
|
|
|
|
struct rtpengine_command_add_call cmd;
|
|
|
|
|
ssize_t ret;
|
|
|
|
|
|
|
|
|
|
if (!kernel.is_open)
|
|
|
|
|
return UNINIT_IDX;
|
|
|
|
|
|
|
|
|
|
cmd.cmd = REMG_ADD_CALL;
|
|
|
|
|
struct rtpengine_command_add_call cmd = {
|
|
|
|
|
.cmd = REMG_ADD_CALL,
|
|
|
|
|
};
|
|
|
|
|
snprintf(cmd.call.call_id, sizeof(cmd.call.call_id), "%s", id);
|
|
|
|
|
|
|
|
|
|
ret = read(kernel.fd, &cmd, sizeof(cmd));
|
|
|
|
@ -226,14 +229,15 @@ unsigned int kernel_add_call(const char *id) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void kernel_del_call(unsigned int idx) {
|
|
|
|
|
struct rtpengine_command_del_call cmd;
|
|
|
|
|
ssize_t ret;
|
|
|
|
|
|
|
|
|
|
if (!kernel.is_open)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
cmd.cmd = REMG_DEL_CALL;
|
|
|
|
|
cmd.call_idx = idx;
|
|
|
|
|
struct rtpengine_command_del_call cmd = {
|
|
|
|
|
.cmd = REMG_DEL_CALL,
|
|
|
|
|
.call_idx = idx,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ret = write(kernel.fd, &cmd, sizeof(cmd));
|
|
|
|
|
if (ret == sizeof(cmd))
|
|
|
|
@ -243,14 +247,15 @@ void kernel_del_call(unsigned int idx) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
unsigned int kernel_add_intercept_stream(unsigned int call_idx, const char *id) {
|
|
|
|
|
struct rtpengine_command_add_stream cmd;
|
|
|
|
|
ssize_t ret;
|
|
|
|
|
|
|
|
|
|
if (!kernel.is_open)
|
|
|
|
|
return UNINIT_IDX;
|
|
|
|
|
|
|
|
|
|
cmd.cmd = REMG_ADD_STREAM;
|
|
|
|
|
cmd.stream.idx.call_idx = call_idx;
|
|
|
|
|
struct rtpengine_command_add_stream cmd = {
|
|
|
|
|
.cmd = REMG_ADD_STREAM,
|
|
|
|
|
.stream.idx.call_idx = call_idx,
|
|
|
|
|
};
|
|
|
|
|
snprintf(cmd.stream.stream_name, sizeof(cmd.stream.stream_name), "%s", id);
|
|
|
|
|
|
|
|
|
|
ret = read(kernel.fd, &cmd, sizeof(cmd));
|
|
|
|
@ -299,11 +304,13 @@ bool kernel_add_stream_packet(unsigned int idx, const char *buf, size_t len, uns
|
|
|
|
|
size_t total_len = len + sizeof(struct rtpengine_command_play_stream_packet);
|
|
|
|
|
struct rtpengine_command_play_stream_packet *cmd = alloca(total_len);
|
|
|
|
|
|
|
|
|
|
cmd->cmd = REMG_PLAY_STREAM_PACKET;
|
|
|
|
|
cmd->play_stream_packet.packet_stream_idx = idx;
|
|
|
|
|
cmd->play_stream_packet.delay_ms = delay_ms;
|
|
|
|
|
cmd->play_stream_packet.delay_ts = ts;
|
|
|
|
|
cmd->play_stream_packet.duration_ts = dur;
|
|
|
|
|
*cmd = (__typeof__(*cmd)) {
|
|
|
|
|
.cmd = REMG_PLAY_STREAM_PACKET,
|
|
|
|
|
.play_stream_packet.packet_stream_idx = idx,
|
|
|
|
|
.play_stream_packet.delay_ms = delay_ms,
|
|
|
|
|
.play_stream_packet.delay_ts = ts,
|
|
|
|
|
.play_stream_packet.duration_ts = dur,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
memcpy(&cmd->play_stream_packet.data, buf, len);
|
|
|
|
|
|
|
|
|
|