Как стать автором
Обновить

Комментарии 42

Хотя бы расшифровали ВКС вначале. А то я ожидал описание разработки терминала для военно космических сил на С++ в пику Маску с его chromium и JavaScript для космонавтов.

Так точно, это же элементарные правила оформления "научных" публикаций.

Отличное замечание, добавлено.

А то действительно, терминал для начальника ВКС, чтобы он мог напечатать доклад министру обороны.

Здорово! Молодцы! Жаль, что пока для западных ВКС приходится софт на Qt делать, потому что в РФ удалёнки почти нет и зп ниже плинтуса. С гораздо большей радостью делал бы софт для отечественной оборонки!

Да, надеюсь — было бы здорово! После голосования за поправки и зп должны сильно вырасти! :)

например, более современная технологя QML не позволяет рендерить видео с использованием произвольного OpenGL-контекста

А можете более подробно описать эту проблему или ссылку дать?

Насколько я помню (экспериментировали с GL-рендерингом в QML уже довольно давно), в общих чертах проблема следующая: как упоминается в статье, для оптимизации рендеринга аппаратно декодированного видео мы используем расширения из OpenGL ES 3.0, соответственно умолчательный GL-бэкэнд Qt-а (GLX) нам не подходит. При использовании EGL-бэкэнда (export QT_XCB_GL_INTEGRATION=xcb_egl) ломался штатный рендеринг QML — переставали компилироваться захардкоженные в QtQuick шейдеры, которые рассчитаны на обычный «старый» OpenGL. Менять самим все шейдеры из QtQuick и собирать свою либу посчитали слишком костыльным вариантом, хотя экспериментировали с ним и отчасти успешно. Были и другие проблемы после частичного решения проблем с шейдерами — например, краши на рендеринге в драйвере i965 при использовании кастомных (отдельно собранных) libEGL и i965 вместо нативных (поставляемых с ОС). Нативные же либы — слишком старые и не поддерживают нужные нам расширения.
В общем, в итоге посчитали, что проще использовать Qt Widgets, чем неизвестно сколько (и с сомнительными шансами на успех) биться над решением кучи проблем в QML.
А не подскажете версию Qt c которой пробовали? Я недавно игрался с QML VideoOutput (как раз после того как надо было перенести OpenGL код с QOpenGLWidget на десктоп и стало понятно что еще раз изобретать велосипед желания нет) и вполне удалось завести код который одинаково работает на Nvidia/intel/PowerVR с оптимизацией dmabuf при необходимости.

Update:
Ну и возможно стоило попробовать пересобрать Qt с поддержкой gles?
Пробовали с Qt 5.8 — 5.11.

Ну и возможно стоило попробовать пересобрать Qt с поддержкой gles?

Это точно для нас не вариант. У нас сертифицируемое ПО, а сертифицировать ещё весь Qt желания мало :) Приходится довольствоваться тем Qt, который входит в состав дистрибутива линукса.
А можете раскрыть — по какой причине требуется рендеринг в произвольный OpenGL контекст? То есть в контекст, отличный от контекста окна?
Нет, рендерить нужно в контекст окна, но тот контекст окна, который создаёт Qt, нас не устраивает, потому что нам нужны EGL-расширения (об этом было немного в тексте статьи и в предыдущем моём комментарии), которые недоступны в умолчательном контексте. Подробнее раскрывать, наверное, не буду :)
Это аппаратный сервер, собственно, ядро системы видеоконференцсвязи. Аппаратная платформа представляет собой телекоммуникационную кассету (шасси) 3U с набором специализированных плат. Собственная разработка компании.
Какие задачи решаются на этом сервере?
Обработка поступающих на него аудио и видео потоков, их микширование и кодирование, формирование независимых потоков для каждого участника конференции, управление абонентами, обеспечение работы системы в режиме АТС, запись переговоров.
Гипервизор, виртуализация?
Данный сервер оптимизирован для решения задач видеоконференцсвязи по производительности, надежности, функционалу. Но система видеоконференцсвязи нашей разработки может быть реализована как с использованием аппаратной части (сервера ПРОТЕЙ-ВКС), так и на вирутальной вычислительной платформе.
(шасси) 3U с набором специализированных плат

Что там может быть специализированного?

FPGA со своими реализациями микширования и т.п. вещей, например.
Но я сомневаюсь, что это действительно было нужно делать по причине того, то «бытовые» CPU не справились бы.

Специализированные по функциям. Каждая плата отвечает за свой набор функций: интеграционные, платы питания, коммутации (микширования) и управления. В зависимости от требования по производительности в шасси устанавливаются нужные комбинации плат. Это оказалось универсальнее, чем на 1 плату заводить все функции сразу.
С платой питания всё понятно… Но остальное что? Плата c CPU или плата GPCPU или плата с FPGA? Какую магистрально-модульную архитектуру используете?
Про особенности разработки аппаратного обеспечения мы планируем написать отдельную статью. Следите за публикациями ;-)
А так-то там есть и CPU/GPU (куда ж без них), и FPGA.
Хорошо. Буду ожидать.
при таком использовании Qt за него нужно платить, насколько я понимаю, не так ли? Поделитесь опытом с этой стороны, пожалуйста.
Насколько я помню, входило в одну из покупных лицензий Линукса.
при всём моём уважении — это невозможно.
у меня богатое воображение, но не могу представить себе, как в этом случае деньги дойдут до «The Qt Company»

покупка лицензий конечно должна была производиться не кодерами, а кодеры могут не «париться» вовсе — но не до такой же степени! :):)
Opensource компоненты никто не отменял :)
Opensource компоненты не являются индульгенцией от оплаты лицензии.

Если ваше использование не подпадает под оплату — так и напишите. Издалека кажется, что продукт коммерчесикй — значит за Qt надо платить… Может у вас есть платные лицензии, просто в вашу компетенцию это не входит?
Поясните, пожалуйста. Если они используют те компоненты Qt, которые под LGPL, то они должны 1) опубликовать те изменения, которые были сделаны непосредственно в данных компонентах, если таковые были и 2) предоставлять купившему ПО исходники Qt и возможность его перелинковать. Никакого требования покупать лицензию просто потому, что делается коммерческое ПО, нет.
потому и спрашивал, что мне было интересно, какой вариант был у данного варианта девелопмента.

ответ «шло с платным дистрибутивом какого-то линукса» слишком размытый…

«покупать ничего не пришлось из-за того, что уложились в GPL2» — годится, удовлетворяет моё любопытство…

странно, что явно этот ответ не прозвучал, пришлось самим коллективно додумывать :):)
Этот продукт является конкурентом iva mcu?
iva mcu — тоже ВКС в рамках импортозамещения
Все Российские производители платформ ВКС в том или ином смысле конкурируют между собой на рынке, IVA и НТЦ ПРОТЕЙ не исключение.
Наша система ВКС среди прочих производителей имеет исключительную особенность: мы единственные(пока), кто производит собственную аппаратную платформы от терминальной до серверной части, а не отдельное ПО для установки на сторонний сервер.

Такой подход позволяет не только предотвратить разрыв текущих пользовательских сессий, но и обеспечивает гарантированное качество обслуживание для всех пользователей системы.
производит собственную аппаратную платформы

То есть модули 3U, входящие в шасси, собственной разработки?
Да, все платы собственной разработки, заточенные под наше ПО.
Процессорный модуль также разработан самостоятельно?
Нет, раньше разрабатывали, но оказалось нерентабельно. Теперь берем сторонних производителей.
Производители отечественные или зарубежные? Можете их назвать?
Мы сотрудничаем с отечественными и иностранными производителями. Применение тех или иных компонентов очень часто связано с поставленной технической задачей и с дальнейшими условиями применения оборудования, т.к. мы не просто «тиражируем» наши устройства, а адаптируем их по самым разным требованиям наших заказчиков.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий