HTC DriverGate – avdio različica

Ikona časa branja 4 min. prebrati


Bralci pomagajo pri podpori MSpoweruser. Če kupujete prek naših povezav, lahko prejmemo provizijo. Ikona opisa orodja

Preberite našo stran za razkritje, če želite izvedeti, kako lahko pomagate MSPoweruser vzdrževati uredniško skupino Preberi več

drivergate

No, po dnevu ali dveh, ko se Windows Mobile počuti dobro, se vrnemo k nekaterim težavam, ki po nepotrebnem pestijo naše naprave.

Zdi se, da gonilniki znova vplivajo na izbrane naprave HTC, vključno z vsemi napravami najvišje generacije trenutne generacije, kot so HTC Touch Diamond, Touch Pro, HD in Xperia. Ko se zvok občasno predvaja prek slušalk ali zvočnikov (običajno enkrat na 5 minut), boste v zvoku slišali kratek "preskok". Zvok je bil opisan kot zamik/preskok/kolcanje/tik/blip. Zdi se, da je težava globoko v gonilniku naprave za valovanje ali morda v sami napravi za valovanje (Qualcomm je spet v akciji?). Zdi se, da težava ni prisotna v A2DP.

Težava prizadene predvsem igralce tretjih oseb, saj se zdi, da je HTC težavo rešil, vendar samo zase, z izdelavo gonilnika valov po meri.

Ekipa Conduits Pocket Player je preučevala to težavo in se vrnila malodušna. To je tisto, kar so morali povedati na to temo.

Opravili smo obsežne teste glede težave s preskakovanjem zvoka HTC in prišli do zaključka, da Conduits ne more rešiti tega. Po analizi programa HTC Audio Manager in več drugih datotek (kot sta HTC-jev DirectShow Audio Renderer HTCRenderFlt2.dll in HTCADXRenderer4.dll) smo ugotovili, da oba izvajata zelo posebne sistemske klice v gonilnik WaveOut.

Tukaj je nekaj tehničnih podrobnosti o tem, kar smo našli. Prvič, menimo, da prioriteta niti ali procesa nimata nobene veze s težavo. Običajna zvočna aplikacija uporablja cikel 'waveOut buffers', ki ohranja avdio izhod 'poln' z zvočnimi podatki, ki jih sistem lahko izvleče in predvaja. Aplikacije uporabljajo standardne funkcije waveOutWrite za polnjenje teh medpomnilnikov. S stališča Pocket Playerja so ti medpomnilniki vedno polni in prilagajanje prioritet na to ne bo vplivalo. Eden od načinov za izboljšanje preskakov zvoka (ki je vplival na HTC TyTN) je bil povečati prioriteto niti gonilnika WaveOut z urejanjem vrednosti registra pod HKLM\Drivers\Builtin\WaveOut. Ta pristop tukaj ni deloval. Zanimivo je, da se te težave s preskakovanjem pojavljajo na namiznih računalnikih. Tam je težava povezana z gonilniki v realnem času, ki trajajo »predolgo« pri obdelavi, kar preprečuje, da bi zvočni gonilnik obdelal naslednjo serijo zvoka. To se zgodi v Vista z nekaterimi gonilniki za MacBook.

Upravitelj zvoka uporablja drugačen izhodni mehanizem kot standardni klici waveOut – uporablja filter za upodabljanje zvoka DirectShow, ki je še en način za pošiljanje zvoka. Če pogledamo v notranjost, kako deluje, uporablja popolnoma drugačen mehanizem. Uporablja lastniški klic waveOutMessage za odpiranje nove čakalne vrste sporočil, skozi katero se zvok nato »pretaka«.

Pocket Player (in druge aplikacije) bi morda lahko rešil to težavo z uporabo HTC Audio Renderer namesto lastnih WaveOut rutin, vendar bi potem izgubili navzkrižno bledenje in druge posebne funkcije Pocket Playerja. Naredili smo nekaj začetnih preizkusov ustvarjanja grafa filtra DirectShow (skupaj z njihovim Audio Renderer), vendar smo še vedno doživeli preskakovanje, zato morajo biti potrebni dodatni koraki.

Kot rezultat, Conduits zdaj to obravnava kot težavo, specifično za napravo, ki jo mora proizvajalec odpraviti. Če pa želi HTC dokumentirati svoj poseben »način pretakanja« za svoj gonilnik avdio izhoda, bi lahko razmislili o prilagoditvi temu modelu.

Če izvlečete Wavedev.dll iz ROM-a, boste videli nešteto sporočil za odpravljanje napak v zvezi z »MP3 Streams« in podobnim, kar kaže na popolnoma ločeno zvočno pot za glasbo, ki prihaja iz njihove programske opreme. Če bo potrebno, bomo prepisali naš izhodni vtičnik WaveOut (naše izhodne rutine uporabljajo zasebno arhitekturo vtičnikov, tako kot naše druge vrste vtičnikov), ki uporablja izhod DirectShow.

HTC ni želel dokumentirati, kako so rešili težavo, rekoč, da ne podpirajo programske opreme tretjih oseb.

Seveda razvijalci XDA nikoli ne dovolijo, da bi taka situacija lagala. Thx1200 začenja nagrado za razvijalce, ki lahko izdelajo odprtokodno rešitev tega problema in jo dajo na voljo skupnosti. Trenutno je nagrada le majhnih 30 $, vendar sem prepričan, da lahko ustvarimo veliko več donacij za reševanje tega nadležnega vprašanja za vsakogar, ki uporablja avdio programsko opremo tretje osebe.

Preberite celotno nit na XDA-Developers tukaj, in ne pozabite dodati svoje obljube tudi, če menite, da je to situacija, ki jo je treba popraviti.

Več o temah: zvočni gonilniki, HTC