| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
Shest Новенький
Зарегистрирован: 16.08.2007 Сообщения: 6
|
Добавлено: Чт Авг 16, 2007 8:55 pm Заголовок сообщения: DirectShow NTSC PAL |
|
|
Здравствуйте, Форумчане.
Есть проблема следующего характера.
По подсказке многоуважаемого WondeRu (изините не знаю как по имени) запрограммировал переключение входов на плате видеозахвата AverMedia (по умолчанию на у нее основной вход TV а нужен композит). И все бы замечательно, но вот толко картинка с композита идет в градациях серого и со срывом синхронизации. Такая же картина наблюдалась в других программах видеозахвата до тех пор пока я не менял стандарт с NTSC на PAL = так вот суть вопроса - каким образом можно переключить в PAL? Или может в чем другом проблемма? Надеюсь на Вашу помощь. С уважением Владимир. |
|
| Вернуться к началу |
|
 |
feka Новенький
Зарегистрирован: 16.08.2007 Сообщения: 2
|
Добавлено: Пт Авг 17, 2007 9:31 am Заголовок сообщения: Re: DirectShow NTSC PAL |
|
|
| Shest писал(а): | | так вот суть вопроса - каким образом можно переключить в PAL? . |
Это делается с помощью интерфейса IAMAnalogVideoDecoder фильтра источника. Примерно так:
| Код: | HRESULT SetTVFormat(LONG format)
{
if(!m_dxCapture)
return E_FAIL;
IAMAnalogVideoDecoder *iDecoder = NULL;
HRESULT hr;
hr = m_dxCapture->QueryInterface(IID_IAMAnalogVideoDecoder,(void**)&iDecoder);
hr = FindInterface(IID_IAMAnalogVideoDecoder,(void**)&iDecoder);
if(hr == S_OK)
{
LONG formats;
iDecoder->get_AvailableTVFormats(&formats);
if(format & formats)
hr = iDecoder->put_TVFormat(format);
else
hr = E_FAIL;
iDecoder->Release();
}
return hr;
} |
m_dxCapture - указатель на фильтр источника
на счет format посмотри AnalogVideoStandard Enumeration в справке к SDK |
|
| Вернуться к началу |
|
 |
Shest Новенький
Зарегистрирован: 16.08.2007 Сообщения: 6
|
Добавлено: Пт Авг 17, 2007 5:08 pm Заголовок сообщения: Re: DirectShow NTSC PAL |
|
|
За ответ спасибо
У меня в Delphi 2006
//FindInterface(IID_IAMAnalogVideoDecoder,(void**)&iDecoder); требует другие параметры для поска интерфейса
//FindInterface(pCategory, pType: PGUID; pf: IBaseFilter; const riid: TGUID; out ppint): HResult; stdcall;
Может быть я не тот интерфейс беру (ICaptureGraphBuilder2)
пробовал по образу и подобию http://forum.wonderu.com/
topic187.html.
Но у меня (fmain.FilterGraph1 as ICaptureGraphBuilder2).FindInterface(@LOOK_UPSTREAM_ONLY,
// nil,
// Filter1 as IBaseFilter,
// IID_IAMAnalogVideoDecoder,
// IDecoder);
Возвращает IDecoder - nil
Может быть кто-нибудь подскажет как то же самое сделать в Delphi.
Спасибо |
|
| Вернуться к началу |
|
 |
Shest Новенький
Зарегистрирован: 16.08.2007 Сообщения: 6
|
Добавлено: Пн Авг 20, 2007 10:39 am Заголовок сообщения: Re: DirectShow NTSC PAL |
|
|
Может кто подскажет неучу как в Delphi получить код интерфейса IAMAnalogVideoDecoder и вызов его PropertyPage - если они у него есть. Со свойствами put_TVFormat я уже разобрался, вот только никак не могу получить этот код
(FilterGraph as ICaptureGraphBuilder2).FindInterface(@LOOK_UPSTREAM_ONLY,
nil,
Filter as IBaseFilter,
IID_IAMAnalogVideoDecoder,
AMAnalogVideoDecoder); -> AMAnalogVideoDecoder = nil ((((((
может я чего то не то делаю. |
|
| Вернуться к началу |
|
 |
Shest Новенький
Зарегистрирован: 16.08.2007 Сообщения: 6
|
Добавлено: Пт Авг 24, 2007 2:31 pm Заголовок сообщения: Re: DirectShow NTSC PAL |
|
|
Всем спасибо, сам разобрался |
|
| Вернуться к началу |
|
 |
|