Entrada y salida del audio

Ubicación

es.h

Funciones

Función ImprDatosDeAudio

Imrpime en pantalla los datos del audio, como el nombre, la cantidad de canales, el tipo de cabecera, etc.

Los argumentos son el noombre del archivo, una estructura DAUDIO que contiene todos los datos del audio, y un título que se puede agregar a la impresión. El uso del nombre de archivo como argumento se debe a que usamos funciones de sndlib para mostrar el tipo de cabecera y el formato como cadenas.

void ImprDatosDeAudio(char *narch, DAUDIO *dau, char *titulo)
{
  fprintf(stdout, "\n%s: %s:\n\n  F.MUESTREO: \t%d  mues/s\n  CANALES: \t%d\n  DURACION: \t%f  seg\n  MUESTRAS: \t%d\n  MUES/CAN: \t%d\n",
		titulo, narch, dau->frec_muestreo, dau->canales, dau->duracion, dau->muestras, dau->mu_can);

  fprintf(stdout, "  TIPO: \t%s\n  FORMATO: \t%s\n  COMENTARIO: \t%s\n", 
                  mus_header_type_name(mus_sound_header_type(narch)),
                  mus_data_format_name(mus_sound_data_format(narch)),
                  dau->comentario);
}

Función AbrirAudioSalida

Utiliza 'mus_sound_open_output' de sndlib para abrir un audio para la salida. Si todo sale bien, se informa al usuario, de otro modo se pide la salida de la aplicación.

void AbrirAudioSalida(char* nombre, DAUDIO *datos)
{
  datos->na = mus_sound_open_output(nombre, datos->frec_muestreo, datos->canales, 
                                    datos->formato, datos->cabecera, datos->comentario);
  if(datos->na != -1)
    printf("\nAudio de salida preparado para ser usado ...");
  else 
    {
    fprintf(stderr, "%s: %s\n", nombre, strerror(errno));
    fprintf(stdout,"\n\n Presione aceptar para terminar el programa ..."); 
    getchar();
    }
}

Función SndAsignarMemoria

Crea la memoria del bufer a ser usado con el audio, se utiliza una macro específica de sndlib, que a su vez llama a calloc de c.

mus_sample_t **SndAsignarMemoria(DAUDIO *dau)
{
  mus_sample_t **buf = NULL;
  int i;

    /* CALLOC es una macro creada en sndlib.h para reservar memoria */
  buf = (mus_sample_t **)CALLOC(dau->canales, sizeof(mus_sample_t *));
  for(i = 0; i < dau->canales; i++) 
    buf[i] = (mus_sample_t *)CALLOC(dau->mu_can, sizeof(mus_sample_t));

  if(buf != NULL)
    printf("\nBufer de memomria asignada para el audio ...\n\n");

  return buf;
}

Función SndLiberarMemoria

Libera la memoria de un bufer que se usa para audio.

void SndLiberarMemoria(DAUDIO *dau, mus_sample_t **buf)
{
  int i;
    /* Debido a que ésta memoria fue creada con CALLOC se usa FREE para liberarla */
  for(i = 0; i < dau->canales; i++) 
    FREE(buf[i]);
  FREE(buf);
}

Anterior  Inicio  Siguiente
E/S Datos   Crear Eventos