Bugs item #3587421, was opened at 2012-11-14 23:26
Message generated for change (Comment added) made by uklauer
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=110706&aid=3587421&group_id=10706
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: verified
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: HPS (hselasky)
Assigned to: Nobody/Anonymous (nobody)
Summary: Bugs in src/oss.c
Initial Comment:
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. You can check this using
strace or ktrace.
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
----------------------------------------------------------------------
>Comment By: Ulrich Klauer (uklauer)
Date: 2013-01-04 14:08
Message:
OK, I don’t have OSS, but let’s see …
ad 1: I put a fix into the repository (dot branch).
ad 2: It is right that OSS is not the preferred driver; the order is
coreaudio, pulseaudio, alsa, waveaudio, sndio, oss, sunau, ao. However,
with your AUDIODRIVER setting, it should use OSS. What happens, and what do
you expect to happen?
ad 3: I assume switching to fully buffered I/O could lead to latency
problems. On the other hand, executing a syscall for each byte also seems
to be a lot of overhead. Does it work well with _IOFBF?
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=110706&aid=3587421&group_id=10706
------------------------------------------------------------------------------
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122812
_______________________________________________
SoX-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sox-devel