Voodoohda |
|
|

Sep 29 2009, 07:10 PM




- Advanced Member
- Group: Developer
- Posts: 1,736
QUOTE (AutumnRain @ Sep 29 2009, 12:12 AM)

У меня стало налаживаться со свободным временем, буду потихоньку втягиваться в процесс.
Если я правильно тебя понимаю, то в последних версиях ты экспериментировал с числом создаваемых регуляторов?
Для нормальной отладки этого процесса нам будет не хватать данных дампа. При некоторых положениях регулятора часть нод будут переводиться в состояние force_mute которое в дампе не видно
Насчет того, чтобы показать в дампе forcemute - хорошая идея, постараюсь в ближайшее время вставить в программу.
В настоящий момент ситуация такова: я делал полный автодетект всех входов и всех выходов, и на Сигмателе все это отладил в разных вариантах группировки устройств. Версия 242. Но когда ее выложил, тут же получил шквал отзывов, что выход молчит. После длинного разбирательства, что не так, я понял, что врет изначальный алгоритм с версии 021, который создает массив контролей. В той версии вранье приводило к нерабочим микрофонам. В версии 235 мне, опять-таки некорректным способом удалось оживить микрофоны у какой-то части пациентов, но без автодетекта. В версии 242 одеяло передвинулось с левого края на правый, но осталось той же ширины. Вся проблема в миксерах, которые работают как со входными пинами, так и с выходными. На Сигмателе у меня их нет, вот и все работает. А на ALC883-888
CODE
nid=23 [pin: Line-out (Grey Jack)]
|
+ <- nid=15 [audio mixer] [src: pcm, mix]
|
+ <- nid=5 [audio output] [src: pcm]
+ <- nid=11 [audio mixer] [src: mix]
Record:
nid=8 [audio input]
|
+ <- nid=35 [audio mixer] [src: speaker, line, mic, mix]
|
+ <- nid=24 [pin: Microphone (Pink Jack)] [src: mic]
+ <- nid=26 [pin: Line-in (Blue Jack)] [src: line]
+ <- nid=29 [beep widget] [src: speaker]
+ <- nid=11 [audio mixer] [src: mix]
Input Mix:
nid=11 [audio mixer]
|
+ <- nid=24 [pin: Microphone (Pink Jack)] [src: mic]
+ <- nid=25 [pin: Microphone (Pink Jack)] [src: monitor]
+ <- nid=26 [pin: Line-in (Blue Jack)] [src: line]
+ <- nid=29 [beep widget] [src: speaker]
Я пока не разобрал алгоритм работы этого 11 миксера, но похоже, драйвер тоже не понимает, что с ним делать.

Oct 1 2009, 04:10 PM




- Advanced Member
- Group: Developer
- Posts: 107
QUOTE (Slice @ Sep 29 2009, 11:10 PM)

Насчет того, чтобы показать в дампе forcemute - хорошая идея, постараюсь в ближайшее время вставить в программу.
В настоящий момент ситуация такова: я делал полный автодетект всех входов и всех выходов, и на Сигмателе все это отладил в разных вариантах группировки устройств. Версия 242. Но когда ее выложил, тут же получил шквал отзывов, что выход молчит. После длинного разбирательства, что не так, я понял, что врет изначальный алгоритм с версии 021, который создает массив контролей. В той версии вранье приводило к нерабочим микрофонам. В версии 235 мне, опять-таки некорректным способом удалось оживить микрофоны у какой-то части пациентов, но без автодетекта. В версии 242 одеяло передвинулось с левого края на правый, но осталось той же ширины. Вся проблема в миксерах, которые работают как со входными пинами, так и с выходными. На Сигмателе у меня их нет, вот и все работает. А на ALC883-888
Я пока не разобрал алгоритм работы этого 11 миксера, но похоже, драйвер тоже не понимает, что с ним делать.
У меня есть одна особенность в реализации этого миксера: Встроенный микрофон не заведен в этот миксер nid 11. Внешний и Line-in заведены, а встроенный нет. И из-за этого когда работают внешний микрофон или Line-in я слышу свой голос в колонках, а когда работает внутренний - в колонках тишина. Возможно в этом роль миксера 11 - разгрузить микросхему оцифровки сигнала для создания усиленной копии сигнала приходящей на вход и выдать его сразу на выход минуя микросхему? Только зачем в него beep widget заведен?
P.S. Только мне не ясно чем этот миксер тебе помешал? Его можно просто отключить и связь цифрового выхода с колонками это никак не повлияет.
This post has been edited by AutumnRain: Oct 1 2009, 04:12 PM
Ноутбук Acer Aspire 5930G-733G25Mi
Mac OS iPC OSx86 Leopard 10.5.6 [Intel AMD SSE2 SSE3] Final Release + Apple Update 10.5.7 + Apple Update 10.5.8
Процессор T5800 Intel Core 2 Duo
Chipset Mobile Intel PM45 Express / ICH9-M
Видео nVidia GeForce 9600M GT с 512 Мб DDR3 видеопамяти
Звук Realtek HDA ALC888S-VC2
WebCam Acer CrystalEye 1 Мегапиксель - конфликтует с AppleHPET.kext и не дает заснуть
Сеть Marvell Yukon 88E8071 Gigabit Ethernet - не работает
WiFi intel 5100 802.11a/b/g не работает - заменена на Atheros mini PCI-e AR5006ER

Oct 1 2009, 06:19 PM




- Advanced Member
- Group: Developer
- Posts: 1,736
QUOTE (AutumnRain @ Oct 1 2009, 07:10 PM)

У меня есть одна особенность в реализации этого миксера: Встроенный микрофон не заведен в этот миксер nid 11. Внешний и Line-in заведены, а встроенный нет. И из-за этого когда работают внешний микрофон или Line-in я слышу свой голос в колонках, а когда работает внутренний - в колонках тишина. Возможно в этом роль миксера 11 - разгрузить микросхему оцифровки сигнала для создания усиленной копии сигнала приходящей на вход и выдать его сразу на выход минуя микросхему? Только зачем в него beep widget заведен?
P.S. Только мне не ясно чем этот миксер тебе помешал? Его можно просто отключить и связь цифрового выхода с колонками это никак не повлияет.
beep widget - тоже источник звука, как и микрофон, так что логично, что он заведен на миксер.
Я не уверен, что мне мешает именно 11 миксер. Посмотри еще раз мой отчет в
посте 158.
Там где Microphone volume имеется противоречие между версиями 235 и 242. А именно усилитель расположен не там, не на той ноде. А почему?
Разница между версиями вот:
CODE
if ((widget->type == HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_PIN_COMPLEX) || widget->waspin)
controls[cnt].ndir = HDA_CTL_IN;
else
controls[cnt].ndir = HDA_CTL_OUT;
Когда я поставил && вместо || я получил нерабочий выход.
Все, понял. Это условие касается не только пинов, но и миксеров. Например 11-ый. Сейчас буду смотреть дампы и сравнивать результаты.

Oct 1 2009, 07:54 PM




- Advanced Member
- Group: Developer
- Posts: 1,736
Ну вот теперь есть и результат
[attachment=572:VoodooHD..._Leo_243.zip]
[attachment=573:VoodooHD...2_64_243.zip]
voodoohda_src.243.zip ( 3.82MB )
Number of downloads: 2827Работают все входы и все выходы с автодетектом на двух компах
1. Dell 1525, Sigmatel9228, Snow 10.6.1 32bits
Применил такой патч
CODE
<key>NodesToPatch</key>
<array>
<dict>
<key>Codec</key>
<integer>2</integer>
<key>Config</key>
<string>0x90a70120</string> -- внутренний аналоговый моно-микрофон, нет в линукс-дампе
<key>Node</key>
<integer>12</integer>
</dict>
<dict>
<key>Codec</key>
<integer>2</integer>
<key>Config</key>
<string>0x02a1102f</string> -- микрофонное гнездо
<key>Node</key>
<integer>14</integer>
</dict>
<dict>
<key>Codec</key>
<integer>2</integer>
<key>Config</key>
<string>0x90a6e140</string> -- внутренний цифровой стерео-микрофон, чувствительность низкая, зато не шумит
<key>Node</key>
<integer>19</integer>
</dict>
<dict>
<key>Codec</key>
<integer>2</integer>
<key>Config</key>
<string>0x02011014</string> -- поместил линейный выход в одну группу с наушниками и спикером
<key>Node</key>
<integer>15</integer>
</dict>
</array>
2. GA-965P, ALC883, Leo 10.5.8 -- чистый инфо-плист. Все по умолчанию.
Замечания еще есть, возможны улучшения.

Oct 1 2009, 10:40 PM



- Member
- Group: Comrade
- Posts: 72
Ноут Benq R56 - Conexant Cx20549 - все заработало.
* 10.6.4 * iMac9,1 * E8400(3.6) * Palit GTS250 512Mb * ASUS P5B Deluxe ICH8R JMicron363 AD1988B * home *

Oct 2 2009, 05:50 PM




- Advanced Member
- Group: Developer
- Posts: 1,736
QUOTE (quark @ Oct 2 2009, 03:49 PM)

Вот фото паники последнего VoodooHDA и звуковухи ALC888 (GA-EP43-S3L, ICH10)
[attachment=580:VoodooHDA_Panic.jpg]
ioreg: [attachment=581:ioreg_quark.txt]
А это, пусть, пока, тут повисит...
ALC888 datasheet:
http://realtek.info/pdf/ALC888_1-0.pdfICH10 datasheet:
http://www.intel.com/assets/pdf/datasheet/319973.pdfПозволь поинтересоваться, а это ты не забыл выбросить перед испытанием ВудуХДА?
CODE
| | | | "CFBundleIdentifier" = "com.apple.driver.AppleAzaliaController"
И еще, попробуй
IOPCIFamily 2.6.2. От этого тоже может зависеть.
Однако, КП с ВудуХДА пока не исключены, нужно просто попытаться загрузиться еще раз, непонятно пока, в чем беда с холодным запуском. Также непонятны проблемы со слипом.
QUOTE (AutumnRain @ Oct 2 2009, 07:35 PM)

Отличная новость.

Теперь нужно доделать автосохранение настроек регуляторов (AppleHDA использует для этого IORegistryEntry).
И нужно придумывать нормальный способ тестирования драйвера. А то у одного kernel panic у другого комп не просыпается.
dong предложил "единственно возможный" способ автосохранения с использованием хелпера, только я что-то утерял его пост. Я ему верю, поскольку он программист и достаточно глубоко погрузился в эту тему. А IORegistryEntry скорее всего для записи в efiNVRAM. Не уверен, что на хакинтошах это возможно. С другой стороны, я бы выбрал более простой путь: сделать настройки по-умолчанию оптимальными ( в текущей версии забыл сделать ненулевым iMix), а общую громкость сама Эппл сохраняет. И, кстати, ее нужно использовать, а не перезаписывать.
По-прежнему вопрос об автосмене названий.
Вопрос о необходимости getExtDump. Сейчас он, по-моему, и не работает. Проще удалить все лишние коды, да добавить в общий дамп. Но это тебе работа, как автору этого дампа.
В текущей версии все равно есть ошибки, но уже не столь очевидные. На моем ALC883 передний микрофон работает тихо, но с шумами, надо бы отловить, откуда идет звук, а откуда шумы, похоже тоже ошибка переключений. Еще кто-то говорил о такой же проблеме.
Насчет просыпания - буду проверять, поскольку у меня сон, наконец-то, заработал. Кстати, вуду ему не мешал.
Там проблема в том, что после просыпания ставятся значения регулировок по-умолчанию, а надо бы сохранять текущие настройки.
Да, проверил, после просыпания, если оно произошло, либо КП, либо звук хрипит. Зато теперь есть на чем проверять в чем дело.
Похоже надо PCI дамп делать.
Рецепт на пробуждение
CODE
bash-3.2# kextunload -v /System/Library/Extensions/VoodooHDA.kext
(kernel) Can't unload kext org.voodoo.driver.VoodooHDA; classes have instances:
(kernel) Kext org.voodoo.driver.VoodooHDA class VoodooHDADevice has 1 instance.
(kernel) Kext org.voodoo.driver.VoodooHDA class VoodooHDAEngine has 5 instances.
Failed to unload org.voodoo.driver.VoodooHDA - (libkern/kext) kext is in use or retained (cannot unload).
bash-3.2# kextutil /System/Library/Extensions/VoodooHDA.kext
bash-3.2#
После чего звук снова хороший.
Еще плохая новость: выдернул наушники в процессе проигрывания музыки и получил КП. Некорректная обработка прерывания? Функция LOCK()? Наверно, КП на старте тоже с этим связано.

Oct 3 2009, 05:01 PM


- Initiate
- Group: Comrade
- Posts: 12
QUOTE (Slice @ Oct 2 2009, 08:50 PM)

Позволь поинтересоваться, а это ты не забыл выбросить перед испытанием ВудуХДА?
CODE
| | | | "CFBundleIdentifier" = "com.apple.driver.AppleAzaliaController"
И еще, попробуй
IOPCIFamily 2.6.2. От этого тоже может зависеть.
Однако, КП с ВудуХДА пока не исключены, нужно просто попытаться загрузиться еще раз, непонятно пока, в чем беда с холодным запуском. Также непонятны проблемы со слипом.
"ioreg" я делал уже убив Voodoo и, кажись, вернув назад старые кексты. Это не первый раз я пробую вуду, и каждый раз ловлю панику и истерику ядра. Естественно все AppleHDA и иже с ними я убиваю.
IOPCIFamily 2.6.2 попробую с понедельника.
At work: Leopard 10.5.8 (iMac 7,1) / GA-EP43-S3L . ICH10 . jMicron JMB368 . ALC888 / Dual Core E5200 / 4GB 800MHz RAM
At home: Leopard 10.5.7 / ASUS M2N-E . nForce570 . AD1988b / Athlon 64 3200+ / 4GB 800MHz RAM

Oct 4 2009, 08:52 AM




- Advanced Member
- Group: Developer
- Posts: 1,736
QUOTE (Bugagazavr @ Oct 3 2009, 08:53 PM)

Да, теперь когда я поставил IOPCIFamily 2.6.2 для снежного, ось грузится без паники как и без самого вуду.
[attachment=592:________...50.31_PM.png]
[attachment=593:ioreg_bugaga.txt]
Судя по всему автодетек не везде работает.
Извини, но в таком ответе информации для меня тоже не густо
CODE
| | +-o pci8086,3a30@1F,3 <class IOPCIDevice, id 0x1000001ab, registered, matched, active, busy 0 (288 ms), retain 7>
| | +-o sound@1B <class IOPCIDevice, id 0x1000001ac, registered, matched, active, busy 0 (1188 ms), retain 7>
| | +-o pci8086,2e20@0 <class IOPCIDevice, id 0x1000001ad, registered, matched, active, busy 0 (125 ms), retain 7>
ioreg -lw0 -x >ioregBugaga.txt
Для Снежного IOPCIFamily 2.6.3

Oct 4 2009, 09:26 AM



- Advanced Member
- Group: Comrade
- Posts: 161
Slice, да, сечас посмотрел версию, 2.6.3.
вот ioreg -lw0 -x >ioregBugaga.txt
ioregBugaga.txt ( 987.22K )
Number of downloads: 2Хочу заметить, что имею две звуковые, одна VIA а другая Creative X-Fi Xtreme Audio, на обеих модифицированая вуду работать не захотела.
Сразу извеняюсь если вопросы нубские и т.д. с хаком недавно.
Думаю было бы актуально если бы товарищ Mac'ovod отписался что у него и как, так как чипы впринципе должны быть схожи, разница лишь в последней букве.
This post has been edited by Bugagazavr: Oct 4 2009, 09:31 AM
Name: iMac11.1, Mac Os X: Snow Leopard 10.6.4 - 64 bit
CPU: Core i7 930, MB: P6X58D-E, GPU: nVidia GeForce Palit 9600GT, RAM: 3x2GB Kingston 1600 MHz
SOUND: Realtek ALC889 - Work with AppleHDA, LAN: Marvell 88E8056 - Yukon Injector, HDD: Seagete 250 gb SATAII, Seagate 2x500 gb SATAII

Oct 5 2009, 10:03 AM


- Initiate
- Group: Comrade
- Posts: 12
Так. Завел вуду. Судя по IOReg'у оно определило карточку и HDMI у видяхи. Звука пока не добился, и в getdump'e только HDMI наблюдается...
Complex output — даже не уверен, что это, но ни на одном из выходов звук не появляется

Headphones (Green Front) — проверить не могу - системник старый, на переднюю панель не выведен звук.
SPDIF-out (Orange Rear) — проверить не в состоянии

Sound.png ( 71.05K )
Number of downloads: 17
ioreg_quark.txt ( 419.37K )
Number of downloads: 5
getdump_quark.txt ( 3.36K )
Number of downloads: 5
getExtDump_quark.txt ( 950bytes )
Number of downloads: 2
Reason for edit: Читай ЧаВо!
At work: Leopard 10.5.8 (iMac 7,1) / GA-EP43-S3L . ICH10 . jMicron JMB368 . ALC888 / Dual Core E5200 / 4GB 800MHz RAM
At home: Leopard 10.5.7 / ASUS M2N-E . nForce570 . AD1988b / Athlon 64 3200+ / 4GB 800MHz RAM

Oct 6 2009, 07:58 AM


- Initiate
- Group: Comrade
- Posts: 12
QUOTE (quark @ Oct 5 2009, 01:03 PM)

Так. Завел вуду. Судя по IOReg'у оно определило карточку и HDMI у видяхи. Звука пока не добился, и в getdump'e только HDMI наблюдается...
Complex output — даже не уверен, что это, но ни на одном из выходов звук не появляется

Headphones (Green Front) — проверить не могу - системник старый, на переднюю панель не выведен звук.
SPDIF-out (Orange Rear) — проверить не в состоянии

Sound.png ( 71.05K )
Number of downloads: 17
ioreg_quark.txt ( 419.37K )
Number of downloads: 5
getdump_quark.txt ( 3.36K )
Number of downloads: 5
getExtDump_quark.txt ( 950bytes )
Number of downloads: 2... у меня встроенная HD Audio звуковуха ALC888 на маме с чипсетом ICH10 -> DeviceID=0x3a3e VendorID=0x8086
At work: Leopard 10.5.8 (iMac 7,1) / GA-EP43-S3L . ICH10 . jMicron JMB368 . ALC888 / Dual Core E5200 / 4GB 800MHz RAM
At home: Leopard 10.5.7 / ASUS M2N-E . nForce570 . AD1988b / Athlon 64 3200+ / 4GB 800MHz RAM

Oct 6 2009, 09:55 AM




- Advanced Member
- Group: Developer
- Posts: 107
2 SliceСейчас я занимаюсь авто-сменой названия выхода в настройках звука при подключения устройства к разъему.
Расскажи как это выглядит в AppleHDA:
1. сразу видны оба названия (Например Speaker и Headphone), и выделение перескакивает с одного устройства на другое.
2. видно только одно название и оно сменяется другим.
Хорошо бы скриншот еще.
This post has been edited by AutumnRain: Oct 6 2009, 09:55 AM
Ноутбук Acer Aspire 5930G-733G25Mi
Mac OS iPC OSx86 Leopard 10.5.6 [Intel AMD SSE2 SSE3] Final Release + Apple Update 10.5.7 + Apple Update 10.5.8
Процессор T5800 Intel Core 2 Duo
Chipset Mobile Intel PM45 Express / ICH9-M
Видео nVidia GeForce 9600M GT с 512 Мб DDR3 видеопамяти
Звук Realtek HDA ALC888S-VC2
WebCam Acer CrystalEye 1 Мегапиксель - конфликтует с AppleHPET.kext и не дает заснуть
Сеть Marvell Yukon 88E8071 Gigabit Ethernet - не работает
WiFi intel 5100 802.11a/b/g не работает - заменена на Atheros mini PCI-e AR5006ER

Oct 6 2009, 11:01 AM




- Advanced Member
- Group: Developer
- Posts: 1,736
QUOTE (AutumnRain @ Oct 6 2009, 01:55 PM)

2 SliceСейчас я занимаюсь авто-сменой названия выхода в настройках звука при подключения устройства к разъему.
Расскажи как это выглядит в AppleHDA:
1. сразу видны оба названия (Например Speaker и Headphone), и выделение перескакивает с одного устройства на другое.
2. видно только одно название и оно сменяется другим.
Хорошо бы скриншот еще.

Смена названия происходит на глазах через полсекунды после вставки джека
______________1.png ( 46.87K )
Number of downloads: 19
______________2.png ( 49.66K )
Number of downloads: 18Было бы идеально это повторить. Попробую поискать в дизассемблированном виде, какие процедуры суперкласса используются.
Кстати, насущная проблема в данный момент - участились КП, нужно понять, как их ловить.
Если сделаешь свою версию - не забудь поставить gMixerDefault ненулевым для всех устройств. В частности IMix нужно сделать 50.

Oct 6 2009, 11:32 AM




- Advanced Member
- Group: Developer
- Posts: 107
QUOTE (Slice @ Oct 6 2009, 03:01 PM)

Смена названия происходит на глазах через полсекунды после вставки джека
Было бы идеально это повторить. Попробую поискать в дизассемблированном виде, какие процедуры суперкласса используются.
Т.е. вариант 2?
Почему на скриншоте "Встроенные громкоговорители" и "Наушники"?
Может тогда вариант 1??
QUOTE (Slice @ Oct 6 2009, 03:01 PM)

Кстати, насущная проблема в данный момент - участились КП, нужно понять, как их ловить.
А получить креш дамп можно?
QUOTE (Slice @ Oct 6 2009, 03:01 PM)

Если сделаешь свою версию - не забудь поставить gMixerDefault ненулевым для всех устройств. В частности IMix нужно сделать 50.
Не уверен в цели сообразности для всех устройств, а для IMix поставлю.
Ноутбук Acer Aspire 5930G-733G25Mi
Mac OS iPC OSx86 Leopard 10.5.6 [Intel AMD SSE2 SSE3] Final Release + Apple Update 10.5.7 + Apple Update 10.5.8
Процессор T5800 Intel Core 2 Duo
Chipset Mobile Intel PM45 Express / ICH9-M
Видео nVidia GeForce 9600M GT с 512 Мб DDR3 видеопамяти
Звук Realtek HDA ALC888S-VC2
WebCam Acer CrystalEye 1 Мегапиксель - конфликтует с AppleHPET.kext и не дает заснуть
Сеть Marvell Yukon 88E8071 Gigabit Ethernet - не работает
WiFi intel 5100 802.11a/b/g не работает - заменена на Atheros mini PCI-e AR5006ER

Oct 6 2009, 12:11 PM




- Advanced Member
- Group: Developer
- Posts: 1,736
QUOTE (AutumnRain @ Oct 6 2009, 02:32 PM)

Т.е. вариант 2?
Почему на скриншоте "Встроенные громкоговорители" и "Наушники"?
Может тогда вариант 1??
Нет нет, именно вариант 2. А надписи в эппловском кексте тоже неправильные.
При вставке разъема происходит смена только одной надписи, как видишь на картинке.
QUOTE
А получить креш дамп можно?
Фотографии неоднократно показывали и на лайфе, и здесь в забугорной ветке. А зафиксировать в цифрах это нельзя.

Oct 6 2009, 07:50 PM




- Advanced Member
- Group: Developer
- Posts: 1,736
Гениально! Ты это сделал! Проверяю на ALC883 - очень сложный кодек, на нем много ошибок видно, зато нет КП. Вот только звук изменился. Отчитаюсь ниже. Сейчас про автодетект.
______________3.png ( 42.96K )
Number of downloads: 22
______________4.png ( 45.41K )
Number of downloads: 10
______________5.png ( 47.5K )
Number of downloads: 10
______________6.png ( 51.46K )
Number of downloads: 8Однако из четырех линейных выходов детектятся только два, первый и последний. Входов два, детектятся нормально, но работают сразу все.
Дамп следующий
CODE
Playback:
nid=20 [pin: Line-out (Green Rear)]
|
+ <- nid=12 [audio mixer] [src: pcm, mix] bindSeq=00000001
|
+ <- nid=2 [audio output] [src: pcm] bindSeq=00000001
+ <- nid=11 [audio mixer] [src: mix] bindSeq=00008001
nid=21 [pin: Line-out (Black Rear)]
|
+ <- nid=14 [audio mixer] [src: pcm, mix] bindSeq=00000004
|
+ <- nid=4 [audio output] [src: pcm] bindSeq=00000004
+ <- nid=11 [audio mixer] [src: mix] bindSeq=00008001
nid=22 [pin: Line-out (Orange Rear)]
|
+ <- nid=13 [audio mixer] [src: pcm, mix] bindSeq=00000002
|
+ <- nid=3 [audio output] [src: pcm] bindSeq=00000002
+ <- nid=11 [audio mixer] [src: mix] bindSeq=00008001
nid=23 [pin: Line-out (Grey Rear)]
|
+ <- nid=15 [audio mixer] [src: pcm, mix] bindSeq=00000010
|
+ <- nid=5 [audio output] [src: pcm] bindSeq=00000010
+ <- nid=11 [audio mixer] [src: mix] bindSeq=00008001
Record:
nid=8 [audio input]
|
+ <- nid=35 [audio mixer] [src: speaker, line, mic, mix] bindSeq=00008001
|
+ <- nid=24 [pin: Microphone (Pink Rear)] [src: mic] bindSeq=00000001
+ <- nid=26 [pin: Line-in (Blue Rear)] [src: line] bindSeq=00008000
+ <- nid=29 [beep widget] [src: speaker] bindSeq=00000000
+ <- nid=11 [audio mixer] [src: mix] bindSeq=00008001
Input Mix:
nid=11 [audio mixer]
|
+ <- nid=24 [pin: Microphone (Pink Rear)] [src: mic] bindSeq=00000001
+ <- nid=25 [pin: Microphone (Pink Front)] [src: monitor] bindSeq=00000001
+ <- nid=26 [pin: Line-in (Blue Rear)] [src: line] bindSeq=00008000
+ <- nid=29 [beep widget] [src: speaker] bindSeq=00000000
Очевидно 11 миксер всегда включен со всеми его входами, и звук, соответственно, всегда грязный, с шумами, скрипами.
Как ни странно, но отключать миксер нельзя, от него зависит громкость линейного выхода.
Следующие картинки для пояснения ситуации
______________1.png ( 55.88K )
Number of downloads: 10
______________2.png ( 57.21K )
Number of downloads: 7И для линейного выхода, и для микрофона есть регулятор IMix. И тот, и другой влияют на громкость воспроизведения

.
Причем в моей версии 243 влияет 4 микрофон, а в твоей 244 - пятый.
Разницы в дампе нет, кроме того, что в твоей версии у всех миксеров появилось ненулевое значение на выходе, как и договаривались
Output val: [0x00 0x00] -- 243
Output val: [0x13 0x13] -- 244
Однако, звук резко испортился. Такое бывает, когда два стереоканала смешивают в противофазе.
Нахожу в дампе еще такую вешь
CODE
nid: 11
Name: audio mixer
Widget cap: 0x0020010b
STEREO
Association: -2 (0x00008001)
OSS: mix (mix)
Input amp: 0x80051f17
mute=1 step=31 size=5 offset=23
Input val: [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
connections: 10 enabled 5 -- это почему это 5 разрешенных?
|
+ <- nid=24 [pin: Microphone (Pink Rear)]
+ <- nid=25 [pin: Microphone (Pink Front)]
+ <- nid=26 [pin: Line-in (Blue Rear)]
+ [DISABLED] <- nid=27 [pin: Headphones (Green Front)]
+ [DISABLED] <- nid=28 [pin: CD (CD)] [DISABLED]
+ <- nid=29 [beep widget]
+ [DISABLED] <- nid=20 [pin: Line-out (Green Rear)] -- хоть этот выход и закрыт, звук здесь явно прорывается в обратную связь
+ [DISABLED] <- nid=21 [pin: Line-out (Black Rear)]
+ [DISABLED] <- nid=22 [pin: Line-out (Orange Rear)]
+ [DISABLED] <- nid=23 [pin: Line-out (Grey Rear)]
И, кстати, это объясняет эффект с записью воспроизводимого звука. Вот отчет:
http://www.projectosx.com/forum/index.php?...post&p=3053Цепочка такая: iTunes посылает звук на ноду 2. Звук проходит через ноду 12 и на линейный выход 20. Но затем пробирается на миксер 11, с него через миксер 35 приходит на ноду 8, с которой Квик-тайм записывает звуки. Класс! Вот только эта обратная связь может приглушить звук, или испортить.
Хорошо бы в префпанели сделать кнопочку для отключения этого миксера, а то для него там ничего не предусмотрено.

Oct 9 2009, 08:24 AM




- Advanced Member
- Group: Developer
- Posts: 1,736
Слегка поправил проект, звук улучшился, но требуются более капитальные изменения.
Похоже gMixerDefaults слишком общая вешь, а к разным миксерам нужно подходить индивидуально, да и вообще, неплохо бы создать входные устройства (engine) для некоторых из них, например, для ноды 11 - Input Monitor.
Что еще нужно сделать - просмотреть, почему детектятся только первое и последнее устройство. Я, конечно, могу прописать в инфо-плисте, чтобы все выходы были раздельными, но лучше, чтобы драйвер работал правильно с чистым плистом, иначе зачем вообще было заниматься автодетектом?
Эта версия имеет кардинальное улучшение - автосмена названия, так что версию поменял на 0.2.5
voodoohda_patching.25.zip ( 192.43K )
Number of downloads: 43

Oct 11 2009, 06:11 AM




- Advanced Member
- Group: Developer
- Posts: 107
QUOTE (Slice @ Oct 9 2009, 12:24 PM)

Похоже gMixerDefaults слишком общая вешь, а к разным миксерам нужно подходить индивидуально, да и вообще, неплохо бы создать входные устройства (engine) для некоторых из них, например, для ноды 11 - Input Monitor.
Можно разделить миксеры на несколько типов и добавить их настройки в список gMixerDefaults и PrefPanel. Кстати, PrefPanel нужно будет переделать. так чтобы она получала названия регуляторов от драйвера и их отображала. Тогда в будущем не нужно будет менять PrefPanel если у нас снова измениться список регуляторов.
Мне кажется, что назрела необходимость в сохранении настроек. Настроить все усилители по-умолчанию - задача не выполнимая. Можно сделать возможность чтения настроек gMixerDefaults из Info.plist, но это кастели. Я не верю, чтобы у драйвера не было возможность сохранить настройки где-нибудь в системе, а потом прочитать их при следующем старте. Взять тот же AppleHDA, он же может запомнить положение своего регулятора громкости. Должны быть и другие примеры. Не обязательно сохранять настройки в файл, главное сохранить.
QUOTE (Slice @ Oct 9 2009, 12:24 PM)

Что еще нужно сделать - просмотреть, почему детектятся только первое и последнее устройство. Я, конечно, могу прописать в инфо-плисте, чтобы все выходы были раздельными, но лучше, чтобы драйвер работал правильно с чистым плистом, иначе зачем вообще было заниматься автодетектом?
Ты имеешь ввиду чтобы сделать возможность автодетекта более двух устройств в группе?
Ноутбук Acer Aspire 5930G-733G25Mi
Mac OS iPC OSx86 Leopard 10.5.6 [Intel AMD SSE2 SSE3] Final Release + Apple Update 10.5.7 + Apple Update 10.5.8
Процессор T5800 Intel Core 2 Duo
Chipset Mobile Intel PM45 Express / ICH9-M
Видео nVidia GeForce 9600M GT с 512 Мб DDR3 видеопамяти
Звук Realtek HDA ALC888S-VC2
WebCam Acer CrystalEye 1 Мегапиксель - конфликтует с AppleHPET.kext и не дает заснуть
Сеть Marvell Yukon 88E8071 Gigabit Ethernet - не работает
WiFi intel 5100 802.11a/b/g не работает - заменена на Atheros mini PCI-e AR5006ER

Oct 11 2009, 06:50 AM




- Advanced Member
- Group: Developer
- Posts: 1,736
Во-первых, мои поздравления с новым рангом Developer! Теперь у тебя больше места для аттачмента.
QUOTE (AutumnRain @ Oct 11 2009, 10:11 AM)

Можно разделить миксеры на несколько типов и добавить их настройки в список gMixerDefaults и PrefPanel. Кстати, PrefPanel нужно будет переделать. так чтобы она получала названия регуляторов от драйвера и их отображала. Тогда в будущем не нужно будет менять PrefPanel если у нас снова измениться список регуляторов.
Если честно, то я не знаю, как это сделать. А вообще-то у нас названия регуляторов создаются по тому же механизму catPinName() как и энжайны, вопрос в том, делать ли смену названия также в преф-панели, или же там сделать разные вкладки. Кстати, есть отчеты, что у кого-то преф-панель не видит нужного кодека.
QUOTE
Мне кажется, что назрела необходимость в сохранении настроек. Настроить все усилители по-умолчанию - задача не выполнимая. Можно сделать возможность чтения настроек gMixerDefaults из Info.plist, но это кастели. Я не верю, чтобы у драйвера не было возможность сохранить настройки где-нибудь в системе, а потом прочитать их при следующем старте. Взять тот же AppleHDA, он же может запомнить положение своего регулятора громкости. Должны быть и другие примеры. Не обязательно сохранять настройки в файл, главное сохранить.
Dong углублялся в эту тему, и заявил, что путь, как это делает Эппл для нас закрыт, единственный способ - вставить ХДАхелпер в автозагрузку, чтобы он писал в файл и читал из файла все настройки. Сможешь ли ты его переплюнуть? Хотя вот есть мысль сделать также, как делает загрузчик, который вносит какие-то параметры в реестр (модель ууайди и т.п.)
QUOTE
Ты имеешь ввиду чтобы сделать возможность автодетекта более двух устройств в группе?
Собственно автодетект и переключение звука на три устройства у меня работает (спикер, наушники и линейный выход), не работает смена названия.
Хотя подожди, на Сигмателе я еще не проверил последнюю версию.

Oct 11 2009, 02:08 PM




- Advanced Member
- Group: Developer
- Posts: 1,736
Что-то на Сигмателе вообще не происходит смена названий. Да и в логе нечисто
CODE
Oct 11 17:51:22 localhost kernel[0]: VoodooHDADevice[0x2398d000]::init
Oct 11 17:51:22 localhost kernel[0]: Enabling headphone/speaker audio routing switching at node 10:
Oct 11 17:51:22 localhost kernel[0]: Enabling mic/monitor audio routing switching at node 14:
Oct 11 17:51:22 localhost kernel[0]: Enabling headphone/speaker audio routing switching at node 15:
Oct 11 17:51:22 localhost kernel[0]: Pin sense: cad 2 nid=10 res=0x00000000
Oct 11 17:51:22 localhost kernel[0]: setDesc can't find engine for Speaker (Analog) channel 1 assoc 0
Oct 11 17:51:22 localhost kernel[0]: Pin sense: cad 2 nid=14 res=0x00000000
Oct 11 17:51:22 localhost kernel[0]: switch nid 21 conn 0 off
Oct 11 17:51:22 localhost kernel[0]: setDesc can't find engine for Microphone (Analog) channel 2 assoc 1
Oct 11 17:51:22 localhost kernel[0]: Pin sense: cad 2 nid=15 res=0x00000001
Oct 11 17:51:22 localhost kernel[0]: setDesc can't find engine for Line-out (Black Front) channel 1 assoc 0
Oct 11 17:51:22 localhost kernel[0]: warning: found invalid min/max dB (using default -22.5 -> 0.0dB range)
Почему энжайн не найден? Может быть процедура стартует раньше времени? С другой стороны, неплохо было бы при старте системы прописать название, какой джек уже воткнут.
Этот преждевременный старт, наверно, может объяснить и КП в некоторых случаях. Энжайн еще не создан, а процедуры класса уже вызываются.
Жаль, не могу найти время получше врубиться в эту логику.