Skip to content

Commit

Permalink
MythMusic: move metadata and tag reading/writing to libmythmetadata
Browse files Browse the repository at this point in the history
This allows both MythMusic and mythbackend/mythutils etc to use the same code.

NOTE: a distclean and re-run of configure in both core and plugins is required.
Also this makes TagLib a mandatory dependency of core MythTV.
  • Loading branch information
Paul Harrison committed Apr 26, 2013
1 parent eccf274 commit d6b0ae4
Show file tree
Hide file tree
Showing 69 changed files with 859 additions and 755 deletions.
24 changes: 1 addition & 23 deletions mythplugins/configure
Expand Up @@ -295,7 +295,6 @@ DEPEND_LIST="
vorbis
flac
mp3lame
taglib
"

enable $PLUGIN_LIST $CONFIG_LIST $DEPEND_LIST
Expand Down Expand Up @@ -663,24 +662,7 @@ if enabled music ; then
echo "MythMusic requires the LAME mp3 encoder."
fi

taglib_minor="0"
if test x`which taglib-config` != x"" ; then
taglib_minor=`taglib-config --version | cut -d. -f2`
if test x"$taglib_minor" = x"" ; then
echo "Can't find taglib-config. Assuming 1.6 or later."
taglib_minor="6"
fi
tagprefix=`taglib-config --prefix`
add_cxxflags "-I${tagprefix}/include"
add_ldflags "-L${tagprefix}/lib"
fi

if test $taglib_minor -lt 6 || ! check_lib_cxx taglib/fileref.h TagLib::FileRef -ltag -lz ; then
disable taglib
echo "MythMusic requires taglib 1.6 or later."
fi

if disabled vorbis || disabled flac || disabled mp3lame || disabled taglib ; then
if disabled vorbis || disabled flac || disabled mp3lame ; then
echo "Disabling MythMusic due to missing dependencies."
disable music
fi
Expand Down Expand Up @@ -906,10 +888,6 @@ if enabled music ; then
else
echo " FFTW support will not be included in MythMusic"
fi

if enabled taglib ; then
echo "INCLUDEPATH += `taglib-config --prefix`/include/taglib" >> ./mythmusic/mythmusic/config.pro
fi
fi

###########################################################
Expand Down
2 changes: 0 additions & 2 deletions mythplugins/mythmusic/mythmusic/avfdecoder.h
Expand Up @@ -12,8 +12,6 @@ extern "C" {
#include <libavcodec/avcodec.h>
}

class Metadata;

class avfDecoder : public Decoder
{
public:
Expand Down
14 changes: 7 additions & 7 deletions mythplugins/mythmusic/mythmusic/cddecoder.cpp
Expand Up @@ -20,14 +20,14 @@
// MythTV
#include <audiooutput.h>
#include <mythcontext.h>
#include <musicmetadata.h>

extern "C" {
#include <libavcodec/avcodec.h>
}

// MythMusic
#include "constants.h"
#include "metadata.h"
#include "cddb.h"

#define CDEXT ".cda"
Expand Down Expand Up @@ -507,18 +507,18 @@ int CdDecoder::getNumCDAudioTracks()
}

//public
Metadata* CdDecoder::getMetadata(int track)
MusicMetadata* CdDecoder::getMetadata(int track)
{
m_settracknum = track;
return getMetadata();
}

//public
Metadata *CdDecoder::getLastMetadata()
MusicMetadata *CdDecoder::getLastMetadata()
{
for(int i = getNumTracks(); i > 0; --i)
{
Metadata *m = getMetadata(i);
MusicMetadata *m = getMetadata(i);
if(m)
return m;
}
Expand Down Expand Up @@ -565,7 +565,7 @@ static Cddb::Toc& GetToc(CdIo_t *cdio, Cddb::Toc& toc)
}

//virtual
Metadata *CdDecoder::getMetadata()
MusicMetadata *CdDecoder::getMetadata()
{
QString artist, album, compilation_artist, title, genre;
int year = 0;
Expand Down Expand Up @@ -774,7 +774,7 @@ Metadata *CdDecoder::getMetadata()
if (title.isEmpty())
title = QObject::tr("Track %1").arg(tracknum);

Metadata *m = new Metadata(getFilename(), artist, compilation_artist,
MusicMetadata *m = new MusicMetadata(getFilename(), artist, compilation_artist,
album, title, genre, year, tracknum, length);
if (m)
m->setCompilation(isCompilation);
Expand All @@ -783,7 +783,7 @@ Metadata *CdDecoder::getMetadata()
}

// virtual
void CdDecoder::commitMetadata(Metadata *mdata)
void CdDecoder::commitMetadata(MusicMetadata *mdata)
{
QMutexLocker lock(&getCdioMutex());

Expand Down
17 changes: 9 additions & 8 deletions mythplugins/mythmusic/mythmusic/cddecoder.h
Expand Up @@ -15,7 +15,7 @@ using std::vector;
# include <cdio/paranoia.h>
#endif

class Metadata;
class MusicMetadata;

class CdDecoder : public Decoder
{
Expand All @@ -29,13 +29,14 @@ class CdDecoder : public Decoder
virtual void stop();

// Decoder overrides
virtual Metadata *getMetadata(void);
virtual void commitMetadata(Metadata *mdata);

// The following need to allocate a new Metadata object each time,
// because their callers (e.g. databasebox.cpp) free the returned value
Metadata *getMetadata(int track);
Metadata *getLastMetadata();
virtual MusicMetadata *getMetadata(void);
virtual void commitMetadata(MusicMetadata *mdata);

// The following need to allocate a new MusicMetadata object each time,
// because their callers free the returned value
// TODO check this is still true
MusicMetadata *getMetadata(int track);
MusicMetadata *getLastMetadata();

#if CONFIG_DARWIN
double lengthInSeconds();
Expand Down
40 changes: 20 additions & 20 deletions mythplugins/mythmusic/mythmusic/cdrip.cpp
Expand Up @@ -209,7 +209,7 @@ void CDRipperThread::run(void)
return;
}

Metadata *track = m_tracks->at(0)->metadata;
MusicMetadata *track = m_tracks->at(0)->metadata;
QString tots;

if (track->Compilation())
Expand Down Expand Up @@ -254,7 +254,7 @@ void CDRipperThread::run(void)
lcd->switchToGeneric(textItems);
}

Metadata *titleTrack = NULL;
MusicMetadata *titleTrack = NULL;
QString outfile;

std::auto_ptr<Encoder> encoder;
Expand Down Expand Up @@ -303,20 +303,20 @@ void CDRipperThread::run(void)
if (encodertype == "mp3")
{
outfile += ".mp3";
encoder.reset(new LameEncoder(gMusicData->musicDir + outfile, m_quality,
encoder.reset(new LameEncoder(getMusicDirectory() + outfile, m_quality,
titleTrack, mp3usevbr));
}
else // ogg
{
outfile += ".ogg";
encoder.reset(new VorbisEncoder(gMusicData->musicDir + outfile, m_quality,
encoder.reset(new VorbisEncoder(getMusicDirectory() + outfile, m_quality,
titleTrack));
}
}
else
{
outfile += ".flac";
encoder.reset(new FlacEncoder(gMusicData->musicDir + outfile, m_quality,
encoder.reset(new FlacEncoder(getMusicDirectory() + outfile, m_quality,
titleTrack));
}

Expand Down Expand Up @@ -673,7 +673,7 @@ void Ripper::ScanFinished()
if (m_decoder)
{
QString label;
Metadata *metadata;
MusicMetadata *metadata;

m_artistName.clear();
m_albumName.clear();
Expand Down Expand Up @@ -779,7 +779,7 @@ bool Ripper::deleteExistingTrack(RipTrack *track)
if (!track)
return false;

Metadata *metadata = track->metadata;
MusicMetadata *metadata = track->metadata;

if (!metadata)
return false;
Expand Down Expand Up @@ -824,7 +824,7 @@ bool Ripper::deleteExistingTrack(RipTrack *track)
if (query.next())
{
int trackID = query.value(0).toInt();
QString filename = gMusicData->musicDir + query.value(1).toString();
QString filename = getMusicDirectory() + query.value(1).toString();

// delete file
if (!QFile::remove(filename))
Expand Down Expand Up @@ -859,7 +859,7 @@ bool Ripper::somethingWasRipped()
void Ripper::artistChanged()
{
QString newartist = m_artistEdit->GetText();
Metadata *data;
MusicMetadata *data;

if (m_tracks->size() > 0)
{
Expand Down Expand Up @@ -890,7 +890,7 @@ void Ripper::artistChanged()
void Ripper::albumChanged()
{
QString newalbum = m_albumEdit->GetText();
Metadata *data;
MusicMetadata *data;

if (m_tracks->size() > 0)
{
Expand All @@ -909,7 +909,7 @@ void Ripper::albumChanged()
void Ripper::genreChanged()
{
QString newgenre = m_genreEdit->GetText();
Metadata *data;
MusicMetadata *data;

if (m_tracks->size() > 0)
{
Expand All @@ -929,7 +929,7 @@ void Ripper::yearChanged()
{
QString newyear = m_yearEdit->GetText();

Metadata *data;
MusicMetadata *data;

if (m_tracks->size() > 0)
{
Expand All @@ -949,7 +949,7 @@ void Ripper::compilationChanged(bool state)
{
if (!state)
{
Metadata *data;
MusicMetadata *data;
if (m_tracks->size() > 0)
{
// Update artist MetaData of each track on the ablum...
Expand All @@ -975,7 +975,7 @@ void Ripper::compilationChanged(bool state)
// Update artist MetaData of each track on the album...
for (int trackno = 0; trackno < m_tracks->size(); ++trackno)
{
Metadata *data;
MusicMetadata *data;
data = m_tracks->at(trackno)->metadata;

if (data)
Expand All @@ -998,7 +998,7 @@ void Ripper::switchTitlesAndArtists()
if (!m_compilationCheck->GetBooleanCheckState())
return;

Metadata *data;
MusicMetadata *data;

// Switch title and artist for each track
QString tmp;
Expand Down Expand Up @@ -1128,7 +1128,7 @@ void Ripper::updateTrackList(void)
break;

RipTrack *track = m_tracks->at(i);
Metadata *metadata = track->metadata;
MusicMetadata *metadata = track->metadata;

MythUIButtonListItem *item = new MythUIButtonListItem(m_trackList,"");

Expand Down Expand Up @@ -1172,7 +1172,7 @@ void Ripper::updateTrackList(void)
void Ripper::searchArtist()
{
QString msg = tr("Select an Artist");
QStringList searchList = Metadata::fillFieldList("artist");
QStringList searchList = MusicMetadata::fillFieldList("artist");

MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
MythUISearchDialog *searchDlg = new MythUISearchDialog(popupStack, msg, searchList, false, "");
Expand All @@ -1196,7 +1196,7 @@ void Ripper::setArtist(QString artist)
void Ripper::searchAlbum()
{
QString msg = tr("Select an Album");
QStringList searchList = Metadata::fillFieldList("album");
QStringList searchList = MusicMetadata::fillFieldList("album");

MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
MythUISearchDialog *searchDlg = new MythUISearchDialog(popupStack, msg, searchList, false, "");
Expand All @@ -1220,7 +1220,7 @@ void Ripper::setAlbum(QString album)
void Ripper::searchGenre()
{
QString msg = tr("Select a Genre");
QStringList searchList = Metadata::fillFieldList("genre");
QStringList searchList = MusicMetadata::fillFieldList("genre");
// load genre list
m_searchList.clear();
for (int x = 0; x < genre_table_size; x++)
Expand Down Expand Up @@ -1256,7 +1256,7 @@ void Ripper::showEditMetadataDialog(MythUIButtonListItem *item)
if (!track)
return;

Metadata *editMeta = track->metadata;
MusicMetadata *editMeta = track->metadata;

MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();

Expand Down
14 changes: 8 additions & 6 deletions mythplugins/mythmusic/mythmusic/cdrip.h
@@ -1,14 +1,16 @@
#ifndef CDRIP_H_
#define CDRIP_H_

#include "metadata.h"

// qt
#include <QEvent>
#include <QVector>

// mythtv
#include <musicmetadata.h>
#include <mythscreentype.h>
#include <mthread.h>


class MythUIText;
class MythUITextEdit;
class MythUIImage;
Expand Down Expand Up @@ -42,10 +44,10 @@ class CDEjectorThread: public MThread

typedef struct
{
Metadata *metadata;
bool active;
int length;
bool isNew;
MusicMetadata *metadata;
bool active;
int length;
bool isNew;
} RipTrack;

Q_DECLARE_METATYPE(RipTrack *)
Expand Down
9 changes: 5 additions & 4 deletions mythplugins/mythmusic/mythmusic/dbcheck.cpp
Expand Up @@ -5,11 +5,12 @@
#include <iostream>
using namespace std;

#include <musicmetadata.h>
#include <mythcontext.h>
#include <mythtv/mythdb.h>
#include <mythtv/schemawizard.h>

#include "dbcheck.h"
#include "metadata.h"
#include "mythtv/mythcontext.h"
#include "mythtv/mythdb.h"
#include "mythtv/schemawizard.h"

const QString currentDatabaseVersion = "1020";

Expand Down

0 comments on commit d6b0ae4

Please sign in to comment.