Что означает код HRESULT 0xC00D1BE2 (NS_E_INVALID_PIXEL_ASPECT_RATIO)?

 
Предыдущий Следующий
NS_E_DEVICECONTROL_UNSTABLE NS_E_AUDIENCE__LANGUAGE_CONTENTTYPE_MISMATCH

NS_E_INVALID_PIXEL_ASPECT_RATIO

Граница сбоя в объектной модели Encoder

Практический смысл NS_E_INVALID_PIXEL_ASPECT_RATIO (0xC00D1BE2) не сводится к стандартному сообщению: код указывает на числитель или знаменатель pixel aspect ratio находится вне диапазона Encoder в области «параметры видеопотока и audiences».

Видеопрофиль выбирает codec и режим управления bitrate, затем задаёт bitrate, peak rate, frame rate, размер кадра, интервал key frame, quality, buffer и необязательные параметры interlace и pixel aspect ratio для условия «числитель или знаменатель pixel aspect ratio находится вне диапазона Encoder». В сеансе, возвращающем NS_E_INVALID_PIXEL_ASPECT_RATIO, именно здесь проверяется условие «числитель или знаменатель pixel aspect ratio находится вне диапазона Encoder».

Данные, отделяющие этот код от ошибки оболочки

Предварительный просмотр source не подтверждает допустимость выходного profile: выбранный encoder codec отдельно проверяет размеры выхода и параметры управления bitrate в сеансе, возвращающем NS_E_INVALID_PIXEL_ASPECT_RATIO. Например, большое несокращённое отношение записывается без нормализации. Сохраните NS_E_INVALID_PIXEL_ASPECT_RATIO до того, как уровень интерфейса преобразует результат в общую ошибку запуска, захвата или профиля.

ПолеЧто сохранить
Решающие значениязначения PixelAspectRatioX/Y, размеры источника и режим неквадратных пикселей
Объект, вернувший ошибкуиндекс audience, FOURCC/индекс codec, режим VBR, ширину и высоту, frame rate, средний и пиковый bitrate, значения buffer, интервал key frame, quality, режим interlace и pixel aspect ratio
Сопоставление с сеансомто же поколение source group, индекс audience, идентичность объекта и последовательность callbacks, в которой был получен NS_E_INVALID_PIXEL_ASPECT_RATIO
Данные нижнего уровняпервый HRESULT COM, драйвера, файловой системы или codec, полученный до того, как Encoder сопоставил условие с NS_E_INVALID_PIXEL_ASPECT_RATIO
Контролируемое сравнениезаведомо исправный сеанс, в котором изменяется только настройка границы «числитель или знаменатель pixel aspect ratio находится вне диапазона Encoder»

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

НаблюдениеКак это интерпретировать
Наблюдение, подтверждающее этот результатРешающие данные: значения PixelAspectRatioX/Y, размеры источника и режим неквадратных пикселей. Они подтверждают условие «числитель или знаменатель pixel aspect ratio находится вне диапазона Encoder» в том же поколении объекта.
Наблюдение, указывающее на более ранний сбойЗафиксированные значения удовлетворяют правилу этой границы, но source, драйвер, COM activation или файловая операция раньше возвращает другой HRESULT в сценарии «числитель или знаменатель pixel aspect ratio находится вне диапазона Encoder».
Наблюдение, указывающее на более поздний сбойEncoder проходит эту границу («числитель или знаменатель pixel aspect ratio находится вне диапазона Encoder»), но затем codec, archive или broadcast sink завершается ошибкой на следующем этапе.
Проверка после исправленияВнесите одно изолированное изменение: задать каждую компоненту отношения в диапазоне от 1 до 255, сохранив требуемое соотношение сторон отображения. После этого исходный вызов должен пройти ту же контрольную точку при проверке «числитель или знаменатель pixel aspect ratio находится вне диапазона Encoder».

Практическое влияние NS_E_INVALID_PIXEL_ASPECT_RATIO ограничено переходом «параметры видеопотока и audiences», которому принадлежит условие «числитель или знаменатель pixel aspect ratio находится вне диапазона Encoder». Сам по себе NS_E_INVALID_PIXEL_ASPECT_RATIO не доказывает, что повреждены все входные данные, отсутствуют все codecs или полностью неработоспособна установка Windows Media. В типичном случае, когда большое несокращённое отношение записывается без нормализации, сохраните первый отказавший вызов и идентичность его объекта, чтобы более поздняя оболочка не скрыла исходные данные.

Исправление и проверка

  1. Зафиксируйте 0xC00D1BE2, NS_E_INVALID_PIXEL_ASPECT_RATIO, версию Encoder и точный вызов API или обращение к свойству, вернувшее ошибку.
  2. Экспортируйте текущую конфигурацию .wme или .prx конфигурацию, затем зафиксируйте значения PixelAspectRatioX/Y, размеры источника и режим неквадратных пикселей.
  3. Для NS_E_INVALID_PIXEL_ASPECT_RATIO, проверяйте предварительное условие «video stream and audience settings», не меняя одновременно source, profile и output sink.
  4. Выполните одно контролируемое сравнение, изменив только это условие: задать каждую компоненту отношения в диапазоне от 1 до 255, сохранив требуемое соотношение сторон отображения.
  5. После изменения пересоздайте затронутый объект Encoder; не предполагайте, что существующий graph автоматически отбросил прежнее состояние invalid pixel aspect ratio.

Осторожно интерпретируйте соседние результаты

Почему это другая границаПочему это другая граница
NS_E_INVALID_INTERLACEMODEвыбранный кодек не поддерживает запрошенный режим сохранения interlace
NS_E_INVALID_VIDEO_WIDTH_FOR_INTERLACED_ENCODINGпри сохранении interlace выходная ширина не кратна четырём
NS_E_SAME_AS_INPUT_COMBINATIONaudiences смешивают размер same-as-input с явно заданными width и height в одном profile

Исправление и проверка

Непосредственное исправление этого случая — задать каждую компоненту отношения в диапазоне от 1 до 255, сохранив требуемое соотношение сторон отображения. Пересоздайте соответствующий source group, profile или output object, повторите ту же операцию и убедитесь, что первый неуспешный HRESULT больше не возникает на контрольной точке invalid pixel aspect ratio.

Не меняйте одновременно источник, codec и размеры кадра; сначала сохраните отклонённые значения профиля и повторите тот же вызов с одним исправлением для условия «числитель или знаменатель pixel aspect ratio находится вне диапазона Encoder». Это позволяет повторно проверить тот же сеанс с NS_E_INVALID_PIXEL_ASPECT_RATIO без потери исходных диагностических данных.

Ссылки для границы NS_E_INVALID_PIXEL_ASPECT_RATIO — граница


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