| Предыдущий | Следующий |
| 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 означает, что эта контрольная точка пройдена, а новый результат относится к другому этапу контролируемой повторной проверки.
Контролируемая проверка медиаформата
- Запишите
0xC00D0BC2,NS_E_AUDIO_CODEC_NOT_INSTALLED, точную операцию и время первого сбоя. - До закрытия инцидента сохраните CLSID или подтип кодека, версию установленного двоичного файла, выбранные входной и выходной медиатипы, первый HRESULT кодека и временную метку сэмпла, на котором обработка остановилась.
- Не используйте повторно граф, сеанс, объект чтения или объект метаданных, созданный до изменения соответствующей конфигурации или ресурса.
- Выполните одну изолированную проверку: перечислите кодеки для точного подтипа и протестируйте тот же профиль на компьютере с установленным соответствующим компонентом кодека.
- Повторите операцию через тот же API и тот же протокольный путь; проверка в другом проигрывателе или с локальной копией полезна только для сравнения и не доказывает устранение сбоя.
- Подтвердите ожидаемое следующее состояние и сохраните любой новый 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. Записывайте отредактированные идентификаторы, длины, хэши и поля протокола, необходимые для воспроизведения проверки.
Технические материалы
- Обзор Windows Media Format SDK
- Входные, потоковые и выходные форматы
- Профили
- Объекты Windows Media SDK
- Реестр HRESULT Microsoft
Считайте NS_E_AUDIO_CODEC_NOT_INSTALLED устранённой только после того, как тот же путь API пройдёт эту контрольную точку; успех в другом проигрывателе или с кэшированной копией является лишь вспомогательным свидетельством.
Нужно найти другой код? Найти другой код состояния или ошибки.