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 и т.д.
Какие именно значения выводятся ?
>длинные имена файлов и режим записи в несколько сессий
С длинными именами файлов проблем нет а вот диски должны быть записаны только в одну сессию