Я новичок в программировании средств массовой информации и Windows.
Это может выглядеть очень глупым вопросом, но я нигде не получил четкого ответа.
Мое приложение для захвата экрана, масштабирования, кодирования и отправки данных в сеть. Я ищу, чтобы улучшить производительность моего конвейера. поэтому я хочу изменить некоторые промежуточные библиотеки, такие как библиотеки масштабирования или кодирования.
Когда я много занимаюсь поиском лучшего варианта масштабирования и кодирования, я получаю некоторое MFT (мультимедийное фундаментальное преобразование), например.Видеопроцессор MFT а также Видеокодер H.264 MFT.
В моем приложении уже реализован конвейер, и я не хочу менять полную архитектуру.
мы можем напрямую использовать MFT в качестве библиотеки и добавить в мой проект? или я должен построить полный трубопровод, источник и приемник.
По архитектуре Media Foundation MFT является промежуточным блоком. Это требует IMFTransform :: GetInputStreamInfo и IMFTransform :: GetOutputStreamInfo.
Есть ли способ вызвать прямой API MFT для выполнения (масштабирование и кодирование) с созданием полного конвейера?
Пожалуйста, предоставьте ссылку, если какой-либо подобный вопрос уже задавался.
Да, вы можете создать это IMFT-преобразование напрямую и использовать его отдельно от конвейера. Это очень типичная модель использования для кодера MFT.
Вам нужно будет настроить типы носителей ввода / вывода, запустить потоковую передачу, подать кадры ввода и захватить выходные кадры.
В зависимости от того, является ли ваше преобразование синхронным или асинхронным (которое может отличаться в зависимости от реализации вашего MFT в HW или SW), вам может понадобиться использовать basic (https://msdn.microsoft.com/en-us/library/windows/desktop/aa965264(v=vs.85).aspx) или асинхронно (https://msdn.microsoft.com/en-us/library/windows/desktop/dd317909(v=vs.85).aspx) модель обработки.
Других решений пока нет …