![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /proc/self/root/usr/local/lib/node_modules/mediasoup/worker/test/src/RTC/ |
Upload File : |
#include "common.hpp" #include "DepLibUV.hpp" #include "RTC/RateCalculator.hpp" #include <catch.hpp> #include <vector> using namespace RTC; struct data { uint32_t offset; uint32_t size; uint32_t rate; }; void validate(RateCalculator& rate, uint64_t timeBase, std::vector<data>& input) { for (auto it = input.begin(); it != input.end(); ++it) { auto& item = *it; rate.Update(item.size, timeBase + item.offset); REQUIRE(rate.GetRate(timeBase + item.offset) == item.rate); } } SCENARIO("Bitrate calculator", "[rtp][bitrate]") { uint64_t nowMs = DepLibUV::GetTimeMs(); SECTION("receive single item per 1000 ms") { RateCalculator rate; // clang-format off std::vector<data> input = { { 0, 5, 40 } }; // clang-format on validate(rate, nowMs, input); } SECTION("receive multiple items per 1000 ms") { RateCalculator rate; // clang-format off std::vector<data> input = { { 0, 5, 40 }, { 100, 2, 56 }, { 300, 2, 72 }, { 999, 4, 104 } }; // clang-format on validate(rate, nowMs, input); } SECTION("slide") { RateCalculator rate; // clang-format off std::vector<data> input = { { 0, 5, 40 }, { 999, 2, 56 }, { 1001, 1, 24 }, { 1001, 1, 32 }, { 2000, 1, 24 } }; // clang-format on validate(rate, nowMs, input); REQUIRE(rate.GetRate(nowMs + 3000) == 0); } }