22 июля 2004 18:27, Alexander Grischenko писал All:
AG> SampleGrabber, овеpлей отключается, и каpтинка выводится сpедсвами GDI
AG> (или DirectDraw - не знаю, что там именно пpименяется, но овеpлей
AG> отключается). Как заставить все же pаботать овеpлей? Hyжно, во-пеpвых,
AG> для быстpого (аппаpатного) масштабиpования исходной каpтинки на весь
AG> экpан, а во-втоpых - для вывода повеpх овеpлея pазличной инфоpмации
AG> (возможно, гpафических меню, оpганов yпpавления т.д. сквозь котоpые
...
AG> попытке pастянyть на весь экpан, естественно, начинаются тоpмоза и
AG> падение FPS
Видимо, всё-таки GDI, ибо тоpмоз по опpеделению.
Пеpеписать всё под DDraw7, либо твой hardware овеpлеи не деpжит.
За сим pазpешите откланяться, Alexander!
hardware оверлеи держит (GeForce2), просто они отключаются при подключении
samplegrabber (это особенно хорошо видно в режиме 256 цветов, в этом режмиме
оверлей дает полноценное цветное живое видео, а при подключении samlegrabber-а
VideoRenderer отображает жалкое подобие картинки.)
Да и не хочется DDraw трогать, мне хватило бы простого оверлея.
--
Alexander Grischenko
<gralex(at)ml.lv>
AG>
AG> Вопрос в следующем: делаю приложение, которое грабит изображение с
AG> камеры, анализирует кадры и затем поверх видеокартинки выдает
AG> различную информацию. Возникла проблема - есди я не подключаю
AG> samlegrabber и не выбираю формат кадра, то Video Renderer использует
AG> оверлей, чего и требуется. Hо как только к графу подключаю
AG> SampleGrabber, оверлей отключается, и картинка выводится средсвами GDI
AG> (или DirectDraw - не знаю, что там именно применяется, но оверлей
AG> отключается). Как заставить все же работать оверлей? Hужно, во-первых,
AG> для быстрого (аппаратного) масштабирования исходной картинки на весь
AG> экран, а во-вторых - для вывода поверх оверлея различной информации
AG> (возможно, графических меню, органов управления т.д. сквозь которые
AG> просвечивала бы картинка). В данный момент я просто граблю кадры в
AG> формате 32бита, при помощи функций из Graphics32 (www.g32.org) рисую
AG> сообщения и органы управления, а затем копирую битмап на экран. Вроде
AG> по скорости ничего, но только если не масштабирую картинку. При
AG> попытке растянуть на весь экран, естественно, начинаются тормоза и
AG> падение FPS
В DirectShow существуют fake-потоки, где реально информация не передается по
пути
videoinput => videograbberRAM => systemRAM => cpu => systemRAM =>
videoinput => videorendererRAM => videooutput
а передается сразу каак
videoinput => videoRAM => videooutput,
причем, при этом организуется "ложный, fake" поток, а данные на самом деле
передаются через железо. Ты поищи, в документашке от DirectShow9 рассказывается
по этому поводу.
И еще нужно знать что такое оверлей. Оверлей это способ вывода видеоинформации
"на лету", когда под видеолуч чисто аппаратно подставляется не содержимое
видеобуфера, а буфер оверлея. Hе факт что есть аппаратная возможность
организовать оверлей поверх оверлея.
Вообще, посмотри браузер Directx9 примеров. там есть новые, довольно
специфичные вещи (иногда работающие только для XP). Может быть что-то
подойдет...
Poor. Shame. Brake, brake, brake.