| Предыдущий | Следующий |
| kIOFireWireInvalidResponseLength | kIOFWMessageServiceIsRequestingClose |
kIOFireWireIsochBandwidthNotAvailable
Пропускная способность резервируется до начала трафика реального времени
kIOFireWireIsochBandwidthNotAvailable означает, что диспетчер изохронных ресурсов не смог зарезервировать запрошенную пропускную способность для потока. FireWire требует, чтобы узел до начала изохронной отправки или приёма получил и канал, и резервирование полосы. Резервирование защищает временной бюджет трафика реального времени; это не размер буфера приложения, и повтор той же передачи его не исправит.
Диспетчер ресурсов отслеживает доступную величину для всей шины. Материалы IEEE 1394 описывают отдельный регистр доступной пропускной способности, а API FireWire Linux сообщает о выделении канала и полосы раздельно. Поэтому этот статус отличается от kIOFireWireNoChannels: канал может быть доступен, хотя запрошенного временного бюджета нет.
Диагностируйте резервирование, а не только устройство
- Запишите параметры потока, определяющие потребность на цикл, включая размер полезной нагрузки, частоту пакетов, скорость и режим аудио или видео, меняющий изохронную нагрузку.
- Перечислите другие изохронные потоки на той же шине и сохраните результат диспетчера ресурсов. Устройство на другом разъёме всё равно может конкурировать, если использует ту же шину FireWire.
- Уменьшайте полосу только через документированный режим потока, фактически изменяющий резервирование FireWire. Сокращение несвязанной очереди приложения не освобождает полосу шины.
- Обрабатывайте сбросы шины как события выделения: резервирования могут восстанавливаться автоматически, но восстановление может завершиться ошибкой, и до возобновления мультимедийного потока приложение должно проверить итоговое состояние канала и полосы.
Ссылки
- Apple: руководство по интерфейсу устройств FireWire — изохронная полоса и передача в реальном времени
- Документация ядра Linux: выделение каналов и пропускной способности IRM
- Техническое введение IEEE 1394: регистр доступной полосы и восстановление после сброса шины
Нужно найти другой код? Найти другой код состояния или ошибки.