Что означает код HRESULT 0xC00D1B5A (NS_E_NOMATCHING_MEDIASOURCE)?

 
Предыдущий Следующий
NS_E_BAD_MARKOUT NS_E_UNSUPPORTED_SOURCETYPE

NS_E_NOMATCHING_MEDIASOURCE

Диагностический смысл помимо стандартного текста

Для NS_E_NOMATCHING_MEDIASOURCE (0xC00D1B5A) диагностически значимое событие — выбор исходного потока, media type которого соответствует запрошенному типу источника. Сохраняйте границу, вернувшую NS_E_NOMATCHING_MEDIASOURCE , вместе с исходным callback Encoder или вызовом COM.

Почему сеанс может дойти до этой точки

Объектная модель Encoder объединяет audio, video и script inputs в IWMEncSourceGroup, связывает с группой один профиль и запрашивает у source plug-in media format для выбранных выходных потоков для условия «выбор исходного потока, media type которого соответствует запрошенному типу источника». В сеансе, возвращающем NS_E_NOMATCHING_MEDIASOURCE.

Успешное создание COM objects не доказывает полноту source group; назначение profile, обнаружение source и согласование format — более поздние контрольные точки в сеансе, возвращающем NS_E_NOMATCHING_MEDIASOURCE. Один конкретный способ получить это условие: AVI содержит видео- и data-потоки, но не содержит аудиопотока для добавленного audio source. NS_E_NOMATCHING_MEDIASOURCE нужно сохранить поколение объекта и числовые параметры, а не только снимок итогового диалогового окна.

Поля трассировки, имеющие диагностическую ценность

ПолеЧто сохранить
Решающие значенияперечисленные потоки, major/subtype каждого потока и тип audio/video/script source, запрошенный source group
Объект, вернувший ошибкуиндекс и имя коллекции source groups, состояние active/prepared, тип потока, input scheme и имя потока, CLSID source plug-in, согласованный media type и назначенный профиль
Сопоставление с сеансомто же поколение source group, индекс audience, идентичность объекта и последовательность callbacks, в которой был получен NS_E_NOMATCHING_MEDIASOURCE
Данные нижнего уровняпервый HRESULT COM, драйвера, файловой системы или codec, полученный до того, как Encoder сопоставил условие с NS_E_NOMATCHING_MEDIASOURCE
Контролируемое сравнениезаведомо исправный сеанс, в котором изменяется только параметр, относящийся к границе «выбор исходного потока, media type которого соответствует запрошенному типу источника»

Матрица решений

НаблюдениеКак это интерпретировать
Наблюдение, подтверждающее этот результатРешающие данные: перечисленные потоки, major/subtype каждого потока и тип audio/video/script source, запрошенный source group. Они подтверждают условие «выбор исходного потока, media type которого соответствует запрошенному типу источника» в том же поколении объекта.
Наблюдение, указывающее на более ранний сбойЗафиксированные значения удовлетворяют правилу этой границы, но source, driver, COM activation или file operation раньше возвращает другой HRESULT для условия «выбор исходного потока, media type которого соответствует запрошенному типу источника».
Наблюдение, указывающее на более поздний сбойEncoder проходит эту границу («выбор исходного потока, media type которого соответствует запрошенному типу источника»), но затем codec, archive или broadcast sink завершается ошибкой на следующем этапе.
Проверка после исправленияПримените одно изолированное изменение: выбрать поток с требуемым media type или изменить тип потока в source group. После этого исходный вызов должен пройти ту же контрольную точку для условия «выбор исходного потока, media type которого соответствует запрошенному типу источника».

Практическое влияние NS_E_NOMATCHING_MEDIASOURCE ограничен переходом «source groups, streams and plug-ins», которому принадлежит условие «выбор исходного потока, media type которого соответствует запрошенному типу источника». Для NS_E_NOMATCHING_MEDIASOURCE, сам по себе код не доказывает, что повреждены все входные данные, отсутствуют все codecs или полностью неработоспособна установка Windows Media. Типичный сценарий: AVI содержит видео- и data-потоки, но не содержит аудиопотока для добавленного audio source. Сохраните первый отказавший вызов и идентичность его объекта, чтобы более поздний wrapper не скрыл данные границы «выбор исходного потока, media type которого соответствует запрошенному типу источника».

Путь принятия решения

  1. Зафиксируйте 0xC00D1B5A, NS_E_NOMATCHING_MEDIASOURCE, версию Encoder и точный вызов API или обращение к свойству, вернувшее ошибку.
  2. Экспортируйте текущую конфигурацию .wme или .prx конфигурацию, затем зафиксируйте перечисленные потоки, major/subtype каждого потока и тип audio/video/script source, запрошенный source group.
  3. Для NS_E_NOMATCHING_MEDIASOURCE, проверяйте предварительное условие source groups, streams и plug-ins, не меняя одновременно source, profile и output sink.
  4. Выполните одно контролируемое сравнение, изменив только это условие: выбрать поток с требуемым media type или изменить тип потока в source group.
  5. После изменения пересоздайте затронутый объект Encoder, а не предполагайте, что существующий graph автоматически отбросил прежнее ошибочное состояние при проверке «выбор исходного потока, media type которого соответствует запрошенному типу источника».

Коды с похожими симптомами, но другими владельцами

РезультатПочему это другая граница
NS_E_UNSUPPORTED_SOURCETYPEвыбор source plug-in Encoder по настроенному типу источника
NS_E_TOO_MANY_AUDIOпроверка ограничения числа audio inputs в source group
NS_E_TOO_MANY_VIDEOпроверка ограничения source group для video inputs

Безопасное восстановление

Устраните условие-источник: выбрать поток с требуемым media type или изменить тип потока в source group. Затем перестройте только ту часть graph Encoder, которую затрагивает NS_E_NOMATCHING_MEDIASOURCE и проверьте исходный вызов.

Не удаляйте и не создавайте заново все source groups до экспорта конфигурации .wme и фиксации active group; иначе связь объектов, на которой возник сбой, будет потеряна в сеансе, который возвращает NS_E_NOMATCHING_MEDIASOURCE.

Исходные материалы для NS_E_NOMATCHING_MEDIASOURCE


Нужно найти другой код? Найти другой код состояния или ошибки.