DirectShow: размеры кадра с устройства захвата
От: hr0nix  
Дата: 15.06.09 12:02
Оценка:
Здравствуйте.

Задача: захватывать кадры с камеры средствами DirectShow, передавать их в OpenCV.

Текущее решение: понаследовать свой класс от CBaseVideoRenderer, подключить его к pin-у устройства, поддерживающему необходимый видеорежим. Принять необходимый видеорежим в паре методов CheckMediaType/SetMediaType.

Проблема: в списке поддерживаемых pin-ом видеорежимов (список получаю при помощи pin->EnumMediaTypes) отсутствует необходимый (допустим, 640х480х24). Вообще, там присутствуют только варианты 320x240. При этом в различных вьюверах (типа AMCap) показаны и другие видеорежимы, и там с ними можно работать. В CheckMediaType тоже подаются только те видеорежимы, которые есть в списке поддерживаемых pin-ом форматов.

Вопрос: в чем может быть причина? Возможно, нужно пользоваться каким-то другим способом проверки/выбора режимов камеры? Как вообще это все по уму сделать?

Вопрос номер 2: а нет ли каких-нибудь удобных бесплатных SDK для захвата видеосигнала с камеры/из файла средствами DirectShow (для С++)?

Заранее спасибо за ответы.
Re: DirectShow: размеры кадра с устройства захвата
От: CTpaHHoe Россия http://ctpahhoe.blogspot.com/
Дата: 15.06.09 12:44
Оценка:
Здравствуйте, hr0nix, Вы писали:


H>Проблема: в списке поддерживаемых pin-ом видеорежимов (список получаю при помощи pin->EnumMediaTypes) отсутствует необходимый (допустим, 640х480х24).



IAMStreamConfig::GetStreamCaps выдаёт такие же типы?
сразу к делу, без приветов. осторожно, злой антиспам
Re[2]: DirectShow: размеры кадра с устройства захвата
От: hr0nix  
Дата: 15.06.09 13:00
Оценка:
Здравствуйте, CTpaHHoe, Вы писали:

CTH>Здравствуйте, hr0nix, Вы писали:



H>>Проблема: в списке поддерживаемых pin-ом видеорежимов (список получаю при помощи pin->EnumMediaTypes) отсутствует необходимый (допустим, 640х480х24).



CTH>IAMStreamConfig::GetStreamCaps выдаёт такие же типы?


Да, только что проверил, в точности такие.
Re[3]: DirectShow: размеры кадра с устройства захвата
От: hr0nix  
Дата: 15.06.09 14:16
Оценка:
Здравствуйте, hr0nix, Вы писали:

H>Здравствуйте, CTpaHHoe, Вы писали:


CTH>>Здравствуйте, hr0nix, Вы писали:



H>>>Проблема: в списке поддерживаемых pin-ом видеорежимов (список получаю при помощи pin->EnumMediaTypes) отсутствует необходимый (допустим, 640х480х24).



CTH>>IAMStreamConfig::GetStreamCaps выдаёт такие же типы?


H>Да, только что проверил, в точности такие.


Еще посмотрел библиотеку avcap (работает через DirectShow). Она выдает точно такие же режимы, как и моя программа. Такое ощущение, что в окне настроек пина (которое как-то там создается автоматически) режим выбрать можно, а если запрашивать его вручную, то нет.
Re[3]: DirectShow: размеры кадра с устройства захвата
От: muma Германия  
Дата: 15.06.09 14:24
Оценка:
Здравствуйте, hr0nix, Вы писали:
H>Да, только что проверил, в точности такие.
Это,может быть, driver устройства так написан.
Если в graphedt.exe удается выставить другие разрешения, советую выбросить этот driver.
И посмотреть, как работает AMCap, не пробывал ?
Re[4]: DirectShow: размеры кадра с устройства захвата
От: hr0nix  
Дата: 15.06.09 14:36
Оценка:
Здравствуйте, muma, Вы писали:

M>Здравствуйте, hr0nix, Вы писали:

H>>Да, только что проверил, в точности такие.
M>Это,может быть, driver устройства так написан.
M>Если в graphedt.exe удается выставить другие разрешения, советую выбросить этот driver.
M>И посмотреть, как работает AMCap, не пробывал ?

AMCap как раз это автоматическое окно свойств вызывает, которое, видимо, драйвером рисуется (в AMCap весь интерфейс на английском, а в окошке все на русском). Таким образом, видимо это может быть косяк драйвера, позволяющего устанавливать режим через окошко настроек, но не программно средствами DirectShow (неудача с avcap это подтверждает).

У меня аналоговая камера подключена к грабберу (AVer Capture), который довольно паршивый и с драйверами которого уже было множество проблем. Буду пробовать с другим граббером другой компании.
Re: DirectShow: размеры кадра с устройства захвата
От: squid  
Дата: 15.06.09 16:45
Оценка:
Здравствуйте, hr0nix, Вы писали:

H>Вопрос номер 2: а нет ли каких-нибудь удобных бесплатных SDK для захвата видеосигнала с камеры/из файла средствами DirectShow (для С++)?


а твой софт будет бесплатный или нет? Если бесплатный могу дать ключик к одному очень функциональному платному SDK.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.