From 602a9f7bb89ad5bb4d2fc649593646f333e6c6e0 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Sat, 17 Sep 2011 20:02:11 +0000 Subject: decoder api changes: removed StateHandler usage git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2354 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Input/cdaudio/decoder_cdaudio.cpp | 2 +- src/plugins/Input/cue/decoder_cue.cpp | 4 +- src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp | 2 +- src/plugins/Input/flac/decoder_flac.cpp | 4 +- src/plugins/Input/gme/decoder_gme.cpp | 2 +- src/plugins/Input/mad/decoder_mad.cpp | 2 +- src/plugins/Input/vorbis/decoder_vorbis.cpp | 3 +- src/plugins/Input/wavpack/decoder_wavpack.cpp | 4 +- src/plugins/Transports/http/httpstreamreader.cpp | 5 +- src/plugins/Transports/mms/mmsstreamreader.cpp | 3 +- .../Ui/skinned/translations/skinned_plugin_cs.ts | 60 +++++++++++----------- .../Ui/skinned/translations/skinned_plugin_de.ts | 60 +++++++++++----------- .../Ui/skinned/translations/skinned_plugin_es.ts | 60 +++++++++++----------- .../Ui/skinned/translations/skinned_plugin_hu.ts | 60 +++++++++++----------- .../Ui/skinned/translations/skinned_plugin_it.ts | 60 +++++++++++----------- .../Ui/skinned/translations/skinned_plugin_ja.ts | 60 +++++++++++----------- .../Ui/skinned/translations/skinned_plugin_lt.ts | 60 +++++++++++----------- .../Ui/skinned/translations/skinned_plugin_nl.ts | 60 +++++++++++----------- .../skinned/translations/skinned_plugin_pl_PL.ts | 60 +++++++++++----------- .../skinned/translations/skinned_plugin_pt_BR.ts | 58 ++++++++++----------- .../Ui/skinned/translations/skinned_plugin_ru.ts | 60 +++++++++++----------- .../Ui/skinned/translations/skinned_plugin_sk.ts | 60 +++++++++++----------- .../Ui/skinned/translations/skinned_plugin_tr.ts | 60 +++++++++++----------- .../skinned/translations/skinned_plugin_uk_UA.ts | 60 +++++++++++----------- .../skinned/translations/skinned_plugin_zh_CN.ts | 60 +++++++++++----------- .../skinned/translations/skinned_plugin_zh_TW.ts | 60 +++++++++++----------- src/qmmp/abstractengine.cpp | 8 +-- src/qmmp/abstractengine.h | 14 +---- src/qmmp/decoder.cpp | 21 +++++++- src/qmmp/decoder.h | 17 ++++++ src/qmmp/inputsource.cpp | 18 +++++++ src/qmmp/inputsource.h | 21 +++++++- src/qmmp/qmmpaudioengine.cpp | 12 +++-- src/qmmp/statehandler.cpp | 16 +++--- src/qmmp/statehandler.h | 1 - 35 files changed, 592 insertions(+), 525 deletions(-) diff --git a/src/plugins/Input/cdaudio/decoder_cdaudio.cpp b/src/plugins/Input/cdaudio/decoder_cdaudio.cpp index 017bbfe2e..02cc8f356 100644 --- a/src/plugins/Input/cdaudio/decoder_cdaudio.cpp +++ b/src/plugins/Input/cdaudio/decoder_cdaudio.cpp @@ -404,7 +404,7 @@ bool DecoderCDAudio::initialize() m_first_sector = tracks[track_at].first_sector; m_current_sector = tracks[track_at].first_sector; m_last_sector = tracks[track_at].last_sector; - StateHandler::instance()->dispatch(tracks[track_at].info.metaData()); //send metadata + addMetaData(tracks[track_at].info.metaData()); //send metadata qDebug("DecoderCDAudio: initialize succes"); return true; } diff --git a/src/plugins/Input/cue/decoder_cue.cpp b/src/plugins/Input/cue/decoder_cue.cpp index 0f61bf732..398db08d7 100644 --- a/src/plugins/Input/cue/decoder_cue.cpp +++ b/src/plugins/Input/cue/decoder_cue.cpp @@ -110,7 +110,7 @@ bool DecoderCUE::initialize() m_sz = audioParameters().sampleSize(); - StateHandler::instance()->dispatch(m_parser->info(m_track)->metaData()); + addMetaData(m_parser->info(m_track)->metaData()); return true; } @@ -194,7 +194,7 @@ void DecoderCUE::next() length_in_bytes = audioParameters().sampleRate() * audioParameters().channels() * audioParameters().sampleSize() * m_length/1000; - StateHandler::instance()->dispatch(m_parser->info(m_track)->metaData()); + addMetaData(m_parser->info(m_track)->metaData()); m_totalBytes = 0; } } diff --git a/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp b/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp index a7d22e9cf..743b9456a 100644 --- a/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp +++ b/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp @@ -187,7 +187,7 @@ bool DecoderFFmpeg::initialize() if(track) metaData.insert(Qmmp::TRACK, track->value); metaData.insert(Qmmp::URL, m_path); - StateHandler::instance()->dispatch(metaData); + addMetaData(metaData); } ic->flags |= AVFMT_FLAG_GENPTS; diff --git a/src/plugins/Input/flac/decoder_flac.cpp b/src/plugins/Input/flac/decoder_flac.cpp index 29087e1ae..00b0636aa 100644 --- a/src/plugins/Input/flac/decoder_flac.cpp +++ b/src/plugins/Input/flac/decoder_flac.cpp @@ -301,7 +301,7 @@ bool DecoderFLAC::initialize() data()->input = new QFile(p); data()->input->open(QIODevice::ReadOnly); QMap metaData = m_parser->info(m_track)->metaData(); - StateHandler::instance()->dispatch(metaData); //send metadata + addMetaData(metaData); //send metadata ReplayGainReader rg(p); setReplayGainInfo(rg.replayGainInfo()); } @@ -541,7 +541,7 @@ void DecoderFLAC::next() length_in_bytes = audioParameters().sampleRate() * audioParameters().channels() * audioParameters().sampleSize() * m_length/1000; - StateHandler::instance()->dispatch(m_parser->info(m_track)->metaData()); + addMetaData(m_parser->info(m_track)->metaData()); m_totalBytes = 0; } } diff --git a/src/plugins/Input/gme/decoder_gme.cpp b/src/plugins/Input/gme/decoder_gme.cpp index 81d9cb718..5204d24c5 100644 --- a/src/plugins/Input/gme/decoder_gme.cpp +++ b/src/plugins/Input/gme/decoder_gme.cpp @@ -65,7 +65,7 @@ bool DecoderGme::initialize() metadata.insert(Qmmp::COMMENT, track_info->comment); metadata.insert(Qmmp::TRACK, QString("%1").arg(track)); metadata.insert(Qmmp::URL, m_path); - StateHandler::instance()->dispatch(metadata); + addMetaData(metadata); m_totalTime = track_info->length; gme_free_info(track_info); configure(44100, 2); diff --git a/src/plugins/Input/mad/decoder_mad.cpp b/src/plugins/Input/mad/decoder_mad.cpp index 42f7873ae..00239e0e7 100644 --- a/src/plugins/Input/mad/decoder_mad.cpp +++ b/src/plugins/Input/mad/decoder_mad.cpp @@ -79,7 +79,7 @@ bool DecoderMAD::initialize() { TagExtractor extractor(input()); if(!extractor.id3v2tag().isEmpty()) - StateHandler::instance()->dispatch(extractor.id3v2tag()); + addMetaData(extractor.id3v2tag()); } mad_stream_init(&stream); diff --git a/src/plugins/Input/vorbis/decoder_vorbis.cpp b/src/plugins/Input/vorbis/decoder_vorbis.cpp index 7c87822e3..d1bddb0c9 100644 --- a/src/plugins/Input/vorbis/decoder_vorbis.cpp +++ b/src/plugins/Input/vorbis/decoder_vorbis.cpp @@ -23,7 +23,6 @@ static size_t oggread (void *buf, size_t size, size_t nmemb, void *src) return len / size; } - static int oggseek(void *src, int64_t offset, int whence) { DecoderVorbis *dogg = (DecoderVorbis *) src; @@ -215,7 +214,7 @@ void DecoderVorbis::updateTags() + strlen ("discnumber=")))); } metaData.insert(Qmmp::URL, m_url); - StateHandler::instance()->dispatch(metaData); + addMetaData(metaData); } void DecoderVorbis::seek(qint64 time) diff --git a/src/plugins/Input/wavpack/decoder_wavpack.cpp b/src/plugins/Input/wavpack/decoder_wavpack.cpp index 0c1b2a396..3f410b6f7 100644 --- a/src/plugins/Input/wavpack/decoder_wavpack.cpp +++ b/src/plugins/Input/wavpack/decoder_wavpack.cpp @@ -89,7 +89,7 @@ bool DecoderWavPack::initialize() m_path = p; //send metadata QMap metaData = m_parser->info(m_track)->metaData(); - StateHandler::instance()->dispatch(metaData); + addMetaData(metaData); } } else @@ -240,7 +240,7 @@ void DecoderWavPack::next() length_in_bytes = audioParameters().sampleRate() * audioParameters().channels() * audioParameters().sampleSize() * m_length/1000; - StateHandler::instance()->dispatch(m_parser->info(m_track)->metaData()); + addMetaData(m_parser->info(m_track)->metaData()); m_totalBytes = 0; } } diff --git a/src/plugins/Transports/http/httpstreamreader.cpp b/src/plugins/Transports/http/httpstreamreader.cpp index 3df0c432c..b40f5b09f 100644 --- a/src/plugins/Transports/http/httpstreamreader.cpp +++ b/src/plugins/Transports/http/httpstreamreader.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include "httpstreamreader.h" //curl callbacks @@ -370,7 +371,7 @@ void HttpStreamReader::checkBuffer() metaData.insert(Qmmp::GENRE, m_stream.header.value("icy-genre")); } metaData.insert(Qmmp::URL, m_url); - StateHandler::instance()->dispatch(metaData); + (qobject_cast(parent()))->addMetaData(metaData); } emit ready(); } @@ -447,7 +448,7 @@ void HttpStreamReader::parseICYMetaData(char *data, qint64 size) metaData.insert(Qmmp::TITLE, m_stream.header.value("icy-name")); metaData.insert(Qmmp::GENRE, m_stream.header.value("icy-genre")); metaData.insert(Qmmp::URL, m_url); - StateHandler::instance()->dispatch(metaData); + (qobject_cast(parent()))->addMetaData(metaData); m_meta_sent = true; break; } diff --git a/src/plugins/Transports/mms/mmsstreamreader.cpp b/src/plugins/Transports/mms/mmsstreamreader.cpp index b50450a83..34199f551 100644 --- a/src/plugins/Transports/mms/mmsstreamreader.cpp +++ b/src/plugins/Transports/mms/mmsstreamreader.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include "mmsstreamreader.h" MMSStreamReader::MMSStreamReader(const QString &url, QObject *parent) @@ -196,7 +197,7 @@ void MMSStreamReader::checkBuffer() qDebug("MMSStreamReader: ready"); QMap metaData; metaData.insert(Qmmp::URL, m_url); - StateHandler::instance()->dispatch(metaData); + (qobject_cast(parent()))->addMetaData(metaData); emit ready(); } else if (!m_ready) diff --git a/src/plugins/Ui/skinned/translations/skinned_plugin_cs.ts b/src/plugins/Ui/skinned/translations/skinned_plugin_cs.ts index 7929afb0d..347ddc5a0 100644 --- a/src/plugins/Ui/skinned/translations/skinned_plugin_cs.ts +++ b/src/plugins/Ui/skinned/translations/skinned_plugin_cs.ts @@ -585,132 +585,132 @@ MainVisual - + Visualization Mode Režim vizualizace - + Analyzer Frekvenční analýza - + Scope Osciloskop - + Off Vypnuto - + Analyzer Mode Režim analýzy - + Normal Normální - + Fire Oheň - + Vertical Lines Sloupce - + Lines Úzké - + Bars Široké - + Peaks Špičky - + Refresh Rate Obnovovací frekvence - + 50 fps 50 Hz - + 25 fps 25 Hz - + 10 fps 10 Hz - + 5 fps 5 Hz - + Analyzer Falloff Pokles analyzátoru - - + + Slowest Nejpomalejší - - + + Slow Pomalý - - + + Medium Střední - - + + Fast Rychlý - - + + Fastest Nejrychlejší - + Peaks Falloff Pokles špiček - + Background Pozadí - + Transparent Průhledné diff --git a/src/plugins/Ui/skinned/translations/skinned_plugin_de.ts b/src/plugins/Ui/skinned/translations/skinned_plugin_de.ts index 5f336053e..1fc2e2513 100644 --- a/src/plugins/Ui/skinned/translations/skinned_plugin_de.ts +++ b/src/plugins/Ui/skinned/translations/skinned_plugin_de.ts @@ -585,132 +585,132 @@ MainVisual - + Visualization Mode Visualisierungsmodus - + Analyzer Analyzer - + Scope Oszilloskop - + Off Aus - + Analyzer Mode Analyzer-Modus - + Normal Normal - + Fire Feuer - + Vertical Lines Vertikale Linien - + Lines Linien - + Bars Balken - + Peaks Spitzen - + Refresh Rate Wiederholfrequenz - + 50 fps 50 fps - + 25 fps 25 fps - + 10 fps 10 fps - + 5 fps 5 fps - + Analyzer Falloff Analyzer-Abfall - - + + Slowest Sehr langsam - - + + Slow Langsam - - + + Medium Mittel - - + + Fast Schnell - - + + Fastest Sehr schnell - + Peaks Falloff Abfallen der Spitzen - + Background Hintergrund - + Transparent Transparent diff --git a/src/plugins/Ui/skinned/translations/skinned_plugin_es.ts b/src/plugins/Ui/skinned/translations/skinned_plugin_es.ts index 733e18fab..106d87059 100644 --- a/src/plugins/Ui/skinned/translations/skinned_plugin_es.ts +++ b/src/plugins/Ui/skinned/translations/skinned_plugin_es.ts @@ -585,132 +585,132 @@ MainVisual - + Visualization Mode Modo de visualización - + Analyzer Analizador - + Scope Osciloscopio - + Off Apagado - + Analyzer Mode Modo del analizador - + Normal Normal - + Fire Fuego - + Vertical Lines Líneas verticales - + Lines Líneas - + Bars Barras - + Peaks Picos - + Refresh Rate Velocidad de actualización - + 50 fps 50 fps - + 25 fps 25 fps - + 10 fps 10 fps - + 5 fps 5 fps - + Analyzer Falloff Caída del analizador - - + + Slowest Muy lenta - - + + Slow Lenta - - + + Medium Media - - + + Fast Rápida - - + + Fastest Muy rápida - + Peaks Falloff Caída de picos - + Background Fondo - + Transparent Transparente diff --git a/src/plugins/Ui/skinned/translations/skinned_plugin_hu.ts b/src/plugins/Ui/skinned/translations/skinned_plugin_hu.ts index 26e367453..f7d5935a3 100644 --- a/src/plugins/Ui/skinned/translations/skinned_plugin_hu.ts +++ b/src/plugins/Ui/skinned/translations/skinned_plugin_hu.ts @@ -585,132 +585,132 @@ MainVisual - + Visualization Mode Vizualizációs mód - + Analyzer Analyzer - + Scope Scope - + Off Ki - + Analyzer Mode Analyzer mód - + Normal Hagyományos - + Fire Tűz - + Vertical Lines Függőleges vonalak - + Lines Vonalak - + Bars Csíkok - + Peaks Csúcsok - + Refresh Rate Ráta frissítése - + 50 fps 50 fps - + 25 fps 25 fps - + 10 fps 10 fps - + 5 fps 5 fps - + Analyzer Falloff Analízer esése - - + + Slowest Lassabb - - + + Slow Lassú - - + + Medium Közepes - - + + Fast Gyors - - + + Fastest Gyorsabb - + Peaks Falloff Csúcsok esése - + Background Háttér - + Transparent Átlátszóság diff --git a/src/plugins/Ui/skinned/translations/skinned_plugin_it.ts b/src/plugins/Ui/skinned/translations/skinned_plugin_it.ts index 712309264..b4cdc23fc 100644 --- a/src/plugins/Ui/skinned/translations/skinned_plugin_it.ts +++ b/src/plugins/Ui/skinned/translations/skinned_plugin_it.ts @@ -585,132 +585,132 @@ MainVisual - + Visualization Mode Modo visualizzazione - + Analyzer Analizzatore - + Scope Oscilloscopio - + Off Chiudi - + Analyzer Mode Modo analizzatore - + Normal Normale - + Fire Fuoco - + Vertical Lines Linee verticali - + Lines Linee - + Bars Barre - + Peaks Picchi - + Refresh Rate Velocità di aggiornamento - + 50 fps 50 fps - + 25 fps 25 fps - + 10 fps 10 fps - + 5 fps 5 fps - + Analyzer Falloff Ricaduta analizzatore - - + + Slowest Molto lenta - - + + Slow Lenta - - + + Medium Media - - + + Fast Rapida - - + + Fastest Molto veloce - + Peaks Falloff Ricadua picchi - + Background Sfondo - + Transparent Transparente diff --git a/src/plugins/Ui/skinned/translations/skinned_plugin_ja.ts b/src/plugins/Ui/skinned/translations/skinned_plugin_ja.ts index e957780d3..da1b5d6d7 100644 --- a/src/plugins/Ui/skinned/translations/skinned_plugin_ja.ts +++ b/src/plugins/Ui/skinned/translations/skinned_plugin_ja.ts @@ -585,132 +585,132 @@ MainVisual - + Visualization Mode 視覚効果モード - + Analyzer スペクトルアナライザ - + Scope オシロスコープ - + Off 使わない - + Analyzer Mode アナライザモード - + Normal 通常 - + Fire - + Vertical Lines - + Lines - + Bars - + Peaks ピーク表示 - + Refresh Rate 再描画の頻度 - + 50 fps 50 フレーム毎秒 - + 25 fps 25 フレーム毎秒 - + 10 fps 10 フレーム毎秒 - + 5 fps 5 フレーム毎秒 - + Analyzer Falloff アナライザ減衰速度 - - + + Slowest さらに遅く - - + + Slow 遅く - - + + Medium 適度 - - + + Fast 速く - - + + Fastest さらに速く - + Peaks Falloff ピーク減衰速度 - + Background 背景 - + Transparent 透過させる diff --git a/src/plugins/Ui/skinned/translations/skinned_plugin_lt.ts b/src/plugins/Ui/skinned/translations/skinned_plugin_lt.ts index 45788ee26..24e8e2f8e 100644 --- a/src/plugins/Ui/skinned/translations/skinned_plugin_lt.ts +++ b/src/plugins/Ui/skinned/translations/skinned_plugin_lt.ts @@ -586,132 +586,132 @@ MainVisual - + Visualization Mode Vizualizacijos metodas - + Analyzer Analizatorius - + Scope Scope - + Off Išjungta - + Analyzer Mode Analizatoriaus metodas - + Normal Įprastinis - + Fire Ugnis - + Vertical Lines Vertikalios linijos - + Lines Linijos - + Bars Bangos - + Peaks Pikai - + Refresh Rate Atnaujinimo dažnumas - + 50 fps 50 kps - + 25 fps 25 kps - + 10 fps 10 kps - + 5 fps 5 kps - + Analyzer Falloff Analyzer Falloff - - + + Slowest Lėčiausias - - + + Slow Lėtas - - + + Medium Vidutinis - - + + Fast Greitas - - + + Fastest Greičiausias - + Peaks Falloff Peaks Falloff - + Background Fonas - + Transparent Permatomumas diff --git a/src/plugins/Ui/skinned/translations/skinned_plugin_nl.ts b/src/plugins/Ui/skinned/translations/skinned_plugin_nl.ts index 046c8fd2f..9d2177733 100644 --- a/src/plugins/Ui/skinned/translations/skinned_plugin_nl.ts +++ b/src/plugins/Ui/skinned/translations/skinned_plugin_nl.ts @@ -585,132 +585,132 @@ MainVisual - + Visualization Mode Visualisatiestand - + Analyzer Analysator - + Scope Scoop - + Off Uit - + Analyzer Mode Analysatorstand - + Normal Normaal - + Fire Vuur - + Vertical Lines Verticale Lijnen - + Lines Lijnen - + Bars Strepen - + Peaks Toppen - + Refresh Rate Vernieuw Frequentie - + 50 fps 50 Hz - + 25 fps 25 Hz - + 10 fps 10 Hz - + 5 fps 5 Hz - + Analyzer Falloff Analysator Uitval - - + + Slowest Traagst - - + + Slow Traag - - + + Medium Normaal - - + + Fast Snel - - + + Fastest Snelst - + Peaks Falloff Toppen Uitval - + Background Achtergrond - + Transparent Transparantie diff --git a/src/plugins/Ui/skinned/translations/skinned_plugin_pl_PL.ts b/src/plugins/Ui/skinned/translations/skinned_plugin_pl_PL.ts index 20706b8dc..66eeeeac3 100644 --- a/src/plugins/Ui/skinned/translations/skinned_plugin_pl_PL.ts +++ b/src/plugins/Ui/skinned/translations/skinned_plugin_pl_PL.ts @@ -585,132 +585,132 @@ MainVisual - + Visualization Mode Tryb wizualizacji - + Analyzer Analizator - + Scope - + Off Wyłączone - + Analyzer Mode Tryb Analizatora - + Normal Normalny - + Fire Ogień - + Vertical Lines Pionowe Linie - + Lines Linie - + Bars Słupki - + Peaks Piki - + Refresh Rate Odświeżanie - + 50 fps - + 25 fps - + 10 fps - + 5 fps - + Analyzer Falloff Prędkość Analizatora - - + + Slowest Najwolniej - - + + Slow Wolno - - + + Medium Średnio - - + + Fast Szybko - - + + Fastest Najszybciej - + Peaks Falloff Opadanie Pików - + Background Tło - + Transparent Przezroczystość diff --git a/src/plugins/Ui/skinned/translations/skinned_plugin_pt_BR.ts b/src/plugins/Ui/skinned/translations/skinned_plugin_pt_BR.ts index 9c0d44483..151558b08 100644 --- a/src/plugins/Ui/skinned/translations/skinned_plugin_pt_BR.ts +++ b/src/plugins/Ui/skinned/translations/skinned_plugin_pt_BR.ts @@ -585,132 +585,132 @@ MainVisual - + Visualization Mode - + Analyzer - + Scope - + Off - + Analyzer Mode - + Normal - + Fire - + Vertical Lines - + Lines - + Bars - + Peaks - + Refresh Rate - + 50 fps - + 25 fps - + 10 fps - + 5 fps - + Analyzer Falloff - - - - Slowest - - - Slow + Slowest - Medium + Slow - Fast + Medium + Fast + + + + + Fastest - + Peaks Falloff - + Background - + Transparent diff --git a/src/plugins/Ui/skinned/translations/skinned_plugin_ru.ts b/src/plugins/Ui/skinned/translations/skinned_plugin_ru.ts index ff749eb56..7e28d95c6 100644 --- a/src/plugins/Ui/skinned/translations/skinned_plugin_ru.ts +++ b/src/plugins/Ui/skinned/translations/skinned_plugin_ru.ts @@ -585,132 +585,132 @@ MainVisual - + Visualization Mode Режим визуализации - + Analyzer Анализатор - + Scope Осциллограф - + Off Выключено - + Analyzer Mode Режим анализатора - + Normal Обычный - + Fire Огонь - + Vertical Lines Вертикальные линии - + Lines Линии - + Bars Полоски - + Peaks Пики - + Refresh Rate Частота обновления - + 50 fps - + 25 fps - + 10 fps - + 5 fps - + Analyzer Falloff Падение анализатора - - + + Slowest Самое медленное - - + + Slow Медленное - - + + Medium Среднее - - + + Fast Быстрое - - + + Fastest Самое быстрое - + Peaks Falloff Падение пиков - + Background Фон - + Transparent Прозрачность diff --git a/src/plugins/Ui/skinned/translations/skinned_plugin_sk.ts b/src/plugins/Ui/skinned/translations/skinned_plugin_sk.ts index 97e8b228b..2f453f2a9 100644 --- a/src/plugins/Ui/skinned/translations/skinned_plugin_sk.ts +++ b/src/plugins/Ui/skinned/translations/skinned_plugin_sk.ts @@ -585,132 +585,132 @@ MainVisual - + Visualization Mode Režim vizualizácií - + Analyzer Analyzér - + Scope Osciloskop - + Off Vypnuté - + Analyzer Mode Režim analyzéra - + Normal Normálny - + Fire Oheň - + Vertical Lines Stĺpce - + Lines Čiary - + Bars Prúžky - + Peaks Špičky - + Refresh Rate Obnovovacia frekvencia - + 50 fps 50 fps - + 25 fps 25 fps - + 10 fps 10 fps - + 5 fps 5 fps - + Analyzer Falloff Pokles analyzéra - - + + Slowest Najpomaljšie - - + + Slow Pomaly - - + + Medium Stredne - - + + Fast Rýchlo - - + + Fastest Najrýchlejšie - + Peaks Falloff Pokles špičiek - + Background Pozadie - + Transparent Priehľadné diff --git a/src/plugins/Ui/skinned/translations/skinned_plugin_tr.ts b/src/plugins/Ui/skinned/translations/skinned_plugin_tr.ts index 2024a561a..65559dbee 100644 --- a/src/plugins/Ui/skinned/translations/skinned_plugin_tr.ts +++ b/src/plugins/Ui/skinned/translations/skinned_plugin_tr.ts @@ -585,132 +585,132 @@ MainVisual - + Visualization Mode Görselleştirme Modu - + Analyzer Çözümleyici - + Scope Kapsam - + Off Kapat - + Analyzer Mode Çözümleyici Modu - + Normal Normal - + Fire Ateş - + Vertical Lines Dikey Satırlar - + Lines Satırlar - + Bars Çubuklar - + Peaks Tepeler - + Refresh Rate Tazeleme Oranı - + 50 fps 50 fps - + 25 fps 25 fps - + 10 fps 10 fps - + 5 fps 5 fps - + Analyzer Falloff Çözümleyici Düşüşü - - + + Slowest En yavaş - - + + Slow Yavaş - - + + Medium Orta - - + + Fast Hızlı - - + + Fastest En hızlı - + Peaks Falloff Tepe Düşüşü - + Background Arkaplan - + Transparent Transparan diff --git a/src/plugins/Ui/skinned/translations/skinned_plugin_uk_UA.ts b/src/plugins/Ui/skinned/translations/skinned_plugin_uk_UA.ts index 673ef3853..1bef14bd6 100644 --- a/src/plugins/Ui/skinned/translations/skinned_plugin_uk_UA.ts +++ b/src/plugins/Ui/skinned/translations/skinned_plugin_uk_UA.ts @@ -585,132 +585,132 @@ MainVisual - + Visualization Mode Режим візуалізації - + Analyzer Аналізатор - + Scope Осцилограф - + Off Вимкнено - + Analyzer Mode Режим аналізатора - + Normal Звичайний - + Fire Вогонь - + Vertical Lines Вертикальні лінії - + Lines Лінії - + Bars Смужки - + Peaks Піки - + Refresh Rate Частота оновлення - + 50 fps 50 ф/с - + 25 fps 25 ф/с - + 10 fps 10 ф/с - + 5 fps 5 ф/с - + Analyzer Falloff Падіння аналізатора - - + + Slowest Найповільніше - - + + Slow Повільне - - + + Medium Середнє - - + + Fast Швидке - - + + Fastest Найшвидше - + Peaks Falloff Падіння піків - + Background Тло - + Transparent Прозорість diff --git a/src/plugins/Ui/skinned/translations/skinned_plugin_zh_CN.ts b/src/plugins/Ui/skinned/translations/skinned_plugin_zh_CN.ts index 0c5b8f8ad..e538523ff 100644 --- a/src/plugins/Ui/skinned/translations/skinned_plugin_zh_CN.ts +++ b/src/plugins/Ui/skinned/translations/skinned_plugin_zh_CN.ts @@ -585,132 +585,132 @@ MainVisual - + Visualization Mode 可视化模式 - + Analyzer 分析器 - + Scope 示波器 - + Off 关闭 - + Analyzer Mode 分析模式 - + Normal 标准 - + Fire 火花 - + Vertical Lines 垂直线 - + Lines 线形 - + Bars 条形 - + Peaks 峰值 - + Refresh Rate 刷新率 - + 50 fps 50 fps - + 25 fps 25 fps - + 10 fps 10 fps - + 5 fps 5 fps - + Analyzer Falloff 分析器下降速度 - - + + Slowest 最慢 - - + + Slow - - + + Medium - - + + Fast - - + + Fastest 最快 - + Peaks Falloff 峰值下降速度 - + Background 背景 - + Transparent 透明 diff --git a/src/plugins/Ui/skinned/translations/skinned_plugin_zh_TW.ts b/src/plugins/Ui/skinned/translations/skinned_plugin_zh_TW.ts index 742bfae96..cc1221064 100644 --- a/src/plugins/Ui/skinned/translations/skinned_plugin_zh_TW.ts +++ b/src/plugins/Ui/skinned/translations/skinned_plugin_zh_TW.ts @@ -585,132 +585,132 @@ MainVisual - + Visualization Mode 可視化型態 - + Analyzer 解析器 - + Scope 示波器 - + Off 關閉 - + Analyzer Mode 解析型態 - + Normal 標準 - + Fire 火花 - + Vertical Lines 垂直線 - + Lines 線形 - + Bars 條形 - + Peaks 峰值 - + Refresh Rate 刷新率 - + 50 fps 50 fps - + 25 fps 25 fps - + 10 fps 10 fps - + 5 fps 5 fps - + Analyzer Falloff 解析器下降速度 - - + + Slowest 最慢 - - + + Slow - - + + Medium - - + + Fast - - + + Fastest 最快 - + Peaks Falloff 峰值下降速度 - + Background 背景 - + Transparent 透明 diff --git a/src/qmmp/abstractengine.cpp b/src/qmmp/abstractengine.cpp index bf452756e..b5691ac2e 100644 --- a/src/qmmp/abstractengine.cpp +++ b/src/qmmp/abstractengine.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009 by Ilya Kotov * + * Copyright (C) 2009-2011 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -24,6 +24,7 @@ #include #include "enginefactory.h" #include "qmmpaudioengine_p.h" +#include "statehandler.h" #include "qmmp.h" #include "abstractengine.h" @@ -36,11 +37,6 @@ QMutex *AbstractEngine::mutex() return &m_mutex; } -/*QWaitCondition *AbstractEngine::cond() -{ - return &m_waitCondition; -}*/ - // static methods QList *AbstractEngine::m_factories = 0; QList *AbstractEngine::m_disabledFactories = 0; diff --git a/src/qmmp/abstractengine.h b/src/qmmp/abstractengine.h index a08a0c62d..7c81d0048 100644 --- a/src/qmmp/abstractengine.h +++ b/src/qmmp/abstractengine.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009-2010 by Ilya Kotov * + * Copyright (C) 2009-2011 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -75,10 +75,6 @@ public: * Returns mutex pointer. */ QMutex *mutex(); - /*! - * Returns wait condition pointer. - */ - //QWaitCondition *cond(); /*! * Creates Engine object. * @param s InputSource object. @@ -115,16 +111,8 @@ public: */ static QStringList protocols(); -signals: - /*! - * Emitted when the decoder has finished playback. - */ - //void playbackFinished(); - private: QMutex m_mutex; - //QWaitCondition m_waitCondition; - static void checkFactories(); static QList *m_factories; static QList *m_disabledFactories; diff --git a/src/qmmp/decoder.cpp b/src/qmmp/decoder.cpp index 81960a0e7..54dfbc20c 100644 --- a/src/qmmp/decoder.cpp +++ b/src/qmmp/decoder.cpp @@ -27,7 +27,9 @@ extern "C" #include "decoder.h" Decoder::Decoder(QIODevice *input) : m_input(input) -{} +{ + m_hasMetaData = false; +} Decoder::~Decoder() {} @@ -60,11 +62,28 @@ QMap Decoder::replayGainInfo() const return m_rg; } +void Decoder::addMetaData(const QMap &metaData) +{ + m_metaData = metaData; + m_hasMetaData = true; +} + QIODevice *Decoder::input() { return m_input; } +bool Decoder::hasMetaData() const +{ + return m_hasMetaData; +} + +QMap Decoder::takeMetaData() +{ + m_hasMetaData = false; + return m_metaData; +} + // static methods QList *Decoder::m_factories = 0; QList *Decoder::m_disabledFactories = 0; diff --git a/src/qmmp/decoder.h b/src/qmmp/decoder.h index 13f78913c..729580ebf 100644 --- a/src/qmmp/decoder.h +++ b/src/qmmp/decoder.h @@ -91,6 +91,21 @@ public: * Returns QIODevice-based input source assigned for this decoder. */ QIODevice *input(); + /*! + * Informs decoder about new received metadata. + * Call of this function is required for all non-local streams/files + * @param metaData Metadata map. + */ + void addMetaData(const QMap &metaData); + /*! + * Returns \b true when new metadata has received, otherwise returns \b false. + */ + bool hasMetaData() const; + /*! + * Takes metadata out of decoder and returns it. + * Attention: hasMetaData() should return \b true before use of this fuction. + */ + QMap takeMetaData(); /*! * Returns DecoderFactory pointer which supports file \b path or 0 if file \b path is unsupported */ @@ -150,6 +165,8 @@ private: static QStringList m_files; AudioParameters m_parameters; QIODevice *m_input; + bool m_hasMetaData; + QMap m_metaData; QMap m_rg; //replay gain information }; diff --git a/src/qmmp/inputsource.cpp b/src/qmmp/inputsource.cpp index 8d1a93a08..2baa0ac32 100644 --- a/src/qmmp/inputsource.cpp +++ b/src/qmmp/inputsource.cpp @@ -31,6 +31,7 @@ InputSource::InputSource(const QString &source, QObject *parent) : QObject(paren { m_url = source; m_offset = -1; + m_hasMetaData = false; } QString InputSource::contentType() const @@ -52,6 +53,23 @@ void InputSource::setOffset(qint64 offset) m_offset = offset; } +bool InputSource::hasMetaData() const +{ + return m_hasMetaData; +} + +QMap InputSource::takeMetaData() +{ + m_hasMetaData = false; + return m_metaData; +} + +void InputSource::addMetaData(const QMap &metaData) +{ + m_metaData = metaData; + m_hasMetaData = true; +} + // static methods QList *InputSource::m_factories = 0; QStringList InputSource::m_files; diff --git a/src/qmmp/inputsource.h b/src/qmmp/inputsource.h index efd50a5ae..583bb9ded 100644 --- a/src/qmmp/inputsource.h +++ b/src/qmmp/inputsource.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009-2010 by Ilya Kotov * + * Copyright (C) 2009-2011 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -25,6 +25,8 @@ #include #include #include +#include +#include "qmmp.h" #include "inputsourcefactory.h" /*! @brief The InputSource class provides the base interface class of transports. @@ -70,6 +72,21 @@ public: * Sets start position to \b offset ms. */ void setOffset(qint64 offset); + /*! + * Informs input source object about new received metadata. + * Call of this function is required for all non-local streams/files + * @param metaData Metadata map. + */ + void addMetaData(const QMap &metaData); + /*! + * Returns \b true when new metadata has received, otherwise returns \b false. + */ + bool hasMetaData() const; + /*! + * Takes metadata out of decoder and returns it. + * Attention: hasMetaData() should return \b true before use of this fuction. + */ + QMap takeMetaData(); /*! * Creates InputSource object. * @param url Input source path or url. @@ -103,6 +120,8 @@ signals: private: QString m_url; qint64 m_offset; + QMap m_metaData; + bool m_hasMetaData; static void checkFactories(); static QList *m_factories; static QStringList m_files; diff --git a/src/qmmp/qmmpaudioengine.cpp b/src/qmmp/qmmpaudioengine.cpp index 7c1b6042b..abce71842 100644 --- a/src/qmmp/qmmpaudioengine.cpp +++ b/src/qmmp/qmmpaudioengine.cpp @@ -324,13 +324,13 @@ void QmmpAudioEngine::run() m_replayGain->setReplayGainInfo(m_decoder->replayGainInfo()); mutex()->unlock(); m_output->start(); + StateHandler::instance()->dispatch(Qmmp::Playing); sendMetaData(); while (! m_done && ! m_finish) { mutex()->lock (); - // decode - + //seek if (m_seekTime >= 0) { m_decoder->seek(m_seekTime); @@ -340,7 +340,12 @@ void QmmpAudioEngine::run() m_output->recycler()->mutex()->unlock (); m_output_at = 0; } - + //metadata + if(m_decoder->hasMetaData()) + StateHandler::instance()->dispatch(m_decoder->takeMetaData()); + if(m_inputs[m_decoder]->hasMetaData()) + StateHandler::instance()->dispatch(m_inputs[m_decoder]->takeMetaData()); + // decode len = m_decoder->read((char *)(m_output_buf + m_output_at), m_output_size - m_output_at); if (len > 0) @@ -403,6 +408,7 @@ void QmmpAudioEngine::run() if(m_output) { m_output->start(); + StateHandler::instance()->dispatch(Qmmp::Playing); sendMetaData(); addOffset(); //offset continue; diff --git a/src/qmmp/statehandler.cpp b/src/qmmp/statehandler.cpp index fca37893b..aaaeee2d3 100644 --- a/src/qmmp/statehandler.cpp +++ b/src/qmmp/statehandler.cpp @@ -108,8 +108,14 @@ void StateHandler::dispatch(const QMap &metaData) m_mutex.unlock(); return; } - if (m_state == Qmmp::Playing && - (m_metaData.isEmpty() || m_metaData.value(Qmmp::URL) == metaData.value(Qmmp::URL))) + if(m_state != Qmmp::Playing && m_state != Qmmp::Paused) + { + qWarning("StateHandler: metadata is ignored"); + m_mutex.unlock(); + return; + } + + if(m_metaData.isEmpty() || m_metaData.value(Qmmp::URL) == metaData.value(Qmmp::URL)) { if (m_metaData != tmp) { @@ -117,8 +123,6 @@ void StateHandler::dispatch(const QMap &metaData) qApp->postEvent(parent(), new MetaDataChangedEvent(m_metaData)); } } - else - m_cachedMetaData = tmp; m_mutex.unlock(); } @@ -148,13 +152,13 @@ void StateHandler::dispatch(Qmmp::State state) m_state = state; qApp->postEvent(parent(), new StateChangedEvent(m_state, prevState)); - if(m_state == Qmmp::Playing && !m_cachedMetaData.isEmpty()) + /*if(m_state == Qmmp::Playing && !m_cachedMetaData.isEmpty()) { m_mutex.unlock(); dispatch(m_cachedMetaData); m_mutex.lock(); m_cachedMetaData.clear(); - } + }*/ } m_mutex.unlock(); } diff --git a/src/qmmp/statehandler.h b/src/qmmp/statehandler.h index 9c8d2fd89..c54dcf80e 100644 --- a/src/qmmp/statehandler.h +++ b/src/qmmp/statehandler.h @@ -142,7 +142,6 @@ private: int m_bitrate, m_precision, m_channels; static StateHandler* m_instance; QMap m_metaData; - QMap m_cachedMetaData; Qmmp::State m_state; QMutex m_mutex; }; -- cgit v1.2.3-13-gbd6f