diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-01-16 15:33:17 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-01-16 15:33:17 +0000 |
| commit | 435f1da1de18bafe57e43e47fd8a6fc69fd8bab7 (patch) | |
| tree | e332293971b3b3883685b79c62bcd50bf2f49c12 /src/plugins/Input | |
| parent | 2fa169a585994ceb40db55405f46783d06820947 (diff) | |
| download | qmmp-435f1da1de18bafe57e43e47fd8a6fc69fd8bab7.tar.gz qmmp-435f1da1de18bafe57e43e47fd8a6fc69fd8bab7.tar.bz2 qmmp-435f1da1de18bafe57e43e47fd8a6fc69fd8bab7.zip | |
updated audio engine
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1503 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input')
23 files changed, 125 insertions, 97 deletions
diff --git a/src/plugins/Input/aac/decoder_aac.cpp b/src/plugins/Input/aac/decoder_aac.cpp index fef00a206..6b65685f1 100644 --- a/src/plugins/Input/aac/decoder_aac.cpp +++ b/src/plugins/Input/aac/decoder_aac.cpp @@ -142,7 +142,7 @@ bool DecoderAAC::initialize() memmove(m_input_buf, m_input_buf + res, m_input_at - res); m_input_at -= res; - configure(freq, chan, 16); + configure(freq, chan, Qmmp::PCM_S16LE); qDebug("DecoderAAC: initialize succes"); return TRUE; } diff --git a/src/plugins/Input/cdaudio/decoder_cdaudio.cpp b/src/plugins/Input/cdaudio/decoder_cdaudio.cpp index 6fa6e2e02..201d6ff63 100644 --- a/src/plugins/Input/cdaudio/decoder_cdaudio.cpp +++ b/src/plugins/Input/cdaudio/decoder_cdaudio.cpp @@ -251,7 +251,7 @@ bool DecoderCDAudio::initialize() } qDebug("DecoderCDAudio: using cd audio capable drive \"%s\"", QUrl(m_url).path().toAscii().constData()); } - configure(44100, 2, 16); + configure(44100, 2, Qmmp::PCM_S16LE); m_bitrate = 1411; m_totalTime = tracks[track_at].info.length() * 1000; m_first_sector = tracks[track_at].first_sector; diff --git a/src/plugins/Input/cdaudio/decodercdaudiofactory.cpp b/src/plugins/Input/cdaudio/decodercdaudiofactory.cpp index 2e1b3d00f..ae88ea6e6 100644 --- a/src/plugins/Input/cdaudio/decodercdaudiofactory.cpp +++ b/src/plugins/Input/cdaudio/decodercdaudiofactory.cpp @@ -58,11 +58,14 @@ Decoder *DecoderCDAudioFactory::create(const QString &url, QIODevice *input) QList<FileInfo *> DecoderCDAudioFactory::createPlayList(const QString &fileName, bool useMetaData) { + qDebug("create!!"); Q_UNUSED(useMetaData); QList <FileInfo*> list; QList <CDATrack> tracks = DecoderCDAudio::generateTrackList(QUrl(fileName).path()); foreach(CDATrack t, tracks) - list << new FileInfo(t.info); + { + list << new FileInfo(t.info); + } return list; } diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_cs.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_cs.ts index 7c6ea1d30..26681d3a9 100644 --- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_cs.ts +++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_cs.ts @@ -9,27 +9,27 @@ <translation>Modul pro zvuková CD</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="84"/> + <location filename="../decodercdaudiofactory.cpp" line="87"/> <source>About CD Audio Plugin</source> <translation>O modulu pro zvuková CD</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="85"/> + <location filename="../decodercdaudiofactory.cpp" line="88"/> <source>Qmmp CD Audio Plugin</source> <translation>Modul Qmmp pro zvuková CD</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="87"/> + <location filename="../decodercdaudiofactory.cpp" line="90"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Autor: Ilja Kotov <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="88"/> + <location filename="../decodercdaudiofactory.cpp" line="91"/> <source>Usage: open cdda:/// using Add URL dialog or command line</source> <translation>Použití: otevřete cdda:/// v dialogu Přidat URL nebo z příkazové řádky</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="86"/> + <location filename="../decodercdaudiofactory.cpp" line="89"/> <source>Compiled against libcdio version:</source> <translation>Přeloženo s libcdio verze:</translation> </message> diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_de.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_de.ts index 3fed87e02..9ed0049af 100644 --- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_de.ts +++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_de.ts @@ -9,27 +9,27 @@ <translation>CD-Audio-Modul</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="84"/> + <location filename="../decodercdaudiofactory.cpp" line="87"/> <source>About CD Audio Plugin</source> <translation>Über CD-Audio-Modul</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="85"/> + <location filename="../decodercdaudiofactory.cpp" line="88"/> <source>Qmmp CD Audio Plugin</source> <translation>Qmmp CD-Audio-Modul</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="87"/> + <location filename="../decodercdaudiofactory.cpp" line="90"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Autor: Ilya Kotov <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="88"/> + <location filename="../decodercdaudiofactory.cpp" line="91"/> <source>Usage: open cdda:/// using Add URL dialog or command line</source> <translation>Verwendung: Geben Sie cdda:/// in den „URL hinzufügen“-Dialog oder in die Befehlszeile ein</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="86"/> + <location filename="../decodercdaudiofactory.cpp" line="89"/> <source>Compiled against libcdio version:</source> <translation>Kompiliert gegen libcdio-Version:</translation> </message> diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_it.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_it.ts index dede31eb3..95e211c92 100644 --- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_it.ts +++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_it.ts @@ -9,27 +9,27 @@ <translation>Modulo CD-Audio</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="84"/> + <location filename="../decodercdaudiofactory.cpp" line="87"/> <source>About CD Audio Plugin</source> <translation>Informazioni sul modulo CD-Audio</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="85"/> + <location filename="../decodercdaudiofactory.cpp" line="88"/> <source>Qmmp CD Audio Plugin</source> <translation>Modulo CD-Audio per Qmmp</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="87"/> + <location filename="../decodercdaudiofactory.cpp" line="90"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Autore: Ilya Kotov <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="88"/> + <location filename="../decodercdaudiofactory.cpp" line="91"/> <source>Usage: open cdda:/// using Add URL dialog or command line</source> <translation>Uso: aprire cdda:// nella finestra di dialgo degli URL, o via linea di comando</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="86"/> + <location filename="../decodercdaudiofactory.cpp" line="89"/> <source>Compiled against libcdio version:</source> <translation>Compilato con libcdio, versione:</translation> </message> diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_lt.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_lt.ts index 270d9d579..47655c182 100644 --- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_lt.ts +++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_lt.ts @@ -9,27 +9,27 @@ <translation>CD Audio Įskiepis</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="84"/> + <location filename="../decodercdaudiofactory.cpp" line="87"/> <source>About CD Audio Plugin</source> <translation>Apie CD Audio įskiepį</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="85"/> + <location filename="../decodercdaudiofactory.cpp" line="88"/> <source>Qmmp CD Audio Plugin</source> <translation>Apie CD Audio Qmmp įskiepį</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="87"/> + <location filename="../decodercdaudiofactory.cpp" line="90"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Sukūrė: Ilya Kotov <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="88"/> + <location filename="../decodercdaudiofactory.cpp" line="91"/> <source>Usage: open cdda:/// using Add URL dialog or command line</source> <translation>Naudojimas: atverti cdda:/// naudojant Prideti interneto adresą arba komandinė eilutę</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="86"/> + <location filename="../decodercdaudiofactory.cpp" line="89"/> <source>Compiled against libcdio version:</source> <translation>Surinkta iš libcdio versijos :</translation> </message> diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_pl.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_pl.ts index 61049c20b..7cd11622d 100644 --- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_pl.ts +++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_pl.ts @@ -9,27 +9,27 @@ <translation>Wtyczka CD Audio</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="84"/> + <location filename="../decodercdaudiofactory.cpp" line="87"/> <source>About CD Audio Plugin</source> <translation>O wtyczce CD Audio</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="85"/> + <location filename="../decodercdaudiofactory.cpp" line="88"/> <source>Qmmp CD Audio Plugin</source> <translation>Wtyczka CD Audio dla Qmmp</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="86"/> + <location filename="../decodercdaudiofactory.cpp" line="89"/> <source>Compiled against libcdio version:</source> <translation>Skompilowane przy użyciu biblioteki libcdio w wersji:</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="87"/> + <location filename="../decodercdaudiofactory.cpp" line="90"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Autor: Ilya Kotov <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="88"/> + <location filename="../decodercdaudiofactory.cpp" line="91"/> <source>Usage: open cdda:/// using Add URL dialog or command line</source> <translation>Instrukcja: otwórz cdda:/// używając Dodaj URL lib z linii poleceń</translation> </message> diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_ru.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_ru.ts index 488bba2d1..d100fdb97 100644 --- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_ru.ts +++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_ru.ts @@ -9,27 +9,27 @@ <translation>Модуль CD Audio</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="84"/> + <location filename="../decodercdaudiofactory.cpp" line="87"/> <source>About CD Audio Plugin</source> <translation>О Модуле CD Audio</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="85"/> + <location filename="../decodercdaudiofactory.cpp" line="88"/> <source>Qmmp CD Audio Plugin</source> <translation>Модуль CD Audio для Qmmp</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="87"/> + <location filename="../decodercdaudiofactory.cpp" line="90"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Разработчик: Илья Котов <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="88"/> + <location filename="../decodercdaudiofactory.cpp" line="91"/> <source>Usage: open cdda:/// using Add URL dialog or command line</source> <translation>Использование: откройте cdda:/// с помощью диалога добавления URL или командной строки</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="86"/> + <location filename="../decodercdaudiofactory.cpp" line="89"/> <source>Compiled against libcdio version:</source> <translation>Собрано с libcdio версии:</translation> </message> diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_tr.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_tr.ts index 7a04a718d..a9803ab79 100644 --- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_tr.ts +++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_tr.ts @@ -9,27 +9,27 @@ <translation>CD Ses Eklentisi</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="84"/> + <location filename="../decodercdaudiofactory.cpp" line="87"/> <source>About CD Audio Plugin</source> <translation>CD Ses Eklentisi Hakkında</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="85"/> + <location filename="../decodercdaudiofactory.cpp" line="88"/> <source>Qmmp CD Audio Plugin</source> <translation>Qmmp CD Ses Eklentisi</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="86"/> + <location filename="../decodercdaudiofactory.cpp" line="89"/> <source>Compiled against libcdio version:</source> <translation>Derlendiği libcdio sürümü:</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="87"/> + <location filename="../decodercdaudiofactory.cpp" line="90"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Yazan: Ilya Kotov <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="88"/> + <location filename="../decodercdaudiofactory.cpp" line="91"/> <source>Usage: open cdda:/// using Add URL dialog or command line</source> <translation>Kullanımı: komut satırından veya URL Ekle diyaloğundan open cdda:/// şeklindedir</translation> </message> diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_uk_UA.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_uk_UA.ts index b0506d4dc..847b09aca 100644 --- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_uk_UA.ts +++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_uk_UA.ts @@ -9,27 +9,27 @@ <translation>Модуль AudioCD</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="84"/> + <location filename="../decodercdaudiofactory.cpp" line="87"/> <source>About CD Audio Plugin</source> <translation>Про модуль AudioCD</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="85"/> + <location filename="../decodercdaudiofactory.cpp" line="88"/> <source>Qmmp CD Audio Plugin</source> <translation>Модуль AudioCD для Qmmp</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="87"/> + <location filename="../decodercdaudiofactory.cpp" line="90"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Розробник: Ілля Котов <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="88"/> + <location filename="../decodercdaudiofactory.cpp" line="91"/> <source>Usage: open cdda:/// using Add URL dialog or command line</source> <translation>Використання: відкрийте cdda:/// використовуючи діалог "Додати адресу" чи командний рядок</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="86"/> + <location filename="../decodercdaudiofactory.cpp" line="89"/> <source>Compiled against libcdio version:</source> <translation>Зібрано з libcdio версії:</translation> </message> diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_CN.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_CN.ts index 806ecb21e..b4e9a5aad 100644 --- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_CN.ts +++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_CN.ts @@ -9,27 +9,27 @@ <translation>CD 音频插件</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="84"/> + <location filename="../decodercdaudiofactory.cpp" line="87"/> <source>About CD Audio Plugin</source> <translation>关于 CD 音频插件</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="85"/> + <location filename="../decodercdaudiofactory.cpp" line="88"/> <source>Qmmp CD Audio Plugin</source> <translation>Qmmp CD 音频插件</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="87"/> + <location filename="../decodercdaudiofactory.cpp" line="90"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>作者:Ilya Kotov <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="88"/> + <location filename="../decodercdaudiofactory.cpp" line="91"/> <source>Usage: open cdda:/// using Add URL dialog or command line</source> <translation>用法:open cdda:/// 使用添加 URL 对话或命令行</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="86"/> + <location filename="../decodercdaudiofactory.cpp" line="89"/> <source>Compiled against libcdio version:</source> <translation>编译依赖 libcdio 版本:</translation> </message> diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_TW.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_TW.ts index 0b4f60b65..c6e7c7af8 100644 --- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_TW.ts +++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_TW.ts @@ -9,27 +9,27 @@ <translation>CD 聲訊插件</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="84"/> + <location filename="../decodercdaudiofactory.cpp" line="87"/> <source>About CD Audio Plugin</source> <translation>關於 CD 聲訊插件</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="85"/> + <location filename="../decodercdaudiofactory.cpp" line="88"/> <source>Qmmp CD Audio Plugin</source> <translation>Qmmp CD 聲訊插件</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="87"/> + <location filename="../decodercdaudiofactory.cpp" line="90"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>作者:Ilya Kotov <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="88"/> + <location filename="../decodercdaudiofactory.cpp" line="91"/> <source>Usage: open cdda:/// using Add URL dialog or command line</source> <translation>用法:open cdda:/// 使用添加 URL會話或命令行</translation> </message> <message> - <location filename="../decodercdaudiofactory.cpp" line="86"/> + <location filename="../decodercdaudiofactory.cpp" line="89"/> <source>Compiled against libcdio version:</source> <translation>編譯依賴 libcdio 版本:</translation> </message> diff --git a/src/plugins/Input/cue/decoder_cue.cpp b/src/plugins/Input/cue/decoder_cue.cpp index f5cb53929..238134873 100644 --- a/src/plugins/Input/cue/decoder_cue.cpp +++ b/src/plugins/Input/cue/decoder_cue.cpp @@ -105,14 +105,14 @@ bool DecoderCUE::initialize() configure(m_decoder->audioParameters().sampleRate(), m_decoder->audioParameters().channels(), - m_decoder->audioParameters().bits()); + m_decoder->audioParameters().format()); setReplayGainInfo(m_decoder->replayGainInfo()); length_in_bytes = audioParameters().sampleRate() * audioParameters().channels() * - audioParameters().bits() * m_length/8000; + audioParameters().format() * m_length/8000; m_totalBytes = 0; - m_sz = audioParameters().bits() * audioParameters().channels()/8; + m_sz = audioParameters().sampleSize(); StateHandler::instance()->dispatch(m_parser->info(m_track)->metaData()); return TRUE; @@ -128,7 +128,7 @@ void DecoderCUE::seek(qint64 pos) m_decoder->seek(m_offset + pos); m_totalBytes = audioParameters().sampleRate() * audioParameters().channels() * - audioParameters().bits() * pos/8000; + audioParameters().sampleSize() * pos/1000; } qint64 DecoderCUE::read(char *data, qint64 size) @@ -197,7 +197,7 @@ void DecoderCUE::next() m_offset = m_parser->offset(m_track); length_in_bytes = audioParameters().sampleRate() * audioParameters().channels() * - audioParameters().bits() * m_length/8000; + audioParameters().sampleSize() * m_length/1000; StateHandler::instance()->dispatch(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 4ec673839..28b7134d9 100644 --- a/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp +++ b/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp @@ -169,8 +169,8 @@ bool DecoderFFmpeg::initialize() return FALSE; } m_totalTime = input()->isSequential() ? 0 : ic->duration * 1000 / AV_TIME_BASE; - m_output_buf = new uint8_t[AVCODEC_MAX_AUDIO_FRAME_SIZE*sizeof(int16_t) + Qmmp::globalBufferSize()]; - configure(c->sample_rate, c->channels, 16); + m_output_buf = new uint8_t[AVCODEC_MAX_AUDIO_FRAME_SIZE*sizeof(int16_t) + QMMP_BUFFER_SIZE]; + configure(c->sample_rate, c->channels, Qmmp::PCM_S16LE); m_bitrate = c->bit_rate; qDebug("DecoderFFmpeg: initialize succes"); return TRUE; diff --git a/src/plugins/Input/flac/decoder_flac.cpp b/src/plugins/Input/flac/decoder_flac.cpp index 51ee170f7..50f679956 100644 --- a/src/plugins/Input/flac/decoder_flac.cpp +++ b/src/plugins/Input/flac/decoder_flac.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2009 by Ilya Kotov * + * Copyright (C) 2006-2010 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -28,17 +28,15 @@ #include <taglib/flacfile.h> #include <taglib/xiphcomment.h> #include <taglib/tmap.h> - #include <qmmp/buffer.h> #include <qmmp/output.h> #include <qmmp/recycler.h> #include <qmmp/statehandler.h> - #include <QObject> #include <QFile> #include <QIODevice> #include <FLAC/all.h> - +#include "replaygainreader.h" #include "cueparser.h" #include "decoder_flac.h" @@ -56,11 +54,10 @@ static size_t pack_pcm_signed (FLAC__byte *data, unsigned bytes_per_sample; unsigned incr; - if (bps == 24) - bps = 32; /* we encode to 32-bit words */ + if(bps == 24) // we encode to 32-bit words + bps = 32; bytes_per_sample = bps / 8; incr = bytes_per_sample * channels; - for (channel = 0; channel < channels; channel++) { samples = wide_samples; @@ -77,21 +74,18 @@ static size_t pack_pcm_signed (FLAC__byte *data, data[0] = sample; break; case 16: - data[1] = (FLAC__byte)(sample >> 8); - data[0] = (FLAC__byte)sample; + data[1] = (FLAC__byte)(sample >> 8) & 0xff; + data[0] = (FLAC__byte)sample & 0xff; break; case 32: - data[3] = (FLAC__byte)(sample >> 16); - data[2] = (FLAC__byte)(sample >> 8); - data[1] = (FLAC__byte)sample; + data[3] = (FLAC__byte)(sample >> 16) & 0xff; + data[2] = (FLAC__byte)(sample >> 8) & 0xff; + data[1] = (FLAC__byte)sample & 0xff; data[0] = 0; - break; } - data += incr; } } - return wide_samples * channels * bytes_per_sample; } @@ -324,6 +318,8 @@ bool DecoderFLAC::initialize() data()->input->open(QIODevice::ReadOnly); QMap<Qmmp::MetaData, QString> metaData = m_parser->info(m_track)->metaData(); StateHandler::instance()->dispatch(metaData); //send metadata + ReplayGainReader rg(p); + setReplayGainInfo(rg.replayGainInfo()); } else { @@ -376,10 +372,26 @@ bool DecoderFLAC::initialize() data()->ok = 0; return FALSE; } - if (data()->bits_per_sample == 24) - configure(data()->sample_rate, data()->channels, 32); - else - configure(data()->sample_rate, data()->channels, data()->bits_per_sample); + switch(data()->bits_per_sample) + { + case 8: + configure(data()->sample_rate, data()->channels, Qmmp::PCM_S8); + break; + case 16: + configure(data()->sample_rate, data()->channels, Qmmp::PCM_S16LE); + break; + case 24: + case 32: + configure(data()->sample_rate, data()->channels, Qmmp::PCM_S32LE); + break; + default: + return FALSE; + } + if(!m_path.contains("://")) + { + ReplayGainReader rg(m_path); + setReplayGainInfo(rg.replayGainInfo()); + } if(m_parser) { @@ -387,11 +399,11 @@ bool DecoderFLAC::initialize() m_offset = m_parser->offset(m_track); length_in_bytes = audioParameters().sampleRate() * audioParameters().channels() * - audioParameters().bits() * m_length/8000; + audioParameters().sampleSize() * m_length/1000; seek(0); } m_totalBytes = 0; - m_sz = audioParameters().bits() * audioParameters().channels()/8; + m_sz = audioParameters().sampleSize() * audioParameters().channels(); qDebug("DecoderFLAC: initialize succes"); return TRUE; @@ -413,7 +425,7 @@ void DecoderFLAC::seek(qint64 time) { m_totalBytes = audioParameters().sampleRate() * audioParameters().channels() * - audioParameters().bits() * time/8000; + audioParameters().sampleSize() * time/1000; if(m_parser) time += m_offset; FLAC__uint64 target_sample = FLAC__uint64(time * data()->total_samples /data()->length); @@ -502,7 +514,7 @@ void DecoderFLAC::next() m_length = m_parser->length(m_track); length_in_bytes = audioParameters().sampleRate() * audioParameters().channels() * - audioParameters().bits() * m_length/8000; + audioParameters().sampleSize() * m_length/1000; StateHandler::instance()->dispatch(m_parser->info(m_track)->metaData()); m_totalBytes = 0; } diff --git a/src/plugins/Input/mad/decoder_mad.cpp b/src/plugins/Input/mad/decoder_mad.cpp index 1e4fea68f..7ae79a580 100644 --- a/src/plugins/Input/mad/decoder_mad.cpp +++ b/src/plugins/Input/mad/decoder_mad.cpp @@ -96,7 +96,7 @@ bool DecoderMAD::initialize() mad_frame_mute (&frame); stream.next_frame = 0; stream.sync = 0; - configure(m_freq, m_channels, 16); + configure(m_freq, m_channels, Qmmp::PCM_S16LE); m_inited = TRUE; return TRUE; } diff --git a/src/plugins/Input/mad/settingsdialog.h b/src/plugins/Input/mad/settingsdialog.h index 2ad1ed188..dd1279728 100644 --- a/src/plugins/Input/mad/settingsdialog.h +++ b/src/plugins/Input/mad/settingsdialog.h @@ -1,6 +1,6 @@ /*************************************************************************** - * Copyright (C) 2006 by Ilya Kotov * - * forkotov02@hotmail.ru * + * Copyright (C) 2009 by Ilya Kotov * + * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * diff --git a/src/plugins/Input/modplug/decoder_modplug.cpp b/src/plugins/Input/modplug/decoder_modplug.cpp index b2f6866e5..6a9acb581 100644 --- a/src/plugins/Input/modplug/decoder_modplug.cpp +++ b/src/plugins/Input/modplug/decoder_modplug.cpp @@ -95,7 +95,7 @@ bool DecoderModPlug::initialize() m_soundFile->Create((uchar*) m_input_buf.data(), m_input_buf.size()); m_bitrate = m_soundFile->GetNumChannels(); m_totalTime = (qint64) m_soundFile->GetSongTime() * 1000; - configure(m_freq, m_chan, m_bps); + configure(m_freq, m_chan, (m_bps == 8 ? Qmmp::PCM_S8 : Qmmp::PCM_S16LE)); return TRUE; } @@ -111,7 +111,7 @@ int DecoderModPlug::bitrate() qint64 DecoderModPlug::read(char *audio, qint64 maxSize) { - long len = m_soundFile->Read (audio, qMin((qint64)Buffer::size(), maxSize)) * m_sampleSize; + long len = m_soundFile->Read (audio, qMin((qint64)QMMP_BLOCK_SIZE, maxSize)) * m_sampleSize; if (m_usePreamp) { { diff --git a/src/plugins/Input/mpc/decoder_mpc.cpp b/src/plugins/Input/mpc/decoder_mpc.cpp index b093b6910..82ba36694 100644 --- a/src/plugins/Input/mpc/decoder_mpc.cpp +++ b/src/plugins/Input/mpc/decoder_mpc.cpp @@ -190,7 +190,7 @@ bool DecoderMPC::initialize() #endif int chan = data()->info.channels; - configure(data()->info.sample_freq, chan, 16); + configure(data()->info.sample_freq, chan, Qmmp::PCM_S16LE); QMap<Qmmp::ReplayGainKey, double> rg_info; //replay gain information #ifdef MPC_OLD_API mpc_decoder_setup (&data()->decoder, &data()->reader); diff --git a/src/plugins/Input/sndfile/decoder_sndfile.cpp b/src/plugins/Input/sndfile/decoder_sndfile.cpp index 45ea15cbe..73a54ef0b 100644 --- a/src/plugins/Input/sndfile/decoder_sndfile.cpp +++ b/src/plugins/Input/sndfile/decoder_sndfile.cpp @@ -65,7 +65,7 @@ bool DecoderSndFile::initialize() m_totalTime = snd_info.frames * 1000 / m_freq; m_bitrate = QFileInfo(m_path).size () * 8.0 / m_totalTime + 0.5; - configure(m_freq, chan, 16); + configure(m_freq, chan, Qmmp::PCM_S16LE); qDebug("DecoderSndFile: detected format: %08X", snd_info.format); qDebug("DecoderSndFile: initialize succes"); return TRUE; diff --git a/src/plugins/Input/vorbis/decoder_vorbis.cpp b/src/plugins/Input/vorbis/decoder_vorbis.cpp index 7b8c1e480..c1d563963 100644 --- a/src/plugins/Input/vorbis/decoder_vorbis.cpp +++ b/src/plugins/Input/vorbis/decoder_vorbis.cpp @@ -134,7 +134,7 @@ bool DecoderVorbis::initialize() freq = ogginfo->rate; chan = ogginfo->channels; } - configure(freq, chan, 16); + configure(freq, chan, Qmmp::PCM_S16LE); inited = TRUE; return TRUE; } diff --git a/src/plugins/Input/wavpack/decoder_wavpack.cpp b/src/plugins/Input/wavpack/decoder_wavpack.cpp index 9c99c7992..d9ea2b62d 100644 --- a/src/plugins/Input/wavpack/decoder_wavpack.cpp +++ b/src/plugins/Input/wavpack/decoder_wavpack.cpp @@ -106,8 +106,21 @@ bool DecoderWavPack::initialize() m_freq = WavpackGetSampleRate (m_context); int bps = WavpackGetBitsPerSample (m_context); if (!m_output_buf) - m_output_buf = new int32_t[Qmmp::globalBufferSize()/4]; - configure(m_freq, m_chan, bps); + m_output_buf = new int32_t[QMMP_BUFFER_SIZE/4]; + switch(bps) + { + case 8: + configure(m_freq, m_chan, Qmmp::PCM_S8); + break; + case 16: + configure(m_freq, m_chan, Qmmp::PCM_S16LE); + break; + case 24: + configure(m_freq, m_chan, Qmmp::PCM_S24LE); + break; + case 32: + configure(m_freq, m_chan, Qmmp::PCM_S32LE); + } if(!m_parser) m_totalTime = (qint64) WavpackGetNumSamples(m_context) * 1000 / m_freq; else @@ -116,11 +129,11 @@ bool DecoderWavPack::initialize() m_offset = m_parser->offset(m_track); length_in_bytes = audioParameters().sampleRate() * audioParameters().channels() * - audioParameters().bits() * m_length/8000; + audioParameters().sampleSize() * m_length/1000; seek(0); } m_totalBytes = 0; - m_sz = audioParameters().bits() * audioParameters().channels()/8; + m_sz = audioParameters().sampleSize() * audioParameters().channels(); qDebug("DecoderWavPack: initialize succes"); return TRUE; } @@ -158,7 +171,7 @@ void DecoderWavPack::seek(qint64 time) { m_totalBytes = audioParameters().sampleRate() * audioParameters().channels() * - audioParameters().bits() * time/8000; + audioParameters().sampleSize() * time/1000; if(m_parser) time += m_offset; WavpackSeekSample (m_context, time * m_freq / 1000); @@ -229,7 +242,7 @@ void DecoderWavPack::next() m_length = m_parser->length(m_track); length_in_bytes = audioParameters().sampleRate() * audioParameters().channels() * - audioParameters().bits() * m_length/8000; + audioParameters().sampleSize() * m_length/1000; StateHandler::instance()->dispatch(m_parser->info(m_track)->metaData()); m_totalBytes = 0; } |
