On Wednesday 31 October 2012 10:03:50 Eric Wong wrote: > Hans Petter Selasky <hsela...@c2i.net> wrote: > > Hi, > > > > Line buffering should be off, but this statement leads to SOX reading 1 > > and > > > > one byte from the recording DSP device under FreeBSD: > > /* Change to non-buffered I/O */ > > setvbuf(ft->fp, NULL, _IONBF, sizeof(char) * file->size); > > return(SOX_SUCCESS); > > > > I think this flag should be used instead: > > _IOFBF fully buffered > > > > I've tested this change and it works like expected. > > > > Any comments? > > The code you're changing in src/oss.c no long applies to SoX 14.4.0, > how does 14.4.0 work out-of-the-box for you? >
Hi, First observation: oss.c: In function 'ossinit': oss.c:116: warning: dereferencing 'void *' pointer oss.c:116: error: request for member '_file' in something not a structure or union oss.c:124: warning: dereferencing 'void *' pointer oss.c:124: error: request for member '_file' in something not a structure or union oss.c:163: warning: dereferencing 'void *' pointer oss.c:163: error: request for member '_file' in something not a structure or union oss.c:176: warning: dereferencing 'void *' pointer oss.c:176: error: request for member '_file' in something not a structure or union oss.c:186: warning: dereferencing 'void *' pointer oss.c:186: error: request for member '_file' in something not a structure or union oss.c:205: warning: dereferencing 'void *' pointer oss.c:205: error: request for member '_file' in something not a structure or union oss.c:214: warning: dereferencing 'void *' pointer oss.c:214: error: request for member '_file' in something not a structure or union Fixed by renaming fileno( into sox_fileno( and defining this: #define sox_fileno(x) fileno((FILE *)(x)) Second observation: Default audio driver is not OSS. env AUDIODEVICE=/dev/dsp AUDIODRIVER=oss rec test.wav Third observation: GIO syscalls are still used, and the length is 1 byte. 15260 sox RET read 1 15260 sox CALL read(0x3,0x807b2de37,0x1) 15260 sox GIO fd 3 read 1 byte 0x0000 ff Patch needed: /* Change to non-buffered I/O */ setvbuf(ft->fp, NULL, _IONBF, sizeof(char) * file->size); return(SOX_SUCCESS); } Change to: /* Change to non-buffered I/O */ setvbuf(ft->fp, NULL, _IOFBF, sizeof(char) * file->size); return(SOX_SUCCESS); } --HPS ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_sfd2d_oct _______________________________________________ SoX-devel mailing list SoX-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sox-devel