VBI View v0.08

Drakon Rider
  • 28 апреля 2005
  • 37k

Программа, реализованная по типу цифрового осциллографа. Позволяет контролировать качество работы ТВ-тюнера по испытательным строкам выделенным из области кадрового гасящего импульса. Испытательные строки передаются на многих ТВ каналах. Такой контроль положено делать на телевидении, только там это обычно на осциллографе аналоговом просматривается.

Автор программы предлагает всем самодельщикам софта для ТВ-тюнеров встроить данную программу в свою. Таким образом, можно будет иметь дополнительную функцию анализа текущего ТВ-тюнера, а так же оценивать качество приема и настройки на канал. Исходники общедоступны, ссылки ниже... Пока же программа предлагается в виде небольшой утилиты.

Программа была разработана и протестирована с платами на основе чипов bt8x8, но в принципе т.к. работает через DirectX 8 API, должна работать и с другими платами имеющими драйвера для DirectShow (WDM) и поддерживающими выдачу VBI информации. А теперь уже и официально вышла версия для карт на базе Philips SAA713x. Я проверял программку с WDM драйвером от Eduardo Jose Tagle - программа работала замечательно. Для наглядности лучше иметь разрешение экрана не менее 1024x768.

Порядок работы с программой следующий:

  • Необходимо настроить ТВ тюнер на требуемые для анализа ТВ каналы, при помощи какой-нибудь программы работающей через WDM-драйвер, я использовал FlyDS. Для более устойчивой работы рекомендую в программе просмотра отключить обработку изображения какими-либо фильтрами.
  • Запускаем эту программу, при этом произойдет сбой настройки ТВ-тюнера на канал вещания и ее надо восстановить, просто переходим в FlyDS на следующий канал и обратно.
  • Выбираем в FlyDS канал ТВ, который хотим исследовать.
  • Теперь тыкаем мышевым указателем в левом верхнем углу окна программы и выбираем пункт "Техт Interface...".
  • Здесь нужно вводить целые числа от 7 до 23, эти цифры будут соответствовать номерам строк. Вводя цифры, нажимаем OK и смотрим на получаемое в окне изображение. Для удобства можете использовать "кнопки прокрутки" (+ и - или < и > ), нажатие OK при этом не требуется.

В строках 7...12 обычно везде на SECAM каналах должны быть пакеты вспышек цветовых поднесущих для цветовой синхронизации по полям. Реально таких строк должно быть 9 (т.е. 7...16), но сейчас их количество уже кое-где сокращают, чтобы инфу гонять побольше.

Такого вида рисунок удалось получить на большинстве каналов в этом диапазоне строк:

VBI View

Следующие строки содержат дополнительную цифровую информацию типа телетекста или ТВ интернета как в Санкт-Петербурге. Имено под эту информацию, если это необходимо освобождают предыдущие строки. К сожалению, у меня в Челябинске сейчас даже телетекст не передают, ни на одном канале, поэтому в этом диапазоне строк не удалось получить ничего интересного...

Строки 17 и 18 самые интересные, они должны быть заполнены испытательными сигналами, по которым можно много чего оценить. Но к сожалению это не всегда так. У меня из 13 доступных в эфире каналов испытательные сигналы в этих строках обнаружились лишь на двух каналах.

Испытательный сигнал из 17 строки:

VBI View

Если у вас программа на любых строках и на любых каналах ничего не показывает - значит, установленный у вас в системе драйвер для ТВ тюнера не поддерживает необходимую VBI функцию. Возможно также, что если драйвер не подходит по каким-либо причинам или VBI пин устройства видеозахвата уже занят другим приложением (например в программе для настройки тюнера включен телетекст, VBI capture/захват, Closet Captions/скрытые субтитры и т.д., запущен клиент InterTVNet), то программа VBI View аварийно завершится с ошибкой "Can not render VBI pin".

Испытательный сигнал из 18 строки:

VBI View

В любом случае, если даже у вас на ТВ каналах не предают телетекст или другую закодированную информацию, на строках 7..12..15 должны быть сигналы цветовой синхронизации по полям на SECAM каналах, хотя и не на всех т.к. от этого уже обещали отказаться и юзать построчную синхронизацию. На остальных строках если нету сигналов испытательных строк, то будет ровный уровень черного (гашения), причем ровный на величину текущего отношения сигнал/шум (или сигнал/помеха). Так что понятия "нет VBI вообще" для аналогового ТВ как бы нету - КГИ всеравно передается и это или около 17 пустых строк (для PAL или SECAM, на каждое поле) задней площадки КГИ уровня черного со строчными синхроимпульсами (не показываемыми почти в данных настройках VBI данных), или те же строки заполненные какой-нить информацией см. выше... но что-то всеравно должно быть.

Для переключения между выводимыми полями - правый мышеклик внутри основного окна - переключение "полей" т.е. отрисовки "четных" или "нечетных" блоков VBI отсчетов, что позволяет например раздельно наблюдать или строки Рис.1а или Рис.2а и т.д. (см.описание испытательных строк, ссылка ниже).

Также в программе имеется функция измерения отношения сигнал-шум : для этого добавлены две контрольные линии уровней белого и черного и рассчет среднего арифметического между 50 и 1950 отсчетами каждой строки (полезно при определении среднего уровня черного например на зашумленной пустой строке) и расчет отношения сигнал-шум (для ее работы надо выставить уровень белого по вершине импульса B2 ...

Выставляем уровень белого (белая полоса) по вершине импульса B2:

VBI View

... и переключившись на пустую строку, только с уровнем черного (19..22 строки), подстроить уровень черного как рассчитано по среднему и произвести отсчет из поля SNR uw (невзвешенный).

Подстраиваем уровень черного (черная полоса) как рассчитано по среднему уровню:

VBI View

Принцип работы программы и что она показывает

Программа производит построение картинки аналогично обычному осциллографу. Чип BT-878 может выдавать VBI информацию в RAW виде - т.е. после оцифровки строк 7..23 (вроде по дефолту WDM дров получается, хотя можно настроить сам чип хоть весь кадр (поле) так выдать) с частотой 8*Fsc (Fsc - это частота цветовой поднесущей для PAL 4.43 МГц, а для SECAM возможно берется нечто среднее между двумя немодулированными цветовыми поднесущими 4.25 МГц и 4.406 МГц, итого 8*Fsc для PAL и SECAM это 35.46895 МГц), получается около 2000 отсчетов в строке. Опять же с имеющимися настройками стандартных дров оцифровывается не вся строка, а где-то от начала активной части строки до начала строчного синхроимпульса, т.е. иногда чуть захватывается передняя площадка СГИ (строчного гасящего импульса) - она около 2 мкс. Все это поцифровывется на 256 уровней по амплитуде - 8 бит как и остальное... Соответственно очень повезло, что совершенно левый "фильтр" наследованный от CBaseRender и насильно прирендеренный фильтерграфом к PIN_CATEGORY_VBI у устройства видеозахвата, получает в качестве IMediaSample блок информации длинной в 8CA0H байт, представляющий ту самую цифровую последовательность оцифрованных (частей) строк КГИ. А потом софтина поточечно пересчитывает полученную информацию в рисунок, по аналогии с осциллографом - каждый отсчет из 256 уровней откладывается на соответствующий горизонтальный "ряд" пикселей на рисунке, и соответственно около 2000 "колонок". По традиции программа выводит рисунок зелеными точками, как на осциллографе.

Построение картинки точками - это исходный режим отображения, выбираемый при запуске программой по умолчанию, поэтому если у вас есть желание, то по левому мышеклику в основном окне программы можно переключаться между поточечным и линейчатым отображением (которое выглядит несколько ближе к осциллограмме, но является программым достраиванием прямых линий, соединяющих точки-отсчеты, поэтому такое отображение является несколько нечестным т.к. неизвестно поведение сигнала между отсчетами, хотя и намного более наглядным).

В электроннолучевом осциллографе такое построение делается отклонением электронного пучка по вертикали исследуемым сигналом и равномерным сдвигом слева направо системой развертки (ось времени).

... Итого, и в программе и на осциллографе, по вертикали мы видим - значение амплитуды исследуемого сигнала, а по горизонтали - время.


Обновления

  • Версия 0.08 (28.04.2005) [list]
  • Добавлены переключаемые фильтры 0..2 МГц ФНЧ и 3+ МГц ФВЧ.
  • Однократно: I - переключение режима интерполяции.
  • Версия 0.07 (28.04.2005)
    • Добавлен трафарет К-фактора от 1 до 10%, вершина привязана к линии уровня белого, середина основания к линии уровня черного... центр - к метке времени.
    • Добавлены тык_и_драг контролы (при активном графическом окне нажать и удерживать контрол-клавишу клавиатуры англ раскладки и тянуть мышевой указатель):
      W - уровень белого;
      B - уровень черного;
      T - метка времени;
      X - сдвиг по горизонтали;
      S - масштаб по горизонтали;
      однократно: R - ресет параметров масштаба и сдвига
    • Масштабирование и сдвиг по горизонтали...
  • Версия 0.05 (04.01.2004)
    • Добавлено детектирование четного/нечетного полей, и теперь стабильность просмотра строк независит от нагрузки системы, также теперь точно определяется номер строки 7..21 или 320..334, правый мышеклик все также переключает между "соседними" строками разных полей - например между 17 и 330, содержащими разные испытательные сигналы...
    • Преобразовано до одного комплекта исходников для сборки программы для разных ИС видеозахвата.
      - Для BT8x8 определить ICT_BT8X8 в Textures.h
      - Для SAA713X определить ICT_SAA713X в Textures.h
    • Наконец-то пофикшен баг с ошибкой при завершении программы.
    • Величина SNR усредняется по 30 кадрам.
    • Добавлена поддержка команды Enter/Return для полей ввода числовых знчений, убрана графическая кнопка ОК.
    • Добавлен вызов свойств Video Capture Filter/Device перед запуском фильтерграфа для установки формата видео, у меня на работе на MediaForte PV951 пока не поставишь PAL_B с текущими дровами программа не запускается с ошибкой и завалом... а по умолчанию там вообще NTSC_M стоит...
    • Удалена возможность просмотра 22 и 335 строк, т.к. с картой FlyVideo3000 это приводит к ошибке, возможно драйвер не поставляет необходимую информцию из этих строк... при необходимости - можно поправить сорсы на свой страх, на MediaForte PV951 ошибки не возникает...
    • По умолчанию включена Sinc/Lanczos интерполяция входных отсчетов в 8 раз (до примерно 16000 и 11520 отсчетов на строку для BT8x8 и SAA713X соотв), если это вызывает черезмерную нагрузку ЦПУ или видеокарты, или необходимо просмотреть только входные отсчеты с АЦП - можно как обычно отключить из окна Text Interface.
  • Версия 0.04 (15.12.2003)
    • Добавлена функция Sinc/Lanczos 8-ми кратной интерполяции полученных отсчетов видеосигнала и расчета SNR только в выбранном интервале отсчетов, таким образом теперь можно производить оценку SNR даже на тех ТВ каналах, где почти все строки задней площадки КГИ заняты передачей дополнительной информации, но все еще остаются испытательные сигналы строки 17...
  • [/list]

    Дополнительная информация


    Файлы для загрузки, ссылки:

    Комментарии