Я пишу приложение для видеозахвата с помощью DirectShow. Требуется написать несколько фильтров для наложения различных векторных изображений (линии, окружности и т.п.) поверх видеоизображения. Вопрос: какими средствами лучше осуществлять рисование? Из функции Transform фильтра я имею доступ к DIB-данным изображения, поэтому рисовать с помощью GDI не получиться (не создавать же для каждого кадра видео DDB в реальном времени ). В моем конкретном случае я имею только изображения в формате RGB8 с серой палитрой, но в будущем, вероятно, понадобится применять эти фильтры и для других форматов. Я, конечно, могу написать свои функции рисования примитивов в массиве пикселей, но... вы сами понимаете...
Чего посоветуете? Заранее благодарен.
P.S. К сожалению, должно работать и в 98-х...
Re: Фильтр DirectShow для наложения векторной графики
Здравствуйте, MAKCblM, Вы писали:
MAK>...Из функции Transform фильтра я имею доступ к DIB-данным изображения, поэтому рисовать с помощью GDI не получиться (не создавать же для каждого кадра видео DDB в реальном времени ).
Как вариант можно все рисовать в свою DIB, а потом делать копирование в видеокадр с прозрачностью. Можно это делать в своем фильре (для записи в файл), если же только для просмотра, то можно воспользоваться VideoMixingRenderer9 (или 7 для XP) он все сам умеет.
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
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 для наложения векторной графики
>Сейчас использую слияние с прозрачностью.Недостаток один — Renderer >масштабирует картинку прямо на экране и съедает часть векторной >картинки выедая столбцы/строки. Получается нужно еще и resize потоку >делать до отрисовки своей графики.
Сам забыл войти
Re[4]: Фильтр DirectShow для наложения векторной графики
Здравствуйте, 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.