aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/qmmp/outputwriter.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/qmmp/outputwriter.cpp b/src/qmmp/outputwriter.cpp
index 2f5faea23..ce33a04db 100644
--- a/src/qmmp/outputwriter.cpp
+++ b/src/qmmp/outputwriter.cpp
@@ -275,6 +275,7 @@ void OutputWriter::run()
quint64 l;
qint64 m = 0;
size_t output_at = 0;
+ unsigned char *tmp = 0;
dispatch(Qmmp::Playing);
@@ -343,7 +344,15 @@ void OutputWriter::run()
m_output_buf = new unsigned char[m_output_size * sampleSize()];
}
- m_format_converter->fromFloat(b->data, m_output_buf, b->samples);
+ if(m_format_converter)
+ {
+ m_format_converter->fromFloat(b->data, m_output_buf, b->samples);
+ tmp = m_output_buf;
+ }
+ else
+ {
+ tmp = (unsigned char*)b->data;
+ }
output_at = b->samples * m_output->sampleSize();
while (l < output_at && !m_pause && !m_prev_pause)
@@ -357,7 +366,7 @@ void OutputWriter::run()
break;
}
mutex()->unlock();
- m = m_output->writeAudio(m_output_buf + l, output_at - l);
+ m = m_output->writeAudio(tmp + l, output_at - l);
if(m >= 0)
{
m_totalWritten += m;