2011-10-28 8 views
5

Escribí un programa en Windows que reproducirá audio binario enviado a través de stdin, lo llamé aplay (como el programa de Linux). Entonces escribí un programa separado de la siguiente maneraTuberías de Windows en modo binario

FILE * f = popen("aplay.exe", "wb"); 
FILE * song = fopen("C:/Users/Ray/Dropbox/DJ Automica 2/Debug/raymonster 5.wav", "rb"); 
while(1) 
{ 
    byte buff[4096]; 
    fread(buff, 4, 1024, song); 
    fwrite(buff, 4, 1024, f); 
} 

Por alguna razón, el tubo no parece estar funcionando en modo binario, porque el audio está saliendo todo mal estado. Si cambio mi aplay para abrir el archivo wave por sí mismo en modo texto, suena igual que cuando lo hago a través de la tubería, si abro el archivo wave en modo binario, se reproduce perfectamente. ¿Alguien sabe como puedo arreglar esto?

Respuesta

4

Si se incluyen los archivos de cabecera

#include <fcntl.h> 
#include <io.h> 

puede cambiar los modos con

_setmode(_fileno(stdin), _O_BINARY); 
Cuestiones relacionadas