Здравствуйте, AR, Вы писали:
AR>Подскажите пожалуйста как правильно использовать IAMVideoProcAmp
Там все просто — надо сначала сделать GetRange, а затем менять эначения через Set/Get в этом диапазоне А что, какие-то траблы?
AR>как направить видеопоток на DirectDrawSurface.
Ну, если используется DX9, то через VideoMixerRenderer9 (VMR9) все это легко и замечательно делается через Custom Allocator-Presenters, про это пример в SDK есть и топик в документации.
Здравствуйте, Edge, Вы писали:
E>Здравствуйте, AR, Вы писали:
AR>>Подскажите пожалуйста как правильно использовать IAMVideoProcAmp E>Там все просто — надо сначала сделать GetRange, а затем менять эначения через Set/Get в этом диапазоне А что, какие-то траблы?
то возвращается E_NOINTERFACE. Из-за чего это может быть: может дрова от камеры (SONY DCR-TRV345) не те, а может я неправильно строю граф. Если можно, приведите, пожалуйста, пример.
Здравствуйте, AR, Вы писали:
AR>возвращается E_NOINTERFACE. Из-за чего это может быть: может дрова от камеры (SONY DCR-TRV345) не те, а может я неправильно строю граф. Если можно, приведите, пожалуйста, пример.
Дело в том, что DV-камеры обычно появляются в системе как Microsoft DV Camera. В этом capture-device, насколько я знаю, управление яркостью/контрастом, etc не предусморено и, соответственно, интерфейса IAMVideoProcAmp нет.
Если используются драйвера от Сони (в чем я сомневаюсь) то там, может быть, и есть IAMVideoProcAmp, не знаю.
Еще в графе должна быть такая штука, как DV-splitter. Я не помню точно, но может быть на ней есть IAMVideoProcAmp. Еще один путь — покопаться в интерфейсах IAMExtDevice и IAMExtTransport, которые представляют камеру, может чего-нить удастся через них вытащить.
Здравствуйте, Edge, Вы писали:
E>Дело в том, что DV-камеры обычно появляются в системе как Microsoft DV Camera. В этом capture-device, насколько я знаю, управление яркостью/контрастом, etc не предусморено и, соответственно, интерфейса IAMVideoProcAmp нет. E>Если используются драйвера от Сони (в чем я сомневаюсь) то там, может быть, и есть IAMVideoProcAmp, не знаю. E>Еще в графе должна быть такая штука, как DV-splitter. Я не помню точно, но может быть на ней есть IAMVideoProcAmp. Еще один путь — покопаться в интерфейсах IAMExtDevice и IAMExtTransport, которые представляют камеру, может чего-нить удастся через них вытащить.
Драйвера я использовал родные от SONY. Пробовал подключать камеру и через USB, и через DV, но ничего не помогло, похоже она просто не поддерживает эти интерфейсы. Интерфейс IAMExtDevice находит только VCR на камере.
Если камера не поддерживает эти интерфейсы, возможно ли быстро захватывать кадры (через ISampleGrabber слишком медленно), а дальше я из сам преобразую.
Здравствуйте, AR, Вы писали:
AR>Драйвера я использовал родные от SONY. Пробовал подключать камеру и через USB, и через DV, но ничего не помогло, похоже она просто не поддерживает эти интерфейсы.
Чтобы точно убедиться, возьми GraphEdit, вставь туда фильтр камеры и пощелкай везде свойства. Если нигде на property pages яркости/контраста нет, то не судьба...
AR>Интерфейс IAMExtDevice находит только VCR на камере.
Вообще-то через IAMExtTransport::GetTransportBasicParameters можно общаться напрямую с девайсом через FireWire путем посылки неких последовательностей данных. Вот здесь все достаточно подробно сказано, и там же есть линк на станарт FireWire. Почитай стандарт, поэкспериментируй и, может быть, будет тебе счастье в управлении камерой.
AR>Если камера не поддерживает эти интерфейсы, возможно ли быстро захватывать кадры
Какая тут связь? Кадры с capture-device будут отдаваться с такой скоростью, какой скажешь.
AR>(через ISampleGrabber слишком медленно), а дальше я из сам преобразую.
Не надо обижать ISampleGrabber . Я мерил, он данные сэмпла размером 768*576*8 за ~2-3 мс отдает (это время вызова GetCurrentBuffer). Если и это тебе медленно, пиши свой собственный фильтр или используй VMR9 в Renderless mode. Вообще, если нужно только отображениене, смысла использовать ISampleGrabber нет, лучше VMR9 подробно изучить.