Verify remote no-audio readiness independently of the audio buffer

This commit is contained in:
evgeny committed 2026-11-01 22:52:18 +01:00
1 parent 827f3dc619
commit 4e28c518bd
1 file changed
+24
+24
View File
@@ -2125,6 +2125,20 @@ static void test_viewer_radio_mute(void) {
CHECK(!radio_member_silenced(nodes[1], GROUP1, source));
CHECK(stream_media_open(nodes[1], GROUP1, source, epoch, STREAM_MEDIA_TRACK_VIDEO, &first) == STREAM_OK);
CHECK(stream_media_open(nodes[1], GROUP1, source, epoch, STREAM_MEDIA_TRACK_VIDEO | STREAM_MEDIA_TRACK_AUDIO, &second) == STREAM_OK);
uint8_t video[8] = {0}, audio[1] = {1}, wire[512]; size_t length = 0;
struct stream_media_block media = {.format = {64, 64, 0, STREAM_MEDIA_H264, STREAM_MEDIA_OPUS_STEREO, 1},
.video_count = 1, .audio_count = 1};
media.video[0] = (struct stream_media_video){1, 0, sizeof(video), 0, sizeof(video), STREAM_MEDIA_KEY, video};
media.audio[0] = (struct stream_media_audio){0, sizeof(audio), 960, audio};
CHECK(stream_media_encode(&media, wire, sizeof(wire), &length) == STREAM_OK);
CHECK(stream_publish_block(publisher, wire, length) == STREAM_OK);
struct stream_media_status status;
uint64_t media_deadline = get_time_tb() + 100000;
do {
CHECK(get_time_tb() < media_deadline); test_clock_poll(ua, 100);
CHECK(stream_media_get_status(second, &status) == STREAM_OK);
} while (!status.initialized);
CHECK(status.audio_enabled);
CHECK(radio_member_silenced(nodes[1], GROUP1, source) && !radio_member_muted(nodes[1], GROUP1, source));
CHECK(!radio_member_silenced(nodes[1], GROUP2, source));
CHECK(!radio_member_silenced(nodes[1], GROUP1, nodes[2]->node_id));
@@ -2132,10 +2146,20 @@ static void test_viewer_radio_mute(void) {
CHECK(radio_member_silenced(nodes[1], GROUP1, source));
CHECK(radio_set_member_muted(nodes[1], GROUP1, source, 1) == 0);
CHECK(stream_publish_set_audio_enabled(publisher, 0) == STREAM_OK); wait_source_audio(epoch, 0);
media.audio_count = 0; media.video[0].frame_id = 2; media.video[0].pts_us = 40000;
CHECK(stream_media_encode(&media, wire, sizeof(wire), &length) == STREAM_OK);
CHECK(stream_publish_block(publisher, wire, length) == STREAM_OK);
media_deadline = get_time_tb() + 100000;
do {
CHECK(get_time_tb() < media_deadline); test_clock_poll(ua, 100);
CHECK(stream_media_get_status(second, &status) == STREAM_OK);
} while (status.video_us != 40000);
CHECK(!status.audio_enabled && status.ready_us == 40000 && status.audio_us == 20000);
CHECK(!stream_radio_muted(nodes[1], GROUP1, source) && radio_member_silenced(nodes[1], GROUP1, source));
CHECK(radio_set_member_muted(nodes[1], GROUP1, source, 0) == 0);
CHECK(!radio_member_silenced(nodes[1], GROUP1, source));
CHECK(stream_publish_set_audio_enabled(publisher, 1) == STREAM_OK); wait_source_audio(epoch, 1);
CHECK(stream_media_get_status(second, &status) == STREAM_OK && status.audio_enabled);
CHECK(radio_member_silenced(nodes[1], GROUP1, source));
stream_close(second); second = NULL;
CHECK(!radio_member_silenced(nodes[1], GROUP1, source));