QUOTE (AutumnRain @ Sep 1 2009, 12:03 PM)

Делать ни чего не надо?? Мы говорим об одном и том же? Я понимаю автодетект для микрофона следующим образом. Есть группа в которой указаны два микрофона. Один встроенный, другой - jack. Если в Jack не воткнуто внешнего микрофона в АЦП поступает сигнал от встроенного микрофона, если воткнуто, то необходимо чтобы в АЦП стал поступать сигнал от подключенного микрофона.
Это я говорил про ситуацию, когда разные микрофоны приходят на разные АЦП. Может я тебя не так понял. В этой ситуации про автодетект беспокоиться не нужно.
QUOTE
Не суть важно. Главное получить эти цепочки. Необходимо дописать алгоритм так, чтобы в некоторых временных масивах образовались эти цепочки, после чего можно их сравнить и найти ключевую ноду.
Так вот я и толкую, что алгоритм поиска ключевой ноды для выходного устройства один, для входного - другой. Мы не можем использовать child, или можем, но перебирая с другого конца. Сегодня 1 сентября, и я ни в чем не успел разобраться, только в уме продумываю, что и как я буду делать завтра.
QUOTE
Разъем для наушников должен иметь seq = 15!! Попробуй сделать по другому и автодетект развалиться!
Приведу пример из функции hpSwitchHandler
Я его видел. Но факт: на ALC883 проверял только что.
CODE
nid 20 0x01014410 as 1 seq 0 Line-out Jack jack 1 loc 1 color Green misc 4
nid 21 0x01011412 as 1 seq 2 Line-out Jack jack 1 loc 1 color Black misc 4
nid 22 0x01016411 as 1 seq 1 Line-out Jack jack 1 loc 1 color Orange misc 4
nid 23 0x01012414 as 1 seq 4 Line-out Jack jack 1 loc 1 color Grey misc 4
Все четыре разъема дают звук, если туда что-то втыкаешь. Дело, наверно, в том, что они сидят на миксере, и работают всегда, независимо от автодетекта.
Тоже самое - микрофоны
CODE
nid 24 0x01a19c40 as 4 seq 0 Microphone Jack jack 1 loc 1 color Pink misc 12
nid 25 0x02a19c50 as 5 seq 0 Microphone Jack jack 1 loc 2 color Pink misc 12
nid 26 0x0181344f as 4 seq 15 Line-in Jack jack 1 loc 1 color Blue misc 4
Но тут хуже. Line-in я не слышу, скорее всего из-за чувствительности входа, а микрофон работает в любой дырке независимо от выбранного устройства в контрольной панели. Это не есть хорошо.
Цепочки выглядят потрясающе. Как тут делать автодетект?
CODE
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]
Record:
nid=9 [audio input]
|
+ <- nid=34 [audio mixer] [src: speaker, mix, monitor]
|
+ <- nid=25 [pin: Microphone (Pink Jack)] [src: monitor]
+ <- nid=29 [beep widget] [src: speaker]
+ <- nid=11 [audio mixer] [src: mix]
То ли здесь автодетект вообще не нужен. Но как об этом сказать драйверу?
Хотя неплохо было бы отключать усилители неподключенных микрофонов, чтоб не шумели.
Собственно, в этом и должен заключаться автодетект в случае миксера.
А вот в случае селектора нужно подключать самое приоритетное устройство из присоединенных, а не только 0 и 15. Если мы так сделаем, то и юзерам меньше придется думать об инфо-плисте.
Но обрати внимание, что для выхода мы отключаем child, а для входа нужно искать родителя, чего в изначальном алгоритме просто не было.
QUOTE
Ты предлагал внести в инфо-плист, а я предлагаю вычислять автоматически.
К примеру, для ноды 26 Line-in
CODE
nid: 26
Name: pin: Line-in (Blue Jack)
Widget cap: 0x0040018f
UNSOL STEREO
Association: 3 (0x00008000)
OSS: line (line)
Pin cap: 0x0000173e
TRQD PDC HP OUT IN VREF[ 50 80 GROUND HIZ ]
Pin config: 0x0181344f
Pin control: 0x00000024 IN VREFs
Output amp: 0x80000000
mute=1 step=0 size=0 offset=0
Input amp: 0x00270300
Pin control 24 соответствует VREF 80, так и нужно включить
verb = 21a70724