From 16c99e9d07ec2a0f18e39a95bce4d26bc1b07ae6 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Fri, 20 Jan 2023 15:36:08 -0500 Subject: [PATCH] MT#56447 output "streams" list with "configured" event ... and adapt tests Change-Id: I25561bd712fcf9c4d53edf7b883230882213878a --- daemon/janus.c | 53 ++++++++++++++---- t/auto-daemon-tests-websocket.py | 95 ++++++++++++++++++++++++++++++++ 2 files changed, 137 insertions(+), 11 deletions(-) diff --git a/daemon/janus.c b/daemon/janus.c index 1b04c7704..f4469b4d3 100644 --- a/daemon/janus.c +++ b/daemon/janus.c @@ -735,15 +735,13 @@ static const char *janus_videoroom_configure(struct websocket_message *wm, struc json_builder_set_member_name(builder, "configured"); json_builder_add_string_value(builder, "ok"); + json_builder_set_member_name(builder, "streams"); + json_builder_begin_array(builder); + + const char *a_codec = NULL, *v_codec = NULL; + for (GList *l = ml->medias.head; l; l = l->next) { struct call_media *media = l->data; - const char *ent = NULL; - if (media->type_id == MT_AUDIO) - ent = "audio_codec"; - else if (media->type_id == MT_VIDEO) - ent = "video_codec"; - else - continue; const char *codec = NULL; for (GList *k = media->codecs.codec_prefs.head; k; k = k->next) { @@ -752,13 +750,46 @@ static const char *janus_videoroom_configure(struct websocket_message *wm, struc // XXX check codec support? break; } - if (!codec) - continue; - json_builder_set_member_name(builder, ent); - json_builder_add_string_value(builder, codec); + json_builder_begin_object(builder); + + json_builder_set_member_name(builder, "type"); + json_builder_add_string_value(builder, media->type.s); + json_builder_set_member_name(builder, "mindex"); + json_builder_add_int_value(builder, media->index - 1); + json_builder_set_member_name(builder, "mid"); + if (media->media_id.s) + json_builder_add_string_value(builder, media->media_id.s); + else + json_builder_add_null_value(builder); + json_builder_set_member_name(builder, "codec"); + if (codec) + json_builder_add_string_value(builder, codec); + else + json_builder_add_null_value(builder); + + json_builder_end_object(builder); + + if (media->type_id == MT_AUDIO) + a_codec = codec; + else if (media->type_id == MT_VIDEO) + v_codec = codec; } + json_builder_end_array(builder); + + json_builder_set_member_name(builder, "audio_codec"); + if (a_codec) + json_builder_add_string_value(builder, a_codec); + else + json_builder_add_null_value(builder); + + json_builder_set_member_name(builder, "video_codec"); + if (v_codec) + json_builder_add_string_value(builder, v_codec); + else + json_builder_add_null_value(builder); + janus_notify_publishers(wm, room_id, handle->id); } diff --git a/t/auto-daemon-tests-websocket.py b/t/auto-daemon-tests-websocket.py index 2304ce381..d32311481 100644 --- a/t/auto-daemon-tests-websocket.py +++ b/t/auto-daemon-tests-websocket.py @@ -467,6 +467,15 @@ class TestVideoroom(unittest.TestCase): "room": room, "configured": "ok", "audio_codec": "PCMA", + "video_codec": None, + "streams": [ + { + "codec": "PCMA", + "mid": None, + "mindex": 0, + "type": "audio", + }, + ], }, }, "jsep": {"type": "answer", "sdp": sdp}, @@ -742,6 +751,15 @@ class TestVideoroom(unittest.TestCase): "room": room, "configured": "ok", "audio_codec": "PCMA", + "video_codec": None, + "streams": [ + { + "codec": "PCMA", + "mid": None, + "mindex": 0, + "type": "audio", + }, + ], }, }, "jsep": {"type": "answer", "sdp": sdp}, @@ -1001,6 +1019,15 @@ class TestVideoroom(unittest.TestCase): "room": room, "configured": "ok", "audio_codec": "PCMA", + "video_codec": None, + "streams": [ + { + "codec": "PCMA", + "mid": None, + "mindex": 0, + "type": "audio", + }, + ], }, }, "jsep": {"type": "answer", "sdp": sdp}, @@ -1089,6 +1116,15 @@ class TestVideoroom(unittest.TestCase): "room": room, "configured": "ok", "audio_codec": "PCMA", + "video_codec": None, + "streams": [ + { + "codec": "PCMA", + "mid": None, + "mindex": 0, + "type": "audio", + }, + ], }, }, "jsep": {"type": "answer", "sdp": sdp}, @@ -1179,6 +1215,15 @@ class TestVideoroom(unittest.TestCase): "room": room, "configured": "ok", "audio_codec": "PCMA", + "video_codec": None, + "streams": [ + { + "codec": "PCMA", + "mid": "audio", + "mindex": 0, + "type": "audio", + }, + ], }, }, "jsep": {"type": "answer", "sdp": sdp}, @@ -1264,6 +1309,15 @@ class TestVideoroom(unittest.TestCase): "room": room, "configured": "ok", "audio_codec": "PCMA", + "video_codec": None, + "streams": [ + { + "codec": "PCMA", + "mid": "audio", + "mindex": 0, + "type": "audio", + }, + ], }, }, "jsep": {"type": "answer", "sdp": sdp}, @@ -1541,6 +1595,20 @@ class TestVideoroom(unittest.TestCase): "configured": "ok", "audio_codec": "opus", "video_codec": "VP8", + "streams": [ + { + "codec": "opus", + "mid": "0", + "mindex": 0, + "type": "audio", + }, + { + "codec": "VP8", + "mid": "1", + "mindex": 1, + "type": "video", + }, + ], }, }, "jsep": {"type": "answer", "sdp": sdp}, @@ -1758,6 +1826,15 @@ class TestVideoroom(unittest.TestCase): "room": room, "configured": "ok", "audio_codec": "PCMA", + "video_codec": None, + "streams": [ + { + "codec": "PCMA", + "mid": "audio", + "mindex": 0, + "type": "audio", + }, + ], }, }, "jsep": {"type": "answer", "sdp": sdp}, @@ -2081,6 +2158,15 @@ class TestVideoroom(unittest.TestCase): "room": room, "configured": "ok", "audio_codec": "opus", + "video_codec": None, + "streams": [ + { + "codec": "opus", + "mid": None, + "mindex": 0, + "type": "audio", + }, + ], }, }, "jsep": {"type": "answer", "sdp": sdp}, @@ -2268,6 +2354,15 @@ class TestVideoroom(unittest.TestCase): "room": room, "configured": "ok", "audio_codec": "PCMA", + "video_codec": None, + "streams": [ + { + "codec": "PCMA", + "mid": "audio", + "mindex": 0, + "type": "audio", + }, + ], }, }, "jsep": {"type": "answer", "sdp": sdp},