From 39556dbfe68a0b153825b0c75c8cb3f2dc5c1094 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Tue, 30 Aug 2011 17:45:38 +0000 Subject: some oss fixes git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2325 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Output/oss4/outputoss4.cpp | 43 ++++++++++------------------------ 1 file changed, 12 insertions(+), 31 deletions(-) (limited to 'src/plugins/Output/oss4') diff --git a/src/plugins/Output/oss4/outputoss4.cpp b/src/plugins/Output/oss4/outputoss4.cpp index ecd37c504..39cb5347c 100644 --- a/src/plugins/Output/oss4/outputoss4.cpp +++ b/src/plugins/Output/oss4/outputoss4.cpp @@ -129,40 +129,21 @@ bool OutputOSS4::initialize(quint32 freq, int chan, Qmmp::AudioFormat format) qWarning("OutputOSS4: unsupported audio format"); return false; } - int param = p; - if (ioctl(m_audio_fd, SNDCTL_DSP_SETFMT, &p) < 0) - { - qWarning("OutputOSS4: ioctl SNDCTL_DSP_SETFMT failed: %s",strerror(errno)); - return false; - } - if(param != p) - { - qWarning("OutputOSS4: unsupported audio format"); - return false; - } - param = chan; - if(ioctl(m_audio_fd, SNDCTL_DSP_CHANNELS, &chan) < 0) - { + ioctl(m_audio_fd, SNDCTL_DSP_SYNC, 0); + + int enabled = 1; + if(ioctl(m_audio_fd, SNDCTL_DSP_COOKEDMODE, &enabled) == -1) + qWarning("OutputOSS4: ioctl SNDCTL_DSP_COOKEDMODE: %s", strerror(errno)); + + if(ioctl(m_audio_fd, SNDCTL_DSP_CHANNELS, &chan) == -1) qWarning("OutputOSS4: ioctl SNDCTL_DSP_CHANNELS failed: %s", strerror(errno)); - return false; - } - if(param != chan) - { - qWarning("OutputOSS4: unsupported %d-channel mode", param); - return false; - } - uint param2 = freq; + + if (ioctl(m_audio_fd, SNDCTL_DSP_SETFMT, &p) == -1) + qWarning("OutputOSS4: ioctl SNDCTL_DSP_SETFMT failed: %s",strerror(errno)); + if (ioctl(m_audio_fd, SNDCTL_DSP_SPEED, &freq) < 0) - { qWarning("OutputOSS4: ioctl SNDCTL_DSP_SPEED failed: %s", strerror(errno)); - return false; - } - if(param2 != freq) - { - qWarning("OutputOSS4: unsupported sample rate"); - return false; - } - ioctl(m_audio_fd, SNDCTL_DSP_RESET, 0); + configure(freq, chan, format); return true; } -- cgit v1.2.3-13-gbd6f