Browse Source

Keep call audio regressions explicit about untimed sources

master
evgeny 4 days ago
parent
commit
0195732b4e
  1. 4
      tools/chatgui/tests/test_audio_recovery.cpp
  2. 12
      tools/chatgui/tests/test_call_jitter.cpp

4
tools/chatgui/tests/test_audio_recovery.cpp

@ -268,13 +268,13 @@ int main(int argc, char** argv) {
uasync_poll(instance.ua, 0);
REQUIRE(call_audio_start(99) == 0);
int16_t silence[960]{};
for (int i = 0; i < 100; ++i) call_audio_feed_pcm(99, silence, 960);
for (int i = 0; i < 100; ++i) call_audio_feed_pcm(99, silence, 960, INT64_MIN);
int pending = 0;
for (auto* task = instance.ua->posted_tasks_head; task; task = task->next) ++pending;
REQUIRE(pending == 8);
call_audio_stop();
REQUIRE(call_audio_start(100) == 0);
for (int i = 0; i < 100; ++i) call_audio_feed_pcm(100, silence, 960);
for (int i = 0; i < 100; ++i) call_audio_feed_pcm(100, silence, 960, INT64_MIN);
pending = 0;
for (auto* task = instance.ua->posted_tasks_head; task; task = task->next) ++pending;
REQUIRE(pending == 8); // Новый звонок также учитывает ещё не освобождённые задачи старого.

12
tools/chatgui/tests/test_call_jitter.cpp

@ -26,7 +26,7 @@ static int decode_bad(void* arg, const uint8_t*, int, int16_t*, int) {
return -1;
}
static void push(call_jitter* j, int id, int64_t received_ms = -1) {
call_jitter_push(j, (const uint8_t*)&id, sizeof(id), (uint32_t)(id * 20), received_ms < 0 ? id * 20 : received_ms);
call_jitter_push(j, (const uint8_t*)&id, sizeof(id), (uint32_t)(id * 20), received_ms < 0 ? id * 20 : received_ms, nullptr);
}
int main() {
{
@ -180,10 +180,10 @@ int main() {
for (auto value : pcm) CHECK(value == 0);
}
// Первый пакет ещё не заполнил запас PCM: продолжается тихое ожидание.
call_audio_on_media(nullptr, id, 0, 0, encoded, len);
call_audio_on_media(nullptr, id, 0, 0, encoded, len, nullptr);
CHECK(call_audio_pull_pcm(id, pcm, 480) == 480);
for (auto value : pcm) CHECK(value == 0);
for (int i = 1; i < 6; i++) call_audio_on_media(nullptr, id, i, 0, encoded, len);
for (int i = 1; i < 6; i++) call_audio_on_media(nullptr, id, i, 0, encoded, len, nullptr);
CHECK(call_audio_pull_pcm(id, pcm, 480) == 480);
bool audible = false;
for (auto value : pcm) if (value) audible = true;
@ -196,14 +196,14 @@ int main() {
}
CHECK(audible);
// Малого запаса недостаточно для восстановления: сигнал продолжает звучать.
call_audio_on_media(nullptr, id, 6, 0, encoded, len);
call_audio_on_media(nullptr, id, 6, 0, encoded, len, nullptr);
audible = false;
for (int tick = 0; tick < 100; tick++) {
CHECK(call_audio_pull_pcm(id, pcm, 480) == 480);
for (auto value : pcm) if (std::abs((int)value) > 1000) audible = true;
}
CHECK(audible);
for (int i = 7; i < 30; i++) call_audio_on_media(nullptr, id, i, 0, encoded, len);
for (int i = 7; i < 30; i++) call_audio_on_media(nullptr, id, i, 0, encoded, len, nullptr);
CHECK(call_audio_pull_pcm(id, pcm, 480) == 480);
call_audio_begin_end(id); // явное завершение прекращает догон и включает финальный тон
CHECK(call_audio_pull_pcm(id, pcm, 480) > 0);
@ -219,7 +219,7 @@ int main() {
uint8_t encoded[512];
int len = opus_codec_encode(encoder, silence, 960, encoded, sizeof(encoded));
CHECK(len > 0);
for (int i = 0; i < 6; i++) call_audio_on_media(nullptr, 124, i, 0, encoded, len);
for (int i = 0; i < 6; i++) call_audio_on_media(nullptr, 124, i, 0, encoded, len, nullptr);
std::vector<int16_t> output(777);
under = 0;
for (int tick = 0; tick < 30 && !under; tick++) {

Loading…
Cancel
Save