bt8x8 WDM drivers 3.1.28 tweaked by IvUs

# FAQ

Q1: Что такое WDM-драйвера и зачем они нужны?

Q2: Откуда вообще взялись эти драйвера?

Q3: У меня карта на чипе bt878, подойдут ли к ней драйвера, ведь там написано “bt848”?

Q4: Моего тюнера нет в compatibility list. Будут ли работать драйвера с моим тюнером?

Q5: Моя карта занесена в compatibility list, но я никак не могу получить звук.

Q6: Сделайте пожалуйста поддержку для моего тюнера модели «ХХХ»!

Q7: Я поставил ваши драйвера для своего ТВ-тюнера и они работают прекрасно. Я проверял работу драйверов с помощью программ BorgTV и JTV. Занесите, пожалуйста, мой тюнер в compatibility list.

Q8: Почему я не могу захватывать в VirtualDub кадр высотой более 288 (240) строк?

### Q1: Что такое WDM-драйвера и зачем они нужны?

A: Первая технология для обработки видео под Windows была представлена компанией Microsoft в ноябре 1992 года для Windows 3.1 и носила незатейливое название “Video for Windows” (VFW). С того времени аппаратные средства PC стремительно эволюционировали, вышли новые версии Windows. Технология VFW, имеющая ряд архитектурных ограничений, не могла предоставить приемлемых решений для организации видеоконференций, поддержки TV-тюнеров, работы с полями кадра, декодированием телетекстовых сообщений. Производителям видеооборудования для PC приходилось каждый раз «изобретать велосипед», что бы программное обеспечение могло в полной мере использовать особенности таких устройств как web-камера, TV-тюнер или плата видеозахвата.

Для преодоления этих трудностей Microsoft разработала новую мультимедийную технологию DirectShow, которая очень тесно связана с использованием драйверов нового типа – WDM (Windows drivers model). Помимо универсальности (WDM-драйвера могут работать как в Win98, так и Win2000), WDM-драйвера обладают рядом ценных особенностей, значительно расширяющими возможности по управлению видеоустройствами. В результате, приложения ориентированные на архитектуру WDM-драйверов и технологию DirectShow могут с легкостью работать с любыми устройствами, будь то веб-камера или TV-тюнер, ничего не зная об аппаратных особенностях этих устройств.

Несколько слов о Windows 2000. Для этой операционной системы и для следующей ее версии – Windows XP, использование WDM-драйверов является необходимостью, поскольку старые VFW-драйвера разработанные для семейства Win9x не работают под Windows 2000. В то же время использование Windows 2000 и WDM-драйверов имеет значительные преимущества при захвате и обработке видео: Во-первых, размер .avi-файла может быть совершенно любым, в то время как .avi-файл под Win9x не может быть размером более 4GB. Во-вторых под Win2000 более продвинутые управление памятью, кэширование диска и многозадачность позволяют избежать выпадений кадров на протяжении всего сеанса видеозаписи.

В начало

### Q2: Откуда вообще взялись эти ваши драйвера?

A: В 2000 году фирма-производитель чипов bt8x8 Conexant допустила утечку со своего FTP исходных текстов референсных драйверов 3.1.28. В последствии доступ к FTP закрыли, но к тому времени исходники 3.1.28 расползлись по всему интернету и сегодня их может найти любой, кто пожелает. Я ждал некоторое время, что кто-нибудь доведет их до совершенства, поскольку референсные WDM-драйвера 3.1.28 мало пригодны для практической работы (они имеют ряд багов и ограничений), но героев не нашлось, и пришлось делать все самому. История улучшений отражена в файле history.txt. На момент написания этого FAQ фирма Conexant и очень многие производители TV-тюнеров использующие референсные WDM-драйвера так и не удосужились исправить «детские болезни» свойственные билду 3.1.28. Вместо этого, производители TV-тюнеров переключают звуковой тракт и осуществляют настройку на каналы с помощью всякого рода нестандартных .dll, пользоваться которыми может только «родной» софт.

В начало

### Q3: У меня карта на чипе bt878, подойдут ли к ней драйвера, ведь там написано “bt848”?

A: Подойдут, поскольку драйвера рассчитаны как на чипы bt848 так и на bt878, тем более, что они очень похожи. Если ваш тюнер присутствует в compatibility list, то волноваться вообще не о чем, иначе стоит почитать Q4.

В начало

### Q4: Моего тюнера нет в compatibility list. Будут ли работать драйвера с моим тюнером?

A: Скорее да, чем нет, но есть некоторые проблемы. Первая из них – по умолчанию обычно ставится устройство “bt848 tweaked WDM Video Capture”, которое изначально настроено на чип bt878. Если у вас карта на более старом чипе bt848, то возможно вы получите вместо картинки размазанные наклонные полосы. Лечится это изменением значения параметра InitPLL с “1” на “0”. Это можно сделать либо в системном реестре (просто поищите все InitPLL в реестре) либо, непосредственно перед инсталляцией драйверов, в файле Bt848.inf.

Вторая проблема, это радиочастотный модуль тюнера - «жестянка» на плате, которая отвечает за настройку тюнера на канал. Помимо того, что радиочастотные модули могут быть от нескольких производителей – Philips, Temic, Alps, они еще могут откликаться по разным адресам шины I2C. К счастью, возможных вариантов адресов обычно бывает два – либо 0xC0, либо 0xC2. Эти значения так же могут быть откорректированы в реестре либо в файле bttuner.inf – ищите параметр TunerI2Caddress.

Третья проблема самая серьезная. Возникает она из того факта, что сам чип bt848/878 не занимается коммутацией аудио сигнала. За выбор источника аудио (TV/FM/EXT)отвечает обычно маленький отдельно стоящий чип-коммутатор, марку которого каждый производитель TV-тюнера выбирает сам, кроме того, каждый производитель считает своим долгом припаять чип-коммутатор звука к bt8x8 каким-нибудь особенным способом. В итоге оказывается, что даже у одного производителя различные модели TV-тюнеров имеют свое особенное и неповторимое переключение звукового тракта. Это означает, что если вашей карты нет compatibility list то, скорее всего будет очень легко добиться картинки на экране, и гораздо сложнее услышать звуковое сопровождение. См. также Q6

В начало

### Q5: Моя карта занесена в compatibility list, но я никак не могу получить звук.

A: Некоторые карты не имеют уникального SUBSYS_ID – в этом поле у них содержаться нули. В результате при установке драйверов Windows не может точно идентифицировать карту и подсовывает первое совместимое устройство из списка. Обычно это бывает “bt848 tweaked WDM Video Capture”. Как правило, такой вариант не будет работать правильно. Если ваша карта присутствует в compatibility list, а в менеджере устройств в качестве устройства видеозахвата болтается “bt848 tweaked WDM Video Capture”, то необходимо вызвать свойства этого драйвера и выполнить обновление драйвера с правильным названием, используя режим «выбрать из списка вручную».

В начало

### Q6: Сделайте, пожалуйста, поддержку для моего тюнера модели «ХХХ»!

A: Я не произвожу TV-тюнеров, не торгую ими, и даже не коллекционирую их. Я не могу обеспечить поддержку вашей конкретной модели, не имея на руках самой карты или хотя бы информации об аппаратных особенностях вашего TV-тюнера. Многие карты появились в compatibility list только потому, что некоторые продвинутые пользователи карт сами прислали мне обновления для *.inf файлов. Если вы знаете, каким образом переключается звуковой тракт на вашем тюнере, и вашего тюнера нет в compatibility list – пришлите мне эту информацию, я постараюсь сделать поддержку вашей карты. У Борга (http://www.borgtech.org) есть пара очень полезных утилит btTool и btInspector, которые позволяет “подглядывать” за портами bt8x8 в то время, как работает другая программа просмотра TV. Методика такова: Запускаете «родное» приложение от производителя тюнера для просмотра TV, в котором звук переключается правильно, затем запускаете btTool. Поочередно переключая режимы в «родном» приложении TV/FM/VHS/MUTE делаете “снимки” регистров bt8x8 и присылаете их мне. Этот метод определения работает с ~80% моделей карт. Остальные 20% моделей переключают звук настолько хитро, что с помощью btTool ничего узнать не удастся. Кроме информации о переключении звука желательно прислать еще информацию о PCI SUBSYS_ID. Для этого просто экспортируйте из реестра веточку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI в текстовый файл и пришлите ее мне.

В начало

### Q7: Я поставил ваши драйвера для своего ТВ-тюнера и они работают прекрасно. Я проверял работу драйверов с помощью программ BorgTV и JTV. Занесите, пожалуйста, мой тюнер в compatibility list.

A: Увы, я пока не стану торопиться заносить вашу карту в compatibility list. Дело в том, что с помощью программ BorgTV и JTV невозможно протестировать работоспособность WDM-драйверов: BorgTV и JTV используют для доступа к тюнеру свои собственные нестандартные драйвера и не используют никаких функций WDM-драйверов. Если вы хотите протестировать работоспособность WDM-драйверов, то лучше воспользоваться любой программой базирующейся на технологии DirectShow. Это может быть простая AMCAP.EXE от Microsoft или моя утилита iuVCR.

В начало

### Q8: Почему я не могу захватывать в VirtualDub кадр высотой более 288 (240) строк?

A: Как и всякое другое VFW-приложение VirtualDub работает с WDM-драйверами через специальную программную прослойку-wrapper, которая транслирует вызовы VFW в вызовы DirectShow. Помимо некоторого ухудшения производительности, wrapper, в силу особенностей реализации, позволяет захватывать только одно поле, что ограничивает максимальную высоту кадра в 288 строк для PAL/SECAM и 240 строк для NTSC. Я полагаю, что существует теоретическая возможность модификации WDM-драйверов для решения этой проблемы, но к сожалению не располагаю временем и оборудованием для более подробных исследований.

В начало

Замечания, исправления, добавления принимаются здесь

© Иван Усков, 2001