У меня есть работающий декодер на основе MediaPlayer, который потребляет потоковое видео H264 из входящих кадров, используя MediaStreamSource
и отвечая на запросы образцов из MediaStreamSource.SampleRequested
. Это интегрировано в Unity, чтобы отображать эти кадры на IDirect3DSurface
.
Я с радостью делаю 30 кадров в секунду на своем рабочем столе, но при работе на Hololens 2 я вижу только визуально около 5 кадров в секунду.
При этом у меня есть множество показателей внутри кода MediaPlayer, которые показывают, что запросы образцов, образцы разрешений / отсрочки и VideoFrameAvailable
обратные вызовы все еще выполняются со скоростью 30 кадров в секунду, как на рабочем столе. Я не теряю кадры, это больше похоже на то, что фактически отображается только каждый X-кадр, а промежуточные - нет. Наконец, если я использую тест MediaSource
, созданный из URI и проходящий через тот же конвейер, я действительно вижу 30 кадров в секунду на Hololens 2, так что, надеюсь, исключает проблемы с моей поверхностью / дисплеем logi c.
Я действительно вижу довольно большое количество _com_errors, возникающих внутри d3d11.dll CDecodeContext::BeginFrame
при подключении отладчика, но они никогда не исправляют мой код и, возможно, безвредны? ref: https://social.microsoft.com/Forums/azure/fr-FR/f76a80db-3bf0-49b1-8c4f-4d3b90c03f94/how-to-track-down-comerrors?forum=winappswithnativecode
Существуют ли какие-либо известные проблемы с этим типом потоковой передачи, которые характерны c для Hololens 2?
Я могу опубликовать свой соответствующий код при необходимости, но код C ++ MediaPlayer довольно подробный, поэтому я воздержусь, если не требуется проверка c частей. Тот факт, что он так хорошо работает на рабочем столе, предполагает, что не может быть ничего СЛИШКОМ принципиально неправильного ... надеюсь ... это - дела идут хорошо! Это все больше и больше указывает на специфическую проблему c в реализации MediaPlayer Hololens 2?