directshow
От: abs Россия http://overdoze.dem.ru
Дата: 13.02.04 19:36
Оценка:
возникла проблема.

строю filtergraph для рендеринга видеопотока в текстуру opengl на основе CBaseVideoRenderer.
добавляю сорс-фильтр через AddSourceFilter, рендерер через AddFilter, делаю IGraphBuilder::Connect для выхода
сорса и входа рендерера. как полагается, автоматически добавляется соответствующий декодер-фильтр. в общем, всё работает,
рендеринг идёт.


проблема вот в чём.

нужно изменить размеры (width/height) поступающих в рендерер битмэпов, то есть чтобы производился автоматический stretch
(в случае, если я хочу, например, использовать текстуру размера, не совпадающего с размерами исходного видео).
насколько я понял, нужно сконнектить фильтры по определённому типу медиасэмпла — задать нужные размеры source и target
rectangle в VIDEOINFOHEADER, плюс в BITMAPINFOHEADER. вот в этом и заключён мой вопрос — как и где именно это делается
в данном случае? для каких pin'ов и фильтров?

кто хорошо рубит в dshow tech, подскажите, пожалуйста.
Re: directshow
От: Edge  
Дата: 14.02.04 08:30
Оценка:
Здравствуйте, abs, Вы писали:

У фильтра-источника просишь IAMStreamConfig, а затем делаешь нечто вроде этого:

    HRESULT hr;
    AM_MEDIA_TYPE *pmt;
    //Берем текущий формат
    hr = pStreamCfg->GetFormat(&pmt);
    if (SUCCEEDED(hr))
    {
        //Тут извращаемся над форматом
        ....
        //Устанавливаем новый формат
        hr = pStreamCfg->SetFormat(pmt);
        //Освобождаем формат (чистим pmt)
    }
    return hr;


Ну и в DX SDK смотришь все по IAMStreamConfig
... << RSDN@Home 1.1.2 stable >>
Re[2]: directshow
От: ablestuff Россия http://overdoze.dem.ru
Дата: 14.02.04 11:26
Оценка:
E>У фильтра-источника просишь IAMStreamConfig, а затем делаешь нечто вроде этого:

Спасибо! Щас попробую
Re[2]: directshow
От: ablestuff Россия http://overdoze.dem.ru
Дата: 14.02.04 12:55
Оценка:
E>Ну и в DX SDK смотришь все по IAMStreamConfig

судя по sdk, этот интерфэйс доступен на выходных пинах capture и compression фильтров, а file source фильтр, как и любой
другой в моём графе, таковыми не являются. не пашет, короче. это подойдёт для захвата с вэбкамеры, например, но не
для проигрывателя avi.

или я гоню?
Re[3]: directshow
От: Edge  
Дата: 14.02.04 15:06
Оценка:
Здравствуйте, ablestuff, Вы писали:

A>судя по sdk, этот интерфэйс доступен на выходных пинах capture и compression фильтров, а file source фильтр, как и любой

A>другой в моём графе, таковыми не являются. не пашет, короче. это подойдёт для захвата с вэбкамеры, например, но не
A>для проигрывателя avi.

Ну, может у тебя рендерер может битмапы растягивать, если IAMStreamConfig нету? А так, наверно, собственный трансформ-фильтр придется писать для изменения размеров битмапа...
... << RSDN@Home 1.1.2 stable >>
Re[4]: directshow
От: ablestuff Россия http://overdoze.dem.ru
Дата: 15.02.04 05:20
Оценка:
Здравствуйте, Edge, Вы писали:

E>Ну, может у тебя рендерер может битмапы растягивать, если IAMStreamConfig нету? А так, наверно, собственный трансформ-фильтр придется писать для изменения размеров битмапа...


блин. а есть какие-нибудь ресайзеры стандартные? у меня тут валяется bicubic resizer, но интерфейсов его нету, только
через окно свойств могу размеры менять, а это не прикольно.
Re[5]: directshow
От: Edge  
Дата: 15.02.04 07:34
Оценка:
Здравствуйте, ablestuff, Вы писали:

A>блин. а есть какие-нибудь ресайзеры стандартные? у меня тут валяется bicubic resizer, но интерфейсов его нету, только

A>через окно свойств могу размеры менять, а это не прикольно.

А в Vusual Studio через Tools->OLE/COM object viewer посмотреть никак?
... << RSDN@Home 1.1.2 stable >>
Re[6]: directshow
От: ablestuff Россия http://overdoze.dem.ru
Дата: 15.02.04 10:55
Оценка:
A>>блин. а есть какие-нибудь ресайзеры стандартные? у меня тут валяется bicubic resizer, но интерфейсов его нету, только
A>>через окно свойств могу размеры менять, а это не прикольно.

E>А в Vusual Studio через Tools->OLE/COM object viewer посмотреть никак?


да пробовал уже — не смотрится. в курсе почему?
Re[7]: directshow
От: Edge  
Дата: 15.02.04 12:35
Оценка:
Здравствуйте, ablestuff, Вы писали:

A>да пробовал уже — не смотрится. в курсе почему?


Что значит не смотрится? В списке нет или что? Если этот ресайзер в граф вставляется, то он должен быть в списке.
... << RSDN@Home 1.1.2 stable >>
Re[8]: directshow
От: ablestuff Россия http://overdoze.dem.ru
Дата: 15.02.04 13:39
Оценка:
A>>да пробовал уже — не смотрится. в курсе почему?

E>Что значит не смотрится? В списке нет или что? Если этот ресайзер в граф вставляется, то он должен быть в списке.


ну, typelib не смотрится, а в списке объектов этот ресайзер есть: на него показываются интерфейсы типа IBaseFilter, IMediaFilter и
тот самый ISpecifyPropertyPages. короче, напрямую похоже не изменить свойства фильтра. да?
Re[9]: directshow
От: Edge  
Дата: 15.02.04 13:49
Оценка:
Здравствуйте, ablestuff, Вы писали:

A>ну, typelib не смотрится, а в списке объектов этот ресайзер есть: на него показываются интерфейсы типа IBaseFilter, IMediaFilter и

A>тот самый ISpecifyPropertyPages. короче, напрямую похоже не изменить свойства фильтра. да?

Да, не изменить... Придется тебе другой фильтр искать
... << RSDN@Home 1.1.2 stable >>
Re[10]: directshow
От: ablestuff Россия http://overdoze.dem.ru
Дата: 15.02.04 16:08
Оценка:
Здравствуйте, Edge, Вы писали:

E>Да, не изменить... Придется тебе другой фильтр искать


а где можно найти?
Re[11]: directshow
От: Edge  
Дата: 16.02.04 12:32
Оценка:
Здравствуйте, ablestuff, Вы писали:

A>а где можно найти?


В гугле
... << RSDN@Home 1.1.2 stable >>
Re[12]: directshow
От: ablestuff Россия http://overdoze.dem.ru
Дата: 16.02.04 17:02
Оценка:
A>>а где можно найти?

E>В гугле


нашёл! Moonlight Scalar Filter: ir.ax

к тому же он, похоже, входит в кодек-паки всякие.

короче, всё работает, ресайзится... круто.
Re[13]: directshow
От: Nine  
Дата: 10.08.04 18:22
Оценка:
Здравствуйте, ablestuff, Вы писали:


A>>>а где можно найти?


E>>В гугле


A>нашёл! Moonlight Scalar Filter: ir.ax


A>к тому же он, похоже, входит в кодек-паки всякие.


A>короче, всё работает, ресайзится... круто.


Слушай, приятель, а как его подключить? Имею ввиду, создается ведь он при помощи CoCreateInstance, а какой у него CLSID?

Спасибо.
Re[13]: directshow
От: Danechka  
Дата: 19.09.08 11:24
Оценка:
Здравствуйте, ablestuff, Вы писали:


A>>>а где можно найти?


E>>В гугле


A>нашёл! Moonlight Scalar Filter: ir.ax


A>к тому же он, похоже, входит в кодек-паки всякие.


A>короче, всё работает, ресайзится... круто.



Подскажите пожалуйста, а как получить доступ к его настройкам. Т.е. не через окно настроек, а программно????
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.