Info

Testing and Issues

You can test this entry and submit issues during the testing period of the C++ Contest 2022 contest.

Entries with serious issues will not be able to win the contest, but even minor issues might be important for overall results.

Voting

1

Comments

Схема работы приложения:
1. Получается кадр с камеры в формате yuv420
2. Конвертируется в yuv444 для отправки в шейдер и nv21 для mlkit. Для ускорения работы пиксели обрабатываются группами по 4шт и работа распараллелена через OpenMP (отключено в итоговом приложении для уменьшения размера бинаря, добавляет ~800кб). C openmp кадр конвертируется за время 50-100 мксек, без ~300 мксек.
3. Mlkit ищет ключевые точки
4. Шейдер отрисовывает кадр, делая в 1 проход искажение геометрии в окрестности ключевых точек, цветокоррекцию и конвертацию yuv -> rgv, чтобы не нагружать этим CPU.
Работа проверялась на телефоне и в андроид эмуляторе в виртуальной комнате с подстановкой баннера на стену (нужно для этого переключить камеру с фронтальной на заднюю, изменив значение переменной camera_type в классе VideoCameraPreview.java)
Для ускорения работы можно было бы сделать 2 шейдера - для отрисовки большей части изображения без искажения и для отрисовки небольшой части площади с ним. Это разгрузило бы GPU.
Ещё из интересного - макрос, подставлящий GLSL шейдер в с/с++ код так, что IDE парсит его как сишный код с подсветкой.
You have not added any comments yet...
by rating

Issues

Fair Mammoth Mar 17, 2022 at 17:54
Работа над приложением не окончена, конкурсное задание не выполнено. Приложение не позволяет представить «лучшую версию себя» собеседнику. 

Пользователю доступно преобразования видеопотока по следующим параметрам: насыщенность, изменения размеров носа и глаз. Манипуляции с параметром «кожа» не приводят к видимым результатам. Все изменения необходимо производить вручную, автоматической коррекции видеопотока в работе не предусмотрено. На всех устройствах, задействованных в тестировании, приложение по умолчанию выводит искаженную блёклую картинку с камеры.
Samsung Galaxy S22 Ultra (Android 12); Samsung Galaxy S10 (Android 12); Xiaomi Redmi Note 8 Pro (Android 10).
10
Nobody added any issues yet...