| Предыдущий | Следующий |
| NS_E_INVALID_INTERLACEMODE | NS_E_INVALID_NONSQUAREPIXEL_COMPAT |
NS_E_INVALID_INTERLACE_COMPAT
Как интерпретировать код в реальном сеансе кодирования
0xC00D1BDC соответствует NS_E_INVALID_INTERLACE_COMPAT. Практическая область этого результата — сохранение interlace конфликтует с целевой совместимостью Player 7.1; она относится к «правила совместимости со старыми версиями Player», а не ко всем компонентам Windows Media или Windows.
Механизм и точка сбоя
Профили Windows Media Encoder можно проверять на совместимость со старыми поколениями Windows Media Player. VBR, multiple audiences, различия audio/video formats, interlace и non-square pixels могут вывести профиль за рамки совместимости 7.1. В сеансе, возвращающем этот результат, именно здесь проверяется условие «сохранение interlace конфликтует с целевой совместимостью Player 7.1».
Profile может быть допустим для Windows Media 9 или более поздней версии, но намеренно отклоняться, если для session, возвращающей этот результат. Типичный сценарий воспроизведения: чересстрочный профиль Windows Media 9 помечен как предназначенный для клиентов 7.1. Первый результат Encoder ценнее более позднего общего сообщения.
Матрица воспроизведения
| Поле | Что сохранить |
|---|---|
| Решающие значения | результат DetectCompatibility и режим interlace |
| Объект, вернувший ошибку | результат DetectCompatibility, целевое поколение Player, число audiences, режим VBR, codec и format для каждой audience, размер кадра, флаг interlace и флаг non-square-pixel |
| Сопоставление с сеансом | то же поколение source group, индекс audience, идентичность объекта и последовательность callbacks, в которой был получен этот результат |
| Данные нижнего уровня | первый HRESULT COM, драйвера, файловой системы или codec, полученный до того, как Encoder сопоставил условие с ним |
| Контролируемое сравнение | заведомо исправный сеанс, в котором изменяется только настройка границы «сохранение interlace конфликтует с целевой совместимостью Player 7.1» |
Матрица диагностических признаков
| Наблюдение | Как это интерпретировать |
|---|---|
| Наблюдение, подтверждающее он | Решающие данные: результат DetectCompatibility и режим interlace. Они подтверждают условие «сохранение interlace конфликтует с целевой совместимостью Player 7.1» в том же поколении объекта. |
| Наблюдение, указывающее на более ранний сбой | Зафиксированные значения удовлетворяют правилу этой границы, но source, драйвер, COM activation или файловая операция раньше возвращает другой HRESULT при проверке «сохранение interlace конфликтует с целевой совместимостью Player 7.1». |
| Наблюдение, указывающее на более поздний сбой | Encoder проходит эту границу («сохранение interlace конфликтует с целевой совместимостью Player 7.1»), но затем codec, archive или broadcast sink завершается ошибкой на следующем этапе. |
| Проверка после исправления | Внесите одно изолированное изменение: отключить сохранение interlace либо повысить требуемую версию Player. После этого исходный вызов должен пройти ту же контрольную точку для состояния «сохранение interlace конфликтует с целевой совместимостью Player 7.1». |
Практическое влияние он ограничен переходом «legacy player compatibility rules», которому принадлежит условие «сохранение interlace конфликтует с целевой совместимостью Player 7.1». Сам по себе он не доказывает повреждение всех входных данных, отсутствие всех кодеков или неработоспособность всей установки Windows Media. В показательном случае, когда чересстрочный профиль Windows Media 9 помечен как предназначенный для клиентов 7.1, сохраните первый неуспешный вызов и идентификатор его объекта, чтобы более поздняя ошибка-оболочка не заменила данные о границе invalid interlace compat.
Почему совместимость interlace — отдельная проверка
- Зафиксируйте
0xC00D1BDC, он, версию Encoder и точный вызов API или обращение к свойству, вернувшее ошибку. - Экспортируйте текущую конфигурацию
.wmeили.prxконфигурацию, затем зафиксируйте результат DetectCompatibility и режим interlace. - проверяйте предварительное условие «legacy player compatibility rules», не меняя одновременно source, profile и output sink.
- Выполните одно контролируемое сравнение, изменив только это условие: отключить сохранение interlace либо повысить требуемую версию Player.
- После изменения пересоздайте затронутый объект Encoder; не предполагайте, что существующий graph автоматически отбросил прежнее состояние invalid interlace compat.
Не объединяйте следующие результаты
| Результат | Почему это другая граница |
|---|---|
NS_E_MULTIPLE_VIDEO_SIZES | Внесите одно изолированное изменение: отключить сохранение interlace либо повысить требуемую версию Player. После этого исходный вызов должен пройти ту же контрольную точку для состояния «сохранение interlace конфликтует с целевой совместимостью Player 7.1». |
NS_E_INVALID_NONSQUAREPIXEL_COMPAT | output с non-square pixels конфликтует с целевым уровнем совместимости Player 7.1 |
NS_E_MULTIPLE_AUDIO_FORMATS | audiences используют разные audio formats при запрошенной совместимости с устаревшим Player 7.1 |
Что изменить, а что оставить без изменений
Измените минимальное ответственное предварительное условие: отключить сохранение interlace либо повысить требуемую версию Player. При повторной проверке этот результатсохраняйте неизменными все не связанные параметры источника, аудитории и выхода до повторения того же вызова.
Не называйте результат проверки совместимости повреждением codec: сначала определите, действительно ли требуется поддержка старого Player. Это позволяет повторно проверить тот же сеанс с ним без потери исходных диагностических данных.
Почему совместимость interlace — отдельная проверка
Сохранение interlace — не просто ещё один параметр bitrate. Оно меняет представление полей в закодированном видео и тем самым влияет на предполагаемые профилем возможности decoder и renderer. Запишите, является ли вход действительно interlaced, порядок полей, выходные размеры и флаг профиля, сохраняющий interlace. Progressive source с унаследованным флагом interlace означает ошибку подготовки профиля; для действительно interlaced source может потребоваться более новая базовая версия Player.
После изменения только настройки interlace вызовите IWMEncProfile2.DetectCompatibility. Если профиль становится совместимым при неизменных codec, bitrate, числе audiences и размере кадра, результат относится именно к legacy compatibility target. Если validation по-прежнему завершается ошибкой при отключённом сохранении interlace, учитывайте следующий HRESULT отдельно: он относится к другому полю профиля.
Авторитетная документация
- Определение совместимости профилей.
- IWMEncProfile2.VBRMode.
- Выбор видеокодека для аудитории.
- Добавление аудитории в профиль кодировщика.
Нужно найти другой код? Найти другой код состояния или ошибки.