| Предыдущий | Следующий |
| NS_E_NO_DATAVIEW_SUPPORT | NS_E_ARCHIVE_SAME_AS_INPUT |
NS_E_CODEC_UNAVAILABLE
Сбойная граница в объектной модели Encoder
Полезный смысл NS_E_CODEC_UNAVAILABLE (0xC00D1B83) не сводится к стандартному сообщению выше. Код указывает на активацию профиля, при которой невозможно создать один или несколько указанных кодеков, внутри обнаружения и активации подключаемых модулей кодировщика.
Расширения источника, преобразования и управления устройством являются COM-модулями в сеансе, возвращающем NS_E_CODEC_UNAVAILABLE. В этой контрольной точке Encoder должен разобрать CLSID, создать зарегистрированный компонент, получить ожидаемый интерфейс и убедиться, что подключаемый модуль поддерживает выбранный источник или преобразование.
Данные, отделяющие этот код от ошибки оболочки
Даже зарегистрированный класс может иметь неподходящую разрядность, предоставлять другой интерфейс или отклонять запрошенный тип мультимедиа в сеансе с NS_E_CODEC_UNAVAILABLE. Например, файл .prx может ссылаться на кодек, удалённый при очистке системы. Сохраните различие NS_E_CODEC_UNAVAILABLE до того, как уровень интерфейса преобразует результат в общую ошибку запуска, захвата или профиля.
| Поле | Что сохранить |
|---|---|
| Решающие значения | индексы кодеков или FOURCC из профиля, перечень установленных кодеков, разрядность процесса и HRESULT активации |
| Объект, вернувший ошибку | текстовое и двоичное значение CLSID, путь регистрации COM и разрядность, путь, версия и подпись DLL, IID запрошенного интерфейса, схема источника или имя преобразования, HRESULT активации и результат проверки доступа |
| Корреляция сеанса | то же поколение группы источников, индекс аудитории, идентификатор объекта и последовательность обратных вызовов, которые привели к NS_E_CODEC_UNAVAILABLE |
| Данные нижнего уровня | первый HRESULT COM, драйвера, файловой системы или кодека до того, как Encoder сопоставил условие с NS_E_CODEC_UNAVAILABLE |
| Контролируемое сравнение | заведомо исправный сеанс, в котором изменён только параметр, указанный границей недоступного кодека |
Интерпретация следующего измерения
| Наблюдение | Как его интерпретировать |
|---|---|
| Наблюдение подтверждает этот результат | Решающими данными являются индексы кодеков или FOURCC из профиля, перечень установленных кодеков, разрядность процесса и HRESULT активации. Они подтверждают невозможность создания одного или нескольких указанных кодеков при активации профиля в том же поколении объекта. |
| Наблюдение указывает на более ранний сбой | Зафиксированные значения соответствуют условию недоступного кодека, но источник, драйвер, активация COM или файловая операция раньше возвращают другой HRESULT. |
| Наблюдение указывает на более поздний сбой | Encoder проходит эту границу — активацию профиля с созданием указанных кодеков, — но на следующей стадии возникает сбой кодека, архивного приёмника или приёмника вещания. |
| Проверка после исправления | Внесите одно изолированное изменение: установите требуемый доверенный кодек или выберите доступный кодек, сохранив требования профиля. После этого исходный вызов должен пройти ту же контрольную точку. |
Практическое влияние NS_E_CODEC_UNAVAILABLE ограничено переходом обнаружения и активации подключаемого модуля кодировщика, которому принадлежит создание указанных кодеков при активации профиля. Сам по себе NS_E_CODEC_UNAVAILABLE не доказывает повреждение всех входных данных, отсутствие всех кодеков или неработоспособность всей установки Windows Media. В типичном случае, когда файл .prx ссылается на удалённый при очистке кодек, сохраните первый сбойный вызов и идентификатор его объекта, чтобы поздняя оболочка не заменила эти данные.
Проверка условия без перестройки сеанса
- Зафиксируйте
0xC00D1B83,NS_E_CODEC_UNAVAILABLE, версию Encoder и точный вызов API или обращение к свойству, вернувшее ошибку. - Экспортируйте текущую конфигурацию
.wmeили.prx, затем сохраните индексы кодеков или FOURCC из профиля, перечень установленных кодеков, разрядность процесса и HRESULT активации. - Для
NS_E_CODEC_UNAVAILABLEпроверьте предварительное условие обнаружения и активации подключаемого модуля кодировщика, не меняя одновременно источник, профиль и выходной приёмник. - Выполните одно контролируемое сравнение, изменив только это условие: установите требуемый доверенный кодек или выберите доступный кодек, сохранив требования профиля.
- После изменения пересоздайте затронутый объект Encoder, а не предполагайте, что существующий граф отбросил прежнее состояние недоступного кодека.
Осторожно интерпретируйте соседние результаты
| Результат | Почему это другая граница |
|---|---|
NS_E_PLUGIN_CLSID_INVALID | разбор и активация идентификатора класса подключаемого модуля COM |
NS_E_TRANSFORM_PLUGIN_NOT_FOUND | поиск или активация не находят подключаемый модуль преобразования, указанный в сеансе |
NS_E_NO_VALID_SOURCE_PLUGIN | выбор или активация подключаемого модуля источника, способного открыть настроенный вход |
Устранение и проверка
Прямое исправление для этого случая — установить требуемый доверенный кодек или выбрать доступный кодек, сохранив требования профиля. Пересоздайте затронутую группу источников, профиль или выходной объект, повторите ту же операцию и убедитесь, что первый сбойный HRESULT больше не возникает в контрольной точке недоступного кодека.
Не регистрируйте загруженные DLL вслепую; в сеансе с NS_E_CODEC_UNAVAILABLE сохраните исходное сопоставление CLSID и проверьте происхождение, разрядность и поддержку интерфейса.
Ссылки по границе NS_E_CODEC_UNAVAILABLE
- Получение настроенного входа кодировщика.
- Подготовка группы источников к кодированию.
- Сохранение конфигурации Windows Media Encoder.
- Проверка формата видеокомпрессора ICCompressQuery.
Нужно найти другой код? Найти другой код состояния или ошибки.
