HTC DriverGate – la versione audio

Icona del tempo di lettura 4 minuto. leggere


I lettori aiutano a supportare MSpoweruser. Potremmo ricevere una commissione se acquisti tramite i nostri link. Icona descrizione comando

Leggi la nostra pagina informativa per scoprire come puoi aiutare MSPoweruser a sostenere il team editoriale Per saperne di più

drivergate

Bene, dopo uno o due giorni in cui Windows Mobile si sente bene, torniamo ad alcuni problemi che affliggono inutilmente i nostri dispositivi.

Sembra che i driver stiano nuovamente influenzando dispositivi HTC selezionati, inclusi tutti i dispositivi di fascia alta della generazione attuale come HTC Touch Diamond, Touch Pro, HD e Xperia. Quando il suono viene riprodotto periodicamente attraverso le cuffie o gli altoparlanti (di solito una volta ogni 5 minuti) sentirai un breve "salto" nell'audio. Il suono è stato descritto come ritardo/salto/singhiozzo/tick/blip. Il problema sembra essere profondo nel driver del dispositivo wave o forse nel dispositivo wave hardware stesso (Qualcomm di nuovo in azione?) Il problema non sembra essere presente in A2DP.

Il problema riguarda principalmente i giocatori di terze parti, poiché HTC sembra aver risolto il problema, ma solo per se stessi, costruendo un wave driver personalizzato.

Il team di Conduits Pocket Player ha esaminato il problema ed è tornato scoraggiato. Questo è quello che hanno avuto da dire sull'argomento.

Abbiamo effettuato test approfonditi sul problema del salto audio HTC e siamo giunti alla conclusione che non è qualcosa che Conduits può risolvere. Dopo aver analizzato il programma HTC Audio Manager e molti altri file (come DirectShow Audio Renderer HTCRenderFlt2.dll e HTCADXRenderer4.dll di HTC), abbiamo scoperto che entrambi effettuano alcune chiamate di sistema molto speciali nel driver WaveOut.

Ecco alcuni dettagli tecnici per ciò che abbiamo trovato. Innanzitutto, non pensiamo che la priorità del thread o del processo abbia qualcosa a che fare con il problema. La normale applicazione audio utilizza un ciclo di "buffer waveOut" che mantengono l'uscita audio "piena" con i dati audio da cui il sistema può estrarre e riprodurre. Le applicazioni utilizzano le funzioni waveOutWrite standard per riempire questi buffer. Dal punto di vista di Pocket Player, questi buffer sono sempre pieni e la regolazione delle priorità non influirà su questo. Un modo per migliorare i salti audio (che ha influito sull'HTC TyTN) era aumentare la priorità del thread del driver WaveOut modificando un valore di registro in HKLM\Drivers\Builtin\WaveOut. Questo approccio non ha funzionato qui. Abbastanza interessante, questi problemi di salto si verificano sui PC desktop. Lì, il problema è legato ai driver in tempo reale che impiegano "troppo tempo" nella loro elaborazione, il che impedisce al driver audio di elaborare il successivo batch di suoni. Questo accade in Vista con alcuni driver MacBook.

L'Audio Manager utilizza un meccanismo di output diverso dalle chiamate waveOut standard: utilizza il filtro del renderer audio DirectShow, che è un altro modo per inviare l'audio. Guardando all'interno di come funziona, utilizza un meccanismo completamente diverso. Sta usando una chiamata waveOutMessage proprietaria per aprire una nuova coda di messaggi, attraverso la quale l'audio viene poi "trasmesso in streaming".

Pocket Player (e altre applicazioni) potrebbero eventualmente risolvere questo problema utilizzando l'HTC Audio Renderer invece delle proprie routine waveOut, ma in tal caso perderemmo la dissolvenza incrociata e altre funzionalità specifiche di Pocket Player. Abbiamo eseguito alcuni test iniziali per la creazione di un grafico del filtro DirectShow (completo del loro renderer audio), ma abbiamo comunque riscontrato il salto, quindi devono essere necessari passaggi aggiuntivi.

Di conseguenza, Conduits ora lo considera un problema specifico del dispositivo che il produttore è obbligato a risolvere. In alternativa, se HTC vuole documentare la loro speciale "modalità streaming" per il loro driver di uscita audio, potremmo cercare di adattarci a quel modello.

Se estrai Wavedev.dll da una ROM, vedrai innumerevoli messaggi di debug relativi a "Stream MP3" e simili, che indicano un percorso audio completamente separato per la musica proveniente dal loro software. Se necessario, riscriveremo il nostro plug-in di output WaveOut (le nostre routine di output utilizzano un'architettura plug-in privata proprio come gli altri nostri tipi di plug-in) che utilizza l'output DirectShow.

HTC ha rifiutato di documentare come ha risolto il problema, affermando di non supportare software di terze parti.

Ovviamente gli sviluppatori XDA non sono mai quelli che lasciano mentire una situazione come questa. Thx1200 sta avviando una ricompensa per gli sviluppatori che possono produrre una soluzione open source a questo problema e renderla disponibile alla comunità. Attualmente la taglia è di soli $ 30, ma sono sicuro che possiamo generare molte più donazioni per affrontare questo fastidioso problema per chiunque utilizzi un software audio di terze parti.

Leggi il thread completo su XDA-Developers qui, e non dimenticare di aggiungere il tuo impegno anche se ritieni che questa sia una situazione che deve essere corretta.

Maggiori informazioni sugli argomenti: driver audio, htc