HTC DriverGate – ääniversio

Lukuajan kuvake 4 min. lukea


Lukijat auttavat tukemaan MSpoweruseria. Saatamme saada palkkion, jos ostat linkkien kautta. Työkaluvihje-kuvake

Lue ilmoitussivumme saadaksesi selville, kuinka voit auttaa MSPoweruseria ylläpitämään toimitustiimiä Lue lisää

kuljettajan portti

No, sen jälkeen, kun Windows Mobile on tuntunut hyvältä, palaamme joihinkin ongelmiin, jotka vaivaavat tarpeettomasti laitteitamme.

Näyttää siltä, ​​että kuljettaja vaikuttaa jälleen valittuihin HTC-laitteisiin, mukaan lukien kaikki nykyisen sukupolven huippuluokan laitteet, kuten HTC Touch Diamond, Touch Pro, HD ja Xperia. Kun ääntä toistetaan joko kuulokkeista tai kaiuttimista ajoittain (yleensä kerran 5 minuutin välein), kuulet lyhyen "ohitus" äänen. Ääntä on kuvattu lag/skip/hiccup/tic/blip. Ongelma näyttää olevan syvällä wave-laiteohjaimessa tai mahdollisesti itse laitteisto-aaltolaitteessa (Qualcomm taas toiminnassa?) Ongelma ei näytä olevan A2DP:ssä.

Ongelma koskee pääasiassa kolmannen osapuolen pelaajia, sillä HTC näyttää ratkaisneen ongelman, mutta vain itselleen, rakentamalla mukautetun wave-ohjaimen.

Conduits Pocket Player -tiimi on tutkinut asiaa ja palannut masentuneena. Tämä on se, mitä heillä on ollut sanottavaa aiheesta.

Olemme tehneet laajoja testejä HTC:n äänen ohitusongelmasta ja tulleet siihen tulokseen, että Conduits ei voi käsitellä sitä. Analysoituamme HTC Audio Manager -ohjelman ja useat muut tiedostot (kuten HTC:n DirectShow Audio Renderer HTCRenderFlt2.dll ja HTCADXRenderer4.dll) havaitsimme, että molemmat tekevät joitakin hyvin erikoisia järjestelmäkutsuja WaveOut-ohjaimeen.

Tässä on joitain teknisiä yksityiskohtia siitä, mitä olemme löytäneet. Ensinnäkin emme usko, että säikeen tai prosessin prioriteetilla on mitään tekemistä ongelman kanssa. Normaalissa äänisovelluksessa käytetään "waveOut-puskurien" sykliä, joka pitää äänilähdön "täynnä" äänidatalla, jotta järjestelmä voi hakea ja toistaa sen. Sovellukset käyttävät tavallisia waveOutWrite-funktioita täyttämään nämä puskurit. Pocket Playerin näkökulmasta nämä puskurit ovat aina täynnä, eikä prioriteettien säätäminen vaikuta tähän. Yksi tapa parantaa äänen ohituksia (joka on vaikuttanut HTC TyTN:ään) oli nostaa WaveOut-ohjaimen säikeen prioriteettia muokkaamalla rekisteriarvoa kohdassa HKLM\Drivers\Builtin\WaveOut. Tämä lähestymistapa ei toiminut täällä. Mielenkiintoista kyllä, näitä ohitusongelmia esiintyy pöytätietokoneissa. Siellä ongelma liittyy reaaliaikaisiin ohjaimiin, joiden käsittely kestää "liian kauan", mikä estää ääniohjainta käsittelemästä seuraavaa äänierää. Tämä tapahtuu Vistassa joidenkin MacBook-ohjainten kanssa.

Audio Manager käyttää eri lähtömekanismia kuin tavalliset waveOut-kutsut – se käyttää DirectShow-äänenrenderöintisuodatinta, joka on toinen tapa lähettää ääntä. Kun tarkastellaan sen toiminnan sisäisiä osia, se käyttää täysin erilaista mekanismia. Se käyttää omaa waveOutMessage-kutsua uuden viestijonon avaamiseen, jonka ääni sitten "streamataan" läpi.

Pocket Player (ja muut sovellukset) voisi mahdollisesti ratkaista tämän ongelman käyttämällä HTC Audio Rendereria omien waveOut-rutiinien sijaan, mutta silloin menetämme ristihäipymisen ja muut Pocket Playerin erityisominaisuudet. Teimme joitain ensimmäisiä testejä DirectShow-suodatinkaavion luomiseksi (täydennettynä heidän Audio Rendererillä), mutta koimme silti ohituksen, joten lisävaiheita on oltava.

Tämän seurauksena Conduits pitää tätä nyt laitekohtaisena ongelmana, joka valmistajan on korjattava. Vaihtoehtoisesti, jos HTC haluaa dokumentoida erityisen "suoratoistotilan" äänilähtöohjaimeen, voimme harkita sopeutumista tähän malliin.

Jos purat Wavedev.dll-tiedoston ROM-levyltä, näet lukemattomia virheenkorjausviestejä koskien "MP3-virtoja" ja vastaavia, jotka osoittavat täysin erillisen äänipolun heidän ohjelmistostaan ​​tulevalle musiikille. Tarvittaessa kirjoitamme uudelleen WaveOut-ulostuloliitännäisen (lähtörutiinimme käyttävät yksityistä plug-in-arkkitehtuuria, kuten muutkin laajennustyypit), joka käyttää DirectShow-lähtöä.

HTC on kieltäytynyt dokumentoimasta, kuinka he ratkaisivat ongelman, koska he eivät tue kolmannen osapuolen ohjelmistoja.

Tietenkin XDA-kehittäjät eivät koskaan anna tällaisen tilanteen valehdella. Thx1200 aloittaa palkkion kehittäjille, jotka voivat tuottaa avoimen lähdekoodin ratkaisun tähän ongelmaan ja saattaa sen yhteisön saataville. Tällä hetkellä palkkio on vain pieni 30 dollaria, mutta olen varma, että voimme kerätä paljon enemmän lahjoituksia tämän kiusallisen ongelman ratkaisemiseksi kaikille, jotka käyttävät kolmannen osapuolen ääniohjelmistoa.

Lue koko viestiketju XDA-Developersissä täältä, ja älä unohda lisätä lupaasi myös, jos sinusta tuntuu, että tämä on tilanne, joka kaipaa korjausta.

Lisää aiheista: ääniohjaimet, HTC