Поскольку это ответ позвольте мне заявить, что первые несколько обходных путей существует в пределах от взломов дорогому развития
- (хак) взять старый mfcore.dll из оригинальной Windows 10, связь задержки с ним и нагрузкой силы ваша местная копия - это взлом, не пробуйте дома, не отправляйте его.
- Используйте плохо документированный ksproxy.ax или его современную замену mfkproxy, чтобы реализовать свой собственный слой, чтобы поговорить с камерами.
- Переключение камеры в WinUSB и использовать libusb/libuvc (код не то, что высокая производительность, а не что созреть на Windows) и реализовать свой собственный интерфейс камеры
Теперь к правильной конструкции «кадра сервера»:
У нас также есть сервер кадров в нашем системном дизайне zSpace, в котором загружаются декомпрессированные изображения, сжатые камеры (четыре из них имеют почти 1 Гпиксель в секунду), информацию об обнаружении блога и 3D-позициях результаты триангуляции для нескольких клиентов (приложений, включая удаленный), при в то же время. Вся вещь с использованием общей памяти и/или сокетов - всего несколько сотен строк прямого кода C. Я реализовал его, и он работает на Windows и Linux.
Недостаток «улучшения» Microsoft лежит в невежестве для потребностей клиента, и я считаю, что его легко исправить.
Для аргументации предположим, что потоки сжатых камер сжаты (может быть MJPG/H.26x/HEVC/что-то новое и лучшее).
Пусть говорят, что есть несколько возможных классов клиентов: (? Мы хотим транскодирования там)
- Client, что потоки исходных сжатых данных в сети для удаленных хостов.
- Клиент, который хранит необработанные сжатые данные в локальном или удаленном постоянном хранилище (жесткий диск, ssd). (нужен ли там транскодирование?)
- Клиент, который выполняет анализ сырого сжатого потока данных (от тривиального до сложного), но не нуждается в пикселях?
- Клиент, который фактически манипулирует сжатыми данными и передает его вверх по течению - помните, что можно обрезать, вращать, например. JPEG без полной декомпрессии.
- Клиент, которому нужны несжатые данные в формате HSI.
- Клиент, которому необходимы несжатые данные в формате RGB с некоторыми фильтрами (например, гамма, цветовой профиль), применяемыми во время декомпрессии.
Достаточно? Сегодня все они получают NV12 (что фактически составляет еще большую потерю данных в терминах половины пропускной способности U (Cb) и V (Cr) выборок).
Теперь, поскольку Microsoft внедряет сервер кадров, они должны разложить данные так или иначе и даже несколькими способами. Для этого несжатые данные должны приземляться в памяти и могут (условно) храниться там, если какой-то клиент может воспользоваться им. Первоначальный дизайн графического медиа позволил разветвителям, и любой, обладающий небольшим знанием кодирования, может реализовать условный сплиттер, который только подталкивает данные к контактам, к которым прикреплен клиент (стоки).
Фактически, правильная реализация должна учитывать потребности клиентов (и эта информация уже присутствует и доступна всем клиентам в виде переговоров типа носителя и атрибутов, которые управляют поведением графика). Затем он должен применять декомпрессоры и другие фильтры только тогда, когда это необходимо, уделяя пристальное внимание локальности кэша процессора и подавая запрошенные данные соответствующим клиентам из соответствующей памяти через соответствующие механизмы. Это позволит все виды оптимизаций в потенциальных перестановках смеси вышеупомянутого клиента и за его пределами.
Если Microsoft нуждается в помощи в разработке и внедрении сервера фреймов, удовлетворяющих этому простому (если не сказать тривиальному) набору требований - все, что ему нужно сделать, это спросить - вместо того, чтобы разрушать огромный класс приложений и сервисов.
Интересно, как Microsoft строит сетевой поток Hollolens? Через NV12? Или через еще один взлом?
"Разработчики, разработчики, разработчики ..." :(
обновления
Windows, сам по себе неправильно. Смотрите также же [Q на форумах MSDN] (https://social.msdn.microsoft.com/Forums/windowsdesktop/EN-US/cdac5a0c-dfb4-4928-9ca9-2a63ec1496de/DirectShow-MJPEG-рамного типа в-USB-камеры-это-не-рабочего после окон-10-летие-обновление-1607? форум = windowsdirectshowdevelopment) –
Я знаю - у меня было это на несколько месяцев, как на раннем разработчике. Не помогает. Мне нужно обходное решение. – Leo
Вот код, который его демонстрирует (командная строка msvc2012) https://github.com/leok7v/ uvc_mjpg_win10 – Leo