| Предыдущий | Следующий |
| NS_E_INVALID_VIDEO_BUFFERMAX | NS_E_INVALID_VIDEO_WIDTH_ALIGN |
NS_E_INVALID_VIDEO_BUFFERMAX_2
Диагностический смысл помимо стандартного текста
Для NS_E_INVALID_VIDEO_BUFFERMAX_2 (0xC00D1BCB) диагностически значимое событие — максимальный видеобуфер не больше обычного видеобуфера. Сохраняйте границу, вернувшую этот результат, вместе с исходным callback Encoder или вызовом COM.
Почему сеанс может дойти до этой точки
Видеопрофиль выбирает codec и режим управления bitrate, затем задаёт bitrate, peak rate, frame rate, размер кадра, интервал key frame, quality, buffer и необязательные параметры interlace и pixel aspect ratio. В сеансе, возвращающем этот результат, именно здесь проверяется условие «максимальный видеобуфер не больше обычного видеобуфера».
Предварительный просмотр source не подтверждает допустимость выходного profile: выбранный encoder codec отдельно проверяет размеры выхода и параметры управления bitrate в сеансе, возвращающем этот результат. Один конкретный способ получить это условие: оба поля буфера заполняются из одного элемента интерфейса. Он нужно сохранить поколение объекта и числовые параметры, а не только снимок итогового диалогового окна.
Поля трассировки, имеющие диагностическую ценность
| Поле | Что сохранить |
|---|---|
| Решающие значения | обычное и максимальное значения видеобуфера в одной audience |
| Объект, вернувший ошибку | индекс audience, FOURCC/индекс codec, режим VBR, ширину и высоту, frame rate, средний и пиковый bitrate, значения buffer, интервал key frame, quality, режим interlace и pixel aspect ratio |
| Сопоставление с сеансом | то же поколение source group, индекс audience, идентичность объекта и последовательность callbacks, в которой был получен этот результат |
| Данные нижнего уровня | первый HRESULT COM, драйвера, файловой системы или codec, полученный до того, как Encoder сопоставил условие с ним |
| Контролируемое сравнение | заведомо исправный сеанс, в котором изменяется только настройка границы «максимальный видеобуфер не больше обычного видеобуфера» |
Матрица решений
| Наблюдение | Как это интерпретировать |
|---|---|
| Наблюдение, подтверждающее он | Решающие данные: обычное и максимальное значения видеобуфера в одной audience. Они подтверждают условие «максимальный видеобуфер не больше обычного видеобуфера» в том же поколении объекта. |
| Наблюдение, указывающее на более ранний сбой | Зафиксированные значения удовлетворяют правилу этой границы, но source, драйвер, COM activation или файловая операция раньше возвращает другой HRESULT. |
| Наблюдение, указывающее на более поздний сбой | Encoder проходит эту границу («максимальный видеобуфер не больше обычного видеобуфера»), но затем codec, archive или broadcast sink завершается ошибкой на следующем этапе. |
| Проверка после исправления | Внесите одно изолированное изменение: сделать максимум строго больше обычного буфера, оставаясь в допустимых пределах кодека. После этого исходный вызов должен пройти ту же контрольную точку. |
Практическое влияние он ограничено переходом «параметры видеопотока и audiences», которому принадлежит условие «максимальный видеобуфер не больше обычного видеобуфера». Сам по себе он не доказывает, что повреждены все входные данные, отсутствуют все codecs или полностью неработоспособна установка Windows Media. В типичном случае, когда оба поля буфера заполняются из одного элемента интерфейса, сохраните первый отказавший вызов и идентичность его объекта, чтобы более поздняя оболочка не скрыла исходные данные.
Безопасное восстановление
- Зафиксируйте
0xC00D1BCB, он, версию Encoder и точный вызов API или обращение к свойству, вернувшее ошибку. - Экспортируйте текущую конфигурацию
.wmeили.prxконфигурацию, затем зафиксируйте обычное и максимальное значения видеобуфера в одной audience. - проверяйте предварительное условие «video stream and audience settings», не меняя одновременно source, profile и output sink.
- Выполните одно контролируемое сравнение, изменив только это условие: сделать максимум строго больше обычного буфера, оставаясь в допустимых пределах кодека.
- После изменения пересоздайте затронутый объект Encoder; не предполагайте, что существующий graph автоматически отбросил прежнее состояние invalid video buffermax 2.
Коды с похожими симптомами, но другими владельцами
| Почему это другая граница | Почему это другая граница |
|---|---|
NS_E_INVALID_VIDEO_BUFFERMAX | максимальное значение видеобуфера находится вне допустимого диапазона |
NS_E_INVALID_VIDEO_WIDTH_ALIGN | ширина выходного видео нарушает выравнивание выбранного кодека или interlaced mode |
NS_E_INVALID_VIDEO_BUFFER | настройка видеобуфера недопустима для выбранных кодека и режима bitrate |
Безопасное восстановление
Исправьте только непосредственную причину: сделать максимум строго больше обычного буфера, оставаясь в допустимых пределах кодека. Затем пересоздайте затронутый объект или часть graph Encoder, повторите ту же операцию и убедитесь, что первый отказавший HRESULT больше не возникает на этой границе при проверке он.
Не меняйте одновременно источник, codec и размеры кадра; сначала сохраните отклонённые значения профиля и повторите тот же вызов с одним исправлением для состояния «максимальный видеобуфер не больше обычного видеобуфера». Это позволяет повторно проверить тот же сеанс с ним без потери исходных диагностических данных.
Исходные материалы
- Выбор видеокодека для аудитории.
- IWMEncProfile2.VBRMode.
- IWMEncVideoSource2.Width и размер живого захвата.
- Режим непрямоугольных пикселей в профиле кодировщика.
Нужно найти другой код? Найти другой код состояния или ошибки.