HTC DriverGate – lydversjonen

Ikon for lesetid 4 min. lese


Lesere hjelper til med å støtte MSpoweruser. Vi kan få provisjon hvis du kjøper gjennom lenkene våre. Verktøytipsikon

Les vår avsløringsside for å finne ut hvordan du kan hjelpe MSPoweruser opprettholde redaksjonen Les mer

førerport

Vel, etter en dag eller to med Windows Mobile-følelse, vender vi tilbake til noen problemer som unødvendig plager enhetene våre.

Det ser ut til at drivere igjen påvirker utvalgte HTC-enheter, inkludert alle avanserte nåværende generasjonsenheter som HTC Touch Diamond, Touch Pro, HD og Xperia. Når lyd spilles av enten gjennom hodetelefoner eller høyttalere med jevne mellomrom (vanligvis en gang hvert 5. minutt) vil du høre et kort "hopp" i lyden. Lyden har blitt beskrevet som et lag/hopp/hikke/tikk/blip. Problemet ser ut til å ligge dypt i wave-enhetsdriveren eller muligens selve hardware wave-enheten (Qualcomm i aksjon igjen?) Problemet ser ikke ut til å være tilstede i A2DP.

Problemet rammer hovedsakelig tredjepartsspillere, ettersom HTC ser ut til å ha løst problemet, men bare for seg selv, ved å bygge en tilpasset wave-driver.

Conduits Pocket Player-teamet har sett på problemet og har kommet tilbake motløs. Dette er hva de har å si om emnet.

Vi har gjort omfattende tester angående HTC-lydhoppingsproblemet, og har kommet til den konklusjonen at det ikke er noe Conduits kan ta tak i. Etter å ha analysert HTC Audio Manager-programmet og flere andre filer (som HTCs DirectShow Audio Renderer HTCRenderFlt2.dll og HTCADXRenderer4.dll), fant vi ut at begge foretar noen veldig spesielle systemanrop til WaveOut-driveren.

Her er noen tekniske detaljer for det vi har funnet. For det første tror vi ikke at tråd- eller prosessprioritet har noe med problemet å gjøre. Vanlig lydapplikasjon bruker en syklus med "waveOut-buffere" som holder lydutgangen "full" med lyddata som systemet kan hente fra og spille av. Applikasjoner bruker standard waveOutWrite-funksjoner for å fylle disse bufferne. Fra Pocket Players ståsted er disse bufferne alltid fulle, og justering av prioriteringene vil ikke påvirke dette. En måte å forbedre lydhopp (som har påvirket HTC TyTN) var å øke trådprioriteten til WaveOut-driveren ved å redigere en registerverdi under HKLM\Drivers\Builtin\WaveOut. Denne tilnærmingen fungerte ikke her. Interessant nok oppstår disse hoppingsproblemene på stasjonære PC-er. Der er problemet knyttet til sanntidsdrivere som tar «for lang tid» i behandlingen, noe som hindrer lyddriveren i å behandle neste batch med lyd. Dette skjer i Vista med noen MacBook-drivere.

Audio Manager bruker en annen utgangsmekanisme enn standard waveOut-anrop – den bruker DirectShow-lydgjengivelsesfilteret, som er en annen måte å sende lyd på. Ser på innsiden av hvordan det fungerer, bruker det en helt annen mekanisme. Den bruker et proprietært waveOutMessage-anrop for å åpne en ny meldingskø, som lyden deretter "streames" gjennom.

Pocket Player (og andre applikasjoner) kan muligens løse dette problemet ved å bruke HTC Audio Renderer i stedet for deres egne waveOut-rutiner, men da ville vi mistet kryssfading og andre Pocket Player-spesifikke funksjoner. Vi gjorde noen innledende tester for å lage en DirectShow-filtergraf (komplett med deres Audio Renderer), men opplevde fortsatt hoppingen, så det må være flere trinn.

Som et resultat ser Conduits nå på dette som et enhetsspesifikt problem som produsenten er forpliktet til å fikse. Alternativt, hvis HTC ønsker å dokumentere deres spesielle "streaming-modus" for lydutgangsdriveren, kan vi se på å tilpasse oss den modellen.

Hvis du trekker ut Wavedev.dll fra en ROM, vil du se utallige feilsøkingsmeldinger angående "MP3-strømmer" og lignende, som indikerer en helt separat lydbane for musikk som kommer fra programvaren deres. Hvis det er nødvendig, vil vi omskrive WaveOut-utgangspluginen vår (utdatarutinene våre bruker en privat plug-in-arkitektur akkurat som våre andre plugin-typer) som bruker DirectShow-utgangen.

HTC har avvist å dokumentere hvordan de løste problemet, og sa at de ikke støttet tredjepartsprogramvare.

Selvfølgelig er XDA-utviklere aldri de som lar en situasjon som denne ligge. Thx1200 starter en dusør for utviklere som kan produsere en åpen kildekode-løsning på dette problemet og gjøre den tilgjengelig for fellesskapet. For øyeblikket er dusøren bare en liten $30, men jeg er sikker på at vi kan generere mange flere donasjoner for å løse dette irriterende problemet for alle som bruker en tredjeparts lydprogramvare.

Les hele tråden hos XDA-Developers her, og ikke glem å legge til løftet ditt også hvis du føler at dette er en situasjon som må rettes opp.

Mer om temaene: lyddrivere, htc