Что означает код HRESULT 0xC00D36B7 (MF_E_UNSUPPORTED_REPRESENTATION)?

 
Предыдущий Следующий
MF_E_NOT_INITIALIZED MF_E_NO_MORE_TYPES

MF_E_UNSUPPORTED_REPRESENTATION

Что означает MF_E_UNSUPPORTED_REPRESENTATION

MF_E_UNSUPPORTED_REPRESENTATION (0xC00D36B7) — объект IMFMediaType не может выдать тип мультимедиа в структурном представлении, которое запросил вызывающий код.

Тип мультимедиа в Media Foundation обычно хранится как набор атрибутов. Метод IMFMediaType::GetRepresentation позволяет запросить альтернативное представление по GUID, например структуру DirectShow AM_MEDIA_TYPE или один из документированных вариантов видеоструктур. Поэтому этот HRESULT не означает, что файл невозможно декодировать или что отсутствует кодек: отказ происходит при преобразовании уже имеющегося описания формата в конкретную структуру.

Что проверить и как подтвердить исправление

Запишите точное значение guidRepresentation, а также MF_MT_MAJOR_TYPE и MF_MT_SUBTYPE исходного IMFMediaType. Сверьте GUID представления со списком, поддерживаемым GetRepresentation. Произвольный GUID или структура, для которой невозможно корректно выразить все параметры текущего типа, не становятся допустимыми после установки другого декодера.

Если потребителю не требуется именно DirectShow-совместимая структура, безопаснее оставить формат в виде атрибутов Media Foundation. Если представление требуется, используйте документированный GUID и проверяйте уже его собственные ограничения. Исправление подтверждается успешным получением нужной структуры из того же IMFMediaType.

Документация для результата 0xC00D36B7: IMFMediaType::GetRepresentation · Media Types.


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