Что означает код HRESULT 0xC00D4657 (MF_E_CANNOT_INDEX_IN_PLACE)?

 
Предыдущий Следующий
MF_E_NO_INDEX MF_E_MISSING_ASF_LEAKYBUCKET

MF_E_CANNOT_INDEX_IN_PLACE

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

MF_E_CANNOT_INDEX_IN_PLACE (0xC00D4657) — Запрошенный индекс нельзя добавить непосредственно в указанное содержимое ASF.

Индекс ASF можно вычислить, но текущая структура файла не позволяет записать его поверх существующего содержимого без изменения размещения контейнерных объектов. Проблема не в размере временного буфера, а в том, куда должен попасть готовый индекс и обновлённый объект заголовка ASF.

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

В режиме записи IMFASFIndexer сначала сформируйте и зафиксируйте индекс, получите требуемый размер и позицию записи. Если в исходном ASF нет подходящего места, создайте новый выходной байтовый поток и перепишите контейнер вместо перезаписи соседних байтов.

После добавления индекса нужно заново сформировать заголовок ASF, чтобы он описывал новую структуру и размеры файла. Исправление подтверждается открытием перестроенного файла и работой позиционирования по новому индексу.

Документация для результата 0xC00D4657: IMFASFIndexer read/write model · writing completed index data and regenerating the header · FFmpeg ASF muxer source.


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