aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/mpc
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-10-12 19:48:39 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-10-12 19:48:39 +0000
commite48a196c880d9f92804c6e1e3ea5631ae2017dd1 (patch)
tree6767f170f669cdfaea23e469050c05ad1f6c67ca /src/plugins/Input/mpc
parent0a74e1c0e3781afe041ba9acc361461cc3ebda82 (diff)
downloadqmmp-e48a196c880d9f92804c6e1e3ea5631ae2017dd1.tar.gz
qmmp-e48a196c880d9f92804c6e1e3ea5631ae2017dd1.tar.bz2
qmmp-e48a196c880d9f92804c6e1e3ea5631ae2017dd1.zip
enabled all input plugins
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@581 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/mpc')
-rw-r--r--src/plugins/Input/mpc/decoder_mpc.cpp84
-rw-r--r--src/plugins/Input/mpc/decoder_mpc.h20
-rw-r--r--src/plugins/Input/mpc/decodermpcfactory.cpp30
-rw-r--r--src/plugins/Input/mpc/decodermpcfactory.h6
4 files changed, 53 insertions, 87 deletions
diff --git a/src/plugins/Input/mpc/decoder_mpc.cpp b/src/plugins/Input/mpc/decoder_mpc.cpp
index a7da95652..9b3679dd3 100644
--- a/src/plugins/Input/mpc/decoder_mpc.cpp
+++ b/src/plugins/Input/mpc/decoder_mpc.cpp
@@ -102,13 +102,12 @@ DecoderMPC::DecoderMPC(QObject *parent, DecoderFactory *d, QIODevice *i, Output
{
inited = FALSE;
user_stop = FALSE;
- stat = 0;
output_buf = 0;
output_bytes = 0;
output_at = 0;
bks = 0;
done = FALSE;
- finish = FALSE;
+ m_finish = FALSE;
len = 0;
freq = 0;
bitrate = 0;
@@ -127,7 +126,7 @@ DecoderMPC::DecoderMPC(QObject *parent, DecoderFactory *d, QIODevice *i, Output
DecoderMPC::~DecoderMPC()
{
deinit();
- if(data())
+ if (data())
{
delete data();
m_data = 0;
@@ -148,11 +147,11 @@ void DecoderMPC::flush(bool final)
{
ulong min = final ? 0 : bks;
- while ((! done && ! finish) && output_bytes > min)
+ while ((! done && ! m_finish) && output_bytes > min)
{
output()->recycler()->mutex()->lock ();
- while ((! done && ! finish) && output()->recycler()->full())
+ while ((! done && ! m_finish) && output()->recycler()->full())
{
mutex()->unlock();
@@ -162,7 +161,7 @@ void DecoderMPC::flush(bool final)
done = user_stop;
}
- if (user_stop || finish)
+ if (user_stop || m_finish)
{
inited = FALSE;
done = TRUE;
@@ -186,19 +185,18 @@ void DecoderMPC::flush(bool final)
bool DecoderMPC::initialize()
{
- bks = blockSize();
- inited = user_stop = done = finish = FALSE;
+ bks = Buffer::size();
+ inited = user_stop = done = m_finish = FALSE;
len = freq = bitrate = 0;
- stat = chan = 0;
+ chan = 0;
output_size = 0;
seekTime = -1.0;
totalTime = 0.0;
- if (! input())
+ if (!input())
{
- error("DecoderMPC: cannot initialize. No input.");
-
+ qWarning("DecoderMPC: cannot initialize. No input.");
return FALSE;
}
@@ -207,23 +205,11 @@ bool DecoderMPC::initialize()
output_at = 0;
output_bytes = 0;
- if (! input())
+ if (!input()->isOpen())
{
- error("DecoderMPC: cannot initialize. No input.");
-
- return FALSE;
- }
-
- if (! output_buf)
- output_buf = new char[globalBufferSize];
- output_at = 0;
- output_bytes = 0;
-
- if (! input()->isOpen())
- {
- if (! input()->open(QIODevice::ReadOnly))
+ if (!input()->open(QIODevice::ReadOnly))
{
- error("DecoderMPC: cannot open input.");
+ qWarning("DecoderMPC: unable to open input.");
return FALSE;
}
}
@@ -245,7 +231,7 @@ bool DecoderMPC::initialize()
if (mpc_streaminfo_read (&m_data->info, &m_data->reader) != ERROR_CODE_OK)
return FALSE;
chan = data()->info.channels;
- configure(data()->info.sample_freq, chan, 16, data()->info.bitrate);
+ configure(data()->info.sample_freq, chan, 16);
mpc_decoder_setup (&data()->decoder, &data()->reader);
@@ -253,7 +239,7 @@ bool DecoderMPC::initialize()
if (!mpc_decoder_initialize (&data()->decoder, &data()->info))
{
- error("DecoderMPC: cannot get info.");
+ qWarning("DecoderMPC: cannot get info.");
return FALSE;
}
totalTime = mpc_streaminfo_get_length(&data()->info);
@@ -263,7 +249,7 @@ bool DecoderMPC::initialize()
}
-double DecoderMPC::lengthInSeconds()
+qint64 DecoderMPC::lengthInSeconds()
{
if (! inited)
return 0;
@@ -272,7 +258,7 @@ double DecoderMPC::lengthInSeconds()
}
-void DecoderMPC::seek(double pos)
+void DecoderMPC::seek(qint64 pos)
{
seekTime = pos;
}
@@ -280,10 +266,9 @@ void DecoderMPC::seek(double pos)
void DecoderMPC::deinit()
{
- //FLAC__stream_decoder_finish (data()->decoder);
- inited = user_stop = done = finish = FALSE;
+ inited = user_stop = done = m_finish = FALSE;
len = freq = bitrate = 0;
- stat = chan = 0;
+ chan = 0;
output_size = 0;
}
@@ -291,21 +276,16 @@ void DecoderMPC::run()
{
mpc_uint32_t vbrAcc = 0;
mpc_uint32_t vbrUpd = 0;
- mutex()->lock ();
- if (! inited)
+ mutex()->lock ();
+ if (!inited)
{
mutex()->unlock();
-
return;
}
- stat = DecoderState::Decoding;
mutex()->unlock();
- {
- dispatch(DecoderState ((DecoderState::Type) stat));
- }
- while (! done && ! finish)
+ while (! done && ! m_finish)
{
mutex()->lock ();
// decode
@@ -354,33 +334,23 @@ void DecoderMPC::run()
done = TRUE;
if (! user_stop)
{
- finish = TRUE;
+ m_finish = TRUE;
}
}
else
{
// error in read
- error("DecoderMPC: Error while decoding stream, File appears to be "
- "corrupted");
-
- finish = TRUE;
+ qWarning("DecoderMPC: Error while decoding stream, file appears to be corrupted");
+ m_finish = TRUE;
}
mutex()->unlock();
}
-
mutex()->lock ();
- if (finish)
- stat = DecoderState::Finished;
- else if (user_stop)
- stat = DecoderState::Stopped;
+ if (m_finish)
+ finish();
mutex()->unlock();
-
- {
- dispatch(DecoderState ((DecoderState::Type) stat));
- }
-
deinit();
}
diff --git a/src/plugins/Input/mpc/decoder_mpc.h b/src/plugins/Input/mpc/decoder_mpc.h
index 9378d727e..733fcd8ca 100644
--- a/src/plugins/Input/mpc/decoder_mpc.h
+++ b/src/plugins/Input/mpc/decoder_mpc.h
@@ -40,17 +40,14 @@ public:
// Standard Decoder API
bool initialize();
- double lengthInSeconds();
- void seek(double);
+ qint64 lengthInSeconds();
+ void seek(qint64);
void stop();
- // Equalizer
- bool isEQSupported() const { return FALSE; }
- void setEQEnabled(bool) { ; }
- void setEQGain(int) { ; }
- void setEQBands(int[10]) { ; }
-
- struct mpc_data *data() { return m_data; }
+ struct mpc_data *data()
+ {
+ return m_data;
+ }
private:
@@ -62,18 +59,17 @@ private:
void deinit();
bool inited, user_stop;
- int stat;
// output buffer
char *output_buf;
ulong output_bytes, output_at;
unsigned int bks;
- bool done, finish;
+ bool done, m_finish;
long len, freq, bitrate;
int chan;
unsigned long output_size;
- double totalTime, seekTime;
+ qint64 totalTime, seekTime;
};
diff --git a/src/plugins/Input/mpc/decodermpcfactory.cpp b/src/plugins/Input/mpc/decodermpcfactory.cpp
index e0caab970..9b6368efe 100644
--- a/src/plugins/Input/mpc/decodermpcfactory.cpp
+++ b/src/plugins/Input/mpc/decodermpcfactory.cpp
@@ -53,38 +53,38 @@ const DecoderProperties DecoderMPCFactory::properties() const
}
Decoder *DecoderMPCFactory::create(QObject *parent, QIODevice *input,
- Output *output)
+ Output *output, const QString &)
{
return new DecoderMPC(parent, this, input, output);
}
-FileTag *DecoderMPCFactory::createTag(const QString &source)
+QList<FileInfo *> DecoderMPCFactory::createPlayList(const QString &fileName)
{
- FileTag *ftag = new FileTag();
+ FileInfo *info = new FileInfo(fileName);
- TagLib::FileRef fileRef(source.toLocal8Bit ());
+ TagLib::FileRef fileRef(fileName.toLocal8Bit ());
TagLib::Tag *tag = fileRef.tag();
-
if (tag && !tag->isEmpty())
{
- ftag->setValue(FileTag::ALBUM,
+ info->setMetaData(Qmmp::ALBUM,
QString::fromUtf8(tag->album().toCString(TRUE)).trimmed());
- ftag->setValue(FileTag::ARTIST,
+ info->setMetaData(Qmmp::ARTIST,
QString::fromUtf8(tag->artist().toCString(TRUE)).trimmed());
- ftag->setValue(FileTag::COMMENT,
+ info->setMetaData(Qmmp::COMMENT,
QString::fromUtf8(tag->comment().toCString(TRUE)).trimmed());
- ftag->setValue(FileTag::GENRE,
+ info->setMetaData(Qmmp::GENRE,
QString::fromUtf8(tag->genre().toCString(TRUE)).trimmed());
- ftag->setValue(FileTag::TITLE,
+ info->setMetaData(Qmmp::TITLE,
QString::fromUtf8(tag->title().toCString(TRUE)).trimmed());
- ftag->setValue(FileTag::YEAR, tag->year());
- ftag->setValue(FileTag::TRACK, tag->track());
+ info->setMetaData(Qmmp::YEAR, tag->year());
+ info->setMetaData(Qmmp::TRACK, tag->track());
}
-
if (fileRef.audioProperties())
- ftag->setValue(FileTag::LENGTH, fileRef.audioProperties()->length());
+ info->setLength(fileRef.audioProperties()->length());
- return ftag;
+ QList <FileInfo*> list;
+ list << info;
+ return list;
}
QObject* DecoderMPCFactory::showDetails(QWidget *parent, const QString &path)
diff --git a/src/plugins/Input/mpc/decodermpcfactory.h b/src/plugins/Input/mpc/decodermpcfactory.h
index 7ee6fb3c1..740a5f362 100644
--- a/src/plugins/Input/mpc/decodermpcfactory.h
+++ b/src/plugins/Input/mpc/decodermpcfactory.h
@@ -28,7 +28,7 @@
#include <qmmp/decoder.h>
#include <qmmp/output.h>
#include <qmmp/decoderfactory.h>
-#include <qmmp/filetag.h>
+#include <qmmp/fileinfo.h>
@@ -43,8 +43,8 @@ public:
bool supports(const QString &source) const;
bool canDecode(QIODevice *input) const;
const DecoderProperties properties() const;
- Decoder *create(QObject *, QIODevice *, Output *);
- FileTag *createTag(const QString &source);
+ Decoder *create(QObject *, QIODevice *, Output *, const QString &);
+ QList<FileInfo *> createPlayList(const QString &fileName);
QObject* showDetails(QWidget *parent, const QString &path);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);