Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: QCasper от Март 24, 2006, 14:28



Название: qt и video overlay
Отправлено: QCasper от Март 24, 2006, 14:28
Кто-нибудь знает как отрисованную с помощью Qt картинку (неважно как, допустим она в QPixmap) писать в video overlay?


Название: qt и video overlay
Отправлено: Dendy от Март 28, 2006, 10:56
Ху из video overlay?


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

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


Название: qt и video overlay
Отправлено: Dendy от Март 28, 2006, 15:04
Тогда если имеем указатель на буфер можно использовать QImage, ибо он предоставляет помимо возможности юзать Arthur ещё и непосредственньІй доступ к данньІм.


Название: qt и video overlay
Отправлено: QCasper от Март 28, 2006, 15:12
Цитата: "alex0303"


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


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


Название: qt и video overlay
Отправлено: alex0303 от Март 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 на второй "экран".