Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ available_features = [features.Mad,
features.TestSuite,
features.Vamp,
features.AutoDjCrates,
features.Mpris,
features.ColorDiagnostics,
features.AddressSanitizer,
features.LocaleCompare,
Expand Down
31 changes: 31 additions & 0 deletions build/features.py
Original file line number Diff line number Diff line change
Expand Up @@ -1165,6 +1165,37 @@ def configure(self, build, conf):
def sources(self, build):
return ['library/dao/autodjcratesdao.cpp']

class Mpris(Feature):
def description(self):
return "MPRIS D-Bus Interface"

def enabled(self, build):
build.flags['mpris'] = \
util.get_flags(build.env, 'mpris', 1)
if int(build.flags['mpris']):
return True
return False

def add_options(self, build, vars):
vars.Add('mpris',
'Set to 1 to enable MPRIS D-Bus Interface.', 1)

def configure(self, build, conf):
if not self.enabled(build):
return
build.env.Append(CPPDEFINES='__MPRIS__')
if not conf.CheckLib(['QtDBus']):
raise Exception('Missing libQtDBus -- exiting!')
build.env.Append(LIBS='QtDBus')

def sources(self, build):
return ['mpris/mpris.cpp',
'mpris/mediaplayer2.cpp',
'mpris/mediaplayer2player.cpp',
'mpris/mediaplayer2tracklist.cpp',
'mpris/mediaplayer2playlists.cpp']


class MacAppStoreException(Feature):
def description(self):
return "Build for Mac App Store"
Expand Down
7 changes: 7 additions & 0 deletions plugins/soundsourcem4a/soundsourcem4a.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -218,4 +218,11 @@ QList<QString> SoundSourceM4A::supportedFileExtensions()
return list;
}

QList<QString> SoundSourceM4A::supportedMimeType()
{
QList<QString> list;
list.push_back("audio/mp4");
return list;
}

}
23 changes: 23 additions & 0 deletions plugins/soundsourcem4a/soundsourcem4a.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ class SoundSourceM4A : public SoundSource {
Result parseHeader();
QImage parseCoverArt();
static QList<QString> supportedFileExtensions();
static QList<QString> supportedMimeType();
private:
int trackId;
unsigned long filelength;
Expand Down Expand Up @@ -91,12 +92,34 @@ extern "C" MY_EXPORT char** supportedFileExtensions()
return c_exts;
}

extern "C" MY_EXPORT char** supportedMimeTypes()
{
QList<QString> mimes = SoundSourceM4A::supportedMimeTypes();
//Convert to C string array.
char** c_mime = (char**)malloc((mimes.count() + 1) * sizeof(char*));
for (int i = 0; i < mimes.count(); i++)
{
QByteArray qba = mimes[i].toUtf8();
c_mime[i] = strdup(qba.constData());
qDebug() << c_mime[i];
}
c_mime[mimes.count()] = NULL; //NULL terminate the list

return c_mime;
}

extern "C" MY_EXPORT void freeFileExtensions(char **exts)
{
for (int i(0); exts[i]; ++i) free(exts[i]);
free(exts);
}

extern "C" MY_EXPORT void freeMimeTypes(char **mimes)
{
for (int i(0); mimes[i]; ++i) free(mimes[i]);
free(mimes);
}

} // namespace Mixxx

#endif
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,14 @@ QList<QString> SoundSourceMediaFoundation::supportedFileExtensions()
return list;
}

// static
QList<QString> SoundSourceMediaFoundation::supportedMimeTypes()
{
QList<QString> list;
list.push_back("audio/mp4");
return list;
}


//-------------------------------------------------------------------
// configureAudioStream
Expand Down
23 changes: 23 additions & 0 deletions plugins/soundsourcemediafoundation/soundsourcemediafoundation.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ class SoundSourceMediaFoundation : public Mixxx::SoundSource {
Result parseHeader();
QImage parseCoverArt();
static QList<QString> supportedFileExtensions();
static QList<QString> supportedMimeTypes();

private:
bool configureAudioStream();
Expand Down Expand Up @@ -103,10 +104,32 @@ extern "C" MY_EXPORT char** supportedFileExtensions()
return c_exts;
}

extern "C" MY_EXPORT char** supportedMimeTypes()
{
QList<QString> mimes = SoundSourceMediaFoundation::supportedMimeTypes();
//Convert to C string array.
char** c_mime = (char**)malloc((mimes.count() + 1) * sizeof(char*));
for (int i = 0; i < mimes.count(); i++)
{
QByteArray qba = mimes[i].toUtf8();
c_mime[i] = strdup(qba.constData());
qDebug() << c_mime[i];
}
c_mime[mimes.count()] = NULL; //NULL terminate the list

return c_mime;
}

extern "C" MY_EXPORT void freeFileExtensions(char **exts)
{
for (int i(0); exts[i]; ++i) free(exts[i]);
free(exts);
}

extern "C" MY_EXPORT void freeMimeTypes(char **mimes)
{
for (int i(0); mimes[i]; ++i) free(mimes[i]);
free(mimes);
}

#endif // ifndef SOUNDSOURCEMEDIAFOUNDATION_H
9 changes: 9 additions & 0 deletions plugins/soundsourcewv/soundsourcewv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,22 @@ SoundSourceWV::~SoundSourceWV(){
}
}

//static
QList<QString> SoundSourceWV::supportedFileExtensions()
{
QList<QString> list;
list.push_back("wv");
return list;
}

//static
QList<QString> SoundSourceWV::supportedMimeType()
{
QList<QString> list;
list.push_back("audio/x-wavpack");
return list;
}


Result SoundSourceWV::open()
{
Expand Down
23 changes: 23 additions & 0 deletions plugins/soundsourcewv/soundsourcewv.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class SoundSourceWV : public SoundSource {
Result parseHeader();
QImage parseCoverArt();
static QList<QString> supportedFileExtensions();
static QList<QString> supportedMimeType();
private:
WavpackContext * filewvc; //works as a file handle to access the wv file.
int Bps;
Expand Down Expand Up @@ -74,12 +75,34 @@ extern "C" MY_EXPORT char** supportedFileExtensions()
return c_exts;
}

extern "C" MY_EXPORT char** supportedMimeTypes()
{
QList<QString> mimes = SoundSourceWV::supportedMimeTypes();
//Convert to C string array.
char** c_mime = (char**)malloc((mimes.count() + 1) * sizeof(char*));
for (int i = 0; i < mimes.count(); i++)
{
QByteArray qba = mimes[i].toUtf8();
c_mime[i] = strdup(qba.constData());
qDebug() << c_mime[i];
}
c_mime[mimes.count()] = NULL; //NULL terminate the list

return c_mime;
}

extern "C" MY_EXPORT void freeFileExtensions(char **exts)
{
for (int i(0); exts[i]; ++i) free(exts[i]);
free(exts);
}

extern "C" MY_EXPORT void freeMimeTypes(char **mimes)
{
for (int i(0); mimes[i]; ++i) free(mimes[i]);
free(mimes);
}

} // namespace Mixxx

#endif
20 changes: 19 additions & 1 deletion src/mixxx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,10 @@
#include "dlgprefmodplug.h"
#endif

#ifdef __MPRIS__
#include "mpris/mpris.h"
#endif

// static
const int MixxxMainWindow::kMicrophoneCount = 4;
// static
Expand All @@ -112,7 +116,11 @@ MixxxMainWindow::MixxxMainWindow(QApplication* pApp, const CmdlineArgs& args)
m_pPrefDlg(NULL),
m_runtime_timer("MixxxMainWindow::runtime"),
m_cmdLineArgs(args),
m_iNumConfiguredDecks(0) {
m_iNumConfiguredDecks(0)
#ifdef __MPRIS__
, m_pMpris(NULL)
#endif
{
// We use QSet<int> in signals in the library.
qRegisterMetaType<QSet<int> >("QSet<int>");

Expand Down Expand Up @@ -470,6 +478,11 @@ MixxxMainWindow::MixxxMainWindow(QApplication* pApp, const CmdlineArgs& args)
m_pPlayerManager->slotLoadToDeck(musicFiles.at(i), i+1);
}
}

#ifdef __MPRIS__
m_pMpris = new Mpris(this);
#endif

}

MixxxMainWindow::~MixxxMainWindow() {
Expand All @@ -481,6 +494,11 @@ MixxxMainWindow::~MixxxMainWindow() {

qDebug() << "Destroying MixxxMainWindow";

#ifdef __MPRIS__
delete m_pMpris;
#endif


qDebug() << "save config " << qTime.elapsed();
m_pConfig->Save();

Expand Down
8 changes: 8 additions & 0 deletions src/mixxx.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ class ControlObjectSlave;
class ControlObjectThread;
class QTranslator;

#ifdef __MPRIS__
class Mpris;
#endif

// This Class is the base class for Mixxx. It sets up the main
// window and providing a menubar.
// For the main view, an instance of class MixxxView is
Expand Down Expand Up @@ -308,6 +312,10 @@ class MixxxMainWindow : public QMainWindow {

static const int kMicrophoneCount;
static const int kAuxiliaryCount;

#ifdef __MPRIS__
Mpris* m_pMpris;
#endif
};

#endif
67 changes: 67 additions & 0 deletions src/mpris/mediaplayer2.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#include <QApplication>
#include <QWidget>
#include <QDebug>

#include "mediaplayer2.h"
#include "mixxx.h"
#include "soundsourceproxy.h"

MediaPlayer2::MediaPlayer2(MixxxMainWindow* pMixxx, QObject* parent)
: QDBusAbstractAdaptor(parent),
m_pMixxx(pMixxx) {
}

MediaPlayer2::~MediaPlayer2() {
}

bool MediaPlayer2::canQuit() const {
return true;
}

bool MediaPlayer2::fullscreen() const {
return m_pMixxx->isFullScreen();
}

void MediaPlayer2::setFullscreen(bool fullscreen) {
m_pMixxx->slotViewFullScreen(fullscreen);
}

bool MediaPlayer2::canSetFullscreen() const {
return true;
}

bool MediaPlayer2::canRaise() const {
return true;
}

bool MediaPlayer2::hasTrackList() const {
return false;
}

QString MediaPlayer2::identity() const {
return "Mixxx";
}

QString MediaPlayer2::desktopEntry() const {
return "mixxx";
}

QStringList MediaPlayer2::supportedUriSchemes() const {
QStringList protocols;
protocols.append("file");
return protocols;
}

QStringList MediaPlayer2::supportedMimeTypes() const {
return SoundSourceProxy::supportedMimeTypes();
}

void MediaPlayer2::Raise() {
m_pMixxx->raise();
}

void MediaPlayer2::Quit() {
QApplication::quit();
}


Loading