Вы можете визуализировать видео с помощью OpenGL, используя текстурированный квадрат, а затем выполнить весь 2D-рисунок сверху (с соответствующей настройкой матрицы 2D-проекции), используя GL.
В зависимости от вашего кодека, вы, скорее всего, получите данные YUV (а не RGB). В зависимости от платформы и вашего оборудования вы можете использовать собственный тип текстуры, чтобы избежать необходимости сначала преобразовывать его в RGB.
Используя альфа-смешивание, вы можете легко придумать несколько очень сложных интерфейсов. Вы, вероятно, захотите взглянуть на что-то вроде FreeType для обработки рендеринга шрифтов, так как это одна из областей GL, которая зависит от платформы и требует много работы.
Существует множество инструментов, графов сцен, библиотек виджетов и т. Д. Для OpenGL, которые вы также можете использовать.