Android-глюки UDP вызывают заикание VOIP - PullRequest
0 голосов
/ 08 января 2019

o ( ̄ ヘ  ̄o #) Почему нет ответа? Никто не видит такой же проблемы?

Я отлаживаю проблемы с запуском RTC на Android, и я пробовал обслуживать разные устройства. Чтобы упростить этот вопрос, я просто продолжаю отправлять пакеты udp с интервалом около 10 мс от MAC и получать их на Android с хорошим wifi. Я вижу большие дрожания (более 200 мс) почти каждую минуту, иногда они могут превышать 600 мс. Особенно, когда я открываю и закрываю диспетчер задач. Не дублируется тестированием на локальном хосте. Это можно исправить?

while(1) {
    int s = recvfrom(socket_fd, buffer,  sizeof(buffer), 0, (struct sockaddr *)&recv_addr, (socklen_t *)&addr_len);
    if (s > 0) {
        struct timeval tv_ioctl;
        tv_ioctl.tv_sec = 0;
        tv_ioctl.tv_usec = 0;
        int error = ioctl(socket_fd, SIOCGSTAMP, &tv_ioctl);
        if (error == 0) {
            int64_t ms = tv_ioctl.tv_sec * 1000LL + tv_ioctl.tv_usec/1000;
            if (pre_rev_ms == 0) {
                pre_rev_ms = ms;
            }
            if (ms - pre_rev_ms > 200) {
                LOGV("Udp glitches\n");
            }
            pre_rev_ms = ms;
        }
    }
}
...