Логика DirectShow при работе с веб - камерой

254
09 декабря 2017, 08:26

Думаю освоить DirectShow, так как помимо вебки далее придётся работать со звуком, а DS, как я понял, универсальное и актуальное на данный момент средство для работы с мультимедиа в Windows. Хочу начать с того, чтобы переписать свой класс камеры на DirectShow, но мне что-то не ясна логика работы этого API - графы, фильтры, инерфейсы...

Объясните пожалуйста пошагово, как при помощи DirectShow получить кадр с камеры?

Например, с vfw32 я делал следующее:
1. Создаю окно захвата capCreateCaptureWindow
2. Перебираю девайсы от 0 до 9, пытаясь capGetDriverDescription
3. Если успешно по пункту два, делаю бинд драйвера на окно захвата capDriverConnect
4. Если третий успешно, настраиваю камеру (capGetVideoFormat и capSetVideoFormat) и устанавливаю коллбек процедуру (capSetCallbackOnFrame), в которой и описано заполнение глобального RGB-буфера кадра из структуры LPVIDEOHDR.
То есть после этих действий, я отправляю окну захвата WM_CAP_GRAB_FRAME и получаю unsigned char * буфер с RGB-палитрой кадра.
Как прийти к этому RGB-буферу при помощи DirectShow?

READ ALSO
Произвольная функция в качестве слота в QObject::connect()

Произвольная функция в качестве слота в QObject::connect()

В Qt существует так называемый QGamepadManager Class который отвечает за подключение джойстика и получения с него сигналов при нажатии на кнопку или...

265
Сделать задачу на c++ [требует правки]

Сделать задачу на c++ [требует правки]

Уточнить корень уравнения x^2-x-03=0 на отрезке [1;2] с точностью Eps = 10^-5, используя метод деления отрезка пополам

199
Проблема strtok C++11

Проблема strtok C++11

Написал свою функцию split (Как, например, в Java или Python):

279