Conclusiones obtenidas con las pruebas del prototipo de captura

Anuncio
Conclusiones
Todas las pruebas han sido realizadas bajo la siguiente configuración:
Hardware:
 Procesador:
AMD XP1500+
 Placa base:
Legend QDI KuDoz 7
 Memoria RAM:
256Mb (DDR)
 Tarjeta de sonido:
Integrada en la placa, VIA ac'97
Software:
 Sistema operativo:
Windows 98
 Configuración de las propiedades multimedia de Windows:
 Reproducción:
 Aceleración de hardware:
 Calidad de conversión de la velocidad de muestreo:
 Grabación:
 Aceleración de hardware(no soportado por la tarjeta):
 Calidad de conversión de la velocidad de muestreo:
completa
óptima
completa
óptima
Acerca de las pruebas
A la hora de realizar las pruebas se han probado todas las combinaciones posibles de las siguientes características:




Modelos de concurrencia para el hilo(véase la estructura COINIT en el MSDN para más información):
 COINIT_MULTITHREADED
 COINIT_APARTMENTTHREADED
 COINIT_DISABLE_OLE1DDE
 COINIT_SPEED_OVER_MEMORY
Formato del sonido capturado y reproducido(idéntico en ambos casos):
 Frecuencia de muestreo:
 8000 Hz
 11025 Hz
 22050 Hz
 44100 Hz
 Nº de bits por muestra:
 8
 16
 Nº de canales:
 Mono
 Estéreo
Tamaño del buffer de grabación y del de reproducción
 Grabación 1500ms, reproducción 2000ms
 Grabación 2000ms, reproducción 2000ms
 Grabación 2000ms, reproducción 1500ms
Tamaño del colchón
 35ms, y bajando en 5ms si se escucha bien
Información adicional acerca de las pruebas
Cada prueba durará tres veces más tiempo que la duración del buffer más grande, esto es así porque durante la
implementación se observó que la aplicación a veces “cascaba” cuando se terminaba el buffer y volvía al
principio(recordar que son buffers circulares), por razones debidas al tamaño de la información que se pretendía leer.
En estas pruebas se informa si el sonido se escuchó bien o mal, o si se produjeron ecos. Pues bien, estos “errores”
parece que no tienen nada que ver con el módulo de captura, ya que en pruebas realizadas anteriormente a estas se
volcaba la salida tanto a un fichero WAV como al módulo de salida y aunque en la reproducción simultánea a la
captura se escuchasen cortes o ecos, en el fichero WAV no se apreciaban dichos errores, o sea, que grabar parece que
graba bien(que es lo que nos interesa).
La latencia es medida como el tiempo que transcurre entre dos recogidas consecutivas de datos desde el modulo de
captura. Hay que tener en cuenta que la mayoría de las veces cuando le pidamos datos al modulo de captura este
devolverá cero bytes, sólo se mide cuando nos devuelve datos.
Conclusiones
1.
2.
3.
4.
5.
Cuando las pruebas se realizaron a una frecuencia de muestreo se 11025 Hz(y sólo a esta frecuencia) las
DirectSound “cascaban”, y a veces aunque no cascaban en la reproducción solo se oía ruido estático(como en una
televisión cuando no está sintonizada en ningún canal). Estos fallos no tienen nada que ver(eso creo) con mi
aplicación, parecen un problema de las DirectSound
En las pruebas que se realizaron en estéreo y con 16 bits por muestra se observó una latencia notablemente más
baja que con las demás combinaciones(dentro de una misma frecuencia de muestreo)
Cuanto más alta es la frecuencia de muestreo más baja es la latencia
Los dos puntos anteriores son debidos a que cuanto más altos sean los valores de frecuencia de muestreo, bits por
muestra y número de canales, cada milisegundo, por ejemplo, de sonido ocupa más bytes, y por lo visto las
DirectSound, posiblemente, no nos devuelven datos cuando estos no llegan a tener un tamaño determinado.
El establecimiento de un modelo de concurrencia u otro no parece tener consecuencias en la latencia, pero sí en la
calidad del sonido reproducido. Parece que COINIT_SPEED_OVER_MEMORY es la que mejores resultados da.
Descargar