HTC DriverGate – az audio verzió

Olvasási idő ikonra 4 perc olvas


Az olvasók segítenek az MSpoweruser támogatásában. Kaphatunk jutalékot, ha a linkjeinken keresztül vásárol. Eszköztipp ikon

Olvassa el közzétételi oldalunkat, hogy megtudja, hogyan segítheti az MSPowerusert a szerkesztői csapat fenntartásában Tovább

vezetőajtó

Nos, miután egy-két napos Windows Mobile jól érezte magát, visszatérünk néhány olyan problémához, amelyek szükségtelenül sújtják eszközeinket.

Úgy tűnik, hogy az illesztőprogramok ismét hatással vannak bizonyos HTC-eszközökre, beleértve az összes csúcskategóriás jelenlegi generációs eszközt, mint például a HTC Touch Diamond, Touch Pro, HD és Xperia. Ha a hangot rendszeresen (általában 5 percenként) fejhallgatón vagy hangszórón keresztül játssza le, rövid „kihagyást” fog hallani a hangban. A hangot úgy írták le, mint lag/skip/hiccup/tick/blip. Úgy tűnik, hogy a probléma mélyen a hullámeszköz-illesztőprogramban van, vagy esetleg magában a hardveres hullámeszközben (a Qualcomm újra működésben van?) Úgy tűnik, hogy a probléma nincs jelen az A2DP-ben.

A probléma elsősorban a harmadik féltől származó játékosokat érinti, mivel úgy tűnik, hogy a HTC megoldotta a problémát, de csak saját maguk számára, egyedi hullám-illesztőprogram elkészítésével.

A Conduits Pocket Player csapata megvizsgálta a problémát, és csüggedten tért vissza. Ez az, amit elmondottak a témáról.

Kiterjedt teszteket végeztünk a HTC hangkihagyási problémájával kapcsolatban, és arra a következtetésre jutottunk, hogy a Conduits ezt nem tudja megoldani. A HTC Audio Manager program és számos más fájl (mint például a HTC DirectShow Audio Renderer HTCRenderFlt2.dll és HTCADXRenderer4.dll) elemzése után azt találtuk, hogy mindkettő nagyon különleges rendszerhívásokat hajt végre a WaveOut illesztőprogramban.

Íme néhány technikai részlet, amit találtunk. Először is, nem gondoljuk, hogy a szál- vagy folyamatprioritásnak bármi köze van a problémához. A normál audioalkalmazások a „waveOut pufferek” ciklusát használják, amelyek a hangkimenetet „tele” hangadatokkal tartják, hogy a rendszer le tudja venni és lejátszani. Az alkalmazások szabványos waveOutWrite függvényeket használnak ezen pufferek kitöltésére. A Pocket Player szempontjából ezek a pufferek mindig tele vannak, és a prioritások beállítása ezt nem befolyásolja. A hangkihagyások javításának egyik módja (ami a HTC TyTN-t érintette) a WaveOut illesztőprogram szálprioritásának növelése volt a rendszerleíró érték HKLM\Drivers\Builtin\WaveOut alatti szerkesztésével. Ez a megközelítés itt nem működött. Érdekes módon ezek az átugrási problémák asztali számítógépeken fordulnak elő. Itt a probléma a valós idejű illesztőprogramokkal kapcsolatos, amelyek feldolgozása „túl sokáig tart”, ami megakadályozza, hogy az audio-illesztőprogram feldolgozza a következő hangköteget. Ez Vistában történik néhány MacBook illesztőprogram esetén.

Az Audio Manager a szokásos waveOut hívásoktól eltérő kimeneti mechanizmust használ – a DirectShow audio renderer szűrőt használja, amely egy másik módja a hang küldésének. Ha a működését nézzük, teljesen más mechanizmust használ. Egy szabadalmaztatott waveOutMessage hívást használ egy új üzenetsor megnyitásához, amelyen a hang ezután „streamelésre kerül”.

A Pocket Player (és más alkalmazások) esetleg megoldhatná ezt a problémát, ha a HTC Audio Renderer-t használnák a saját waveOut rutinjai helyett, de akkor elveszítenénk a keresztfadingot és a Pocket Player egyéb jellemzőit. Elvégeztünk néhány kezdeti tesztet a DirectShow szűrőgrafikon létrehozásához (a hangrenderelővel kiegészítve), de továbbra is tapasztaltuk az átugrást, ezért további lépésekre van szükség.

Ennek eredményeként a Conduits ezt most eszköz-specifikus problémának tekinti, amelyet a gyártó köteles kijavítani. Alternatív megoldásként, ha a HTC szeretné dokumentálni a speciális „streaming módot” a hangkimeneti illesztőprogramjához, megvizsgálhatjuk az ehhez a modellhez való alkalmazkodást.

Ha kibontja a Wavedev.dll fájlt egy ROM-ból, számtalan hibakereső üzenetet fog látni az „MP3 Streams” és hasonlók kapcsán, jelezve, hogy a szoftverükből származó zene teljesen különálló audio útvonalat kap. Ha szükséges, átírjuk a WaveOut kimeneti beépülő modulunkat (kimeneti rutinjaink privát plug-in architektúrát használnak, csakúgy, mint a többi beépülő típusunk), amely a DirectShow kimenetet használja.

A HTC nem volt hajlandó dokumentálni, hogyan oldották meg a problémát, mondván, hogy nem támogatják a harmadik féltől származó szoftvereket.

Természetesen az XDA-fejlesztők soha nem hagyják, hogy egy ilyen helyzet hazudjon. A Thx1200 olyan fejlesztők számára indított jutalmat, akik nyílt forráskódú megoldást tudnak készíteni erre a problémára, és elérhetővé teszik azt a közösség számára. Jelenleg a jutalom csak csekély 30 dollár, de biztos vagyok benne, hogy sokkal több adományt tudunk generálni, hogy megoldjuk ezt a bosszantó problémát bárki számára, aki harmadik féltől származó audioszoftvert használ.

Olvassa el az XDA-Developers teljes szálát itt, és ne felejtse el hozzátenni a zálogát akkor sem, ha úgy érzi, hogy ez egy olyan helyzet, amely javításra szorul.

Bővebben a témákról: audio illesztőprogramok, htc