строю filtergraph для рендеринга видеопотока в текстуру opengl на основе CBaseVideoRenderer.
добавляю сорс-фильтр через AddSourceFilter, рендерер через AddFilter, делаю IGraphBuilder::Connect для выхода
сорса и входа рендерера. как полагается, автоматически добавляется соответствующий декодер-фильтр. в общем, всё работает,
рендеринг идёт.
проблема вот в чём.
нужно изменить размеры (width/height) поступающих в рендерер битмэпов, то есть чтобы производился автоматический stretch
(в случае, если я хочу, например, использовать текстуру размера, не совпадающего с размерами исходного видео).
насколько я понял, нужно сконнектить фильтры по определённому типу медиасэмпла — задать нужные размеры source и target
rectangle в VIDEOINFOHEADER, плюс в BITMAPINFOHEADER. вот в этом и заключён мой вопрос — как и где именно это делается
в данном случае? для каких pin'ов и фильтров?
кто хорошо рубит в dshow tech, подскажите, пожалуйста.
судя по sdk, этот интерфэйс доступен на выходных пинах capture и compression фильтров, а file source фильтр, как и любой
другой в моём графе, таковыми не являются. не пашет, короче. это подойдёт для захвата с вэбкамеры, например, но не
для проигрывателя avi.
Здравствуйте, ablestuff, Вы писали:
A>судя по sdk, этот интерфэйс доступен на выходных пинах capture и compression фильтров, а file source фильтр, как и любой A>другой в моём графе, таковыми не являются. не пашет, короче. это подойдёт для захвата с вэбкамеры, например, но не A>для проигрывателя avi.
Ну, может у тебя рендерер может битмапы растягивать, если IAMStreamConfig нету? А так, наверно, собственный трансформ-фильтр придется писать для изменения размеров битмапа...
Здравствуйте, Edge, Вы писали:
E>Ну, может у тебя рендерер может битмапы растягивать, если IAMStreamConfig нету? А так, наверно, собственный трансформ-фильтр придется писать для изменения размеров битмапа...
блин. а есть какие-нибудь ресайзеры стандартные? у меня тут валяется bicubic resizer, но интерфейсов его нету, только
через окно свойств могу размеры менять, а это не прикольно.
Здравствуйте, ablestuff, Вы писали:
A>блин. а есть какие-нибудь ресайзеры стандартные? у меня тут валяется bicubic resizer, но интерфейсов его нету, только A>через окно свойств могу размеры менять, а это не прикольно.
А в Vusual Studio через Tools->OLE/COM object viewer посмотреть никак?
A>>блин. а есть какие-нибудь ресайзеры стандартные? у меня тут валяется bicubic resizer, но интерфейсов его нету, только A>>через окно свойств могу размеры менять, а это не прикольно.
E>А в Vusual Studio через Tools->OLE/COM object viewer посмотреть никак?
A>>да пробовал уже — не смотрится. в курсе почему?
E>Что значит не смотрится? В списке нет или что? Если этот ресайзер в граф вставляется, то он должен быть в списке.
ну, typelib не смотрится, а в списке объектов этот ресайзер есть: на него показываются интерфейсы типа IBaseFilter, IMediaFilter и
тот самый ISpecifyPropertyPages. короче, напрямую похоже не изменить свойства фильтра. да?
Здравствуйте, ablestuff, Вы писали:
A>ну, typelib не смотрится, а в списке объектов этот ресайзер есть: на него показываются интерфейсы типа IBaseFilter, IMediaFilter и A>тот самый ISpecifyPropertyPages. короче, напрямую похоже не изменить свойства фильтра. да?
Да, не изменить... Придется тебе другой фильтр искать
A>>>а где можно найти?
E>>В гугле
A>нашёл! Moonlight Scalar Filter: ir.ax
A>к тому же он, похоже, входит в кодек-паки всякие.
A>короче, всё работает, ресайзится... круто.
Слушай, приятель, а как его подключить? Имею ввиду, создается ведь он при помощи CoCreateInstance, а какой у него CLSID?
A>>>а где можно найти?
E>>В гугле
A>нашёл! Moonlight Scalar Filter: ir.ax
A>к тому же он, похоже, входит в кодек-паки всякие.
A>короче, всё работает, ресайзится... круто.
Подскажите пожалуйста, а как получить доступ к его настройкам. Т.е. не через окно настроек, а программно????