Форум Beholder
http://beholder.ru/bb/

API для USB моделей
http://beholder.ru/bb/viewtopic.php?f=10&t=8556
Страница 1 из 1

Автор:  Ozab [ 29 окт 2009, 16:06 ]
Заголовок сообщения:  API для USB моделей

Существует ли API для Wander, Voyager?

Автор:  Admin [ 30 окт 2009, 10:48 ]
Заголовок сообщения: 

Какое API вы имеете ввиду?
Все имеющиеся у нас API абсолютно одинаковы для всех наших тюнеров.

Автор:  Ozab [ 30 окт 2009, 11:12 ]
Заголовок сообщения: 

Извините, стормозил.
Могу ли я управлять тюнером из своего приложения, не запуская BeholdTV?

Автор:  ALF [ 30 окт 2009, 11:43 ]
Заголовок сообщения: 

писал(а):
Могу ли я управлять тюнером из своего приложения, не запуская BeholdTV?

Можете. Вот тот API, который вам нужен: http://msdn.microsoft.com/en-us/library/dd375454(VS.85).aspx

Автор:  Ozab [ 30 окт 2009, 14:10 ]
Заголовок сообщения: 

Спасибо, а FM радио?

Автор:  ALF [ 30 окт 2009, 16:35 ]
Заголовок сообщения: 

То же самое.

Автор:  Ozab [ 30 окт 2009, 16:52 ]
Заголовок сообщения: 

Большое спасибо, буду рыть.

Автор:  Ozab [ 14 июн 2010, 12:29 ]
Заголовок сообщения: 

писал(а):
Вот тот API, который вам нужен: http://msdn.microsoft.com/en-us/library/dd375454(VS.85).aspx

У меня уже легкое головокружение от DirectShow :D
Можно где-нибудь увидеть пример автоматического поиска FM радиостанции в определенном диапазоне частот, с остановкой при определении несущей?

Автор:  hd44780 [ 15 июн 2010, 10:55 ]
Заголовок сообщения: 

писал(а):
У меня уже легкое головокружение от DirectShow :D

Привыкай :). Так оно организовано. Без Directshow ты далеко не уедешь. Или ищи какие-то библиотеки, облегчающие жизнь.

писал(а):
Можно где-нибудь увидеть пример автоматического поиска FM радиостанции в определенном диапазоне частот, с остановкой при определении несущей?

Где-то валялось... Какой-то добрый человек поделился. На моем стареньком Aver 203 работало. Правда я искал TV каналы. с FM не игрался.
На более новых тюнерах не пробовал - закинул это дело.
Если надо, пороюсь в своих архивах.

Автор:  Ozab [ 15 июн 2010, 16:10 ]
Заголовок сообщения: 

С телевизором всё просто - там если развертка есть, то и канал есть. А с FM что-то не въеду никак насчет автопоиска. Мож суппорт что подскажет? :wink:
Может-как-нибудь через dll или ioctl можно?

Автор:  Ozab [ 23 июн 2010, 16:23 ]
Заголовок сообщения: 

И всё-таки, что не так?

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 ]
Заголовок сообщения: 

Для 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 ]
Заголовок сообщения: 

БОЛЬШОЕ спасибо за раскрытие фирменного секрета, всё работает отлично!

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 Часовой пояс: UTC + 3 часа