aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2020-02-23 13:17:15 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2020-02-23 13:17:15 +0000
commit8d36db2dd831b916736383207f6c959badd68b9d (patch)
tree7d76fcad2a9068f6df48c13df1529a0f41595e6e /src
parent44486525461e6cce942259aece327538b6f5cf1e (diff)
downloadqmmp-8d36db2dd831b916736383207f6c959badd68b9d.tar.gz
qmmp-8d36db2dd831b916736383207f6c959badd68b9d.tar.bz2
qmmp-8d36db2dd831b916736383207f6c959badd68b9d.zip
show average bitrate for shoutcast/icecast streams
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9243 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
-rw-r--r--src/plugins/Input/vorbis/decoder_vorbis.cpp1
-rw-r--r--src/plugins/Transports/http/httpstreamreader.cpp1
-rw-r--r--src/qmmp/inputsource.cpp22
-rw-r--r--src/qmmp/inputsource.h16
-rw-r--r--src/qmmp/qmmpaudioengine.cpp1
5 files changed, 41 insertions, 0 deletions
diff --git a/src/plugins/Input/vorbis/decoder_vorbis.cpp b/src/plugins/Input/vorbis/decoder_vorbis.cpp
index 37f795192..8828b7665 100644
--- a/src/plugins/Input/vorbis/decoder_vorbis.cpp
+++ b/src/plugins/Input/vorbis/decoder_vorbis.cpp
@@ -122,6 +122,7 @@ bool DecoderVorbis::initialize()
{
freq = ogginfo->rate;
chan = ogginfo->channels;
+ setProperty(Qmmp::BITRATE, ogginfo->bitrate_nominal / 1000);
}
ChannelMap chmap = findChannelMap(chan);
diff --git a/src/plugins/Transports/http/httpstreamreader.cpp b/src/plugins/Transports/http/httpstreamreader.cpp
index 969788c2d..1faf8b6ee 100644
--- a/src/plugins/Transports/http/httpstreamreader.cpp
+++ b/src/plugins/Transports/http/httpstreamreader.cpp
@@ -437,6 +437,7 @@ void HttpStreamReader::checkBuffer()
metaData.insert(Qmmp::TITLE, m_stream.header.value("icy-name"));
metaData.insert(Qmmp::GENRE, m_stream.header.value("icy-genre"));
m_parent->addMetaData(metaData);
+ m_parent->setProperty(Qmmp::BITRATE, m_stream.header.value("icy-br"));
}
sendStreamInfo(m_codec);
}
diff --git a/src/qmmp/inputsource.cpp b/src/qmmp/inputsource.cpp
index 5a52d43a7..ff6303cc7 100644
--- a/src/qmmp/inputsource.cpp
+++ b/src/qmmp/inputsource.cpp
@@ -69,6 +69,28 @@ QMap<Qmmp::MetaData, QString> InputSource::takeMetaData()
return m_metaData;
}
+void InputSource::setProperty(Qmmp::TrackProperty key, const QVariant &value)
+{
+ QString strValue = value.toString();
+ if(strValue.isEmpty() || strValue == "0")
+ m_properties.remove(key);
+ else
+ m_properties[key] = strValue;
+}
+
+void InputSource::setProperties(const QMap<Qmmp::TrackProperty, QString> &properties)
+{
+ for(const Qmmp::TrackProperty &key : properties.keys())
+ {
+ setProperty(key, properties.value(key));
+ }
+}
+
+const QMap<Qmmp::TrackProperty, QString> &InputSource::properties() const
+{
+ return m_properties;
+}
+
void InputSource::addMetaData(const QMap<Qmmp::MetaData, QString> &metaData)
{
m_metaData = metaData;
diff --git a/src/qmmp/inputsource.h b/src/qmmp/inputsource.h
index c5811c795..c4da56d37 100644
--- a/src/qmmp/inputsource.h
+++ b/src/qmmp/inputsource.h
@@ -97,6 +97,21 @@ public:
*/
QMap<Qmmp::MetaData, QString> takeMetaData();
/*!
+ * Sets extra stream property.
+ * \param key Property key.
+ * \param value Property value.
+ */
+ void setProperty(Qmmp::TrackProperty key, const QVariant &value);
+ /*!
+ * Updates all extra stream properties.
+ * \param properties New track properties.
+ */
+ void setProperties(const QMap<Qmmp::TrackProperty, QString> &properties);
+ /*!
+ * Returns stream properties
+ */
+ const QMap<Qmmp::TrackProperty, QString> &properties() const;
+ /*!
* Informs input source object about received stream information (for example icy data).
* Call of this function is required for all non-local streams/files
* @param info Stream information map.
@@ -169,6 +184,7 @@ private:
QString m_path;
qint64 m_offset;
QMap<Qmmp::MetaData, QString> m_metaData;
+ QMap<Qmmp::TrackProperty, QString> m_properties;
QHash<QString, QString> m_streamInfo;
bool m_hasMetaData, m_hasStreamInfo;
static void loadPlugins();
diff --git a/src/qmmp/qmmpaudioengine.cpp b/src/qmmp/qmmpaudioengine.cpp
index c73daaa94..d574296bc 100644
--- a/src/qmmp/qmmpaudioengine.cpp
+++ b/src/qmmp/qmmpaudioengine.cpp
@@ -381,6 +381,7 @@ void QmmpAudioEngine::run()
nextURL.clear();
info.setValues(m);
info.setValues(m_decoder->properties());
+ info.updateValues(m_inputs[m_decoder]->properties());
info.setValues(m_decoder->replayGainInfo());
info.setDuration(m_decoder->totalTime());
if(StateHandler::instance()->dispatch(info))