diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2020-02-23 13:17:15 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2020-02-23 13:17:15 +0000 |
| commit | 8d36db2dd831b916736383207f6c959badd68b9d (patch) | |
| tree | 7d76fcad2a9068f6df48c13df1529a0f41595e6e | |
| parent | 44486525461e6cce942259aece327538b6f5cf1e (diff) | |
| download | qmmp-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
| -rw-r--r-- | src/plugins/Input/vorbis/decoder_vorbis.cpp | 1 | ||||
| -rw-r--r-- | src/plugins/Transports/http/httpstreamreader.cpp | 1 | ||||
| -rw-r--r-- | src/qmmp/inputsource.cpp | 22 | ||||
| -rw-r--r-- | src/qmmp/inputsource.h | 16 | ||||
| -rw-r--r-- | src/qmmp/qmmpaudioengine.cpp | 1 |
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)) |
