HTC DriverGate – versiunea audio

Pictograma timp de citire 4 min. citit


Cititorii ajută la sprijinirea MSpoweruser. Este posibil să primim un comision dacă cumpărați prin link-urile noastre. Pictograma Tooltip

Citiți pagina noastră de dezvăluire pentru a afla cum puteți ajuta MSPoweruser să susțină echipa editorială Află mai multe

poarta conducătorului auto

Ei bine, după ce o zi sau două de Windows Mobile ne simțim bine, revenim la unele probleme care ne afectează în mod inutil dispozitivele.

Se pare că șoferul afectează din nou dispozitivele HTC selectate, inclusiv toate dispozitivele de ultimă generație, cum ar fi HTC Touch Diamond, Touch Pro, HD și Xperia. Când sunetul este redat periodic fie prin căști, fie prin difuzoare (de obicei, o dată la 5 minute), veți auzi un scurt „salt” în sunet. Sunetul a fost descris ca un lag/skip/hiccup/tick/blip. Problema pare să fie adâncă în driverul dispozitivului wave sau, eventual, în dispozitivul wave hardware în sine (Qualcomm în acțiune din nou?) Problema nu pare să fie prezentă în A2DP.

Problema afectează în principal jucătorii terți, deoarece HTC pare să fi rezolvat problema, dar numai pentru ei înșiși, prin construirea unui driver wave personalizat.

Echipa Conduits Pocket Player a studiat problema și s-a întors descurajat. Aceasta este ceea ce au avut de spus despre subiect.

Am făcut teste ample cu privire la problema sărituri audio HTC și am ajuns la concluzia că nu este ceva ce Conduits poate aborda. După ce am analizat programul HTC Audio Manager și alte câteva fișiere (cum ar fi DirectShow Audio Renderer HTCRenderFlt2.dll și HTCADXRenderer4.dll), am descoperit că ambele fac apeluri de sistem foarte speciale în driverul WaveOut.

Iată câteva detalii tehnice pentru ceea ce am găsit. În primul rând, nu credem că prioritatea firului sau procesului are vreo legătură cu problema. Aplicația audio obișnuită utilizează un ciclu de „buffere waveOut” care mențin ieșirea audio „plină” cu date audio pentru ca sistemul să le extragă și să le poată reda. Aplicațiile folosesc funcții standard waveOutWrite pentru a umple aceste buffere. Din punctul de vedere al Pocket Player, aceste tampoane sunt întotdeauna pline, iar ajustarea priorităților nu va afecta acest lucru. O modalitate de a îmbunătăți salturile audio (care a afectat HTC TyTN) a fost de a spori prioritatea firului de execuție a driverului WaveOut prin editarea unei valori de registry în HKLM\Drivers\Builtin\WaveOut. Această abordare nu a funcționat aici. Destul de interesant, aceste probleme de sărituri apar pe PC-urile desktop. Acolo, problema este legată de driverele în timp real care durează „prea mult” procesarea lor, ceea ce împiedică driverul audio să proceseze următorul lot de sunet. Acest lucru se întâmplă în Vista cu unele drivere MacBook.

Managerul audio folosește un mecanism de ieșire diferit de apelurile standard waveOut – folosește filtrul de redare audio DirectShow, care este o altă modalitate de a trimite audio. Privind în interiorul modului în care funcționează, se folosește un mecanism complet diferit. Utilizează un apel proprietar waveOutMessage pentru a deschide o nouă coadă de mesaje, prin care audio este apoi „transmis în flux”.

Pocket Player (și alte aplicații) ar putea rezolva această problemă utilizând HTC Audio Renderer în loc de propriile rutine waveOut, dar apoi am pierde încrucișarea și alte funcții specifice Pocket Player. Am făcut câteva teste inițiale de creare a unui grafic de filtru DirectShow (complet cu Audio Renderer) dar încă am experimentat omiterea, așa că trebuie să existe pași suplimentari.

Drept urmare, Conduits consideră acum această problemă ca fiind o problemă specifică dispozitivului pe care producătorul este obligat să o rezolve. Alternativ, dacă HTC dorește să documenteze „modul de streaming” special pentru driverul său de ieșire audio, am putea analiza adaptarea la modelul respectiv.

Dacă extrageți Wavedev.dll dintr-un ROM, veți vedea nenumărate mesaje de depanare referitoare la „fluxuri MP3” și altele asemenea, indicând o cale audio complet separată pentru muzica provenită din software-ul lor. Dacă va fi nevoie, vom rescrie plug-in-ul nostru de ieșire WaveOut (rutinele noastre de ieșire folosesc o arhitectură de plug-in privată la fel ca celelalte tipuri de plug-in-uri ale noastre) care utilizează ieșirea DirectShow.

HTC a refuzat să documenteze modul în care a rezolvat problema, spunând că nu acceptă software-ul terță parte.

Desigur, dezvoltatorii XDA nu sunt niciodată cei care lasă o situație ca aceasta să mintă. Thx1200 lansează o recompensă pentru dezvoltatori care pot produce o soluție open source pentru această problemă și o pot pune la dispoziția comunității. În prezent, recompensa este de doar o mică valoare de 30 USD, dar sunt sigur că putem genera mult mai multe donații pentru a rezolva această problemă neplăcută pentru oricine folosește un software audio terță parte.

Citiți întregul thread la XDA-Developers aici, și nu uitați să adăugați angajamentul dvs. și dacă simțiți că aceasta este o situație care trebuie corectată.

Mai multe despre subiecte: drivere audio, HTC