aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/mpeg
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Input/mpeg')
-rw-r--r--src/plugins/Input/mpeg/decoder_mad.cpp8
-rw-r--r--src/plugins/Input/mpeg/decoder_mpg123.cpp12
2 files changed, 20 insertions, 0 deletions
diff --git a/src/plugins/Input/mpeg/decoder_mad.cpp b/src/plugins/Input/mpeg/decoder_mad.cpp
index 4e984db58..f6645119d 100644
--- a/src/plugins/Input/mpeg/decoder_mad.cpp
+++ b/src/plugins/Input/mpeg/decoder_mad.cpp
@@ -356,6 +356,14 @@ bool DecoderMAD::findHeader()
m_freq = header.samplerate;
m_channels = MAD_NCHANNELS(&header);
m_bitrate = header.bitrate / 1000;
+
+ if((header.flags & MAD_FLAG_LSF_EXT) && (header.flags & MAD_FLAG_MPEG_2_5_EXT))
+ setProperty(Qmmp::FORMAT_NAME, QString("MPEG-2.5 layer %1").arg(header.layer));
+ else if(header.flags & MAD_FLAG_LSF_EXT)
+ setProperty(Qmmp::FORMAT_NAME, QString("MPEG-2 layer %1").arg(header.layer));
+ else
+ setProperty(Qmmp::FORMAT_NAME, QString("MPEG-1 layer %1").arg(header.layer));
+
mad_header_finish(&header);
input()->seek(0);
m_input_bytes = 0;
diff --git a/src/plugins/Input/mpeg/decoder_mpg123.cpp b/src/plugins/Input/mpeg/decoder_mpg123.cpp
index a9a6ca62e..e359f455d 100644
--- a/src/plugins/Input/mpeg/decoder_mpg123.cpp
+++ b/src/plugins/Input/mpeg/decoder_mpg123.cpp
@@ -143,7 +143,19 @@ bool DecoderMPG123::initialize()
m_totalTime = (qint64) mpg123_length(m_handle) * 1000 / m_rate;
}
else
+ {
+ if((err = mpg123_info(m_handle, &m_frame_info)) != MPG123_OK)
+ qWarning("DecoderMPG123: mpg123 error: %s", mpg123_plain_strerror(err));
+
+ if(m_frame_info.version == MPG123_1_0)
+ setProperty(Qmmp::FORMAT_NAME, QString("MPEG-1 layer %1").arg(m_frame_info.layer));
+ else if(m_frame_info.version == MPG123_2_0)
+ setProperty(Qmmp::FORMAT_NAME, QString("MPEG-2 layer %1").arg(m_frame_info.layer));
+ else if(m_frame_info.version == MPG123_2_5)
+ setProperty(Qmmp::FORMAT_NAME, QString("MPEG-2.5 layer %1").arg(m_frame_info.layer));
+
m_totalTime = 0;
+ }
configure(m_rate, channels, Qmmp::PCM_FLOAT);
return true;