[gstreamer-bugs] [Bug 362673] New: Playback with 4Front OSS driver not working due to blocking mode.
GStreamer (bugzilla.gnome.org)
bugzilla-daemon at bugzilla.gnome.org
Mon Oct 16 11:36:44 PDT 2006
Do not reply to this via email (we are currently unable to handle email
responses and they get discarded). You can add comments to this bug at
http://bugzilla.gnome.org/show_bug.cgi?id=362673
GStreamer | gst-plugins-good | Ver: 0.10.4
Summary: Playback with 4Front OSS driver not working due to
blocking mode.
Product: GStreamer
Version: 0.10.4
Platform: Other
OS/Version: FreeBSD
Status: UNCONFIRMED
Severity: major
Priority: Normal
Component: gst-plugins-good
AssignedTo: gstreamer-bugs at lists.sourceforge.net
ReportedBy: creep at desk.pl
QAContact: gstreamer-bugs at lists.sourceforge.net
GNOME version: Unspecified
GNOME milestone: Unspecified
I run FreeBSD 6-STABLE with OSS driver from 4Front version 3.99.4b
the driver can be found here:
http://www.4front-tech.com/
This is an oss compatible driver.
This driver works great with XMMS, but trying to play sound with GStreamer
0.10.9 produces such error:
creep at carnivore[~]:> gst-launch-0.10 --verbose filesrc location=file.mp3 '!'
mad '!' audioconvert '!' osssink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/pipeline0/mad0.src: caps = audio/x-raw-int, endianness=(int)1234,
signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100,
channels=(int)2
/pipeline0/audioconvert0.src: caps = audio/x-raw-int, width=(int)16,
depth=(int)16, signed=(boolean)false, endianness=(int)1234, channels=(int)2,
rate=(int)44100
/pipeline0/audioconvert0.sink: caps = audio/x-raw-int, endianness=(int)1234,
signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100,
channels=(int)2
ERROR: from element /pipeline0/osssink0: Could not get/set settings from/on
resource.
Additional debug info:
gstosssink.c(441): gst_oss_sink_prepare (): /pipeline0/osssink0:
Unable to set device /dev/dsp in non blocking mode: Invalid argument
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
/pipeline0/audioconvert0.src: caps = NULL
/pipeline0/audioconvert0.sink: caps = NULL
/pipeline0/mad0.src: caps = NULL
FREEING pipeline ...
creep at carnivore[~]:>
/dev/sndstat:
----------------------------------------
Build: 200607070150
Kernel: FreeBSD 6.2-PRERELEASE #1: Wed Sep 27 20:18:33 CEST 2006
creep at carnivore:/home/src/sys/i386/compile/TRUCE
Card config:
VIA 8233 AC97 audio controller at 0x1400 irq 9
Audio devices:
0: VT8235 (DUPLEX)
1: VT8235 (shadow) (DUPLEX)
2: OSS Virtual Mixer v2.5 Playback CH #0 (GRC3)
3: OSS Virtual Mixer v2.5 Playback CH #1 (GRC3)
4: OSS Virtual Mixer v2.5 Playback CH #2 (GRC3)
5: OSS Virtual Mixer v2.5 Playback CH #3 (GRC3)
6: OSS Virtual Mixer v2.5 Playback CH #4 (GRC3)
7: OSS Virtual Mixer v2.5 Playback CH #5 (GRC3)
8: OSS Virtual Mixer v2.5 Playback CH #6 (GRC3)
9: OSS Virtual Mixer v2.5 Playback CH #7 (GRC3)
Synth devices:
0: OSS Virtual Synth v2.5
Midi devices:
Mixers:
0: VT8235 (VT1612A)
1: Virtual Mixer
History:
dsp0: pid 10979 cmd 'gst-launch-0.10' OUT
------------------------
The gstreamer code which does this is contained in
gstreamer-plugins-good-0.10.3 in osssink module:
sys/oss/gstosssink.c function gst_oss_sink_prepare
lines:
397 oss = GST_OSSSINK (asink);
398
399 mode = fcntl (oss->fd, F_GETFL);
400 mode &= ~O_NONBLOCK;
401 if (fcntl (oss->fd, F_SETFL, mode) == -1)
402 goto non_block;
Seems gstreamer tries to actually disable non-blocking mode (contrary to error
message it displays:
437 non_block:
438 {
439 GST_ELEMENT_ERROR (oss, RESOURCE, SETTINGS, (NULL),
440 ("Unable to set device %s in non blocking mode: %s",
441 oss->device, g_strerror (errno)));
442 return FALSE;
443 }
Seems like gstreamer is doing something it shouldn't do.
There is a faq in opensound webside dealing with blocking and other things.
http://manuals.opensound.com/developer/audio_myths.html
http://manuals.opensound.com/developer/
m.
--
Configure bugmail: http://bugzilla.gnome.org/userprefs.cgi?tab=email
More information about the Gstreamer-bugs
mailing list