HTC DriverGate: la versión de audio

Icono de tiempo de lectura 4 minuto. leer


Los lectores ayudan a respaldar a MSpoweruser. Es posible que obtengamos una comisión si compra a través de nuestros enlaces. Icono de información sobre herramientas

Lea nuestra página de divulgación para descubrir cómo puede ayudar a MSPoweruser a sostener el equipo editorial. Leer más

puerta del conductor

Bueno, después de uno o dos días de sentirse bien con Windows Mobile, volvemos a algunos problemas que afectan innecesariamente a nuestros dispositivos.

Parece que el controlador está afectando una vez más a los dispositivos HTC seleccionados, incluidos todos los dispositivos de gama alta de la generación actual, como HTC Touch Diamond, Touch Pro, HD y Xperia. Cuando el sonido se reproduce a través de auriculares o altavoces periódicamente (generalmente una vez cada 5 minutos), escuchará un breve "salto" en el audio. El sonido ha sido descrito como un retraso/salto/hipo/tick/blip. El problema parece ser profundo en el controlador del dispositivo de onda o posiblemente en el propio dispositivo de hardware de onda (¿Qualcomm en acción otra vez?) El problema no parece estar presente en A2DP.

El problema afecta principalmente a los jugadores de terceros, ya que HTC parece haber resuelto el problema, pero solo para ellos mismos, mediante la creación de un controlador de onda personalizado.

El equipo de Conduits Pocket Player ha estado investigando el problema y ha regresado desanimado. Esto es lo que han tenido que decir sobre el tema.

Hemos realizado pruebas exhaustivas con respecto al problema de omisión de audio de HTC y hemos llegado a la conclusión de que no es algo que Conduits pueda solucionar. Después de analizar el programa HTC Audio Manager y varios otros archivos (como DirectShow Audio Renderer HTCRenderFlt2.dll y HTCADXRenderer4.dll de HTC), descubrimos que ambos están realizando llamadas al sistema muy especiales en el controlador WaveOut.

Aquí hay algunos detalles técnicos de lo que hemos encontrado. Primero, no creemos que la prioridad del hilo o del proceso tenga nada que ver con el problema. La aplicación de audio normal utiliza un ciclo de "búferes waveOut" que mantienen la salida de audio "llena" con datos de audio para que el sistema los extraiga y los reproduzca. Las aplicaciones utilizan funciones waveOutWrite estándar para llenar estos búferes. Desde el punto de vista de Pocket Player, estos búferes siempre están llenos y ajustar las prioridades no afectará esto. Una forma de mejorar los saltos de audio (que ha afectado al HTC TyTN) fue aumentar la prioridad de subprocesos del controlador WaveOut editando un valor de registro en HKLM\Drivers\Builtin\WaveOut. Este enfoque no funcionó aquí. Curiosamente, estos problemas de omisión ocurren en las PC de escritorio. Allí, el problema está relacionado con los controladores en tiempo real que tardan "demasiado" en su procesamiento, lo que impide que el controlador de audio procese el siguiente lote de sonido. Esto sucede en Vista con algunos controladores de MacBook.

El Administrador de audio usa un mecanismo de salida diferente de las llamadas waveOut estándar: usa el filtro de renderizador de audio DirectShow, que es otra forma de enviar audio. Mirando en el interior de cómo funciona, está utilizando un mecanismo completamente diferente. Está utilizando una llamada patentada waveOutMessage para abrir una nueva cola de mensajes, a través de la cual se "transmite" el audio.

Pocket Player (y otras aplicaciones) posiblemente podrían resolver este problema utilizando HTC Audio Renderer en lugar de sus propias rutinas waveOut, pero entonces perderíamos el desvanecimiento cruzado y otras funciones específicas de Pocket Player. Hicimos algunas pruebas iniciales de creación de un gráfico de filtro de DirectShow (completo con su renderizador de audio) pero aún experimentamos la omisión, por lo que debe haber pasos adicionales.

Como resultado, Conduits ahora considera esto como un problema específico del dispositivo que el fabricante está obligado a solucionar. Alternativamente, si HTC quiere documentar su "modo de transmisión" especial para su controlador de salida de audio, podríamos considerar adaptarnos a ese modelo.

Si extrae Wavedev.dll de una ROM, verá innumerables mensajes de depuración con respecto a "Transmisiones de MP3" y similares, lo que indica una ruta de audio completamente separada para la música que proviene de su software. Si es necesario, reescribiremos nuestro complemento de salida WaveOut (nuestras rutinas de salida usan una arquitectura de complemento privada al igual que nuestros otros tipos de complementos) que usa la salida de DirectShow.

HTC se ha negado a documentar cómo resolvieron el problema, diciendo que no admitían software de terceros.

Por supuesto, los desarrolladores de XDA nunca son de los que dejan que una situación como esta mienta. Thx1200 está comenzando una recompensa para los desarrolladores que pueden producir una solución de código abierto para este problema y ponerla a disposición de la comunidad. Actualmente, la recompensa es de solo $ 30, pero estoy seguro de que podemos generar muchas más donaciones para abordar este molesto problema para cualquiera que use un software de audio de terceros.

Lea el hilo completo en XDA-Developers aquí, y no olvide agregar su compromiso también si siente que esta es una situación que necesita corregirse.

Más sobre los temas: controladores de audio, HTC