Skip to content

Commit

Permalink
Fix handling of "data" stream parameters in the streaming plugin (fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
atoppi committed Jul 25, 2024
1 parent 0d1da91 commit 2ac4804
Showing 1 changed file with 13 additions and 7 deletions.
20 changes: 13 additions & 7 deletions src/plugins/janus_streaming.c
Original file line number Diff line number Diff line change
Expand Up @@ -1118,6 +1118,7 @@ static struct janus_json_parameter rtp_media_parameters[] = {
{"port3", JANUS_JSON_INTEGER, JANUS_JSON_PARAM_POSITIVE},
{"svc", JANUS_JSON_BOOL, 0},
/* Data only */
{"datatype", JANUS_JSON_STRING, 0},
{"buffermsg", JANUS_JSON_BOOL, 0},
};
static struct janus_json_parameter rtp_audio_parameters[] = {
Expand Down Expand Up @@ -2181,8 +2182,8 @@ int janus_streaming_init(janus_callbacks *callback, const char *config_path) {
janus_config_item *vsps = janus_config_get(config, m, janus_config_type_item, "h264sps");
janus_config_item *vkf = janus_config_get(config, m, janus_config_type_item, "bufferkf");
janus_config_item *vsc = janus_config_get(config, m, janus_config_type_item, "simulcast");
janus_config_item *dbm = janus_config_get(config, cat, janus_config_type_item, "buffermsg");
janus_config_item *dt = janus_config_get(config, cat, janus_config_type_item, "datatype");
janus_config_item *dbm = janus_config_get(config, m, janus_config_type_item, "buffermsg");
janus_config_item *dt = janus_config_get(config, m, janus_config_type_item, "datatype");
janus_config_item *vport2 = janus_config_get(config, m, janus_config_type_item, "port2");
janus_config_item *vport3 = janus_config_get(config, m, janus_config_type_item, "port3");
janus_config_item *vsvc = janus_config_get(config, m, janus_config_type_item, "svc");
Expand Down Expand Up @@ -4682,7 +4683,7 @@ static json_t *janus_streaming_process_synchronous_request(janus_streaming_sessi
if(stream->type == JANUS_STREAMING_MEDIA_DATA)
janus_config_add(config, m, janus_config_item_create("datatype", stream->textdata ? "text" : "binary"));
if(stream->buffermsg)
janus_config_add(config, m, janus_config_item_create("databuffermsg", "true"));
janus_config_add(config, m, janus_config_item_create("buffermsg", "true"));
temp = temp->next;
}
}
Expand Down Expand Up @@ -9949,14 +9950,19 @@ static void *janus_streaming_relay_thread(void *data) {
/* Are we keeping track of the last message being relayed? */
if(stream->buffermsg) {
janus_mutex_lock(&stream->buffermsg_mutex);
if(stream->last_msg != NULL) {
janus_streaming_rtp_relay_packet_free((janus_streaming_rtp_relay_packet *)stream->last_msg);
stream->last_msg = NULL;
}
janus_streaming_rtp_relay_packet *pkt = g_malloc0(sizeof(janus_streaming_rtp_relay_packet));
pkt->data = g_malloc(bytes);
memcpy(pkt->data, data, bytes);
packet.mindex = stream->mindex;
packet.is_rtp = FALSE;
packet.is_data = TRUE;
packet.textdata = stream->textdata;
pkt->mindex = stream->mindex;
pkt->is_data = TRUE;
pkt->textdata = stream->textdata;
pkt->length = bytes;
/* Store the latest message */
stream->last_msg = pkt;
janus_mutex_unlock(&stream->buffermsg_mutex);
}
/* Go! */
Expand Down

0 comments on commit 2ac4804

Please sign in to comment.