| Предыдущий | Следующий |
| NS_E_INVALID_VIDEO_WIDTH_FOR_INTERLACED_ENCODING | NS_E_DRM_INVALID_APPLICATION |
NS_E_MARKIN_UNSUPPORTED
Диагностический смысл помимо стандартного текста
Для NS_E_MARKIN_UNSUPPORTED (0xC00D1BE9) диагностически значимое событие — MarkIn или MarkOut запрошен для типа источника, который не поддерживает переход к таким отметкам. Сохраняйте границу, вернувшую NS_E_MARKIN_UNSUPPORTED, вместе с исходным callback Encoder или вызовом COM.
Почему сеанс может дойти до этой точки
Windows Media Encoder строит временную шкалу каждого выбранного источника до поступления samples в codec. Поэтому MarkIn, MarkOut, Repeat и параметры time compression проверяются относительно длительности источника и друг друга до начала encoding. В сеансе, возвращающем NS_E_MARKIN_UNSUPPORTED, именно здесь проверяется условие «MarkIn или MarkOut запрошен для типа источника, который не поддерживает переход к таким отметкам».
Файл может успешно открываться и сообщать длительность, но всё равно завершиться здесь ошибкой, поскольку проверка временной шкалы выполняется после обнаружения источника, но до получения первого закодированного образца в сеансе, который возвращает NS_E_MARKIN_UNSUPPORTED. Один конкретный способ получить это условие: live-устройству или пользовательскому streaming source передаются файловые смещения клипа. NS_E_MARKIN_UNSUPPORTED нужно сохранить поколение объекта и числовые параметры, а не только снимок итогового диалогового окна.
Поля трассировки, имеющие диагностическую ценность
| Поле | Что сохранить |
|---|---|
| Решающие значения | тип или схема источника, возможность seek и настроенные MarkIn/MarkOut |
| Объект, вернувший ошибку | имя source group, URL источника или device moniker, MarkIn и MarkOut в миллисекундах, обнаруженную duration, флаг Repeat, режим preprocessing и состояние Encoder |
| Сопоставление с сеансом | то же поколение source group, индекс audience, идентичность объекта и последовательность callbacks, в которой был получен NS_E_MARKIN_UNSUPPORTED |
| Данные нижнего уровня | первый HRESULT COM, драйвера, файловой системы или codec, полученный до того, как Encoder сопоставил условие с NS_E_MARKIN_UNSUPPORTED |
| Контролируемое сравнение | заведомо исправный сеанс, в котором изменяется только настройка границы «MarkIn или MarkOut запрошен для типа источника, который не поддерживает переход к таким отметкам» |
Матрица решений
| Наблюдение | Как это интерпретировать |
|---|---|
| Наблюдение, подтверждающее этот результат | Решающие данные: тип или схема источника, возможность seek и настроенные MarkIn/MarkOut. Они подтверждают условие «MarkIn или MarkOut запрошен для типа источника, который не поддерживает переход к таким отметкам» в том же поколении объекта. |
| Наблюдение, указывающее на более ранний сбой | Зафиксированные значения удовлетворяют правилу этой границы, но source, драйвер, COM activation или файловая операция раньше возвращает другой HRESULT в сценарии «MarkIn или MarkOut запрошен для типа источника, который не поддерживает переход к таким отметкам». |
| Наблюдение, указывающее на более поздний сбой | Encoder проходит эту границу («MarkIn или MarkOut запрошен для типа источника, который не поддерживает переход к таким отметкам»), но затем codec, archive или broadcast sink завершается ошибкой на следующем этапе. |
| Проверка после исправления | Внесите одно изолированное изменение: удалить отметки либо использовать реализацию источника с поддержкой seek. После этого исходный вызов должен пройти ту же контрольную точку на границе «MarkIn или MarkOut запрошен для типа источника, который не поддерживает переход к таким отметкам». |
Практическое влияние NS_E_MARKIN_UNSUPPORTED ограничен переходом «source timeline and clipping», которому принадлежит условие «MarkIn или MarkOut запрошен для типа источника, который не поддерживает переход к таким отметкам». Для NS_E_MARKIN_UNSUPPORTED, сам по себе этот результат не доказывает повреждение всех входных данных, отсутствие всех кодеков или неработоспособность всей установки Windows Media. В показательном случае, когда live-устройству или пользовательскому streaming source передаются файловые смещения клипа, сохраните первый неуспешный вызов и идентификатор его объекта, чтобы более поздняя ошибка-оболочка не заменила данные о границе markin unsupported.
Путь принятия решения
- Зафиксируйте
0xC00D1BE9,NS_E_MARKIN_UNSUPPORTED, версию Encoder и точный вызов API или обращение к свойству, вернувшее ошибку. - Экспортируйте текущую конфигурацию
.wmeили.prxконфигурацию, затем зафиксируйте тип или схема источника, возможность seek и настроенные MarkIn/MarkOut. - Для
NS_E_MARKIN_UNSUPPORTEDпроверяйте предварительное условие временной шкалы и обрезки, не меняя одновременно источник, профиль и выходной приёмник. - Выполните одно контролируемое сравнение, изменив только это условие: удалить отметки либо использовать реализацию источника с поддержкой seek.
- После изменения пересоздайте затронутый объект Encoder; не предполагайте, что существующий graph автоматически отбросил прежнее состояние markin unsupported.
Коды с похожими симптомами, но другими владельцами
| Результат | Почему это другая граница |
|---|---|
NS_E_SOURCE_CANNOT_LOOP | Внесите одно изолированное изменение: удалить отметки либо использовать реализацию источника с поддержкой seek. После этого исходный вызов должен пройти ту же контрольную точку на границе «MarkIn или MarkOut запрошен для типа источника, который не поддерживает переход к таким отметкам». |
NS_E_BAD_MARKOUT | проверка IWMEncSource.MarkOut относительно MarkIn и конца source |
NS_E_BAD_MARKIN | проверка IWMEncSource.MarkIn до фиксации временной шкалы источника |
Безопасное восстановление
Устраните условие-источник: удалить отметки либо использовать реализацию источника с поддержкой seek. Затем перестройте только ту часть graph Encoder, которую затрагивает NS_E_MARKIN_UNSUPPORTED и повторите исходный вызов.
Не перекодируйте и не обрезайте единственную копию входного файла во время диагностики; сохраните исходные duration и timestamps для воспроизведения интервала. Это позволяет повторно проверить тот же сеанс с NS_E_MARKIN_UNSUPPORTED без потери исходных диагностических данных.
Исходные материалы для NS_E_MARKIN_UNSUPPORTED
- IWMEncSource.MarkOut.
- IWMEncSource.Repeat.
- Подготовка группы источников к кодированию.
- Двухпроходное кодирование.
Нужно найти другой код? Найти другой код состояния или ошибки.