HTC DriverGate – lydversionen

Ikon for læsetid 4 min. Læs


Læsere hjælper med at understøtte MSpoweruser. Vi får muligvis en kommission, hvis du køber via vores links. Værktøjstip-ikon

Læs vores oplysningsside for at finde ud af, hvordan du kan hjælpe MSPoweruser med at opretholde redaktionen Læs mere

førerdør

Nå, efter en dag eller to, hvor Windows Mobile har det godt, vender vi tilbage til nogle problemer, som unødigt plager vores enheder.

Det ser ud til, at driveren igen påvirker udvalgte HTC-enheder, inklusive alle de høje ende af nuværende generationsenheder som HTC Touch Diamond, Touch Pro, HD og Xperia. Når lyd afspilles enten gennem hovedtelefoner eller højttalere med jævne mellemrum (normalt en gang hvert 5. minut), vil du høre et kort "spring" i lyden. Lyden er blevet beskrevet som et lag/spring/hikke/tik/blip. Problemet ser ud til at være dybt i wave-enhedsdriveren eller muligvis selve hardware-wave-enheden (Qualcomm i aktion igen?) Problemet ser ikke ud til at være til stede i A2DP.

Problemet rammer primært tredjepartsspillere, da HTC ser ud til at have løst problemet, men kun for sig selv, ved at bygge en brugerdefineret wave-driver.

Conduits Pocket Player-teamet har undersøgt problemet og er vendt tilbage modløse. Dette er, hvad de har haft at sige om emnet.

Vi har lavet omfattende test vedrørende HTC-lydspring-problemet, og er kommet til den konklusion, at det ikke er noget, som Conduits kan løse. Efter at have analyseret programmet HTC Audio Manager og flere andre filer (såsom HTCs DirectShow Audio Renderer HTCRenderFlt2.dll og HTCADXRenderer4.dll), fandt vi ud af, at begge foretager nogle meget specielle systemkald til WaveOut-driveren.

Her er nogle tekniske detaljer for det, vi har fundet. For det første tror vi ikke, at tråd- eller procesprioritet har noget at gøre med problemet. Normal lydapplikation bruger en cyklus af "waveOut-buffere", der holder lydoutputtet "fuldt" med lyddata, som systemet kan trække fra og afspille. Applikationer bruger standard waveOutWrite-funktioner til at udfylde disse buffere. Fra Pocket Players synspunkt er disse buffere altid fulde, og justering af prioriteterne vil ikke påvirke dette. En måde at forbedre lydspring på (som har påvirket HTC TyTN) var at øge trådprioriteten for WaveOut-driveren ved at redigere en registreringsværdi under HKLM\Drivers\Builtin\WaveOut. Denne tilgang virkede ikke her. Interessant nok opstår disse overspringsproblemer på stationære pc'er. Der er problemet relateret til realtidsdrivere, der tager "for lang tid" i deres behandling, hvilket forhindrer lyddriveren i at behandle den næste batch af lyd. Dette sker i Vista med nogle MacBook-drivere.

Audio Manager bruger en anden output-mekanisme end standard waveOut-opkald – den bruger DirectShow-lydrenderingsfilteret, som er en anden måde at sende lyd på. Ser man i det indre af, hvordan det virker, bruger det en helt anden mekanisme. Den bruger et proprietært waveOutMessage-opkald til at åbne en ny beskedkø, som lyden derefter "streames" igennem.

Pocket Player (og andre applikationer) kunne muligvis løse dette problem ved at bruge HTC Audio Renderer i stedet for deres egne waveOut-rutiner, men så ville vi miste krydsfading og andre Pocket Player-specifikke funktioner. Vi lavede nogle indledende tests for at oprette en DirectShow-filtergraf (komplet med deres Audio Renderer), men oplevede stadig springen, så der skal være yderligere trin.

Som følge heraf betragter Conduits nu dette som et enhedsspecifikt problem, som producenten er forpligtet til at løse. Alternativt, hvis HTC ønsker at dokumentere deres specielle "streaming-tilstand" for deres lydudgangsdriver, kunne vi overveje at tilpasse til den model.

Hvis du udpakker Wavedev.dll fra en ROM, vil du se utallige fejlfindingsmeddelelser vedrørende "MP3-streams" og lignende, hvilket indikerer en helt separat lydsti for musik, der kommer fra deres software. Hvis det er nødvendigt, vil vi omskrive vores WaveOut output plug-in (vores output rutiner bruger en privat plug-in arkitektur ligesom vores andre plug-in typer), der bruger DirectShow output.

HTC har afvist at dokumentere, hvordan de løste problemet, og sagde, at de ikke understøttede tredjepartssoftware.

Selvfølgelig er XDA-udviklere aldrig dem, der lader en situation som denne ligge. Thx1200 starter en dusør til udviklere, der kan producere en open source-løsning på dette problem og gøre den tilgængelig for fællesskabet. I øjeblikket er dusøren kun små $30, men jeg er sikker på, at vi kan generere mange flere donationer for at løse dette irriterende problem for alle, der bruger en 3. parts lydsoftware.

Læs hele tråden hos XDA-Developers her, og glem ikke at tilføje dit løfte også, hvis du overhovedet føler, at dette er en situation, der skal rettes.

Mere om emnerne: lyddrivere, htc