AltDvb 2.2 + SkyStar 2 + WDM Driver 4.4.0 + Vista 32 SP1 = fix
AltDvb глючит с Windows Vista. В первую очередь, не видит устройства SkyStar2 если установлены WDM драйвера.
Ну что ж, подумал я, неспешно взявшись за дебаггер...
Несколько часов спустя:
1. Немного поковырявшись, пофиксил проблему. Исправленный модуль устройства
для AltDvb брать ЗДЕСЬ: http://rapidshare.com/files/146702568/dev_skystar2.int.html (заменить старый файл Dev_SkyStar2.int в папке Devices). Перезапустив AltDvb, видим милую сердцу картину с появившимся SkyStar2 в списке:
2. Возрадовавшись до плеши, убеждаемся, что все работает. Вроде бы.. На поверку оказалось, что картинка и звук несколько "заедают". Наиболее наглядно сие может проиллюстрировать скриншот: (чтобы полюбоваться на данное окошко, нужно нажать правой кнопкой на видео в AltDvb, далее в меню выбрать DS Filters -> Default DirectSound Device)
То есть, поток данных на пути от драйвера до наших глаз и ушей где-то тормозит, что выражается в обрыве потока звука при воспроизведении. Все мыслимые Шаманства с кодеками, видео рендерерами, настройками дров и тп результата не меняют. Помогла лишь замена файла драйвера SkyStar2 \system32\drivers\skynet.sys файлом драйвера версии 4.4.0 (у меня стояли дрова 4.4.3). Проблема с тормозами после этого пропала, обрывов потока 0 при постоянной заполненности буфера около 40%. Однако имеем другие глюки, вроде БСОДов при попытке отключить/включить SkyStar2 в диспетчере оборудования. Ибо драйвер 4.4.0 был написан еще когда висты в помине не было. С 4.4.1 та же проблема, что и с 4.4.3, то есть прерывания и заедания потока.
3. Ну ладно, с этим всем еще можно было бы жить, если бы не третий (и самый поганый глюк). Очень часто и почти всегда при переключении каналов вылетает следующая гадость:
Данная проблема НЕ ЗАВИСИТ от модуля устройства и драйвера, ибо проявляется и при работе с BDA драйвером и модулями устройств AltDvb BDA и BDA от Diodato. Это именно глюк самого AltDvb при работе под Vista. Судя по http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=3726270&SiteID=17, глюк возможно имеется только в Vista SP1 и отсуствует, если SP1 не установлен. У меня SP1, без SP1 не проверял. Этот глюк очень противный, ибо после него видео уже показывать не будет, а также AltDvb не закрывается, приходится снимать задачу. Типичное поведение дельфового приложения, когда возникает необработанный эксепшен.
УПД Через пару часов:
Побеждено. Инфа по итогам дебага: эксепшен выскакивает в виндовом модуле quartz.dll. То есть AltDvb вообще не виноват, это целиком глюки поделки Билли! Надо взять файл quartz.dll из Windows XP и положить в папку рядом с AltDVB.exe. Может, подойдет из чистой Vista без SP1 тоже. Я взял из русской XP SP3. Как бы там ни было - это решает проблему на 100%, а M$ сами себе сделали еще один DoS для Vista SP1 :)
Подытоживая: AltDvb вполне себе может работать с WDM дровами для SkyStar2 под Vista SP1 (ессно не без моих доработок, хехе), единственный повод для беспокойства - это пункт 2. Дело в том, что шибко умный автор AltDvb написал модуль устройства SkyStar2 так, чтобы он брал поток данных из драйвера НАПРЯМУЮ, минуя прокладочные (ДОКУМЕНТИРОВАННЫЕ В SkyStar2 SDK, между прочим) интерфейсы. В этом легко убедиться, ведь AltDvb прекрасно работает, не требуя установки софта от Technisat, а только голого драйвера - можете проверить это в Win XP, например. Как итог - со сменой версии драйвера, а также ОС будем иметь глюки, описанные в п.2. Как лечить - только переписывать модуль устройства SkyStar2 с нуля, чтобы он работал по документированному интерфейсу, так, как это делает например ProgDVB и у которого нет проблем ни с одной версией драйвера под Vista. Насколько я знаю, люди уже писали модули устройств для AltDvb, знаю, что MaxWin написал модуль для SkyStar3 который, вроде, работает стабильно. Не знаю как он разобрался с интерфейсом обмена данными между Альтом и модулями, в частности, в аргументах функции DvbDeviceControl (скорее всего тоже реверсил :), в любом случае, это уже совсем другая история и тема для другого топика.