| Предыдущий | Следующий |
| NS_E_NO_FRAMES_SUBMITTED_TO_ANALYZER | NS_E_NO_SMPTE_WITH_MULTIPLE_SOURCEGROUPS |
NS_E_INPUT_DOESNOT_SUPPORT_SMPTE
Где Encoder возвращает этот результат
0xC00D1BA8 (NS_E_INPUT_DOESNOT_SUPPORT_SMPTE) диагностически значимое событие — выбранный источник не может предоставить запрошенный SMPTE timecode. Сохраняйте границу, вернувшую NS_E_INPUT_DOESNOT_SUPPORT_SMPTE, вместе с исходным callback Encoder или вызовом COM.
Timecode Encoder связан с видеопотоком, возможностями источника и выбранным режимом SMPTE. Значения времени device control включают frame rate и frame count, а генерируемый timecode добавляет ограничения совместимости для нескольких source groups и MBR profiles в сценарии «выбранный источник не может предоставить запрошенный SMPTE timecode». В сеансе, возвращающем NS_E_INPUT_DOESNOT_SUPPORT_SMPTE, именно здесь проверяется условие «выбранный источник не может предоставить запрошенный SMPTE timecode».
Что уже успешно выполнено
Источник может выдавать видеокадры, но не предоставлять пригодный device timecode либо нарушать topology, необходимую для генерируемого timecode, в сеансе, возвращающем NS_E_INPUT_DOESNOT_SUPPORT_SMPTE. В показательном случае input doesnot support smpte обычный файловый источник без метаданных timecode обрабатывается как ленточное устройство. NS_E_INPUT_DOESNOT_SUPPORT_SMPTE следует проверять на объекте, сформировавшем ошибку, а не считать общим сбоем кодека или операционной системы.
Снимок состояния, который нужно сохранить
| Поле | Что сохранить |
|---|---|
| Решающие значения | тип источника, возможности управления устройством и результат первого чтения WMTIMECODE |
| Объект, вернувший ошибку | флаг EnableTimecode, StartingTimecode, режим SMPTE, frame rate, настройку drop-frame, поддержку источником, число source groups, число audiences и первый sample timecode |
| Сопоставление с сеансом | то же поколение source group, индекс audience, идентичность объекта и последовательность callbacks, в которой был получен NS_E_INPUT_DOESNOT_SUPPORT_SMPTE |
| Данные нижнего уровня | первый HRESULT COM, драйвера, файловой системы или codec, полученный до того, как Encoder сопоставил условие с NS_E_INPUT_DOESNOT_SUPPORT_SMPTE |
| Контролируемое сравнение | заведомо исправный сеанс, в котором изменяется только настройка границы «выбранный источник не может предоставить запрошенный SMPTE timecode» |
Как интерпретировать следующее наблюдение
| Наблюдение | Как это интерпретировать |
|---|---|
| Наблюдение, подтверждающее этот результат | Решающие данные: тип источника, возможности управления устройством и результат первого чтения WMTIMECODE. Они подтверждают условие «выбранный источник не может предоставить запрошенный SMPTE timecode» в том же поколении объекта. |
| Наблюдение, указывающее на более ранний сбой | Зафиксированные значения удовлетворяют правилу этой границы, но source, драйвер, COM activation или файловая операция раньше возвращает другой HRESULT для состояния «выбранный источник не может предоставить запрошенный SMPTE timecode». |
| Наблюдение, указывающее на более поздний сбой | Encoder проходит эту границу («выбранный источник не может предоставить запрошенный SMPTE timecode»), но затем codec, archive или broadcast sink завершается ошибкой на следующем этапе. |
| Проверка после исправления | Внесите одно изолированное изменение: использовать сгенерированный timecode либо источник или устройство, предоставляющее данные SMPTE. После этого исходный вызов должен пройти ту же контрольную точку для состояния «выбранный источник не может предоставить запрошенный SMPTE timecode». |
Практическое влияние NS_E_INPUT_DOESNOT_SUPPORT_SMPTE ограничен переходом «smpte timecode generation and validation», которому принадлежит условие «выбранный источник не может предоставить запрошенный SMPTE timecode». Для NS_E_INPUT_DOESNOT_SUPPORT_SMPTE, сам по себе этот результат не доказывает повреждение всех входных данных, отсутствие всех кодеков или неработоспособность всей установки Windows Media. В показательном случае, когда обычный файловый источник без метаданных timecode обрабатывается как ленточное устройство, сохраните первый неуспешный вызов и идентификатор его объекта, чтобы более поздняя ошибка-оболочка не заменила данные о границе input doesnot support smpte.
Контролируемая последовательность диагностики
- Зафиксируйте
0xC00D1BA8,NS_E_INPUT_DOESNOT_SUPPORT_SMPTE, версию Encoder и точный вызов API или обращение к свойству, вернувшее ошибку. - Экспортируйте текущую конфигурацию
.wmeили.prxконфигурацию, затем зафиксируйте тип источника, возможности управления устройством и результат первого чтения WMTIMECODE. - Для
NS_E_INPUT_DOESNOT_SUPPORT_SMPTE, проверяйте предварительное условие «smpte timecode generation and validation», не меняя одновременно source, profile и output sink. - Выполните одно контролируемое сравнение, изменив только это условие: использовать сгенерированный timecode либо источник или устройство, предоставляющее данные SMPTE.
- После изменения пересоздайте затронутый объект Encoder; не предполагайте, что существующий graph автоматически отбросил прежнее состояние input doesnot support smpte.
Близкие HRESULT с другим смыслом
| Результат | Почему это другая граница |
|---|---|
NS_E_NO_SMPTE_WITH_MULTIPLE_SOURCEGROUPS | generated или source timecode запрашивается в сеансе с несколькими source groups |
NS_E_INVALID_TIMECODE | разбор или проверка диапазона настроенного starting timecode |
NS_E_TIMECODE_REQUIRES_VIDEOSTREAM | генерация timecode включена в profile только с аудио |
Исправление на правильном уровне
Для NS_E_INPUT_DOESNOT_SUPPORT_SMPTE, целевое исправление — использовать сгенерированный timecode либо источник или устройство, предоставляющее данные SMPTE. Повтор имеет смысл только после изменения зафиксированного предварительного условия input doesnot support smpte.
Не преобразуйте timecode в строку wall-clock до сохранения исходного frame count, кода frame rate и режима drop-frame в сценарии «выбранный источник не может предоставить запрошенный SMPTE timecode». Это позволяет повторно проверить тот же сеанс с NS_E_INPUT_DOESNOT_SUPPORT_SMPTE без потери исходных диагностических данных.
Технические ссылки для NS_E_INPUT_DOESNOT_SUPPORT_SMPTE
- Структура управления устройством WMTIMECODE.
- WMEncoder.StartingTimecode.
- WMEncoder.EnableTimecode.
- Определение совместимости профилей.
Нужно найти другой код? Найти другой код состояния или ошибки.
