| Предыдущий | Следующий |
| kIOReturnIsoTooOld | kIOReturnNotFound |
kIOReturnIsoTooNew
Запрошенное время запуска находится за пределами окна планирования вперёд
kIOReturnIsoTooNew — противоположность kIOReturnIsoTooOld: изохронный запрос запланирован слишком далеко вперёд. Контроллер может принимать задания только в пределах ограниченного горизонта планирования. Точный предел зависит от транспорта, контроллера, драйвера и API, поэтому код ошибки не задаёт универсальное число кадров.
Большее опережение не всегда безопаснее. Если приложение использует далёкую временную метку, чтобы скрыть нестабильность производителя данных, запрос может выйти за окно очереди. Нужна устойчивая очередь, которая достаточно опережает текущий кадр, но не требует от драйвера резервировать работу на неподдерживаемом расстоянии.
Практические проверки
- Запишите текущий и запрошенный номера кадров и вычислите их разность в момент отправки запроса.
- Используйте ограниченное целевое опережение и пересчитывайте его после повторного подключения, выхода из сна, смены альтернативной настройки или сброса контроллера.
- Не используйте повторно номера кадров, полученные до длительной паузы, изменения конфигурации или отмены передачи.
- Отделяйте ошибку планирования от ошибки полезной нагрузки: изменение аудио-, видео- или сенсорных данных не исправляет недопустимый горизонт кадров.
Ссылки
- Apple Developer: kIOReturnIsoTooNew
- Apple: LowLatencyWriteIsochPipeAsync
- USB-IF: спецификация USB 2.0
- libusb: асинхронный изохронный ввод-вывод
Нужно найти другой код? Найти другой код состояния или ошибки.