Russian Qt Forum
Сентябрь 28, 2024, 16:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: qt и video overlay  (Прочитано 6804 раз)
QCasper
Гость
« : Март 24, 2006, 14:28 »

Кто-нибудь знает как отрисованную с помощью Qt картинку (неважно как, допустим она в QPixmap) писать в video overlay?
Записан
Dendy
Гость
« Ответ #1 : Март 28, 2006, 10:56 »

Ху из video overlay?
Записан
alex0303
Гость
« Ответ #2 : Март 28, 2006, 14:32 »

video overlay есть способность современных видеоадаптеров показывать некое окно "поверх" обычных пикселов.
При этом формат данных и размер окна источника абсолютно не обязательно совпадают с формат данных и размером приёмника.
Както я криво выразился.
Пример:
Имеем настройки экрана 1280х1024х32BPP.
С помощью какогонить DirectShow (если в винде)
- создаём video overlay размером 720х576хYUV422 (2 байта на пиксел), при этом получаем указатель на буфер (в видеопамяти адаптера).
- отображаем этот overlay на наш экран например в координаты 10х10 с размером 1000х800.
Далее ложим в оверлейный буфер YUV данные, и видим их без всяких преобразований в RGB формат экрана.
В общем практически все видеоплейеры этим пользуются.

А вот про что спрашивал автор поста мне не понятно.
Записан
Dendy
Гость
« Ответ #3 : Март 28, 2006, 15:04 »

Тогда если имеем указатель на буфер можно использовать QImage, ибо он предоставляет помимо возможности юзать Arthur ещё и непосредственньІй доступ к данньІм.
Записан
QCasper
Гость
« Ответ #4 : Март 28, 2006, 15:12 »

Цитата: "alex0303"


А вот про что спрашивал автор поста мне не понятно.


Согласен, с помощью директшоу можно в оверлэй выводить видео. Но мне это не требуется, мне требуется картинку, которую я подготавливаю средствами Qt QPainter вываливать на телек, подключенный через s-video. То есть при этом не обязательно, что она также будет отображаться на экране монитора.
Как я себе это вижу: у меня происходит некое событие, допустим это SIGNAL QTimer::timeout(), по нему в неком слоте производятся некие подсчеты координат, вычисляется прочая лажа и на основе этого всего генерируется картинка допустим отрисовывается в QPixmap. Я например в этом же слоте могу вызывать слот update() и в обработчике paintEvent виджета ее отрисовывать. То есть получится такая анимация на окне. Вот эту самую анимацию мне нужно выводить на телек. Поступила идея заносить все это дело в video overlay. Вот собсно и вопрос - как?
Записан
alex0303
Гость
« Ответ #5 : Март 28, 2006, 16:59 »

Насколько я понимаю средствами Qt Вы video overlay не создадите.
Если создавать его другими средствами ( DirectShow или какиминить там X-extension) то по всей видимости желательно создавать его с форматом пиксела таким же как и у QImage, (какойнить RGBA или без А но 32-х разрядный или порядок там BGRА?). Далее рисовать/конвертировать в этот QImage а потом построчно копировать его в оверлей.
Ну и ещё надо както назначить оверлей телеку! Улыбающийся

Мне всё ещё не до конца понятно зачем всё это надо, поэтому как вариант могу предложить такой вариант (для винды, и сам не проверял):
1. в настройках экрана/двухголовости указываем что вторая голова - телек.
2. Используем QDesktopWidget:
2.1 Для рисования напрямую на втором "экране".
Код:

    QPainter paint( QApplication::desktop()->screen( 1 ), TRUE );
    paint.draw...
    ...
    paint.end();

2.2 Для того чтобы поместить свой потомок от QWidget на второй "экран".
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.122 секунд. Запросов: 21.