![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
vdm |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
хочу воспользеватся интерфейсом, но при присваивании графу, указатель не инициализируется, почему?
hr = m_pGraph->QueryInterface(IID_IAMCameraControl, (void **)&pAMCameraControl); pAMCameraControl = 0x00000000 в чём дело? Может нужно какой нибудь фильтр вызвать перед этим? |
|||
|
||||
Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: нет Всего: 18 |
IAMCameraControl интерфейс нужно запрашивать не у графа, а у фильтра - источника, т.е. у фильтра твоего захватываемого девайса.
-------------------- Подпись больше не нужна |
|||
|
||||
vdm |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
//Вот фильтр:
hr = AddFilterByName(m_pGraph, m_ChipNames[i], CLSID_VideoInputDeviceCategory, &pFilter); //pFilter получил значение hr = pFilter->QueryInterface(IID_IAMAnalogVideoDecoder, (void**)&pAMAnalogVideoDecoder); hr = pAMAnalogVideoDecoder->put_TVFormat(AnalogVideo_PAL_B); //Здесь, пока всё нормально, при запуске устанавливает PAL_B hr = pFilter->QueryInterface(IID_IAMVideoControl, (void**)&pAMVideoControl); //Уже здесь при включеном дебугере фиксирую, что переменная pAMVideoControl не //инициализирована (0x00000000), дальше кидает ошибку directshow конструктора... В чём дело? ![]() |
|||
|
||||
Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: нет Всего: 18 |
А ты уверен что фильтр поддерживает данный интерфейс? У тебя ведь тв-тюнер?
-------------------- Подпись больше не нужна |
|||
|
||||
vdm |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
Ты задал очень хороший вопрос ![]() У меня "Video Capture from camera" тюнер. То-есть поддерживает подключение нескольких камер и передают захваченое изображение. Я не уверен поддерживает ли он этот интерфейс, но и не знаю, как проверить... Может ты знаешь? |
|||
|
||||
Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: нет Всего: 18 |
Посмотри что возвращает QueryInterface. Повторюсь, скорее всего фильтр не поддерживает данный интерфейс. Прочитав некоторые твои посты, я догадываюсь что тебя заинтересовала настройка CameraControl_Roll, т.е. ты хочешь повернуть изображение. Так?
-------------------- Подпись больше не нужна |
|||
|
||||
vdm |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
Да, Ты прав. Именно это меня и интересует. А как можно узнать, поддерживает ли фильтр тот или инной интерфейс? И как правельно посмотреть, что возвращает QueryInterface?
Это сообщение отредактировал(а) vdm - 16.2.2008, 22:44 |
|||
|
||||
Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: нет Всего: 18 |
Проверь результат QueryInterface на равенство E_NOINTERFACE. Посмотри интерфейс IVMRMixerControl (особенно его метод SetOutputRect). Запросить его можно у рендерера (VMR). -------------------- Подпись больше не нужна |
|||
|
||||
vdm |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
![]() До этого я выводил через простой Video Renderer, если поменяю выход на Video Mixer Renderer, неполадок быть не должно? Это сообщение отредактировал(а) vdm - 17.2.2008, 00:22 |
|||
|
||||
Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: нет Всего: 18 |
нет, проблем не будет..
ты же убедился что фильтр твоего девайса не поддерживает IAMCameraControl... -------------------- Подпись больше не нужна |
|||
|
||||
vdm |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
Описание:
The SetOutputRect method sets the position of this stream within the composition rectangle. При чём здесь SetOutputRect? На сколько я понял он выстанавливает позицию окна в которой будет видео поток. Когда мне нужно повернуть изображение на 90 градусов. Это сообщение отредактировал(а) vdm - 17.2.2008, 00:27 |
|||
|
||||
Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: нет Всего: 18 |
А ты посмотри статью "Positioning and Moving Video Rectangles in Composition Space" и сразу станет ясно...
![]() Возможности проверить нет, но как то так:
Не забудь для VMR указать число потоков (IVMRFilterConfig::SetNumberOfStreams) = 1. -------------------- Подпись больше не нужна |
|||
|
||||
vdm |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
Как у тебя только терпения хватает со мной возиться...
![]() "Не забудь для VMR указать число потоков (IVMRFilterConfig::SetNumberOfStreams) = 1." А зачем? получается мне придётся ещё один интерфейс вызывать (IVMRFilterConfig) Число потоков это Pin 'ы Функция просит DWORD значение. На сколько я понял надо получить количество Pin'ов выводимое VMR renderer'ом? Как это сделать и обязательно ли это? ![]() Это сообщение отредактировал(а) vdm - 17.2.2008, 01:04 |
|||
|
||||
Greeen |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: нет Всего: 18 |
A value of 1 is valid for dwMaxStreams. This value does not cause any extra pins to be created, but it does force the VMR to go into "mixer mode."
А что, трудно интерфейс получить? ![]()
Зачем?! Если не будешь микшировать потоки просто поставишь 1 для числа потоков и тебе для этого совершенно не нужно знать сколько их было до тебя! -------------------- Подпись больше не нужна |
||||
|
|||||
vdm |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
Привет. А ты уверен, что после вызова интерфейса, IVMRFilterConfig::SetNumberOfStreams(1) это прокатит? Ведь функция ждёт DWORD значения..
|
|||
|
||||
![]() ![]() ![]() |
Вы можете найти полезным что... | |
|
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |