Текущее время: 28 мар 2024, 11:41 • Часовой пояс: UTC + 3 часа
Сообщения без ответов | Активные темы

API для USB моделей

Начать новую темуОтветить на тему Страница 1 из 1 [ Сообщений: 13 ]
Версия для печати Пред. тема | След. тема
АвторСообщение
Сообщение Добавлено: 29 окт 2009, 16:06. Заголовок сообщения:  API для USB моделей
Зарегистрирован:
    29 окт 2009, 16:03
Сообщения: 8
Существует ли API для Wander, Voyager?
Профиль 
Сообщение Добавлено: 30 окт 2009, 10:48. Заголовок сообщения: 
Beholder
Аватара пользователя
Зарегистрирован:
    13 июл 2004, 13:23
Сообщения: 1089
Какое API вы имеете ввиду?
Все имеющиеся у нас API абсолютно одинаковы для всех наших тюнеров.
Профиль 
Сообщение Добавлено: 30 окт 2009, 11:12. Заголовок сообщения: 
Зарегистрирован:
    29 окт 2009, 16:03
Сообщения: 8
Извините, стормозил.
Могу ли я управлять тюнером из своего приложения, не запуская BeholdTV?
Профиль 
Сообщение Добавлено: 30 окт 2009, 11:43. Заголовок сообщения: 
Эксперт
Аватара пользователя
Зарегистрирован:
    02 апр 2006, 21:37
Сообщения: 1329
писал(а):
Могу ли я управлять тюнером из своего приложения, не запуская BeholdTV?

Можете. Вот тот API, который вам нужен: http://msdn.microsoft.com/en-us/library/dd375454(VS.85).aspx
Behold TV M6 Extra
Behold TV H8
Behold TV T8
Профиль 
Сообщение Добавлено: 30 окт 2009, 14:10. Заголовок сообщения: 
Зарегистрирован:
    29 окт 2009, 16:03
Сообщения: 8
Спасибо, а FM радио?
Профиль 
Сообщение Добавлено: 30 окт 2009, 16:35. Заголовок сообщения: 
Эксперт
Аватара пользователя
Зарегистрирован:
    02 апр 2006, 21:37
Сообщения: 1329
То же самое.
Behold TV M6 Extra
Behold TV H8
Behold TV T8
Профиль 
Сообщение Добавлено: 30 окт 2009, 16:52. Заголовок сообщения: 
Зарегистрирован:
    29 окт 2009, 16:03
Сообщения: 8
Большое спасибо, буду рыть.
Профиль 
Сообщение Добавлено: 14 июн 2010, 12:29. Заголовок сообщения: 
Зарегистрирован:
    29 окт 2009, 16:03
Сообщения: 8
писал(а):
Вот тот API, который вам нужен: http://msdn.microsoft.com/en-us/library/dd375454(VS.85).aspx

У меня уже легкое головокружение от DirectShow :D
Можно где-нибудь увидеть пример автоматического поиска FM радиостанции в определенном диапазоне частот, с остановкой при определении несущей?
Профиль 
Сообщение Добавлено: 15 июн 2010, 10:55. Заголовок сообщения: 
Эксперт
Аватара пользователя
Зарегистрирован:
    23 мар 2007, 14:32
Сообщения: 4034
Откуда: РФ, ДНР, Донецк
писал(а):
У меня уже легкое головокружение от DirectShow :D

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

писал(а):
Можно где-нибудь увидеть пример автоматического поиска 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 влагодаря аппаратному кодировщику.
Профиль 
Сообщение Добавлено: 15 июн 2010, 16:10. Заголовок сообщения: 
Зарегистрирован:
    29 окт 2009, 16:03
Сообщения: 8
С телевизором всё просто - там если развертка есть, то и канал есть. А с FM что-то не въеду никак насчет автопоиска. Мож суппорт что подскажет? :wink:
Может-как-нибудь через dll или ioctl можно?
Профиль 
Сообщение Добавлено: 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 ???
Профиль 
Сообщение Добавлено: 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
Профиль 
Сообщение Добавлено: 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 ]  
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
Найти:  
Перейти: