Skip to content

Commit

Permalink
Allow Lua and Duktape plugins to relay extensions when relaying RTP p…
Browse files Browse the repository at this point in the history
…ackets (#3162)
  • Loading branch information
lminiero committed Feb 13, 2023
1 parent 83245f7 commit 51a4c9f
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 6 deletions.
2 changes: 2 additions & 0 deletions src/plugins/duktape/janus-sdp.js
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,8 @@ JANUSSDP.generateAnswer = function(offer, options) {
answer.push({ type: "a", name: a.name, value: value });
} else if(options.disableTwcc !== true && a.value.indexOf("draft-holmer-rmcat-transport-wide-cc-extensions-01") !== -1) {
answer.push({ type: "a", name: a.name, value: value });
} else if(options.enableAudioLevel !== false && a.value.indexOf("urn:ietf:params:rtp-hdrext:ssrc-audio-level") !== -1) {
answer.push({ type: "a", name: a.name, value: value });
}
}
} else {
Expand Down
9 changes: 6 additions & 3 deletions src/plugins/janus_duktape.c
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,7 @@ typedef struct janus_duktape_rtp_relay_packet {
janus_duktape_session *sender;
janus_rtp_header *data;
gint length;
janus_plugin_rtp_extensions extensions;
gboolean is_rtp; /* This may be a data packet and not RTP */
gboolean is_video;
uint32_t ssrc[3];
Expand Down Expand Up @@ -2478,6 +2479,7 @@ void janus_duktape_incoming_rtp(janus_plugin_session *handle, janus_plugin_rtp *
packet.data = rtp;
packet.length = len;
packet.is_video = video;
packet.extensions = rtp_packet->extensions;
packet.ssrc[0] = (sc != -1 ? session->ssrc[0] : 0);
packet.ssrc[1] = (sc != -1 ? session->ssrc[1] : 0);
packet.ssrc[2] = (sc != -1 ? session->ssrc[2] : 0);
Expand Down Expand Up @@ -2838,7 +2840,8 @@ static void janus_duktape_relay_rtp_packet(gpointer data, gpointer user_data) {
}
/* Send the packet */
if(duktape_janus_core != NULL) {
janus_plugin_rtp rtp = { .mindex = -1, .video = packet->is_video, .buffer = (char *)packet->data, .length = packet->length };
janus_plugin_rtp rtp = { .mindex = -1, .video = packet->is_video,
.buffer = (char *)packet->data, .length = packet->length, .extensions = packet->extensions };
janus_plugin_rtp_extensions_reset(&rtp.extensions);
duktape_janus_core->relay_rtp(session->handle, &rtp);
}
Expand All @@ -2854,8 +2857,8 @@ static void janus_duktape_relay_rtp_packet(gpointer data, gpointer user_data) {
janus_rtp_header_update(packet->data, packet->is_video ? &session->vrtpctx : &session->artpctx, packet->is_video, 0);
/* Send the packet */
if(duktape_janus_core != NULL) {
janus_plugin_rtp rtp = { .mindex = -1, .video = packet->is_video, .buffer = (char *)packet->data, .length = packet->length };
janus_plugin_rtp_extensions_reset(&rtp.extensions);
janus_plugin_rtp rtp = { .mindex = -1, .video = packet->is_video,
.buffer = (char *)packet->data, .length = packet->length, .extensions = packet->extensions };
duktape_janus_core->relay_rtp(session->handle, &rtp);
}
/* Restore the timestamp and sequence number to what the publisher set them to */
Expand Down
9 changes: 6 additions & 3 deletions src/plugins/janus_lua.c
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,7 @@ typedef struct janus_lua_rtp_relay_packet {
janus_lua_session *sender;
janus_rtp_header *data;
gint length;
janus_plugin_rtp_extensions extensions;
gboolean is_rtp; /* This may be a data packet and not RTP */
gboolean is_video;
uint32_t ssrc[3];
Expand Down Expand Up @@ -2147,6 +2148,7 @@ void janus_lua_incoming_rtp(janus_plugin_session *handle, janus_plugin_rtp *rtp_
packet.length = len;
packet.is_rtp = TRUE;
packet.is_video = video;
packet.extensions = rtp_packet->extensions;
packet.ssrc[0] = (sc != -1 ? session->ssrc[0] : 0);
packet.ssrc[1] = (sc != -1 ? session->ssrc[1] : 0);
packet.ssrc[2] = (sc != -1 ? session->ssrc[2] : 0);
Expand Down Expand Up @@ -2466,7 +2468,8 @@ static void janus_lua_relay_rtp_packet(gpointer data, gpointer user_data) {
}
/* Send the packet */
if(lua_janus_core != NULL) {
janus_plugin_rtp rtp = { .mindex = -1, .video = packet->is_video, .buffer = (char *)packet->data, .length = packet->length };
janus_plugin_rtp rtp = { .mindex = -1, .video = packet->is_video,
.buffer = (char *)packet->data, .length = packet->length, .extensions = packet->extensions };
janus_plugin_rtp_extensions_reset(&rtp.extensions);
lua_janus_core->relay_rtp(session->handle, &rtp);
}
Expand All @@ -2482,8 +2485,8 @@ static void janus_lua_relay_rtp_packet(gpointer data, gpointer user_data) {
janus_rtp_header_update(packet->data, packet->is_video ? &session->vrtpctx : &session->artpctx, packet->is_video, 0);
/* Send the packet */
if(lua_janus_core != NULL) {
janus_plugin_rtp rtp = { .mindex = -1, .video = packet->is_video, .buffer = (char *)packet->data, .length = packet->length };
janus_plugin_rtp_extensions_reset(&rtp.extensions);
janus_plugin_rtp rtp = { .mindex = -1, .video = packet->is_video,
.buffer = (char *)packet->data, .length = packet->length, .extensions = packet->extensions };
lua_janus_core->relay_rtp(session->handle, &rtp);
}
/* Restore the timestamp and sequence number to what the publisher set them to */
Expand Down
2 changes: 2 additions & 0 deletions src/plugins/lua/janus-sdp.lua
Original file line number Diff line number Diff line change
Expand Up @@ -444,6 +444,8 @@ function JANUSSDP.generateAnswer(offer, options)
answer[#answer+1] = { type = "a", name = a.name, value = value }
elseif options.disableTwcc ~= true and a.value:find("draft-holmer-rmcat-transport-wide-cc-extensions-01", 1, true) then
answer[#answer+1] = { type = "a", name = a.name, value = value }
elseif options.enableAudioLevel ~= false and a.value:find("urn:ietf:params:rtp-hdrext:ssrc-audio-level", 1, true) then
answer[#answer+1] = a
end
end
else
Expand Down

0 comments on commit 51a4c9f

Please sign in to comment.