diff options
Diffstat (limited to 'src/plugins/Input/mpeg')
| -rw-r--r-- | src/plugins/Input/mpeg/decoder_mad.cpp | 8 | ||||
| -rw-r--r-- | src/plugins/Input/mpeg/decoder_mpg123.cpp | 12 |
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; |
