Page 50 of 66

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

Posted: Fri Mar 04, 2011 1:45 pm
by Roverman
С колонками нормальный звук, просто бук с собой приходится таскать, а колонки тяжеловаты :)
Плиз "ткните носом" какие строки в драйвере отвечают за громкость? Попробую поменять параметры..

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

Posted: Fri Mar 04, 2011 2:14 pm
by Serge
codec.inc

Code: Select all

align 4
proc setup_codec

	   xor eax, eax
	   stdcall codec_write, dword CODEC_AUX_VOL

	   mov eax, 0x0B0B
	   stdcall codec_write, dword CODEC_MASTER_VOL_REG

	   mov ax, 0x08
	   stdcall codec_write, dword 0x0C

	   mov ax, 0x0808
	   stdcall codec_write, dword CODEC_PCM_OUT_REG

	   mov ax, 0x0808
	   stdcall codec_write, dword 0x10

	   mov ax, 0x0808
	   stdcall codec_write, dword 0x12

	   mov ax, 0x0808
	   stdcall codec_write, dword 0x16


	   stdcall codec_read, dword CODEC_EXT_AUDIO_CTRL_REG
	   and eax, 0FFFFh - BIT1		   ; clear DRA (BIT1)
	   or eax, BIT0 			  ; set VRA (BIT0)
	   stdcall codec_write, dword CODEC_EXT_AUDIO_CTRL_REG

	   stdcall set_sample_rate, dword 48000

.init_error:
	   xor	  eax, eax			     ; exit with error
	   ret
endp

Громкость задаётся ослаблением сигнала с шагом -1.5dB. Советую прибавлять осторожно, чтобы не спалить.

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

Posted: Fri Mar 04, 2011 4:12 pm
by Asper
Roverman
Для AC97 всё ещё работает System audio mixer.
Для HDA не пременять!
Нужно будет переделать соответствующие функции драйвера HDA.

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

Posted: Fri Mar 04, 2011 4:53 pm
by Roverman
Странно.. сейчас попробовал - не работает, кнопочки нажимаются, громкость не меняется.

ps попробовал миксер который на SVN - тоже не работает

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

Posted: Sat Mar 05, 2011 7:35 am
by Asper
Roverman
Asper wrote:Для регулировки левого канала - Home/End, правого - PageUp/PageDown.
Для AC97 возможно регулировать только оба канала одновременно, т.е. уровень звучания в обоих каналах будет одинаковый.
Roverman wrote:ps попробовал миксер который на SVN - тоже не работает
По-моему он был предназначен для старого встроенного в ядро кода SB16, а так соответствующий код давно удалён из ядра, то и программа на SVN потеряла актуальность.

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

Posted: Sat Mar 05, 2011 12:12 pm
by Roverman
Спасибо большое за разъяснения, все работает.

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

Posted: Sat Mar 26, 2011 6:50 pm
by Asper
Сделал Infinity, которая по умолчанию не использует инструкций MMX+ (изменить можно через USE_MMX_PLUS). Размер упакованного драйвера увеличивается на 8 байт, что как мне кажется приемлемо.

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

Posted: Sat Mar 26, 2011 7:28 pm
by yogev_ezra
Asper wrote:Сделал Infinity, которая по умолчанию не использует инструкций MMX+ (изменить можно через USE_MMX_PLUS). Размер упакованного драйвера увеличивается на 8 байт, что как мне кажется приемлемо.
Ура :!:
А на какой ревизии SVN базируется Ваша версия? Я пробовал сравнивать - в последней ревизии очень много других изменений, не связанных с Вашими.

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

Posted: Mon Mar 28, 2011 7:17 am
by Mario
Asper
Замечательно - хоть у меня не было железа без нужных инструкций, но зато теперь есть альтернатива. Спасибо.

З.Ы. Для тех кто "совсем не флудит" - иногда простая человеческая поддержка не менее необходима, чем багрепорт.

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

Posted: Mon Mar 28, 2011 4:14 pm
by Asper
yogev_ezra
Да видимо ревизия старая, но разницы нет, с точки зрения наличия инструкций MMX+ в коде. Изменения касаются одной только функции set_vol_param
Вот с последней ревизии.
infinity.7z (9.3 KiB)
Infinity without MMX+ by default
Downloaded 160 times
Mario
Спасибо за поддержку.

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

Posted: Mon Mar 28, 2011 7:04 pm
by Serge
Asper

А зачем neg в операциях ?

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

Posted: Mon Mar 28, 2011 7:33 pm
by Asper
Serge

Потому что сравниваются положительное и отрицательное числа (например 0x0000DDF0 и 0xFFFFDDF0), что в итоге приводит к нулевому уровню звука.

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

Posted: Mon Mar 28, 2011 7:44 pm
by Serge
Asper

Там все сравнения в коротких целых ( 16 бит). Знаковые сравнения cmp ax, word[...], jl ... или jg ... должны работать. И диапазон vol_min,vol_max [-10000, 0]. Если не закладываться на возможность ограничения по максимальному уровню то vol_max всегда равно 0.

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

Posted: Mon Mar 28, 2011 7:47 pm
by Asper
Serge wrote:Там все сравнения в коротких целых ( 16 бит), достаточно cmp ax, word[...]
Хм... не знал, а зачем тогда 64 бита?

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

Posted: Mon Mar 28, 2011 7:56 pm
by Serge
Asper

64 бита - требование операций pminsw и pmaxsw, чтобы привести значение в диапазон -10000, 0 без гемороя с ветвлениями. А дальше считаем 16 битные целые на FPU

Code: Select all

           movd [r_vol], mm0
.calc_amp:
           emms
           fild word [l_vol]  << short int
           ...
           ...
           ... 
           fild word [r_vol]