| Предыдущий | Следующий |
| NS_E_NO_REALTIME_PREPROCESS | NS_E_CANNOT_PAUSE_LIVEBROADCAST |
NS_E_NO_REPEAT_PREPROCESS
Где Encoder формирует этот результат
0xC00D1B8D (NS_E_NO_REPEAT_PREPROCESS) указывает на preprocessing или two-pass analysis запрошены, пока source настроен на loop. Для NS_E_NO_REPEAT_PREPROCESS, важной диагностической границей является объект Encoder, проверяющий это состояние; более поздний диалог «не удаётся начать кодирование» может скрыть более точный источник.
Inverse telecine, time compression, предварительная обработка изображения, анализ содержимого и двухпроходное кодирование требуют доступа к определённым типам источников и часто повторного чтения или временного хранения источника в сеансе, возвращающем NS_E_NO_REPEAT_PREPROCESS. Для live, looping и device inputs на этой контрольной точке действуют дополнительные ограничения для условия «preprocessing или two-pass analysis запрошен для source, настроенного на зацикливание».
Что уже успешно выполнено
Исходный audio- или video-источник может быть исправен, хотя запрошенная предварительная обработка невозможна для жизненного цикла этого источника в сеансе, возвращающем NS_E_NO_REPEAT_PREPROCESS. В показательном случае no repeat preprocess file source повторяется бесконечно, тогда как Encoder ожидает конечный analysis pass. NS_E_NO_REPEAT_PREPROCESS наблюдение следует проверять на объекте-источнике, а не считать общей ошибкой кодека или операционной системы.
Какое состояние зафиксировать
| Поле | Что сохранить |
|---|---|
| Решающие значения | флаг Repeat, число проходов, режим preprocessing и длительность source |
| Объект, вернувший ошибку | тип источника, флаг live/file, флаг Repeat, число проходов, настройку временного хранения, фильтры предварительной обработки, число кадров анализатора, входную частоту кадров, путь к EDL содержимого и выбранный режим кодека |
| Связь с сеансом | то же поколение source group, индекс audience, идентичность объекта и последовательность callback, которые привели к NS_E_NO_REPEAT_PREPROCESS |
| Данные нижнего уровня | первый HRESULT COM, драйвера, файловой системы или кодека, зафиксированный до того, как Encoder сопоставил условие с NS_E_NO_REPEAT_PREPROCESS |
| Контролируемое сравнение | заведомо рабочий сеанс, в котором изменяется только настройка, относящаяся к границе этого HRESULT |
Как интерпретировать следующее наблюдение
| Наблюдение | Как это интерпретировать |
|---|---|
| Наблюдение, подтверждающее этот результат | Решающие данные: флаг Repeat, число проходов, режим preprocessing и длительность source. Они подтверждают, что preprocessing или two-pass analysis запрошены, пока source настроен на loop в том же поколении объекта. |
| Наблюдение, указывающее на более ранний сбой | Зафиксированные значения удовлетворяют условию этого HRESULT, однако source, драйвер, COM activation или file operation раньше возвращает другой HRESULT для условия «preprocessing или two-pass analysis запрошен для source, настроенного на зацикливание». |
| Наблюдение, указывающее на более поздний сбой | Encoder проходит эту границу (preprocessing или two-pass analysis запрошены, пока source настроен на loop), но затем на следующем этапе происходит сбой codec, archive или broadcast sink. |
| Проверка после исправления | Примените одно изолированное изменение: отключить looping либо использовать однопроходный workflow, поддерживающий повторное воспроизведение. После этого исходный вызов должен пройти ту же контрольную точку для состояния «preprocessing или two-pass analysis запрошен для source, настроенного на зацикливание». |
Практическое влияние NS_E_NO_REPEAT_PREPROCESS ограничен переходом «preprocessing, analysis and multipass constraints», которому принадлежит условие «preprocessing или two-pass analysis запрошены, пока source настроен на loop». Для NS_E_NO_REPEAT_PREPROCESS, сам по себе этот результат не доказывает повреждение всех входных данных, отсутствие всех кодеков или неработоспособность всей установки Windows Media. В показательном случае, когда file source повторяется бесконечно, тогда как Encoder ожидает конечный analysis pass, сохраните первый неуспешный вызов и идентификатор его объекта, чтобы более поздняя ошибка-оболочка не заменила данные о границе no repeat preprocess.
Контролируемая диагностическая последовательность
- Зафиксируйте
0xC00D1B8D,NS_E_NO_REPEAT_PREPROCESS, версию Encoder и точный вызов API или обращение к свойству, вернувшее этот результат. - Экспортируйте текущую конфигурацию
.wmeили.prxконфигурацию, затем зафиксируйте флаг Repeat, число проходов, режим preprocessing и длительность source. - Для
NS_E_NO_REPEAT_PREPROCESS, проверьте предусловие ограничений предварительной обработки, анализа и многопроходного кодирования, не меняя одновременно источник, профиль и output sink. - Проведите одно контролируемое сравнение, изменяя только это условие: отключить looping либо использовать однопроходный workflow, поддерживающий повторное воспроизведение.
- После изменения пересоздайте соответствующий объект Encoder; не предполагайте, что существующий graph автоматически отбросил прежнее недопустимое состояние при проверке «preprocessing или two-pass analysis запрошен для source, настроенного на зацикливание».
Соседние HRESULT с другим диагностическим смыслом
| Результат | Почему это другая граница |
|---|---|
NS_E_NO_REALTIME_PREPROCESS | предварительная обработка image запрошена для live source, который не может выполнить требуемый look-ahead или повторное чтение |
NS_E_SPEECHEDL_ON_NON_MIXEDMODE | EDL оптимизации voice codec подключён, когда codec не работает в mixed voice/audio mode |
NS_E_NO_REALTIME_TIMECOMPRESSION | настройка time compression для live broadcast, который нельзя перечитать или запланировать быстрее реального времени |
Исправление на правильном уровне
Для NS_E_NO_REPEAT_PREPROCESS, целевое исправление — отключить looping либо использовать однопроходный workflow, поддерживающий повторное воспроизведение. Повтор имеет смысл только после изменения зафиксированного предварительного условия no repeat preprocess.
Во время диагностики не включайте сразу несколько функций предварительной обработки; сначала проверьте обычный однопроходный источник, затем добавьте одно преобразование с необходимым этапом хранения или анализа в сеансе, возвращающем NS_E_NO_REPEAT_PREPROCESS.
Технические ссылки для NS_E_NO_REPEAT_PREPROCESS
- Двухпроходное кодирование.
- IWMEncContentAnalyzer.Property.
- Списки решений монтажа для голосовых кодеков.
- IWMEncSource.Repeat.
Нужно найти другой код? Найти другой код состояния или ошибки.