• quince-dotnet quince-dotnet
  • Информация о проекте
    • Информация о проекте
    • Активность
    • Метки
    • Участники
  • Репозиторий
    • Репозиторий
    • Файлы
    • Коммиты
    • Ветки
    • Теги
    • Участники
    • Диаграмма
    • Сравнение
  • mos.track
    • mos.track
    • Список
    • Доски
    • Спринты
  • Запросы на слияние 0
    • Запросы на слияние 0
  • CI/CD
    • CI/CD
    • Конвейеры
    • Задания
    • Расписания
  • Развертывания
    • Развертывания
    • Окружения
    • Релизы
  • Пакеты и реестры
    • Пакеты и реестры
    • Реестр пакетов
    • Реестр контейнеров
  • Мониторинг
    • Мониторинг
    • Инциденты
  • Аналитика
    • Аналитика
    • Поток ценности
    • CI/CD
    • Репозиторий
  • mos.wiki
    • mos.wiki
  • Сниппеты
    • Сниппеты
  • Активность
  • Диаграмма
  • Создать новую задачу
  • Задания
  • Коммиты
  • Доски с задачами
Свернуть панель
  • twelve
  • quince-dotnet
  • Запросы на слияние
  • !5

Общий буфер для прослушивания в браузере (ускорение старта звука)

  • Ревью изменений

  • Скачать
  • Почтовые патчи
  • Простое отличие
Слиты twelve запросил слияние fix/buffer в main Авг 27, 2026
  • Обзор 1
  • Коммиты 1
  • Конвейеры 0
  • Изменения 8

Created by: ykmn

Summary

  • Браузерное прослушивание (▶) раньше на каждый HTTP-запрос создавало собственный PlayoutBuffer из сырого потока и прогревало его заново — каждый клик ▶ заново ждал полную задержку прогрева (до 12+с на HLS, 2с на Livewire), даже если канал уже давно работал и его метр давно прогрет.
  • PlayoutBuffer теперь поддерживает несколько одновременных подписчиков (Subscribe/Unsubscribe, fan-out в ReleaseDue(), по образцу уже существующего в FfmpegPipedCapture) — метр и любое число слушателей прослушивания делят один и тот же уже прогретый, уже синхронизированный по времени поток; поздний подписчик получает только будущие чанки, без довесков уже выданных.
  • AudioStreamEndpoint подключается к общему буферизованному потоку канала вместо создания своего; диагностический watchdog «буфер не прогрелся» разделён на две независимые проверки.
  • Побочный эффект: звук прослушивания и индикатор теперь буквально один и тот же поток (раньше — два независимо прогретых буфера с одинаковой целевой задержкой, но без гарантии синхронности).

Test plan

  • dotnet build — чисто
  • dotnet test — 249/249 зелёных (4 новых теста на мультиподписку: два подписчика получают один поток, поздний подписчик не получает довесков, Unsubscribe останавливает доставку только для отписавшегося, Stop() завершает все подписанные reader'ы)

🤖 Generated with Claude Code

Ответственный
Назначить
Проверяющие
Запросить ревью
Оценка трудозатрат
Исходная ветка: fix/buffer