Что означает код HRESULT 0xC00D4652 (MF_E_LATE_SAMPLE)?

 
Предыдущий Следующий
MF_E_BANDWIDTH_OVERRUN MF_E_FLUSH_NEEDED

MF_E_LATE_SAMPLE

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

MF_E_LATE_SAMPLE (0xC00D4652) — Образец передан слишком поздно для корректной обработки.

Это ошибка времени при формировании ASF. IMFASFMultiplexer::ProcessSample получает медиасэмпл, чьё время представления уже меньше текущего времени отправки, рассчитанного мультиплексором; такой медиасэмпл пришёл слишком поздно для текущего окна пакетизации.

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

Запишите номер потока, временную метку и длительность каждого медиасэмпла, а также значение корректировки времени, передаваемое в ProcessSample. Для нескольких потоков проверяйте одну шкалу в 100-наносекундных единицах и отсутствие регрессии времени.

Отличайте этот HRESULT от MF_E_BANDWIDTH_OVERRUN: запоздавший медиасэмпл находится позади уже продвинувшегося расписания отправки, тогда как MF_E_BANDWIDTH_OVERRUN означает, что заданные битрейт и окно буферизации не вмещают поток данных.

Ищите первую устаревшую временную метку или неправильную корректировку времени. Увеличение заявленного битрейта не исправляет медиасэмпл, переданный с уже прошедшим временем представления.

Документация для результата 0xC00D4652: ProcessSample timing contract · ASF send window and late samples · FFmpeg ASF muxer source.


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