Фильтр DirectShow для наложения векторной графики
От: MAKCblM Россия  
Дата: 30.05.03 07:29
Оценка:
Я пишу приложение для видеозахвата с помощью DirectShow. Требуется написать несколько фильтров для наложения различных векторных изображений (линии, окружности и т.п.) поверх видеоизображения. Вопрос: какими средствами лучше осуществлять рисование? Из функции Transform фильтра я имею доступ к DIB-данным изображения, поэтому рисовать с помощью GDI не получиться (не создавать же для каждого кадра видео DDB в реальном времени ). В моем конкретном случае я имею только изображения в формате RGB8 с серой палитрой, но в будущем, вероятно, понадобится применять эти фильтры и для других форматов. Я, конечно, могу написать свои функции рисования примитивов в массиве пикселей, но... вы сами понимаете...

Чего посоветуете? Заранее благодарен.

P.S. К сожалению, должно работать и в 98-х...
Re: Фильтр DirectShow для наложения векторной графики
От: VSlava  
Дата: 30.05.03 15:48
Оценка:
Здравствуйте, MAKCblM, Вы писали:

MAK>...Из функции Transform фильтра я имею доступ к DIB-данным изображения, поэтому рисовать с помощью GDI не получиться (не создавать же для каждого кадра видео DDB в реальном времени ).

Как вариант можно все рисовать в свою DIB, а потом делать копирование в видеокадр с прозрачностью. Можно это делать в своем фильре (для записи в файл), если же только для просмотра, то можно воспользоваться VideoMixingRenderer9 (или 7 для XP) он все сам умеет.

Displaying an Application-Supplied Bitmap on the Composited Image
Re[2]: Фильтр DirectShow для наложения векторной графики
От: Аноним  
Дата: 31.05.03 17:10
Оценка:
Здравствуйте, VSlava, Вы писали:

MAK>>...Из функции Transform фильтра я имею доступ к DIB-данным изображения, поэтому рисовать с помощью GDI не получиться (не создавать же для каждого кадра видео DDB в реальном времени ).

VS>Как вариант можно все рисовать в свою DIB, а потом делать копирование в видеокадр с прозрачностью. Можно это делать в своем фильре (для записи в файл),

Я об этом варианте уже думал, видимо так и придется сделать. Для текущей задачи это годится, т.к. накладывается статическое изображение. Но, есть подозрение, что в будущем понадобиться наложение динамических картинок, поэтому я хотел узнать есть ли что-нибудь более подходящее (кроме VMR). Но, все-равно, спасибо

VS>если же только для просмотра, то можно воспользоваться VideoMixingRenderer9 (или 7 для XP) он все сам умеет.

Не, не годится — надо чтоб все работало в 98-x
Re[2]: Фильтр DirectShow для наложения векторной графики
От: MAKCblM Россия  
Дата: 31.05.03 17:14
Оценка:
Пардон, забыл войти под своим именем — предыдущее сообщение мое.

MAKCblM
Re[3]: Фильтр DirectShow для наложения векторной графики
От: Аноним  
Дата: 31.05.03 19:14
Оценка:
Здравствуйте, МАКСЫМ, Вы писали:

VS>>если же только для просмотра, то можно воспользоваться VideoMixingRenderer9 (или 7 для XP) он все сам умеет.

А>Не, не годится — надо чтоб все работало в 98-x

VMR 9 работает под 98 (проверено). Можно прилождение сделать так, чтобы пыталось строить граф с VMR9 или VMR7 по ситуации.
Единственн,о что у меня были траблы с VMR — после открытия большого числа окон одновреммено, XP/2000 висла или уходила в перезагрузку.
К тому же были проблемы со скоростью (для нестатической DIB, а также меняющейся во времени).

Сейчас использую слияние с прозрачностью.Недостаток один — Renderer масштабирует картинку прямо на экране и съедает часть векторной картинки выедая столбцы/строки. Получается нужно еще и resize потоку делать до отрисовки своей графики.
Re[4]: Фильтр DirectShow для наложения векторной графики
От: VSlava  
Дата: 31.05.03 19:15
Оценка:
>Сейчас использую слияние с прозрачностью.Недостаток один — Renderer >масштабирует картинку прямо на экране и съедает часть векторной >картинки выедая столбцы/строки. Получается нужно еще и resize потоку >делать до отрисовки своей графики.

Сам забыл войти
Re[4]: Фильтр DirectShow для наложения векторной графики
От: MAKCblM Россия  
Дата: 01.06.03 19:32
Оценка:
Здравствуйте, VSlava, Вы писали:

VS>>>если же только для просмотра, то можно воспользоваться VideoMixingRenderer9 (или 7 для XP) он все сам умеет.

А>>Не, не годится — надо чтоб все работало в 98-x

А>VMR 9 работает под 98 (проверено). Можно прилождение сделать так, чтобы пыталось строить граф с VMR9 или VMR7 по ситуации.

А>Единственн,о что у меня были траблы с VMR — после открытия большого числа окон одновреммено, XP/2000 висла или уходила в перезагрузку.
А>К тому же были проблемы со скоростью (для нестатической DIB, а также меняющейся во времени).

Спасибо за информацию, приму к сведению.

Ну мелкомягкие, ну достали — чего везде в MSDN'е написано что VMR работает только в XP. И, вообще, нет чтоб писать на каждой странице в какой версии DirectX...

А>Сейчас использую слияние с прозрачностью.Недостаток один — Renderer масштабирует картинку прямо на экране и съедает часть векторной картинки выедая столбцы/строки. Получается нужно еще и resize потоку делать до отрисовки своей графики.


А можно свой рендерер написать. Чтоб с помощью DrawDib рисовал кадры и поверх накладывал рисунок. Думаю что побыстрее будет, чем масштабировать поток.
Re[5]: Фильтр DirectShow для наложения векторной графики
От: Аноним  
Дата: 01.06.03 19:55
Оценка:
Здравствуйте, MAKCblM, Вы писали:


MAK>Ну мелкомягкие, ну достали — чего везде в MSDN'е написано что VMR работает только в XP. И, вообще, нет чтоб писать на каждой странице в какой версии DirectX...


VMR-7 работает только под XP. VMR-9 работает на любой платформе с установленным DX9. В MSDN документации так и говорится (обычно VMR-7 называют просто "VMR").

Dennis Evseev
MS

This posting is provided "AS IS" with no warranties, and confers no rights.
You assume all risk for your use. (c) 2003 Microsoft Corporation.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.