void DecoderIOFactoryShoutCast::shoutcastMeta(const QString &metadata) { LOG(VB_PLAYBACK, LOG_INFO, QString("DecoderIOFactoryShoutCast: metadata changed - %1") .arg(metadata)); ShoutCastMetaParser parser; parser.setMetaFormat(getMetadata().MetadataFormat()); ShoutCastMetaMap meta_map = parser.parseMeta(metadata); MusicMetadata mdata = getMetadata(); mdata.setTitle(meta_map["title"]); mdata.setArtist(meta_map["artist"]); mdata.setAlbum(meta_map["album"]); mdata.setLength(-1); DecoderHandlerEvent ev(DecoderHandlerEvent::Meta, mdata); dispatch(ev); }
void avfDecoder::checkMetatdata(void) { uint8_t *pdata = nullptr; if (av_opt_get(m_inputContext->getContext(), "icy_metadata_packet", AV_OPT_SEARCH_CHILDREN, &pdata) >= 0) { QString s = QString::fromUtf8((const char*) pdata); if (m_lastMetadata != s) { m_lastMetadata = s; LOG(VB_PLAYBACK, LOG_INFO, QString("avfDecoder: shoutcast metadata changed - %1").arg(m_lastMetadata)); ShoutCastMetaParser parser; parser.setMetaFormat(gPlayer->getDecoderHandler()->getMetadata().MetadataFormat()); ShoutCastMetaMap meta_map = parser.parseMeta(m_lastMetadata); MusicMetadata mdata = gPlayer->getDecoderHandler()->getMetadata(); mdata.setTitle(meta_map["title"]); mdata.setArtist(meta_map["artist"]); mdata.setAlbum(meta_map["album"]); mdata.setLength(-1); DecoderHandlerEvent ev(DecoderHandlerEvent::Meta, mdata); dispatch(ev); } av_free(pdata); } if (m_inputContext->getContext()->pb) { int available = (int) (m_inputContext->getContext()->pb->buf_end - m_inputContext->getContext()->pb->buffer); int maxSize = m_inputContext->getContext()->pb->buffer_size; DecoderHandlerEvent ev(DecoderHandlerEvent::BufferStatus, available, maxSize); dispatch(ev); } }