Официальный форум СВД Встраиваемые Системы
29 Март, 2024, 04:37:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Overlay/layer на i945 QNX 6.4.1 SDP  (Прочитано 3277 раз)
Крупнов Александр
Интересующийся

Сообщений: 9


« : 24 Июнь, 2011, 18:55:33 »

Доброго времени суток!

Имею следующую платформу: i945, devg-gma9xx, devg-i830. Нужно: рисование в оверлее/слое с хрома-ключом - рисованием слоя только на пикселях с определенным цветом.
Проблема в том, что слои и оверлей создаютсЯ нормально, но ни хрома ключ в GF (gf_layer_set_chroma_cap, причем gf_layer_query дает флаги CHROMA_CAPS = 0x900), ни в оверлее (Pg_SCALER_PROP_CHROMA_ENABLE and Pg_SCALER_PROP_CHROMA_SPECIFY_KEY_MASK) не дают прозрачности (рисования по цвету). Причем! Приложение egl-gears на слое №2 и №3 рисует поверх всех окон Photon (сквозь шестеренки видны окна и рабочий стол, меню и  тп.п, то есть не блиттинг и не direct mode, не gf_context_set_chroma)...
Вопросы:
1) Как получить хрома-ключ?
2) Может быть есть исходник egl-gears? У меня есть примеры из Foundry27 Graphics Project, но там только gles-egl-gears, в котором нет исходников того приложения, а  TDK Advanced Graphicы получить не могу - есть лицензии только на QNX 6.21, 6.3.0, 6.4.1, но не на AG TDK, в составе котороо есть вроде бы те исходники...

ПС: QNX 6.5.0 Evaluation пока пробовал только при запуске с CD, но там урезанные драйвера и слои/оверлеи работают очень криво...
« Последнее редактирование: 24 Июнь, 2011, 19:00:31 от Крупнов Александр » Записан

ЗАО НИИИТ-РК, Челябинск
Андрей Докучаев
Сотрудник СВД ВС
Легенда

Сообщений: 1075



WWW
« Ответ #1 : 27 Июнь, 2011, 14:26:34 »

Доброго времени суток!

Имею следующую платформу: i945, devg-gma9xx, devg-i830. Нужно: рисование в оверлее/слое с хрома-ключом - рисованием слоя только на пикселях с определенным цветом.
Проблема в том, что слои и оверлей создаютсЯ нормально, но ни хрома ключ в GF (gf_layer_set_chroma_cap, причем gf_layer_query дает флаги CHROMA_CAPS = 0x900), ни в оверлее (Pg_SCALER_PROP_CHROMA_ENABLE and Pg_SCALER_PROP_CHROMA_SPECIFY_KEY_MASK) не дают прозрачности (рисования по цвету). Причем! Приложение egl-gears на слое №2 и №3 рисует поверх всех окон Photon (сквозь шестеренки видны окна и рабочий стол, меню и  тп.п, то есть не блиттинг и не direct mode, не gf_context_set_chroma)...
Вопросы:
1) Как получить хрома-ключ?
2) Может быть есть исходник egl-gears? У меня есть примеры из Foundry27 Graphics Project, но там только gles-egl-gears, в котором нет исходников того приложения, а  TDK Advanced Graphicы получить не могу - есть лицензии только на QNX 6.21, 6.3.0, 6.4.1, но не на AG TDK, в составе котороо есть вроде бы те исходники...

ПС: QNX 6.5.0 Evaluation пока пробовал только при запуске с CD, но там урезанные драйвера и слои/оверлеи работают очень криво...

Имеет смысл попробовать инициализацию слоя следующим образом:
Код:
gf_layer_attach();
gf_layer_set_chroma();
gf_layer_set_src_viewport();
gf_layer_set_dst_viewport();
gf_layer_enable();
gf_layer_update();         /* Изменения в настройки слоя будут применены после выполнения этой функции */

egl-gears работает по схожему принципу, за исключением gf_layer_update, его вызывает OpenGL ES самостоятельно.
Записан

Крупнов Александр
Интересующийся

Сообщений: 9


« Ответ #2 : 28 Июнь, 2011, 07:47:17 »

Благодарю за ответ!
Практически так я и делаю, кроме того, что вызываю gf_layer_update() после каждой изменения параметра gf_layer_set*.
Сегодня я наконец пробился с этой фигней, однако все так грустно, что хоть плач Sad
Я стал анализировать возвращаемые значения gf_layer_update() для слоев 2 и 3, в которых работает egl-gears, и получил, что при любой комбинации флагов CHROMA_OP_DST/CHROMA_OP_SRC/CHROMA_OP_DRAW/CHROMA_OP_NO_DRAW, кроме CHROMA_OP_SRC|CHROMA_OP_NODRAW (то есть сравнить значение с источником-картинкой и не рисовать если совпало) gf_layer_update() возвращает 7 - то есть не поддержано. То есть поддерживается только CHROMA_OP_SRC|CHROMA_OP_NODRAW. Причем и на i830 и на gma9xx. Так же и egl-gears рисует. Мне же нужно CHROMA_OP_DST|CHROMA_OP_DRAW. Вот теперь и не знаю, что делать...

Кстати! Ошибка в драйвере: для gma9xx gf_layer_query дает флаги CHROMA_CAPS = 0x900, что как раз и обозначает CHROMA_OP_DST|CHROMA_OP_DRAW - это неправильно. Правильно дает i830 CHROMA_CAPS = 0x1001 - вот это и есть CHROMA_OP_SRC|CHROMA_OP_NODRAW.
НО! для слоя №1 (YUV-слой) оба драйвера дают 0х900 и как бы разрешают операции с хрома-ключом. При этом gf_layer_update() полсе конфигурирования gf_layer_set_chroma возвращает GF_ERR_OK - типа все ОК... А прозрачности нету совсем... Может ошибка или хитрость? В QNX 6.5.0 - так же совершенно.
Записан

ЗАО НИИИТ-РК, Челябинск
Андрей Докучаев
Сотрудник СВД ВС
Легенда

Сообщений: 1075



WWW
« Ответ #3 : 28 Июнь, 2011, 11:22:33 »

Благодарю за ответ!

Практически так я и делаю, кроме того, что вызываю gf_layer_update() после каждой изменения параметра gf_layer_set*.
Сегодня я наконец пробился с этой фигней, однако все так грустно, что хоть плач Sad
Я стал анализировать возвращаемые значения gf_layer_update() для слоев 2 и 3, в которых работает egl-gears, и получил, что при любой комбинации флагов CHROMA_OP_DST/CHROMA_OP_SRC/CHROMA_OP_DRAW/CHROMA_OP_NO_DRAW, кроме CHROMA_OP_SRC|CHROMA_OP_NODRAW (то есть сравнить значение с источником-картинкой и не рисовать если совпало) gf_layer_update() возвращает 7 - то есть не поддержано. То есть поддерживается только CHROMA_OP_SRC|CHROMA_OP_NODRAW. Причем и на i830 и на gma9xx. Так же и egl-gears рисует. Мне же нужно CHROMA_OP_DST|CHROMA_OP_DRAW. Вот теперь и не знаю, что делать...

Вы правы, egl-gears использует именно эту комбинацию флагов.

Кстати! Ошибка в драйвере: для gma9xx gf_layer_query дает флаги CHROMA_CAPS = 0x900, что как раз и обозначает CHROMA_OP_DST|CHROMA_OP_DRAW - это неправильно. Правильно дает i830 CHROMA_CAPS = 0x1001 - вот это и есть CHROMA_OP_SRC|CHROMA_OP_NODRAW.
НО! для слоя №1 (YUV-слой) оба драйвера дают 0х900 и как бы разрешают операции с хрома-ключом. При этом gf_layer_update() полсе конфигурирования gf_layer_set_chroma возвращает GF_ERR_OK - типа все ОК... А прозрачности нету совсем... Может ошибка или хитрость? В QNX 6.5.0 - так же совершенно.

Исходя из того, что эти драйверы поддерживают различный набор аппаратуры я бы не стал говорить об ошибке на данном этапе. Драйверы действительно поддерживают различные операции с chromakey для слоев. Судя по исходным кодам для QNX 6.5.0 ситуация должна быть следующей:
devg-gma9xx.so
*_CHROMA_OP_SRC_MATCH - для слоев > 1
*_CHROMA_OP_DST_MATCH - не поддерживается
*_CHROMA_OP_DRAW - не поддерживается
devg-i830.so
*_CHROMA_OP_SRC_MATCH - для слоев > 1
*_CHROMA_OP_DST_MATCH - для слоя 1
Других ограничений я в явном виде не встретил.

Что касается CHROMA_CAPS в devg-gma9xx.so мы уточним ситуацию.
Записан

Крупнов Александр
Интересующийся

Сообщений: 9


« Ответ #4 : 28 Июнь, 2011, 12:28:43 »

То есть, стоит еще раз попытаться использовать _CHROMA_OP_DST_MATCH с драйвером devg-i830.so в 6.5.0 и слоем №1 (который YUV)? Что же, займусь этим прямо сейчас! Спасибо за информацию - дало надежду!
Единственно, пока не могу сообразить, как рисовать в этом слое (использовать YUV в принципе умею): контекст привязать к surface, созданной для этого слоя, невозможно, а получить указатель собственно на плоскость отображения не знаю как... Возможно gf_surface_get_info(), а потом gf_surface_info_t *info->vaddr? Попробую!
Записан

ЗАО НИИИТ-РК, Челябинск
Андрей Докучаев
Сотрудник СВД ВС
Легенда

Сообщений: 1075



WWW
« Ответ #5 : 28 Июнь, 2011, 13:06:15 »

Стоит также отметить, что devg-gma9xx.so поддерживает существенно меньшее число контроллеров и, если в нем запрещена операция DST_MATCH, видимо, на то были причины.
Записан

Крупнов Александр
Интересующийся

Сообщений: 9


« Ответ #6 : 28 Июнь, 2011, 13:40:15 »

Итак, посмотрел в 6.5.0 и i830 - та же самая грусть-печаль... Слой создается, отображается и... Независимо от цвета на основном слое (фотона) и установленной операции продолжает отображаться... Причем, установка gf_layer_set_chroma() проходит успешно и параметры потом считываются gf_layer_query_state() тоже правильно...


Под спойлером привожу текст программы. В нем, конечно же, не устанавливается контекст. Но слой создается, поверхность тоже...

(щёлкните чтобы показать/скрыть)

Кстати! Никак не могу получить gf_surface_info_t *info->vaddr, но всегда получаю gf_surface_info_t *info->paddr. Это почему?
Можно ли как-нибудь использовать это значение?
« Последнее редактирование: 28 Июнь, 2011, 13:44:09 от Крупнов Александр » Записан

ЗАО НИИИТ-РК, Челябинск
Крупнов Александр
Интересующийся

Сообщений: 9


« Ответ #7 : 30 Июнь, 2011, 07:47:31 »

Вопрос вдогонку: если использовать видеокарту matrox g550, то что там с хрома-ключом?
Записан

ЗАО НИИИТ-РК, Челябинск
Крупнов Александр
Интересующийся

Сообщений: 9


« Ответ #8 : 05 Июль, 2011, 05:15:16 »

Ребят, я, конечно, понимаю, что вопрос сложный, но помогите решить. Если нужно, то можем с предприятия сделать официальный запрос. Мы клиенты СВД ВС, в прошлом году купили лицензию на 6.4.1 СДП, сотрудничаем уже очень давно - с 90х. Куда слать запрос? На support@kpda.ru? Или факсом?
Записан

ЗАО НИИИТ-РК, Челябинск
Александр Варварик
Администратор
Легенда

Сообщений: 1353



WWW
« Ответ #9 : 05 Июль, 2011, 05:34:11 »

И вопрос не простой и мы только в воскресенье с МВМС.
Честно говоря не очень понятно в чем мы можем оказать помощь.

PS. Мы знаем, что вы наш клиент и сотрудничаем мы действительно давно, поэтому в прошлом году мы помогли вам обновить ваши средства разработки 6.3 SE до 6.4.1 SDP, несмотря на то что такой программы обновления у QSS нет, но мы идем навстречу нашим клиентам и по возможности решаем проблемные вопросы.
Записан

Андрей Докучаев
Сотрудник СВД ВС
Легенда

Сообщений: 1075



WWW
« Ответ #10 : 05 Июль, 2011, 14:13:48 »

Вопрос вдогонку: если использовать видеокарту matrox g550, то что там с хрома-ключом?

Драйвер devg-matroxg.so поддерживает лишь *_CHROMA_OP_DST_MATCH для слоя 1. Другие операции не поддерживаются.

Итак, посмотрел в 6.5.0 и i830 - та же самая грусть-печаль... Слой создается, отображается и... Независимо от цвета на основном слое (фотона) и установленной операции продолжает отображаться... Причем, установка gf_layer_set_chroma() проходит успешно и параметры потом считываются gf_layer_query_state() тоже правильно...


Под спойлером привожу текст программы. В нем, конечно же, не устанавливается контекст. Но слой создается, поверхность тоже...

(щёлкните чтобы показать/скрыть)

Кстати! Никак не могу получить gf_surface_info_t *info->vaddr, но всегда получаю gf_surface_info_t *info->paddr. Это почему?
Можно ли как-нибудь использовать это значение?


Как я выше писал, devg-i830.so поддерживает гораздо большее число контроллеров, по сравнению с узко специализированным devg-gma9xx.so. Не исключено, что интересующая операция поддерживается лишь в некоторых контроллерах. Вероятно Ваш контроллер не из их числа (об этом можно судить исходя из возможностей devg-gma9xx.so).

Полагаю дальнейший диалог лучше переводить на электронную почту.
Записан

Крупнов Александр
Интересующийся

Сообщений: 9


« Ответ #11 : 06 Июль, 2011, 05:20:19 »

Понял, что вы пытаетесь донести до меня.
Перехожу на электронку. На <почтовый адрес удалён>?

И вопрос не простой и мы только в воскресенье с МВМС.
Честно говоря не очень понятно в чем мы можем оказать помощь.

PS. Мы знаем, что вы наш клиент и сотрудничаем мы действительно давно, поэтому в прошлом году мы помогли вам обновить ваши средства разработки 6.3 SE до 6.4.1 SDP, несмотря на то что такой программы обновления у QSS нет, но мы идем навстречу нашим клиентам и по возможности решаем проблемные вопросы.

Ну, вы меня совсем застыдили Embarrassed
Признаю, что некорректно наезжать на людей, помогающих нам. Извиняюсь за возможное свое такое поведение. А уточнил про клиентов - для надежности, все-таки не с конторского адреса/интернета сижу, а с личного.

Жаль, кстати, что не смог поехать на МВМС, думаю было бы полезно...
« Последнее редактирование: 06 Июль, 2011, 07:39:35 от Олег Большаков » Записан

ЗАО НИИИТ-РК, Челябинск
Олег Большаков
Легенда

Сообщений: 3140



« Ответ #12 : 06 Июль, 2011, 07:40:52 »

Удалил e-mail с целью защиты от спамеров. Да, Вы указали правильный почтовый адрес.

Есть ещё возможность обратиться к нам через Форму обратной связи.
Записан
Александр Варварик
Администратор
Легенда

Сообщений: 1353



WWW
« Ответ #13 : 06 Июль, 2011, 23:19:56 »

Жаль, кстати, что не смог поехать на МВМС, думаю было бы полезно...

конечно жалко, можно было бы пообщаться, посмотреть пульты которые делают наши заказчики (в части вашей специфики), пообщаться с ними на предмет каких-то реализаций.
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2020 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 28 Март, 2024, 22:11:28