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