Red de conocimiento informático - Material del sitio web - Cómo reproducir y grabar en Linux

Cómo reproducir y grabar en Linux

Grabación: El micrófono se conecta al códec y se convierte en señal digital a través de adc. Se almacena en el fifo de la CPU a través del ac97 y otras interfaces en el que continuará 2. , y se almacena en la memoria a través de la transmisión dma en el que continuará 1. Después del que continuará 1 En la Continuación 3, la interfaz snd_pcm_readi en alsa_lib se pasa al software de grabación y, después de la codificación, un audio se forma el archivo.

Reproducción: el software de reproducción decodifica el archivo de audio y lo transfiere gradualmente a la memoria relacionada con dma a través de la interfaz snd_pcm_writei en la continuación 3, y lo pasa al fifo de la CPU a través de dma en la continuación 2, y luego pasa por ac97, etc. La interfaz se pasa al dac y finalmente al altavoz conectado al códec.

Experiencias:

La transmisión de datos 1.ac97 es bastante compleja y requiere multiplexación de tiempo compartido. La relación entre el fifo del lado de la CPU y el adc/dac del lado del códec debe ser buena. emparejado. Por ejemplo, si el PCM dejó quince en el lado de la CPU ocupa la ranura 3, entonces el ADC solo puede pasarle datos si está configurado como ranura 3. Si está configurado como ranura 6, se pasará al micrófono en quince de la CPU. . Para grabación monofónica, generalmente se selecciona la ranura 6, y para grabación de doble canal, generalmente se seleccionan la ranura 3 y la ranura 4 para los dos ADC respectivamente.

2. Cálculo del tamaño del archivo de audio Wav: para comprobar si la grabación se pierde, es necesario calcular el tamaño del archivo. El método habitual es: según el tiempo de grabación, utilice la fórmula: tiempo de grabación (. unidad s) x frecuencia de muestreo x(número de bits de muestreo/8)x número de canales. Por ejemplo, si el tiempo de grabación es de 5 segundos, la frecuencia de muestreo es de 8 kHz, la cantidad de bits es 16 y la cantidad de canales es 1, entonces 5x8000x(16/8)x1=80k, el tamaño real del archivo wav es ligeramente mayor que 80k. Hay otra forma de calcular el tamaño del archivo: generalmente el sistema de audio usa DMA y también se usan interrupciones DMA. Puede imprimir el recuento en la interrupción DMA, solo el número de veces x bytes del ciclo de interrupción dma.

3. Problema de tamaño del intercambio de datos: continuará en 1, la transmisión DMA debe coincidir con las características de FIFO: si el ancho de bits de FIFO es de 16 bits, la profundidad es de 16 y se envía una solicitud. al DMA (apretón de manos) cuando está medio lleno), la lista vinculada DMA debe configurarse con un ancho de bits de transmisión de 16 bits y una ráfaga de 16 bytes para garantizar que no se pierda la cantidad de bits y datos. Continuará en 2, la cantidad de bits FIFO en el lado de la CPU debe coincidir con la cantidad de bits de muestreo en el lado adc/dac del códec. La interfaz i2s/pcm se puede configurar con el mismo valor, como 16 bits. La interfaz ac97 es un poco más complicada. No es necesario configurar el lado de la CPU, por lo que el número de bits de muestreo ¿Cuánto es? Si el ancho del canal del FIFO en el lado de la CPU es de 16 bits, el bit adc/dac. el ancho en el lado del códec es de 18 bits y el canal ac97 es de 20 bits, entonces los 16 bits efectivos serán interceptados cuando se transmitan al lado quince y el número de muestreo general será de 16 bits, el rendimiento de adc/dac no es totalmente utilizado. Continuará en 3, el tercer parámetro de las funciones snd_pcm_readi y snd_pcm_writei indica el tamaño de los datos de lectura y escritura. La unidad son fotogramas, no bytes. El formato de 16 bits de dos canales tiene un tamaño de trama de 4 bytes