/* Снимок часов входящего аудио. PTS принадлежит шкале захвата удалённой стороны. * epoch — локальная эпоха устройства; source_epoch — поколение удалённого encoder. * valid=0 запрещает продвижение видео по этому снимку. measured отличает аппаратную * отметку от оценки backend. Тишина устройства/тоны удерживают PTS, remote mute — нет. */ #ifndef CALL_CLOCK_H #define CALL_CLOCK_H #include /* pts_us — первый захваченный сэмпл; INT64_MIN означает отсутствие метки. * delay_samples — задержка Opus от encoder. epoch меняется при разрыве захвата. */ struct call_capture_time { int64_t pts_us; uint64_t epoch; uint32_t delay_samples; }; struct call_clock_snapshot { uint64_t epoch, source_epoch, played_samples, written_samples; int64_t pts_us; uint32_t held_back_us; uint32_t rate_ppm; // Фактический шаг source PTS в текущем PCM-участке; 1000000 = 1x, 0 = удержание. int valid, measured; }; #endif