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