| Предыдущий | Следующий |
| MF_E_TRANSFORM_NOT_POSSIBLE_FOR_CURRENT_SPKR_CONFIG | MF_E_UNSUPPORTED_D3D_TYPE |
MF_E_TRANSFORM_CANNOT_CHANGE_MEDIATYPE_WHILE_PROCESSING
Что означает MF_E_TRANSFORM_CANNOT_CHANGE_MEDIATYPE_WHILE_PROCESSING
MF_E_TRANSFORM_CANNOT_CHANGE_MEDIATYPE_WHILE_PROCESSING (0xC00D6D74) — MFT не может изменить тип мультимедиа, пока внутри него остаются данные, обрабатываемые по старому формату.
Тип мультимедиа описывает формат данных на входе или выходе MFT. Даже допустимый новый формат нельзя всегда установить немедленно: преобразование может ещё хранить сэмплы, декодированные или подготовленные по старому типу. Для безопасной смены формата накопленные данные либо сначала выводят командой drain, либо осознанно отбрасывают командой flush.
Что проверить
- Для нормального перехода отправьте
MFT_MESSAGE_COMMAND_DRAINи вызывайтеProcessOutput, пока MFT не вернётMF_E_TRANSFORM_NEED_MORE_INPUT. - Используйте
MFT_MESSAGE_COMMAND_FLUSHтолько если потеря уже переданных, но ещё не выведенных данных допустима. - Проверьте
MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE; без поддержки динамической смены формата входной тип меняют только после корректного завершения обработки старого. - Не продолжайте подавать новые сэмплы одновременно с попыткой сменить тип: иначе старые и новые параметры окажутся смешаны в одном внутреннем состоянии MFT.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
