Я пытаюсь встроить поток видеочата 1080p в приложение Unity на Android.
Я пробовал использовать Agora.io для этой цели, но текущий версия Agora для Unity полностью работает на ЦП, а копирование текстуры 1080p с ЦП на ГП занимает 20 мсек на моем устройстве Android - слишком медленно, чтобы поддерживать постоянную частоту кадров 60 кадров в секунду в моем приложении. В идеале мне нужна либо операция копирования, чтобы не блокировать поток рендеринга, либо мне нужно, чтобы копирование происходило менее чем за 10 мс, либо мне нужно, чтобы декодирование происходило полностью аппаратно.
Я немного покопался в как другие приложения для видеоплеера достигают этого, и обычно они используют Android MediaCode c или ExoPlayer для декодирования видео непосредственно в текстуру на оборудовании. Однако это не представляется возможным для приложения видеочата, потому что процесс кодирования видеопотока в один из Android -поддерживаемых форматов приведет к слишком большой задержке.
I Мне любопытно, как приложения, такие как Skype и Hangouts, достигают этого - но я подозреваю, что они либо работают со скоростью 30 кадров в секунду, либо ограничивают разрешение видео до 720p или ниже.
Я также рассматривал возможность создания собственного протокола видеочата, используя что-то вроде Базовое сжатие текстур для распаковки текстур на GPU, а не на CPU, но очень мало информации о том, как компилировать и интегрировать Basis в приложение Android.
Итак, мой вопрос: знает ли кто-нибудь о SDK для видеочата, который предлагает такую производительность и точность без чрезмерного объема работы по разработке?