maxud
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору AlexG Цитата: Кстати, по поводу _AC97.cab ! | По случаю покопался с драйверами для интегрированного AC97 звука. И обнаружил довольно занимательные моменты. Чтобы было понятно, немного теории на пальцах (!!! На самом деле все сложнее). Стандарт АС97 подразумевает следующую ЛОГИЧЕКУЮ реализацию звуковой подсистемы: есть AC97 codec (он производит преоразование аналогового сигнала в цифровой и наоборот, а также другие операции с аналоговым сигналом), есть AC97 digital processor (он занимается обработкой цифрового звука, наложением эффектов и т.п.) и есть AC-link который связывает эти два компонента (это цифровая последовательная шина). Теоретически AC97 digital processor может быть реализован как угодно (хоть програмно, хоть железно, хоть смешано). Однако так сложилось что, кроме nVidia SoundStorm, физически в южном мосту любого чипсета реализован только контроллер шины AC-link для подключения внешнего AC97 codec. Функции же AC97 digital processor выполняет центральный процессор посредством драйверов. К любому современному чипсету можно подключить практически любой AC97 codec. Ему AC97 digital processor посылает по AC-link команды и данные. Команды для AC97 codec-ов стандартизированы, более того, определить програмно какой стоит кодек достаточно сложно. Дело в том что то, что производитель чипсета (и сама мать присваивая ему прерывания и ресурсы) называет AC97 multimedia device, на самом деле является всего лишь контроллером шины AC97-link. И драйвер который ставится в систему для звукового устройства тоже является драйвером (программой обслуживающей устройство) только контроллера шины AC97-link. Говоря прямо: DEV и VEN AC97 multimedia device конкретного чипсета одинаков не зависимо от подключенного кодека. Почему же тогда производители чипсетов и кодеков пишут свои драйвера? А вот почему: Во-1. Команды хоть и стандартизированы, но производителю кодека оставлена немалая свобода действий в реализации дополнительных возможностей по работе с аудио сигналами. Которые производители и реализуют, вводя дополнительные команды (которые может обработать только конкретная модель кодека и не могут другие кодеки других производителей). Во-2. Поскольку функции AC97 digital processor-а реализованы програмно, написать его можно по разному - вот производители и пишут РАЗНЫЕ программые процессоры, да еще привязанные к командам своего кодека. (Пример продвинутого digital processor - SoundMAX). И постоянно их совершенствуют. А теперь самое интересное о драйверах: Собственно драйвер для AC97 звука состоит из двух частей: драйвера контроллера шины AC97-link индивидуального для каждого чипсета, и програмного AC97 digital processor-а часто (но не всегда) индивидуального для каждого кодека. Но физически файл драйвера может быть один. Если драйвером поддерживается конкретный чипсет (его AC97-link) то почти всегда можно поставить его для ЛЮБОГО кодека и большая часть функций звуковой подсистемы будет работать. Естественно это не есть правильно, и здесь закопана часть глюков в работе звука - ведь драйвер не знает что кодек не "его". Выводы из этого можно сделать следующие: 1. Драйвера звука для своих чипсетов (и разных кодеков, в том числе не родных) пишут VIA, Ali, nVidia, SiS. 2. Драйвера звука для своих кодеков (и разных чипсетов, в том числе не родных) пишут VIA, Realtek, Cmedia (и "подпольно" для производителей материнских плат ADI и Sigmatel). Несмотря на то, что у SiS есть драйвер для звуковых устройств SiS7012 и SiS7018, на самом деле это не кодеки, это названия AC97-link чипсетов SiS. 3. Для одного сочетания кодек-чипсет часто можно поставить разный набор драйверов: от производителя чипсета и от производителя кодека. 4. В общем случае производитель кодека лучше знает как работает его устройство и драйвера напишет лучше. Но програмный цифровой процессор у производителя чипсета может быть лучше. Отсюда третья причина почему производители чипсетов и кодеков пишут свои драйвера: для каждого нового сочетания чипсет-кодек нужен новый драйвер (ну хотябы запись в inf-файле). |