Что означает код HRESULT 0xC00D36C0 (MF_E_INVALID_TIMESTAMP)?

 
Предыдущий Следующий
MF_E_INVALIDINDEX MF_E_UNSUPPORTED_SCHEME

MF_E_INVALID_TIMESTAMP

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

MF_E_INVALID_TIMESTAMP (0xC00D36C0) — Указана недопустимая метка времени.

Этот код говорит именно о временном значении, а не о повреждении сэмпла вообще. В зависимости от API это может быть метка времени представления, позиция перехода или другая точка времени, которая выходит за допустимый диапазон, нарушает порядок либо использует неверный формат времени.

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

Запишите точный API, идентификатор потока и исходное значение времени до любых нормализаций. Для стандартного времени представления Media Foundation использует 100-наносекундные единицы; не смешивайте их с миллисекундами, тиками другого API или собственной шкалой времени контейнера.

Для последовательности сэмплов проверьте временные метки вместе с длительностью, разрывами непрерывности, переходами по времени и сбросом очередей; найдите первое место, где временная шкала пошла назад. Для перехода по времени отдельно учитывайте характеристики источника: допустимый диапазон и фактическая точность позиционирования могут зависеть от индекса и ключевых кадров.

Не исправляйте ошибку безусловной заменой времени на ноль. Ноль допустим только там, где он действительно соответствует контракту текущей операции; корректное исправление сохраняет нужную временную шкалу и устраняет неверное значение или преобразование единиц.

Документация для результата 0xC00D36C0: IMFSample::GetSampleTime · seeking, fast forward, and reverse play.


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