Что означает код HRESULT 0xC00D0BC2 (NS_E_AUDIO_CODEC_NOT_INSTALLED)?

 
Предыдущий Следующий
NS_E_LICENSE_INCORRECT_RIGHTS NS_E_AUDIO_CODEC_ERROR

NS_E_AUDIO_CODEC_NOT_INSTALLED

NS_E_AUDIO_CODEC_NOT_INSTALLED в трассировке формата, графа или потоковой передачи

Для NS_E_AUDIO_CODEC_NOT_INSTALLED (0xC00D0BC2) решающей границей является условие: ни один установленный аудиокодек не соответствует запрошенному сжатому подтипу. Диагностируйте непосредственно проверку медиаформата на отсутствие аудиокодека и не делайте вывод о причине только по видимому симптому воспроизведения.

При анализе этого случая Windows Media Format отделяет профиль сжатого потока от формата необработанных входных данных и от декодированного выходного формата, выбранного объектом чтения. Затем объект записи пакетирует сэмплы, применяет атрибуты и необязательные расширения единиц данных, поэтому сбой на одной границе сам по себе не доказывает, что контейнер ASF нечитаем. В случае NS_E_AUDIO_CODEC_NOT_INSTALLED сохраняйте самый ранний низкоуровневый результат: оболочки могут сопоставлять одному HRESULT несколько разных причин.

Близкие результаты не взаимозаменяемы

Главное различие: отсутствие означает, что подходящий компонент не был выбран; ошибка кодека означает, что выбранный компонент позднее отказал во время контролируемой повторной проверки.

Близкий HRESULTКак его сравнивать
NS_E_PROTECTED_CONTENTСопоставьте вызывающий API и первое отклонённое значение: этот результат относится к соседней контрольной точке и не обязательно имеет ту же причину, что и NS_E_AUDIO_CODEC_NOT_INSTALLED.
NS_E_TAMPERED_CONTENTЕсли оба кода присутствуют в одной трассировке, определите авторитетный по состоянию объекта и порядку операций, прежде чем закрывать инцидент.
NS_E_AUDIO_CODEC_ERRORСохраните этот результат отдельно, если он появился только после устранения условия NS_E_AUDIO_CODEC_NOT_INSTALLED.

Механизм сбоя

Проверка медиаформата завершается на этой границе, когда ни один установленный аудиокодек не соответствует запрошенному сжатому подтипу. После NS_E_AUDIO_CODEC_NOT_INSTALLED вызывающая сторона не должна предполагать, что следующий фильтр, пакет, сеанс или состояние метаданных уже существует.

Перечислите кодеки для точного подтипа и в качестве отрицательного контроля проверьте тот же профиль на компьютере, где установлен соответствующий компонент кодека. Более поздний HRESULT означает, что эта контрольная точка пройдена, а новый результат относится к другому этапу контролируемой повторной проверки.

Контролируемая проверка медиаформата

  1. Запишите 0xC00D0BC2, NS_E_AUDIO_CODEC_NOT_INSTALLED, точную операцию и время первого сбоя.
  2. До закрытия инцидента сохраните CLSID или подтип кодека, версию установленного двоичного файла, выбранные входной и выходной медиатипы, первый HRESULT кодека и временную метку сэмпла, на котором обработка остановилась.
  3. Не используйте повторно граф, сеанс, объект чтения или объект метаданных, созданный до изменения соответствующей конфигурации или ресурса.
  4. Выполните одну изолированную проверку: перечислите кодеки для точного подтипа и протестируйте тот же профиль на компьютере с установленным соответствующим компонентом кодека.
  5. Повторите операцию через тот же API и тот же протокольный путь; проверка в другом проигрывателе или с локальной копией полезна только для сравнения и не доказывает устранение сбоя.
  6. Подтвердите ожидаемое следующее состояние и сохраните любой новый HRESULT как отдельный последующий результат.

Сведения о профиле и сэмплах

Что зафиксироватьКак это помогает отделить NS_E_AUDIO_CODEC_NOT_INSTALLED
Вызывающая операцияЗапишите метод API, идентификатор объекта, поток или обратный вызов и временную метку проверки медиаформата.
Решающие значенияCLSID или подтип кодека, версию установленного двоичного файла, выбранные входной и выходной медиатипы, первый HRESULT кодека и временную метку сэмпла, на котором остановилась обработка.
Поколение объектаОтметьте время создания объекта чтения, объекта записи, графа, объекта URL, потокового сеанса или поставщика метаданных: устаревшее состояние может воспроизводить NS_E_AUDIO_CODEC_NOT_INSTALLED и после изменения конфигурации.
Первый вложенный результатСохраните самый ранний статус кодека, COM, сокета, DNS, анализатора или поставщика перед NS_E_AUDIO_CODEC_NOT_INSTALLED; последующие сообщения интерфейса менее конкретны.
Сравнительный случайИспользуйте один заведомо исправный ресурс, который проходит ту же проверку медиаформата, изменив только отклонённое предусловие.

Как интерпретировать следующий HRESULT

Результат повторной проверкиИнтерпретация для NS_E_AUDIO_CODEC_NOT_INSTALLED
Тот же вызов по-прежнему возвращает этот кодЗначения, управляющие проверкой медиаформата, не изменились либо вызывающая сторона всё ещё использует объект старого поколения.
Новый объект работает успешноВ появлении NS_E_AUDIO_CODEC_NOT_INSTALLED участвовало время жизни объекта или кэшированное состояние; исправьте пересоздание объекта вместо применения общесистемного обходного решения.
Вызов доходит до другого HRESULTГраница проверки медиаформата пройдена. Диагностируйте новый код на его собственном этапе формата, графа, URL, сети или метаданных.
Отказывает только один ресурсСведения указывают скорее на содержимое, URL, точку публикации, поток, атрибут или состояние конкретного объекта, чем на общий отказ.

Действия, способные ввести в заблуждение

  • Переименование медиафайла или изменение его расширения: кодек выбирается по подтипу потока и согласованному формату.
  • Не стирайте сведения о первом появлении NS_E_AUDIO_CODEC_NOT_INSTALLED многократными повторами: обратные вызовы и переподключения могут заменить полезное состояние более поздней ошибкой оболочки.
  • Не публикуйте учётные данные, материалы защищённого содержимого или полные закрытые URL. Записывайте отредактированные идентификаторы, длины, хэши и поля протокола, необходимые для воспроизведения проверки.

Технические материалы

Считайте NS_E_AUDIO_CODEC_NOT_INSTALLED устранённой только после того, как тот же путь API пройдёт эту контрольную точку; успех в другом проигрывателе или с кэшированной копией является лишь вспомогательным свидетельством.


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