Я занимаюсь разработкой потокового приложения для камеры USB с использованием технологии MediaFoundation SourceReader. Камера имеет поддержку USB3.0 и дает 60 кадров в секунду для разрешения видеоформата MJPG 1080p.Как использовать Intel MJPEG Decoder MFT в MediaFoundation SourceReader для приложения Window Desktop?
Я использовал программное обеспечение MJPEG Decoder MFT для преобразования MJPG в кадры YUY2, а затем преобразован в рамку RGB32 для рисования на окне. Вместо 60fps я могу отображать только 30 кадров в секунду при использовании этого программного декодера. Я опубликовал вопрос на этом сайте и получил предложение использовать Intel MJPEG Decoder MFT для решения проблемы с кадром.
я столкнулся ошибка 0xC00D36B5 - MF_E_NOTACCEPTING при вызове IMFTransform :: ProcessInput() метода. Чтобы решить эту ошибку, MSDN предложила использовать интерфейс IMFTranform асинхронно. Итак, я использовал интерфейс IMFMediaEventGenerator для GetEvent для каждого примера ввода/вывода. Успешно, я могу обработать только один входной образец, а затем непрерывно. IMFMediaEventGenerator :: GetEvent() возвращает MF_E_NO_EVENTS_AVAILABLE ошибка (GetEvent() синхронно).
Я пытался настроить асинхронную функцию обратного вызова для SourceReader, а также IMFTransform но MFAsyncCallback :: Invoke метод не вызывающую, поэтому я планировал использовать метод GetEvent.
Я ничего не пропустил? Если Да, Кто-то помогает мне использовать аппаратный декодер Intel в моем проекте?
Вы сначала попытались собрать топологию в topoedit? – Mgetz
Благодарим вас за ответ, Mgetz.The Камера поддерживает формат видео YUY2 и MJPG. Первоначально камера воспроизводит видеоформат YUY2 и ему необходимо изменить формат MJPG. Я знаю, как построить график в DirectShow. Я не знал, как переключиться с формата YUY2 на MJPEG. Не могли бы вы рассказать мне, как собрать топологию для формата MJPG? Более того, я добавил этот декодер в топологию MediaSession, все получило успех и получило 0XC00D5212 (MF_E_TOPO_CODEC_NOT_FOUND) в этом случае. – Abi
Следовательно, рекомендуется попробовать использовать утилиту topoedit, которая поставляется с SDK, чтобы собрать топологию и проверить, что она работает. Если вы не можете построить топологию в topoedit ... это, вероятно, невозможно. – Mgetz