DirectShow и приложение.
Совершенно не разбираясь в программировании, озаботился однако проблемой захвата видео с видеокамер и ТВ карт, чисто из любопытства. Зацепило вот и следующий вопрос не дает покоя - каким образом приложение (пусть на C++) взаимодействует с фильтрами DirectShow? Например, построил я с помощью GraphEdit фильтровый граф хватающий сигнал с ТВ карты и выводящий его на экран, все работает, картинка и звук есть, каналы переключаются и все такое прочее. Но, граф графом, но нужно же как-то управлять устройством захвата не прибегая к GraphEdit, насколько я понимаю, фильтровый граф всего лишь пример того, как должны соединятся фильтры для реализации той или иной задачи выполняемой с помощью DirectShow. Как же управлять компонентами DirectShow из программы? Как с помощью приложения соединять фильтры необходимым образом и как менять их свойства посредством графического интерфейса реализованного в программе?
Поясните пожалуйста без лишних подробностей (напомню, в программировании я полный ньюб), интересует только принцип реализации программ с использованием DirectShow, желательно пояснение "на пальцах". |
Цитата:
Ищите книгу Гончаров, Салихов - DirectX 7 для программистов. Если вкратце, любое обращение к DirectX происходит по технологии COM. Как видите, по-простому не получиться, иначе вместо общения по предмету я буду сюда весь университетский курс программирования тащить. Если действовать в соответствии с вашим ником, в Дельфи и Билдере есть компонент, который все это умеет. |
Боюсь, Вы меня превратно поняли, по-видимому я не совсем точно высказал свою просьбу. Дело в том, что я не собираюсь прямо сейчас, не умея двух строчек кода правильно сложить, писать программу видеозахвата или трансляции видео в сеть. Отлично понимаю, что курить COM объекты для меня сейчас дело пустое, не осилить мне пока таких страшно непонятных вещей. Меня интересует лишь форма реализации кода программы, то, каким образом создаются программы такого рода, самый общий принцип.
По моим догадкам COM представляет из себя набор (библиотеку) подпрограмм входящих в состав операционной системы, доступ к которым осуществляется через стандартный программный интерфейс. То есть, в нужном месте исходного текста программы вставляется какой-то стандартный кусок кода (рекомендованный производителем операционной системы), посредством которого и происходит обращение приложения к функциям операционной системы (в частности к DirectX), которая в свою очередь рулит драйверами устройств, а те уже обращаются к железу, засылая в регистры чипа TV карты (или CPU, или GPU, или звуковой карты) нужные двоичные комбинации и заставляя их производить необходимые действия (захват, фильтрацию, сжатие, вывод на экран). Сильно ли я ошибаюсь, рассуждая таким образом? Действительно ли существуют стандартные "куски" кода помещаемые в текст программы для выполнения операционной системой тех или иных действий? Упомянутый компонент в Дельфи и Builder - инструмент, позволяющий "воткнуть" нужный "кусок" стандартного кода в нужном месте? За книгу спасибо, нашел, полистал, положил в папку с литературой, которая на мой взгляд может пригодится в будущем (сейчас вряд ли, пока только пытаюсь освоить хотя бы азы программирования на C++). |
Цитата:
|
Спасибо, теперь я хотя бы приблизительно представляю, какие задачи ожидают меня в будущем :)
|
Часовой пояс GMT +4, время: 23:38. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.