Имя:
Пароль:
-- ИЛИ --
Войти, используя:

Форум   Общая тематика и компьютеры   Программирование

Переключение частоты в драйвере Eduardo Jose

 
Пост #48080 от 10 октября 2007, 17:13 

vm

Задача:
- переключая TV-тюнер (bt848) по частоте (не по каналам, т.к. нужна частота немного отличающаяся от сетки) получить данные об испытательных строках из TV-сигнала и проверить их на соответствие ГОСТу.

Проблема:
- драйвера Ивана Ускокова прекрасно переключаются по частоте но не показывают в конце испытательного сигнала площадку СГИ (которая нужна для соотв. измерений), обрезая ее
- драйвера Eduardo Jose показывают площадку СГИ но упорно не переключаются по частоте, только по каналу. Перепробовал все варианты описанные в этом форуме.

Вопрос:
- что делать? Как получить нормальный конец испытательного сигнала с VBI-пина в драйвере Ускокова или как переключить частоту в драйвере Eduardo Jose?

Программирую на Дельфи. В качестве библиотеки работы с DirectShow использую DSPack 2.3.4.
Отправить личное сообщениеПрофиль пользователяУкраина
Симферополь
Постов: 3
Нарушений: Нет
Пост #48082 от 10 октября 2007, 18:31 

Vlafy

vm : драйвера Ивана Ускокова
Э... Ну если бы вы правильно написали фамилию, может вам бы удалось попросить Ивана подправить свои драйвера, так даже не знаю ;-)

добавлено спустя 14 минут

Должно работать:

#define INSTANCE_DATA_OF_PROPERTY_PTR(x) ( (PKSPROPERTY((x)) ) + 1 )
#define INSTANCE_DATA_OF_PROPERTY_SIZE(x) ( sizeof((x)) - sizeof(KSPROPERTY) )

HRESULT CAceRfManagerDs::SetCurrentFreq(LONG value)
{
HRESULT hr = E_FAIL;
    if(m_pTunerPropertySet)
    {
        KSPROPERTY_TUNER_FREQUENCY_S tf;
        ZeroMemory(&tf,sizeof(tf));
        tf.Property.Set     = (GUID)PROPSETID_TUNER;
        tf.Property.Id      = KSPROPERTY_TUNER_FREQUENCY;
        tf.Property.Flags   = KSPROPERTY_TYPE_SET;
        tf.Country          = m_lCountryCode;
        tf.Frequency        = value;
        hr = m_pTunerPropertySet->Set(  PROPSETID_TUNER,
                                        KSPROPERTY_TUNER_FREQUENCY,
                                        INSTANCE_DATA_OF_PROPERTY_PTR(&tf),
                                        INSTANCE_DATA_OF_PROPERTY_SIZE(tf),
                                        &tf,
                                        sizeof(tf));

        Sleep(m_TunerCaps.SettlingTime);// wait for hardware
    }
    return hr;
}
Отправить личное сообщениеПрофиль пользователяКонфигурация пользователяБлог пользователяWeb-сайт пользователяРоссия
Сосновый Бор
Постов: 6083
Нарушений: Нет
Пост #48101 от 11 октября 2007, 12:38 

vm

Мои извинения Ивану Ускову!!! :wiz Каюсь, очепятался два раза. ;-)

Да, этот код для его драйвера работает прекрасно. Для драйвера Eduardo Jose не хочет. У меня это выглядит так:
  TunerProps: KSPROPERTY_TUNER_FREQUENCY_S;
  ...
  ZeroMemory(@TunerProps, sizeof(TunerProps));
  TunerProps.Property_.Set_ := TGUID(PROPSETID_TUNER);
  TunerProps.Property_.Id := ULONG(KSPROPERTY_TUNER_FREQUENCY);
  TunerProps.Property_.Flags := KSPROPERTY_TYPE_SET;
  TunerProps.Country := 380;
  TunerProps.Frequency := Frequency;

  pPropertySet.Set_(PROPSETID_TUNER, AMPROPERTY_PIN(KSPROPERTY_TUNER_FREQUENCY),
                    PKSPROPERTY(@TunerProps), sizeof(TunerProps)-sizeof(KSPROPERTY),
                    @TunerProps, sizeof(TunerProps));
Пробовал и такой вариант:
  pPropertySet.Set_(PROPSETID_TUNER, AMPROPERTY_PIN(KSPROPERTY_TUNER_MODE),
                    Pointer(LongInt(PKSPROPERTY(@TunerProps))+1), sizeof(TunerProps)-sizeof(KSPROPERTY),
                    @TunerMode, sizeof(TunerMode));

Я наверное буду все таки использовать вариант с драйверами Ивана. Мне площадка СГИ нужна была в основном как точка отсчета, и по амплитуде и по интервалу. Я посмотрел - и в том и в другом варианте амплитуда сигнала одинакова, а привязаться можно и к фронту сигнала перед этой площадкой. И бог с ним, что ее полностью не видно. Зато драйвера Ускова не вешают ядро DirectShow при какой-либо внешней коммутации сигнала на тюнер. Респект ему за столь качественный продукт! :good

Если можно, то еще один вопрос.
Так же, как и испытательные сигналы, мне необходимо получить оцифрованные строки всего кадра. Хочу получить данные, как в программе Line View (Drakon Rider). Я читал на форуме, что для этого необходимо переключить тюнер в другой режим. Как это сделать? По исходникам не понял.
Отправить личное сообщениеПрофиль пользователяУкраина
Симферополь
Постов: 3
Нарушений: Нет
Пост #48103 от 11 октября 2007, 13:03 

Vlafy

vm : Хочу получить данные, как в программе Line View (Drakon Rider). Я читал на форуме, что для этого необходимо переключить тюнер в другой режим. Как это сделать?
Этого я не знаю. Вы лучше у Drakon Rider'а и спросите, тем более, он здесь появляется.

добавлено спустя 1 минута

Кстати, а почему у вас код страны 380? Должен бы быть 7.
Отправить личное сообщениеПрофиль пользователяКонфигурация пользователяБлог пользователяWeb-сайт пользователяРоссия
Сосновый Бор
Постов: 6083
Нарушений: Нет
Пост #48105 от 11 октября 2007, 14:40 

vm

380 - это Украина :-)

Тогда вопрос переадресую господину Drakon Rider'у.
- как переключиться в соответствующий режим?
- для снятия данных используется тот же самый пин VBI у Capture?

добавлено спустя 48 минут

Ага, нашел ветку, где это уже спрашивали: тут

Захват VBI (Vertical Blanking Interval, телетекст) возможны в режимах Line Output Mode (строки 7-23 и 319-335 для PAL) и Frame Output Mode (вся активная видеообласть включая сигналы гашения и горизонтальной синхронизации). Оцифровка с частотой 8*Fsc (35.47 MHz для PAL), 8 бит. В принципе, так можно оцифровать весь сигнал и извлечь из него изображение программно, если хватит скорости процессора (сами разработчики рекомендуют этот метод для достижения "высокого качества". ;-)
надо копать в сторону VBI.

Вопрос остается в силе. Как переключиться в режим Frame Output Mode?
Отправить личное сообщениеПрофиль пользователяУкраина
Симферополь
Постов: 3
Нарушений: Нет
Пост #67167 от 23 мая 2010, 09:15 

samael26

Vlafy, почему Ваш код не хочет компилиться?
в этой строчке
tf.Property.Id = KSPROPERTY_TUNER_FREQUENCY;

и
hr = m_pTunerPropertySet->Set( PROPSETID_TUNER,
KSPROPERTY_TUNER_FREQUENCY,
INSTANCE_DATA_OF_PROPERTY_PTR(&tf),
INSTANCE_DATA_OF_PROPERTY_SIZE(tf),
&tf,
sizeof(tf));
пишет "Incompatible typse: 'Cardinal' and 'KSPROPERTY_TUNER'"
в чем может быть проблема?!
может есть готовые примеры программ, где это используется с исходниками? если есть, киньте линк... буду благодарен!
Отправить личное сообщениеПрофиль пользователяРоссия
Рубцовск
Постов: 10
Нарушений: Нет
Если Вы зарегистрированы, то для отправки сообщений, пожалуйста, авторизуйтесь.
-- ИЛИ --
Войдите, используя: Facebook Twitter Yandex Вконтакте Mail.ru ...
Страница создана за 0.046 секунды
Copyright © 1999-2012 PcTuner.Ru · Design by Alex Dovby