sound, SB, AC97 и другое

Drivers for sound cards
  • Ребят, у меня такая же проблема:( после переустановки винда, звука вообще нетю:( загружала драйв для него, а толку вообще никакого. причем, что самое интересное, что до этого все было замечательно, все работало, а теперь вообще без звука, и драйва нет:(
  • Rimel
    BIOS не обнулялся?
  • а с моим звуком что?.. я плата какая написал ведь..
  • Gluk

    Подожди немного. У меня пока нет возможности заняться драйвером.
  • Пора сделать новую версию ac97snd. Тот, который писался для ядра 448, с нынешним ядром не воспроизводит многие из тех файлов, которые раньше воспроизводил. Это зависит от программы, которой файл был закодирован, а точнее, от кодера.
  • Атауальпа

    Ядро с работой декодера никак не связано. Скорее у тебя проявляется ошибка в файловой системе если длина пути к файлу превышает 60 символов. Проверь с последней версией ядра.
  • Ошибка была с ревизией 511. С ревизией 513 снова всё воспроизводится.
  • Есть вопросы по SDK...

    Во-первых, если я не собираюсь настраивать master volume, то можно не грузить драйвер SOUND, а только INFINITY?

    В функции _InitSound@4 есть вызов SRV_GETVERSION. Он действительно нужен или можно удалить?

    Кстати, раньше драйвер нужно было грузить из потока, который его будет использовать. Это ограничение всё ещё в силе?
  • Quantum

    SOUND загрузится автоматом в любом случае поэтому если не нужна аппаратная регулировка громкости эту часть можно пропустить.
    SRV_GETVERSION нужен иначе после обновления драйверов будут проблемы.
    Программа будет работать с драйвером если (version>>16)<=SOUND_VERSION<=(version&0xFFFF)

    Code: Select all

     #define SOUND_VERSION 0x0100
    
      if(err = InitSound(&ver))
      {  
         printf("Error %x Sound service not installed\n\r", err);
         return  0;
      }
    
      if( SOUND_VERSION>(ver&0xFFFF))
      {
         printf("obsolete driver infinity.obj\n\r");
         printf("Current version: %d, required version %d\n\r",
                 ver&0xFFFF, SOUND_VERSION);
      };
          
      if(SOUND_VERSION<(ver >> 16))
      {  
         printf("programm version obsolete\n\r");
         printf("compatible sound version: %d, required version %d\n\r",
                 ver, SOUND_VERSION);
      };
    Драйвер можно грузить из любого потока как и раньше, но звуковые буферы привязаны к родительскому потоку
  • OK, так и сделал. Раньше я просто не заметил, что у InitSound есть параметр.

    Плохо, что пока не поддерживается es1371. Придётся опять разворачивать тесты на реальном железе :(
    Драйвер можно грузить из любого потока как и раньше, но звуковые буферы привязаны к родительскому потоку
    Т.е. буфер я должен создать именно в том потоке, который будет его потом заполнять? При этом загрузку драйвера, проверку версии и т.д. можно осуществлять в основном потоке даже до того как будет создан поток проигрывания. Верно?
  • Quantum
    Т.е. буфер я должен создать именно в том потоке, который будет его потом заполнять? При этом загрузку драйвера, проверку версии и т.д. можно осуществлять в основном потоке даже до того как будет создан поток проигрывания. Верно?
    Да. В этом никаих ограничений нет.

    Для справки.
    Эти функций можно безопасно вызавать из любого потока:

    GetFormat GetBufferSize SetVolume GetVolume SetPan GetPan GetBufferPos.
    Кстати в плеере управление громкостью и балансом каналов идёт из другого потока.

    WaveOut PlayBuffer StopBuffer SetBuffer SetBufferPos DestroyBuffer
    лучше вызывать из родительского потока.

    Если ты хочешь сделать mod-плеер, eсть смысл встроить его в существующий ac97snd. Оформить декодер в виде статической библиотеки и прилинковать.
  • Странно, что .output - это указатель на указатель на версию...

    Попробовал перенести образ на старую машину с ICH, в надежде, что теперь будет работать, т.к. на основной машине тестить накладно. Увы :( Пишет, что обнаручен MENUET01 ICH, выводит значения control word и т.д. (не FFFFFFFF, что меня сразу обрадовало), но потом идёт device not found и дальше драйвер уже не грузится. Кстати, ни один из нормальных графических режимов (1-8) по прежнему не работает и при выборе любого из них в стандартном режиме меню виснет (как и раньше), а не перезагружается, как написано в документации. При указании опции запуска с дискеты, а не с уже загруженного образа, при отсутствии дискеты в дисководе, меню тоже наглухо виснет и помогает только ребут.

    Попробовал загрузить образ на основной машине со встроенным AD, где твой драйвер нормально работал и раньше (только звук выводился не в тот разьём). Звук услышать пока не удалось, т.к. мой NTFS раздел живёт на SATA и Колибри его не видит, а CD-ROM'ы видит, но что-то не читает... (может быть, из-за того, что на всех моих дисках с MP3 используются длинные имена файлов и режим записи в несколько сессий). В образ дискеты никакой из обычных вавов (т.е. не ADPCM) или mp3 не влазиет. Замкнутый круг. Версию драйвера получить удалось.
    Если ты хочешь сделать mod-плеер, eсть смысл встроить его в существующий ac97snd. Оформить декодер в виде статической библиотеки и прилинковать.
    Пока план такой:
    1. Сделать минимальный hello world с фоновым звуком, как в большинстве примеров виндового бранча uFMOD. Компиляторы: FASM и NASM.
    2. Сделать пример использования функции Jump2Pattern.
    3. Оформить бранч с документацией и т.д. Зарелизить.
    4. Сделать плеер файлов. Тут, конечно, имеет смысл пристроиться к стандартному плееру, а не изобретать велосипед. Но пока рано об этом думать, IMO.
  • Quantum

    >Странно, что .output - это указатель на указатель на версию...

    Все функции драйвера делались в расчёте на вызовы из С в итоге получилось что .output это массив указателей на возвращаемые значения. Я подготовил исправленную версию но не успел к дистрибу а с нынешними программами она не совместима надо всё обновлять и опять начнётся путаница.
    Кстати если драйвер пишет MENUET01 обнови его, это ошибка.

    >control word и т.д.
    Какие именно значения выводятся ?

    >длинные имена файлов и режим записи в несколько сессий

    С длинными именами файлов проблем нет а вот диски должны быть записаны только в одну сессию
  • Who is online

    Users browsing this forum: No registered users and 1 guest