Skip to content

Commit

Permalink
- initial wpl playlists
Browse files Browse the repository at this point in the history
- initial ffmpegthumbnailer plugin
  • Loading branch information
u-voelkel committed Dec 11, 2009
1 parent ead4b66 commit 85dadbc
Show file tree
Hide file tree
Showing 17 changed files with 644 additions and 192 deletions.
8 changes: 8 additions & 0 deletions ChangeLog
@@ -1,3 +1,11 @@
Version

* fixed subscription parsing for coherence UPnP framework
* initial support for wpl playlists (Robert Massaioli)
* initial ffmpegthumbnailer plugin



Version SVN-640 2009-07-19

* exiv2 plugin from Ben Rees
Expand Down
25 changes: 25 additions & 0 deletions configure.ac
Expand Up @@ -152,6 +152,22 @@ AC_SUBST(TAGLIB_LIBS)
# END TAGLIB


#
# libffmpegthumbnailer
#
have_ffmpegthumbnailer=no
AC_ARG_ENABLE([ffmpegthumbnailer], [AC_HELP_STRING([--enable-ffmpegthumbnailer],
[enable ffmpegthumbnailer metadata plugin [default=yes]])],
[enable_ffmpegthumbnailer=$enableval], [enable_ffmpegthumbnailer='yes'])
if test "x$enable_ffmpegthumbnailer" = "xyes" ; then
PKG_CHECK_MODULES(FFMPEGTHUMBNAILER, libffmpegthumbnailer >= 1.0.0, have_ffmpegthumbnailer=yes, have_ffmpegthumbnailer=no)
fi
AM_CONDITIONAL(FFMPEGTHUMBNAILER_METADATA_PLUGIN, test "x$have_ffmpegthumbnailer" = "xyes")
AC_SUBST(FFMPEGTHUMBNAILER_CFLAGS)
AC_SUBST(FFMPEGTHUMBNAILER_LIBS)



#
# ImageMagick (MagickWand)
#
Expand Down Expand Up @@ -788,6 +804,15 @@ else
echo " libavformat : disabled"
fi
echo ""


# ffmpegthumbnailer
if test "x$have_ffmpegthumbnailer" = "xyes"; then
echo " ffmpegthumbnailer: enabled"
else
echo " ffmpegthumbnailer: disabled"
fi

#end metadata


Expand Down
6 changes: 6 additions & 0 deletions include/fuppes_plugin_types.h
Expand Up @@ -101,6 +101,12 @@ typedef enum METADATA_TYPE {
MD_IMAGE
} METADATA_TYPE;

typedef enum METADATA_PLUGIN_CAPABILITIES {
MDC_UNKNOWN = 0,
MDC_METADATA = 1 << 0,
MDC_IMAGE = 1 << 1
} METADATA_PLUGIN_CAPABILITIES;

typedef struct {
METADATA_TYPE type;
char* title;
Expand Down
11 changes: 11 additions & 0 deletions src/lib/Configuration/DefaultConfig.h
Expand Up @@ -587,6 +587,17 @@ bool WriteDefaultConfigFile(std::string p_sFileName)
xmlTextWriterEndElement(pWriter);
xmlTextWriterEndElement(pWriter);

// wpl
xmlTextWriterStartElement(pWriter, BAD_CAST "file");
xmlTextWriterWriteAttribute(pWriter, BAD_CAST "ext", BAD_CAST "wpl");
xmlTextWriterStartElement(pWriter, BAD_CAST "type");
xmlTextWriterWriteString(pWriter, BAD_CAST "PLAYLIST");
xmlTextWriterEndElement(pWriter);
xmlTextWriterStartElement(pWriter, BAD_CAST "mime_type");
xmlTextWriterWriteString(pWriter, BAD_CAST "application/vnd.ms-wpl");
xmlTextWriterEndElement(pWriter);
xmlTextWriterEndElement(pWriter);

// end file_settings (default)
xmlTextWriterEndElement(pWriter);

Expand Down
44 changes: 10 additions & 34 deletions src/lib/ContentDirectory/ContentDatabase.cpp
Expand Up @@ -1037,8 +1037,8 @@ bool MapPlaylistItem(unsigned int p_nPlaylistID, unsigned int p_nItemID)

void ParsePlaylist(CSQLResult* pResult)
{
CPlaylistParser Parser;
if(!Parser.LoadPlaylist(pResult->asString("PATH") + pResult->asString("FILE_NAME"))) {
BasePlaylistParser* Parser = BasePlaylistParser::Load(pResult->asString("PATH") + pResult->asString("FILE_NAME"));
if(Parser == NULL) {
return;
}

Expand All @@ -1049,54 +1049,30 @@ void ParsePlaylist(CSQLResult* pResult)

CContentDatabase* pDb = CContentDatabase::Shared(); //new CContentDatabase();

while(!Parser.Eof()) {
if(Parser.Entry()->bIsLocalFile && fuppes::File::exists(Parser.Entry()->sFileName)) {
while(!Parser->Eof()) {
if(Parser->Entry()->bIsLocalFile && fuppes::File::exists(Parser->Entry()->sFileName)) {

nObjectID = GetObjectIDFromFileName(pDb, Parser.Entry()->sFileName);
nObjectID = GetObjectIDFromFileName(pDb, Parser->Entry()->sFileName);

if(nObjectID == 0) {
nObjectID = InsertFile(pDb, nPlaylistID, Parser.Entry()->sFileName);
nObjectID = InsertFile(pDb, nPlaylistID, Parser->Entry()->sFileName);
}
else {
MapPlaylistItem(nPlaylistID, nObjectID);
}
}
else if(!Parser.Entry()->bIsLocalFile) {
nObjectID = InsertURL(Parser.Entry()->sFileName, Parser.Entry()->sTitle, Parser.Entry()->sMimeType);
else if(!Parser->Entry()->bIsLocalFile) {
nObjectID = InsertURL(Parser->Entry()->sFileName, Parser->Entry()->sTitle, Parser->Entry()->sMimeType);
MapPlaylistItem(nPlaylistID, nObjectID);
}

Parser.Next();
Parser->Next();
}

delete Parser;
//delete pDb;
}

std::string ReadFile(std::string p_sFileName)
{
fstream fsPlaylist;
char* szBuf;
long nSize;
string sResult;

fsPlaylist.open(p_sFileName.c_str(), ios::in);
if(fsPlaylist.fail())
return "";

fsPlaylist.seekg(0, ios::end);
nSize = streamoff(fsPlaylist.tellg());
fsPlaylist.seekg(0, ios::beg);
szBuf = new char[nSize + 1];
fsPlaylist.read(szBuf, nSize);
szBuf[nSize] = '\0';
fsPlaylist.close();

sResult = szBuf;
delete[] szBuf;

return sResult;
}

//fuppesThreadCallback BuildLoop(void* arg)
void RebuildThread::run()
{
Expand Down
16 changes: 14 additions & 2 deletions src/lib/ContentDirectory/ContentDirectory.cpp
Expand Up @@ -30,6 +30,7 @@
#include "../SharedLog.h"
#include "../Common/Common.h"
#include "../Common/RegEx.h"
#include "../Plugins/Plugin.h"
#include "VirtualContainerMgr.h"
#include "libdlna/dlna.h"

Expand Down Expand Up @@ -919,7 +920,18 @@ void CContentDirectory::BuildVideoItemDescription(xmlTextWriterPtr pWriter,
xmlTextWriterStartElement(pWriter, BAD_CAST "upnp:class");
xmlTextWriterWriteString(pWriter, BAD_CAST pUPnPBrowse->DeviceSettings()->ObjectTypeAsStr(sExt).c_str());
xmlTextWriterEndElement(pWriter);


// albumArt
if(CPluginMgr::hasMetadataPlugin("ffmpegthumbnailer")) {
xmlTextWriterStartElement(pWriter, BAD_CAST "upnp:albumArtURI");
xmlTextWriterWriteAttribute(pWriter, BAD_CAST "xmlns:dlna", BAD_CAST "urn:schemas-dlna-org:metadata-1-0/");
xmlTextWriterWriteAttribute(pWriter, BAD_CAST "dlna:profileID", BAD_CAST "JPEG_TN");
string url = "http://" + m_sHTTPServerURL + "/MediaServer/ImageItems/" + p_sObjectID + ".jpg?width=160&height=160";
xmlTextWriterWriteString(pWriter, BAD_CAST url.c_str());
xmlTextWriterEndElement(pWriter);
}


// res
xmlTextWriterStartElement(pWriter, BAD_CAST "res");

Expand Down Expand Up @@ -972,7 +984,7 @@ void CContentDirectory::BuildVideoItemDescription(xmlTextWriterPtr pWriter,
if(!bTranscode && pUPnPBrowse->IncludeProperty("res@size") && !pSQLResult->isNull("SIZE")) {
xmlTextWriterWriteAttribute(pWriter, BAD_CAST "size", BAD_CAST pSQLResult->asString("SIZE").c_str());
}
sExt = pUPnPBrowse->DeviceSettings()->Extension(sExt, pSQLResult->asString("A_CODEC"), pSQLResult->asString("V_CODEC"));

sTmp = "http://" + m_sHTTPServerURL + "/MediaServer/VideoItems/" + p_sObjectID + "." + sExt;
Expand Down
25 changes: 21 additions & 4 deletions src/lib/ContentDirectory/FileDetails.cpp
Expand Up @@ -153,12 +153,15 @@ bool CFileDetails::getMusicTrackDetails(std::string p_sFileName,

//metadata_t metadata;
if(!audio || !audio->openFile(p_sFileName)) {
if(audio)
delete audio;
return false;
}

//init_metadata(metadata);
if(!audio->readData(metadata)) {
//free_metadata(metadata);
delete audio;
return false;
}

Expand Down Expand Up @@ -186,6 +189,7 @@ bool CFileDetails::getMusicTrackDetails(std::string p_sFileName,
}

audio->closeFile();
delete audio;
//free_metadata(&metadata);
return true;
}
Expand All @@ -210,9 +214,12 @@ bool CFileDetails::GetImageDetails(std::string p_sFileName, SImageItem* pImageIt

image->closeFile();
free_metadata(&metadata);
delete image;
return true;
}
}
if(image)
delete image;

image = CPluginMgr::metadataPlugin("magickWand");
if(image && image->openFile(p_sFileName)) {
Expand All @@ -224,9 +231,13 @@ bool CFileDetails::GetImageDetails(std::string p_sFileName, SImageItem* pImageIt

image->closeFile();
free_metadata(&metadata);
delete image;
return true;
}
}
if(image)
delete image;


image = CPluginMgr::metadataPlugin("simage");
if(image && image->openFile(p_sFileName)) {
Expand All @@ -237,9 +248,12 @@ bool CFileDetails::GetImageDetails(std::string p_sFileName, SImageItem* pImageIt

image->closeFile();
free_metadata(&metadata);
delete image;
return true;
}
}
if(image)
delete image;

free_metadata(&metadata);
return false;
Expand All @@ -250,7 +264,8 @@ bool CFileDetails::GetVideoDetails(std::string p_sFileName, SVideoItem* pVideoIt
string sExt = ExtractFileExt(p_sFileName);
if(!CDeviceIdentificationMgr::Shared()->DefaultDevice()->FileSettings(sExt)->ExtractMetadata())
return false;


bool result = false;
CMetadataPlugin* video = CPluginMgr::metadataPlugin("libavformat");
metadata_t metadata;
if(video && video->openFile(p_sFileName)) {
Expand All @@ -269,10 +284,12 @@ bool CFileDetails::GetVideoDetails(std::string p_sFileName, SVideoItem* pVideoIt

video->closeFile();
free_metadata(&metadata);
return true;
result = true;
}
free_metadata(&metadata);
}

if(video)
delete video;

return false;
return result;
}

0 comments on commit 85dadbc

Please sign in to comment.