| Предыдущий | Следующий |
| MF_E_UNRECOVERABLE_ERROR_OCCURRED | MF_E_SAMPLE_NOT_WRITABLE |
MF_E_SAMPLE_HAS_TOO_MANY_BUFFERS
Что означает MF_E_SAMPLE_HAS_TOO_MANY_BUFFERS
MF_E_SAMPLE_HAS_TOO_MANY_BUFFERS (0xC00D36DF) — Предоставленный образец содержит слишком много буферов.
Медиасэмпл IMFSample хранит упорядоченный список буферов IMFMediaBuffer. HRESULT означает, что принимающий компонент не принимает такое количество буферов в одном медиасэмпле; это ограничение структуры медиасэмпла, а не общий лимит оперативной памяти.
Что проверить и как подтвердить исправление
Перед ошибочным вызовом получите число буферов через GetBufferCount и проследите, где каждый из них добавляется. Повторное использование медиасэмпла без RemoveAllBuffers легко приводит к накоплению буферов между итерациями.
Если принимающему API нужен один непрерывный буфер, ConvertToContiguousBuffer может объединить данные и заменить список одним буфером. Делайте это только когда контракт потребителя действительно допускает такое представление.
Не удаляйте произвольные буферы ради уменьшения счётчика: их границы могут иметь смысл для производителя, а полезные данные должны сохраниться полностью и в исходном порядке.
Документация для результата 0xC00D36DF: IMFSample::AddBuffer · ConvertToContiguousBuffer · Wine: IMFSample buffer-list contract.
Нужно найти другой код? Найти другой код состояния или ошибки.