Re[3]: Видеозахват+источник видео
От: Bluesman  
Дата: 28.05.04 08:30
Оценка: 1 (1)
Здравствуйте, LMars, Вы писали:

LM>Здравствуйте, .Mistery, Вы писали:


M>>Ты знаешь всетаки придется тебе посмотреть DirectShow. Вероятнее всего, что тот софт использует фильтры DirectShow для работы, DirectShow предоставляет очень большой и гибкий механизм для работы с медиа потоками, и в частности с захватом видео. А если софт использует фильтры, то все равно придется использовть DirectShow, что бы их настроить.


LM> А у меня тут случились проблемы, как раз с настройкой.

LM> Я с помощью IGraphBuilder строю граф, перебираю устройства (CLSID_VideoInputDeviceCategory), добавляю фильтр SampleGrabber, нахожу IVideoWindow, запускаю — все показывает, картинка захватывается. Но как теперь настроить с какого входа карты захвата брать сигнал? Вроде есть IAMCrossbar, но откуда его получить?



Вот так проверяешь есть ли Crossbar.

    IAMCrossbar *pX = NULL;
    IBaseFilter *pXF = NULL;

    hr = pBuilder->FindInterface(&PIN_CATEGORY_CAPTURE,
                                    &MEDIATYPE_Interleaved, pSourceFilter,
                                    IID_IAMCrossbar, (void **)&pX);
    if(hr != S_OK)
        hr = pBuilder->FindInterface(&PIN_CATEGORY_CAPTURE,
                                    &MEDIATYPE_Video, pSourceFilter,
                                    IID_IAMCrossbar, (void **)&pX);

    if(hr == S_OK)//Crossbar есть
    {
        hr = pX->QueryInterface(IID_IBaseFilter, (void **)&pXF);
        if(hr == S_OK)
        {
               hr = pX->QueryInterface(IID_ISpecifyPropertyPages, (void **)&pSpec);
               if(hr == S_OK)//У него есть вкладка свойств
               {
                   hr = pSpec->GetPages(&cauuid);
                   if(hr == S_OK && cauuid.cElems > 0)
                   {
                
                    
                    
                       CoTaskMemFree(cauuid.pElems);
                   }
                   pSpec->Release();
               }
               else
               {
                        
               }
        }
    }

Вот так вызываешь вкладку свойств Crossbar'а

               IAMCrossbar *pX;

                hr = gcap.pBuilder->FindInterface(&PIN_CATEGORY_CAPTURE,
                    &MEDIATYPE_Interleaved, pSourceFilter,
                    IID_IAMCrossbar, (void **)&pX);
                if(hr != NOERROR)
                    hr = gcap.pBuilder->FindInterface(&PIN_CATEGORY_CAPTURE,
                        &MEDIATYPE_Video, pSourceFilter,
                        IID_IAMCrossbar, (void **)&pX);

                ISpecifyPropertyPages *pSpec;
                CAUUID cauuid;

                hr = pX->QueryInterface(IID_ISpecifyPropertyPages,
                    (void **)&pSpec);
                if(hr == S_OK)
                {
                    hr = pSpec->GetPages(&cauuid);

                    hr = OleCreatePropertyFrame(hAppWnd, 30, 30, NULL, 1,
                        (IUnknown **)&pX, cauuid.cElems,
                        (GUID *)cauuid.pElems, 0, 0, NULL);

                    CoTaskMemFree(cauuid.pElems);
                    pSpec->Release();
                }
                pX->Release();
Re[3]: Видеозахват+источник видео
От: retalik www.airbandits.com/
Дата: 12.05.04 07:38
Оценка: +1
Здравствуйте, sam_daemon, Вы писали:

_>Вот щас подумываю заняться о выше упомянутой библиотеке, господа такой вопрос — нужна документация!!! присоветуйте что нить!!!


А что еще можно посоветовать? Ставишь DirectX 9 SDK и в комплекте получаешь море документации и сэмплов, в том числе и для видеозахвата DirectShow.
Успехов,
Виталий.
Видеозахват+источник видео
От: Аноним  
Дата: 11.05.04 13:58
Оценка:
Здравствуйте!
Для видеозахвата с камеры, подключенной к AverTV-тюнеру использую WM_CAP... сообщения.
Проблема в том, что я не могу переключить режим с TV (антенна) на композитный (камера).
Софт, поставляемый с тюнером, это умеет. Я что-то слышал про DirectShow, но я с ним не знаком.
Можно переключить режим не используя DirectShow?

Помогите, очень надо!!!
Спасибо.
Re: Видеозахват+источник видео
От: .Mistery Беларусь  
Дата: 11.05.04 14:58
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Здравствуйте!

А>Для видеозахвата с камеры, подключенной к AverTV-тюнеру использую WM_CAP... сообщения.
А>Проблема в том, что я не могу переключить режим с TV (антенна) на композитный (камера).
А>Софт, поставляемый с тюнером, это умеет. Я что-то слышал про DirectShow, но я с ним не знаком.
А>Можно переключить режим не используя DirectShow?

А>Помогите, очень надо!!!

А>Спасибо.

Ты знаешь всетаки придется тебе посмотреть DirectShow. Вероятнее всего, что тот софт использует фильтры DirectShow для работы, DirectShow предоставляет очень большой и гибкий механизм для работы с медиа потоками, и в частности с захватом видео. А если софт использует фильтры, то все равно придется использовть DirectShow, что бы их настроить.

Я считаю, что DirectShow это именно то что нужно для решения любых задач связанных с захватом видео и его обработкой. Тот же самый VFW (Wideo For Windows) уже не поддерживается Microsoft'ом и морально устарел уже давно! Так, что если хотите оставаться On-top of programming так сказать то лезьте в DirectShow.

Я сам им занялся буквально несколько месяцев назад и чувствую какую силу предоставляет эта технология. Уже разобрался дорвольно неплохо, ну по крайней мере тот проект который передо мной ставили сделал без проблем, и реализовалось все очень красиво и работает замечательно. Да и не так страшен черт как его молюют. Во всем можно разобраться, главное иметь желание и умение "капать".

Удачи!
... << RSDN@Home 1.1.3 beta 1 >>
Мы — маньяки, должны помогать друг другу!
Re[2]: Видеозахват+источник видео
От: sam_daemon  
Дата: 12.05.04 07:20
Оценка:
Здравствуйте, .Mistery, Вы писали:

M>Здравствуйте, <Аноним>, Вы писали:


M>Ты знаешь всетаки придется тебе посмотреть DirectShow. Вероятнее всего, что тот софт использует фильтры DirectShow для работы, DirectShow предоставляет очень большой и гибкий механизм для работы с медиа потоками, и в частности с захватом видео. А если софт использует фильтры, то все равно придется использовть DirectShow, что бы их настроить.


M>Я считаю, что DirectShow это именно то что нужно для решения любых задач связанных с захватом видео и его обработкой. Тот же самый VFW (Wideo For Windows) уже не поддерживается Microsoft'ом и морально устарел уже давно! Так, что если хотите оставаться On-top of programming так сказать то лезьте в DirectShow.


M>Я сам им занялся буквально несколько месяцев назад и чувствую какую силу предоставляет эта технология. Уже разобрался дорвольно неплохо, ну по крайней мере тот проект который передо мной ставили сделал без проблем, и реализовалось все очень красиво и работает замечательно. Да и не так страшен черт как его молюют. Во всем можно разобраться, главное иметь желание и умение "капать".


M>Удачи!


Привет коллеги.
Я тоже работаю с захватом изображений и дальнейшей их обработкой. Хотел в свое время написать проект на VC, однако столкнулся с проблемой захвата видео и битмапкэпчеринга. Слышал о библиотеке ДиректШоу, однако пошел по пути наименьшего сопротивления — нашел компонент для Borland C++ Builder. и с ним прекрасно работал, до тех пор пока не поставил другой ТВ тюнер.

Вот щас подумываю заняться о выше упомянутой библиотеке, господа такой вопрос — нужна документация!!! присоветуйте что нить!!!
... << RSDN@Home 1.1.3 stable >>
Re[4]: Видеозахват+источник видео
От: sam_daemon  
Дата: 12.05.04 08:47
Оценка:
Здравствуйте, retalik, Вы писали:

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


_>>Вот щас подумываю заняться о выше упомянутой библиотеке, господа такой вопрос — нужна документация!!! присоветуйте что нить!!!


R>А что еще можно посоветовать? Ставишь DirectX 9 SDK и в комплекте получаешь море документации и сэмплов, в том числе и для видеозахвата DirectShow.


ОК, спасибо.
Будут вопросы буду задават
... << RSDN@Home 1.1.3 stable >>
Re: Видеозахват+источник видео
От: Yarrr  
Дата: 12.05.04 14:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте!

А>Для видеозахвата с камеры, подключенной к AverTV-тюнеру использую WM_CAP... сообщения.
А>Проблема в том, что я не могу переключить режим с TV (антенна) на композитный (камера).
А>Софт, поставляемый с тюнером, это умеет. Я что-то слышал про DirectShow, но я с ним не знаком.
А>Можно переключить режим не используя DirectShow?

А>Помогите, очень надо!!!

А>Спасибо.

можно
см. capDlgVideoSource

а заодно посмотри Platform SDK->Graphics And MultimediaServices->Windows Multimedia->
Video For Windows->Video Capture->Using Video Capture->Displaying Dialog Boxes to Set Video Characteristics
да и вообще, все что относится к Video For Windows. Много полезного
Re[2]: Видеозахват+источник видео
От: LMars Россия  
Дата: 28.05.04 02:23
Оценка:
Здравствуйте, .Mistery, Вы писали:

M>Ты знаешь всетаки придется тебе посмотреть DirectShow. Вероятнее всего, что тот софт использует фильтры DirectShow для работы, DirectShow предоставляет очень большой и гибкий механизм для работы с медиа потоками, и в частности с захватом видео. А если софт использует фильтры, то все равно придется использовть DirectShow, что бы их настроить.


А у меня тут случились проблемы, как раз с настройкой.
Я с помощью IGraphBuilder строю граф, перебираю устройства (CLSID_VideoInputDeviceCategory), добавляю фильтр SampleGrabber, нахожу IVideoWindow, запускаю — все показывает, картинка захватывается. Но как теперь настроить с какого входа карты захвата брать сигнал? Вроде есть IAMCrossbar, но откуда его получить?
Re[4]: Видеозахват+источник видео
От: LMars Россия  
Дата: 31.05.04 02:19
Оценка:
Здравствуйте, Bluesman, Вы писали:

B>Вот так проверяешь есть ли Crossbar.


Так вот именно, что так... Crossbar не находится

В доке к DirectX SDK про Crossbar написано:
You cannot directly create this filter with CoCreateInstance. The ICaptureGraphBuilder2 interface automatically adds this filter to the graph as needed.

Так вот — автоматически он не добавляется! Все-таки Crossbar-фильтр надо добавлять руками ???
Я попробовал сделать граф:
Crossbar -> Capture Device -> SampleGrabber

Вроде собрался, но правильно ли делать так? Или надо что-то подкрутить с помощью ICaptureGraphBuilder2?
Re[5]: Видеозахват+источник видео
От: Bluesman  
Дата: 31.05.04 08:50
Оценка:
Здравствуйте, LMars, Вы писали:

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


B>>Вот так проверяешь есть ли Crossbar.


LM> Так вот именно, что так... Crossbar не находится


LM> В доке к DirectX SDK про Crossbar написано:

LM>
LM>You cannot directly create this filter with CoCreateInstance. The ICaptureGraphBuilder2 interface automatically adds this filter to the graph as needed.
LM>

LM> Так вот — автоматически он не добавляется! Все-таки Crossbar-фильтр надо добавлять руками ???
LM> Я попробовал сделать граф:
LM> Crossbar -> Capture Device -> SampleGrabber

LM> Вроде собрался, но правильно ли делать так? Или надо что-то подкрутить с помощью ICaptureGraphBuilder2?


А что у тебя за девайс?
Re[6]: Видеозахват+источник видео
От: LMars Россия  
Дата: 31.05.04 08:55
Оценка:
Здравствуйте, Bluesman, Вы писали:

B>А что у тебя за девайс?


Да какой-то без имени... карта захвата с TV Tuner_ом, на чипсете вроде bt848.

Я тут еще help почитал и понял, что ICaptureGraphBuilder2 добавляет Crossbar после вызова метода RenderSream! Еще не проверял, но похоже это так!?
Re[7]: Видеозахват+источник видео
От: Bluesman  
Дата: 31.05.04 09:25
Оценка:
Здравствуйте, LMars, Вы писали:

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


B>>А что у тебя за девайс?


LM> Да какой-то без имени... карта захвата с TV Tuner_ом, на чипсете вроде bt848.


LM> Я тут еще help почитал и понял, что ICaptureGraphBuilder2 добавляет Crossbar после вызова метода RenderSream! Еще не проверял, но похоже это так!?



Из описания ICaptureGraphBuilder2::RenderStream

Supporting Filters. If a capture device uses a Windows Driver Model (WDM) driver, the graph may require certain filters upstream from the WDM Video Capture Filter, such as a TV Tuner Filter or an Analog Video Crossbar Filter. If this method successfully renders the stream, it also inserts any WDM filters that are required in your graph. The method queries the input pins on the capture filter to determine what mediums they support, and connects them to matching filters.


Т.е у твоего source-filter должен быть входной pin для подключения crossbar'а. Посмотри на source-filter в graphedt и ты увидишь есть ли такой pin.
Re[8]: Видеозахват+источник видео
От: LMars Россия  
Дата: 31.05.04 10:03
Оценка:
B>Т.е у твоего source-filter должен быть входной pin для подключения crossbar'а. Посмотри на source-filter в graphedt и ты увидишь есть ли такой pin.

Да выходит есть. В graphedit_е я составлял нужный граф, т.е. подключал первым crossbar, потом capture device и т.д. И програмно, в ручную, без вызова RenderStream я составлял такой граф. Просто я только сечас понял что "The ICaptureGraphBuilder2 interface automatically adds this filter to the graph as needed" означает — "после вызова его метода RenderStream"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.