Page 19 of 66

Posted: Sun Apr 22, 2007 1:22 pm
by Serge
andrew_programmer

Я обсуждал COVOX с Hater-ом. Для многозадачных ОС это действительно очень тормозное устройство.

Posted: Tue Apr 24, 2007 9:38 pm
by Rimel
Ребят, у меня такая же проблема:( после переустановки винда, звука вообще нетю:( загружала драйв для него, а толку вообще никакого. причем, что самое интересное, что до этого все было замечательно, все работало, а теперь вообще без звука, и драйва нет:(

Posted: Wed Apr 25, 2007 7:12 am
by Mario79
Rimel
BIOS не обнулялся?

Posted: Fri Apr 27, 2007 5:35 pm
by Gluk
а с моим звуком что?.. я плата какая написал ведь..

Posted: Tue May 01, 2007 2:13 pm
by Serge
Gluk

Подожди немного. У меня пока нет возможности заняться драйвером.

Posted: Thu May 03, 2007 5:33 pm
by Wildwest

Posted: Sun May 20, 2007 1:53 pm
by DmitrySokolowsky
Пора сделать новую версию ac97snd. Тот, который писался для ядра 448, с нынешним ядром не воспроизводит многие из тех файлов, которые раньше воспроизводил. Это зависит от программы, которой файл был закодирован, а точнее, от кодера.

Posted: Sun May 20, 2007 7:17 pm
by Serge
Атауальпа

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

Posted: Sun May 20, 2007 8:05 pm
by DmitrySokolowsky
Ошибка была с ревизией 511. С ревизией 513 снова всё воспроизводится.

Posted: Sun Jul 01, 2007 8:34 am
by Quantum
Есть вопросы по SDK...

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

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

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

Posted: Sun Jul 01, 2007 3:45 pm
by Serge
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);
  };
Драйвер можно грузить из любого потока как и раньше, но звуковые буферы привязаны к родительскому потоку

Posted: Sun Jul 01, 2007 7:53 pm
by Quantum
OK, так и сделал. Раньше я просто не заметил, что у InitSound есть параметр.

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

Posted: Sun Jul 01, 2007 8:40 pm
by Serge
Quantum
Т.е. буфер я должен создать именно в том потоке, который будет его потом заполнять? При этом загрузку драйвера, проверку версии и т.д. можно осуществлять в основном потоке даже до того как будет создан поток проигрывания. Верно?
Да. В этом никаих ограничений нет.

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

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

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

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

Posted: Sun Jul 01, 2007 9:54 pm
by Quantum
Странно, что .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.

Posted: Mon Jul 02, 2007 1:17 am
by Serge
Quantum

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

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

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

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

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