Текущее время: 01 май 2025, 19:38 • Часовой пояс: UTC + 3 часа |
API для USB моделей
 |  |
Страница 1 из 1 |
[ Сообщений: 13 ] |
|
Автор | Сообщение |
Ozab
|
|
Зарегистрирован: 29 окт 2009, 16:03 Сообщения: 8
|
Существует ли API для Wander, Voyager?
|
|
|
Admin
|
Добавлено: 30 окт 2009, 10:48. Заголовок сообщения: |
|
|
Beholder |  |
Зарегистрирован: 13 июл 2004, 13:23 Сообщения: 1089
|
Какое API вы имеете ввиду?
Все имеющиеся у нас API абсолютно одинаковы для всех наших тюнеров.
|
|
|
Ozab
|
Добавлено: 30 окт 2009, 11:12. Заголовок сообщения: |
|
|
Зарегистрирован: 29 окт 2009, 16:03 Сообщения: 8
|
Извините, стормозил.
Могу ли я управлять тюнером из своего приложения, не запуская BeholdTV?
|
|
|
ALF
|
Добавлено: 30 окт 2009, 11:43. Заголовок сообщения: |
|
|
Эксперт |  |
Зарегистрирован: 02 апр 2006, 21:37 Сообщения: 1329
|
Ozab писал(а): Могу ли я управлять тюнером из своего приложения, не запуская BeholdTV?
Можете. Вот тот API, который вам нужен: http://msdn.microsoft.com/en-us/library/dd375454(VS.85).aspx
Behold TV M6 Extra Behold TV H8 Behold TV T8
|
|
|
Ozab
|
Добавлено: 30 окт 2009, 14:10. Заголовок сообщения: |
|
|
Зарегистрирован: 29 окт 2009, 16:03 Сообщения: 8
|
Спасибо, а FM радио?
|
|
|
ALF
|
Добавлено: 30 окт 2009, 16:35. Заголовок сообщения: |
|
|
Эксперт |  |
Зарегистрирован: 02 апр 2006, 21:37 Сообщения: 1329
|
То же самое.
Behold TV M6 Extra Behold TV H8 Behold TV T8
|
|
|
Ozab
|
Добавлено: 30 окт 2009, 16:52. Заголовок сообщения: |
|
|
Зарегистрирован: 29 окт 2009, 16:03 Сообщения: 8
|
Большое спасибо, буду рыть.
|
|
|
Ozab
|
Добавлено: 14 июн 2010, 12:29. Заголовок сообщения: |
|
|
Зарегистрирован: 29 окт 2009, 16:03 Сообщения: 8
|
ALF писал(а):
У меня уже легкое головокружение от DirectShow
Можно где-нибудь увидеть пример автоматического поиска FM радиостанции в определенном диапазоне частот, с остановкой при определении несущей?
|
|
|
hd44780
|
Добавлено: 15 июн 2010, 10:55. Заголовок сообщения: |
|
|
Эксперт |  |
Зарегистрирован: 23 мар 2007, 14:32 Сообщения: 4034 Откуда: РФ, ДНР, Донецк
|
Ozab писал(а): У меня уже легкое головокружение от DirectShow  Привыкай  . Так оно организовано. Без Directshow ты далеко не уедешь. Или ищи какие-то библиотеки, облегчающие жизнь. Ozab писал(а): Можно где-нибудь увидеть пример автоматического поиска FM радиостанции в определенном диапазоне частот, с остановкой при определении несущей?
Где-то валялось... Какой-то добрый человек поделился. На моем стареньком Aver 203 работало. Правда я искал TV каналы. с FM не игрался.
На более новых тюнерах не пробовал - закинул это дело.
Если надо, пороюсь в своих архивах.
Behold TV 609FM, Behold TV X7 Intel Core i7-4770K, ASUS Z87-K, RAM 32 GB, NVidia GT630 2GB. Win7, на 10 худо-бедно пахал только X7 влагодаря аппаратному кодировщику.
|
|
|
Ozab
|
Добавлено: 15 июн 2010, 16:10. Заголовок сообщения: |
|
|
Зарегистрирован: 29 окт 2009, 16:03 Сообщения: 8
|
С телевизором всё просто - там если развертка есть, то и канал есть. А с FM что-то не въеду никак насчет автопоиска. Мож суппорт что подскажет?
Может-как-нибудь через dll или ioctl можно?
|
|
|
Ozab
|
Добавлено: 23 июн 2010, 16:23. Заголовок сообщения: |
|
|
Зарегистрирован: 29 окт 2009, 16:03 Сообщения: 8
|
И всё-таки, что не так?
pTVTuner->QueryInterface(IID_IKsPropertySet, (void**)&pKs);
pKs->Get(PROPSETID_TUNER, KSPROPERTY_TUNER_FREQUENCY,
INSTANCEDATA_OF_PROPERTY_PTR(&Frequency),
INSTANCEDATA_OF_PROPERTY_SIZE(Frequency),
&Frequency, sizeof(Frequency), &Returned);
Frequency.Frequency= сколько надо;
pKs->Set(PROPSETID_TUNER, KSPROPERTY_TUNER_FREQUENCY,
INSTANCEDATA_OF_PROPERTY_PTR(&Frequency),
INSTANCEDATA_OF_PROPERTY_SIZE(Frequency),
&Frequency, sizeof(Frequency));
Частота устанавливается, музыку слышно.
pKs->Get(PROPSETID_TUNER,KSPROPERTY_TUNER_MODE_CAPS,
INSTANCEDATA_OF_PROPERTY_PTR(&ModeCaps),
INSTANCEDATA_OF_PROPERTY_SIZE(ModeCaps),
&ModeCaps, sizeof(ModeCaps), &cbBytes);
Возвращает KS_TUNER_STRATEGY_PLL
pKs->Get(PROPSETID_TUNER,KSPROPERTY_TUNER_STATUS,
INSTANCEDATA_OF_PROPERTY_PTR(&Status),
INSTANCEDATA_OF_PROPERTY_SIZE(Status),
&Status, sizeof(Status), &cbBytes);
Status.CurrentFrequency возвращает правильную частоту, но
Status.PLLOffset возвращает 0 ВСЕГДА
Status.SignalStrength возвращает 0 ВСЕГДА
Status.Busy возвращает 0 ВСЕГДА
pTVTuner->SignalPresent(&ss) возвращает 0 ВСЕГДА
Как всё-таки определить наличие сигнала FM ???
|
|
|
Support
|
Добавлено: 24 июн 2010, 12:21. Заголовок сообщения: |
|
|
Beholder |  |
Зарегистрирован: 19 авг 2004, 11:45 Сообщения: 616
|
Для USB тюнеров настройка FM выглядит так:
Код: //////////////////////////////////////////////////////////////////////////////
// {E73F292A-5AF3-47c7-BB55-2C474B992296} static const GUID KSPROPSETID_ANALOG_TUNER_API = { 0xe73f292a, 0x5af3, 0x47c7, { 0xbb, 0x55, 0x2c, 0x47, 0x4b, 0x99, 0x22, 0x96 } };
//////////////////////////////////////////////////////////////////////////////
typedef enum { // .........
KSPROPERTY_ID_TUNER_SCAN_MODE = 6,
// .........
} KSPROPERTY_ADVANCED_TUNER_ID;
//////////////////////////////////////////////////////////////////////////////
m_pVidCapture->QueryInterface( IID_IKsPropertySet, (void**) &m_pKsPropertySet );
// m_pVidCapture - pointer to IBaseFilter interface of analog video capture device
//////////////////////////////////////////////////////////////////////////////
HRESULT put_AnlgTunerAdvanced( LONG lId, LONG lValue ) { if ( !m_pKsPropertySet ) { return E_POINTER; }
HRESULT hr = m_pKsPropertySet->Set( KSPROPSETID_ANALOG_TUNER_API, (DWORD)lId, NULL, 0, &lValue, sizeof( lValue ) ); return hr; }
//////////////////////////////////////////////////////////////////////////////
// Call before scan put_AnlgTunerAdvanced(KSPROPERTY_ID_TUNER_SCAN_MODE, 1);
// Scan via DirectShow // ........
// Call after scan put_AnlgTunerAdvanced(KSPROPERTY_ID_TUNER_SCAN_MODE, 0);
При включенном режиме сканирования на частоте радиостанции тюнер вернёт:
Status.SignalStrength: 100
|
|
|
Ozab
|
Добавлено: 24 июн 2010, 16:04. Заголовок сообщения: |
|
|
Зарегистрирован: 29 окт 2009, 16:03 Сообщения: 8
|
БОЛЬШОЕ спасибо за раскрытие фирменного секрета, всё работает отлично!
pBaseFilter->QueryInterface(IID_IKsPropertySet, (void**) &pKsBase);
val=1;
pKsBase->Set(KSPROPSETID_ANALOG_TUNER_API,
KSPROPERTY_ID_TUNER_SCAN_MODE, NULL, 0, &val, sizeof(val));
Звук пропал.
pTVTuner->QueryInterface(IID_IKsPropertySet, (void**)&pKsTuner);
Выставляю частоту 3-мя разными методами.
Первый:
memset(&Frequency,0,sizeof(KSPROPERTY_TUNER_FREQUENCY_S));
Frequency.Frequency=Freq;
Frequency.TuningFlags=KS_TUNER_TUNING_EXACT;
pKsTuner->Set(PROPSETID_TUNER, KSPROPERTY_TUNER_FREQUENCY,
INSTANCEDATA_OF_PROPERTY_PTR(&Frequency),
INSTANCEDATA_OF_PROPERTY_SIZE(Frequency),
&Frequency, sizeof(Frequency));
Второй:
pTVTuner->AutoTune(Freq, &FoundSignal);
Третий:
pTVTuner->put_Channel(Freq, AMTUNER_SUBCHAN_DEFAULT,AMTUNER_SUBCHAN_DEFAULT);
pKsTuner->Get(PROPSETID_TUNER,KSPROPERTY_TUNER_STATUS,
INSTANCEDATA_OF_PROPERTY_PTR(&Status),
INSTANCEDATA_OF_PROPERTY_SIZE(Status),
&Status, sizeof(Status), &cbBytes);
Status.SignalStrength возвращает 100 на частоте станции (и за 50 кгц до неё)
val=0;
pKsBase->Set(KSPROPSETID_ANALOG_TUNER_API, KSPROPERTY_ID_TUNER_SCAN_MODE, NULL, 0, &val, sizeof(val));
Звук появился
pKsBase->Release();
pKsTuner->Release();
(сообщение было отредактировано)
|
|
|
 |  |
Страница 1 из 1 |
[ Сообщений: 13 ] |
|
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
|
|