diff --git a/tools/chatgui/src/call_video_encoder.h b/tools/chatgui/src/call_video_encoder.h index 9a8e0e26..b5842021 100644 --- a/tools/chatgui/src/call_video_encoder.h +++ b/tools/chatgui/src/call_video_encoder.h @@ -1,6 +1,6 @@ /* Кодер видеотрека звонка; только video worker, без камеры, транспорта и таймеров. * Смена bitrate ожидает ближайший IDR (период <= 1с по capture PTS). Новый encoder - * заменяет старый только после полного первого IDR. По умолчанию выбирается GPU; + * получает поток после полного drain старого; completion выдаётся после проверки нового IDR. Выбирается GPU; * явный backend позволяет отдельно проверять software в тестах. Completion передаётся в uasync * независимо от admission видео. PTS, generation и frame_id принадлежат владельцу. * open получает согласованный call_video_format; соответствие level/размера/FPS diff --git a/tools/chatgui/tests/test_call_timeline.cpp b/tools/chatgui/tests/test_call_timeline.cpp index 53528b54..9a108146 100644 --- a/tools/chatgui/tests/test_call_timeline.cpp +++ b/tools/chatgui/tests/test_call_timeline.cpp @@ -20,13 +20,14 @@ static void test_boundaries() { map.progress(1, 960, 20000, 20000, true); auto clock = map.clock(20000); CHECK(clock.valid && clock.pts_us == 1010000 && clock.written_samples == 1920); - CHECK(clock.rate_ppm == 1000000); + CHECK(clock.rate_ppm == 0); // На границе уже начинается участок локальной тишины. map.progress(1, 1200, 25000, 25000, true); CHECK(map.clock(25000).pts_us == 1010000); // Локальная тишина. CHECK(map.clock(25000).rate_ppm == 0); map.progress(1, 1920, 40000, 30000, true); clock = map.clock(35000); CHECK(clock.valid && clock.pts_us == 1015000 && clock.played_samples == 1680); + CHECK(clock.rate_ppm == 1000000); CHECK(map.clock(40000).pts_us == 1020000); CHECK(!map.clock(300001).valid); map.reset(2);