summaryrefslogtreecommitdiff
path: root/libs/fsScan/src
diff options
context:
space:
mode:
Diffstat (limited to 'libs/fsScan/src')
-rw-r--r--libs/fsScan/src/AbstractMedia.cc135
-rw-r--r--libs/fsScan/src/AbstractMultiFileMovie.cc108
-rw-r--r--libs/fsScan/src/Audio.cc70
-rw-r--r--libs/fsScan/src/DVDImage.cc117
-rw-r--r--libs/fsScan/src/FSMediaScanner.cc111
-rw-r--r--libs/fsScan/src/LegacyVdrRecording.cc104
-rw-r--r--libs/fsScan/src/MediaFactory.cc148
-rw-r--r--libs/fsScan/src/Movie.cc67
-rw-r--r--libs/fsScan/src/Picture.cc69
-rw-r--r--libs/fsScan/src/VdrRecording.cc103
10 files changed, 0 insertions, 1032 deletions
diff --git a/libs/fsScan/src/AbstractMedia.cc b/libs/fsScan/src/AbstractMedia.cc
deleted file mode 100644
index 924f01a..0000000
--- a/libs/fsScan/src/AbstractMedia.cc
+++ /dev/null
@@ -1,135 +0,0 @@
-/**
- * ======================== legal notice ======================
- *
- * File: AbstractMedia.cc
- * Created: 2. Juli 2012, 14
- * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
- * Project: libfsScan: mediatypes and filesystem scanning
- *
- * CMP - compound media player
- *
- * is a client/server mediaplayer intended to play any media from any workstation
- * without the need to export or mount shares. cmps is an easy to use backend
- * with a (ready to use) HTML-interface. Additionally the backend supports
- * authentication via HTTP-digest authorization.
- * cmpc is a client with vdr-like osd-menues.
- *
- * Copyright (c) 2012 Reinhard Mantey, some rights reserved!
- * published under Creative Commons by-sa
- * For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
- * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
- * --------------------------------------------------------------
- */
-#include <AbstractMedia.h>
-#include <Logging.h>
-#include <File.h>
-#include <Url.h>
-#include <Codec.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <util.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <unistd.h>
-
-cAbstractMedia::cAbstractMedia(const cFile &File, const char *Mime, SupportedMediaType Type)
- : fd(-1)
- , mediaType(Type)
- , mimeType(Mime ? strdup(Mime) : NULL)
- , uri(NULL)
- , logicalPath(NULL)
- , keyPath(File)
-{
- uri = keyPath.toURI();
- logicalPath = cUrl::Decoder()->Decode(uri);
-}
-
-cAbstractMedia::~cAbstractMedia()
-{
- free(mimeType);
- free(uri);
- free(logicalPath);
-}
-
-const char *cAbstractMedia::Name(void) const
-{
- return keyPath.Name();
-}
-
-void cAbstractMedia::Refresh(void)
-{
-}
-
-size_t cAbstractMedia::ReadChunk(char* Buf, size_t bufSize)
-{
- long rv = 0;
- const char *path = AbsolutePath();
-
- if (fd < 1) { // fd stays open between various calls
- fd = open(path, O_RDONLY | O_LARGEFILE);
- if (fd < 1) {
- esyslog("could not open requested path %s - Error #%d", path, errno);
- return 0;
- }
- }
- isyslog("have filehandle #%d (%s)", fd, path);
- if ((rv = read(fd, Buf, bufSize)) < 0)
- esyslog("ERROR: failed to read from file %s #%d", path, errno);
- else
- isyslog("read %u bytes from file %s", rv, path);
- if (rv < (long) bufSize) { // most probabely end of file
- close(fd);
- }
- return rv;
-}
-
-void cAbstractMedia::Reset(void)
-{
- if (fd >= 0) {
- close(fd);
- fd = -1;
- }
-}
-
-size_t cAbstractMedia::Size(void) const
-{
- return keyPath.Size();
-}
-
-const char *cAbstractMedia::MediaType2Text(int Type)
-{
- switch(Type) {
- case Audio: return TO_STRING(Audio);
- case Movie: return TO_STRING(Movie);
- case DVDImage: return TO_STRING(DVDImage);
- case LegacyVdrRecording: return TO_STRING(LegacyVdrRecording);
- case VdrRecording: return TO_STRING(VdrRecording);
- case Picture: return TO_STRING(Picture);
- default: return TO_STRING(Invalid);
- }
-}
-
-bool cAbstractMedia::NeedsFurtherScan(void) const
-{
- return false;
-}
-
-const char *cAbstractMedia::AbsolutePath(void) const
-{
- return keyPath.AbsolutePath();
-}
-
-ulong cAbstractMedia::LastModified(void) const
-{
- return keyPath.LastModified();
-}
-
-void cAbstractMedia::SetMimeType(const char *MimeType)
-{
- if (mimeType == MimeType) return;
- free(mimeType);
- mimeType = strdup(MimeType);
-}
diff --git a/libs/fsScan/src/AbstractMultiFileMovie.cc b/libs/fsScan/src/AbstractMultiFileMovie.cc
deleted file mode 100644
index f679511..0000000
--- a/libs/fsScan/src/AbstractMultiFileMovie.cc
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * ======================== legal notice ======================
- *
- * File: AbstractMultiFileMovie.cc
- * Created: 3. Juli 2012, 07
- * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
- * Project: libfsScan: mediatypes and filesystem scanning
- *
- * CMP - compound media player
- *
- * is a client/server mediaplayer intended to play any media from any workstation
- * without the need to export or mount shares. cmps is an easy to use backend
- * with a (ready to use) HTML-interface. Additionally the backend supports
- * authentication via HTTP-digest authorization.
- * cmpc is a client with vdr-like osd-menues.
- *
- * Copyright (c) 2012 Reinhard Mantey, some rights reserved!
- * published under Creative Commons by-sa
- * For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
- * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
- * --------------------------------------------------------------
- */
-#include <AbstractMultiFileMovie.h>
-#include <Logging.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <unistd.h>
-
-cAbstractMultiFileMovie::cAbstractMultiFileMovie(const cFile &File, const char *Mime, SupportedMediaType Type)
- : cMovie(File, Mime, Type)
- , movieFiles(0)
- , curFileNo(0)
- , buf(NULL)
- , bufSize(0)
- , name(NULL)
-{
-}
-
-cAbstractMultiFileMovie::~cAbstractMultiFileMovie()
-{
- free(name);
- free(buf);
-}
-
-bool cAbstractMultiFileMovie::checkBuffer()
-{
- if (!buf && bufSize) {
- buf = (char *) malloc(bufSize);
- }
- return buf != NULL;
-}
-
-size_t cAbstractMultiFileMovie::ReadChunk(char* Buf, size_t bufSize)
-{
- long rv = 0;
- const char *path = NULL;
-
- if (fd < 1) {
- path = FirstFile();
- fd = open(path, O_RDONLY | O_LARGEFILE);
- if (fd < 1) {
- esyslog("could not open requested path %s - Error #%d", path, errno);
- return 0;
- }
- }
- isyslog("have filehandle #%d (%s)", fd, path);
- rv = read(fd, Buf, bufSize);
-
- if (rv < (long) bufSize) {
- path = NextFile();
-
- if (path) {
- close(fd);
- fd = open(path, O_RDONLY | O_LARGEFILE);
- if (fd < 1) {
- esyslog("could not open requested path %s - Error #%d", path, errno);
- return 0;
- }
- isyslog("have filehandle #%d (%s)", fd, path);
- rv = read(fd, Buf, bufSize);
- }
- if (rv < (long) bufSize) {
- close(fd);
- fd = -1;
- }
- }
- return rv;
-}
-
-void cAbstractMultiFileMovie::Reset()
-{
- cMovie::Reset();
- curFileNo = 0;
-}
-
-void cAbstractMultiFileMovie::SetName(char* Name)
-///< Name must have already been allocated from heap!
-{
- name = Name;
-}
-
-void cAbstractMultiFileMovie::SetSize(size_t Size)
-{
- size = Size;
-} \ No newline at end of file
diff --git a/libs/fsScan/src/Audio.cc b/libs/fsScan/src/Audio.cc
deleted file mode 100644
index 6c90fbc..0000000
--- a/libs/fsScan/src/Audio.cc
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * ======================== legal notice ======================
- *
- * File: Audio.cc
- * Created: 2. Juli 2012, 15
- * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
- * Project: libfsScan: mediatypes and filesystem scanning
- *
- * CMP - compound media player
- *
- * is a client/server mediaplayer intended to play any media from any workstation
- * without the need to export or mount shares. cmps is an easy to use backend
- * with a (ready to use) HTML-interface. Additionally the backend supports
- * authentication via HTTP-digest authorization.
- * cmpc is a client with vdr-like osd-menues.
- *
- * Copyright (c) 2012 Reinhard Mantey, some rights reserved!
- * published under Creative Commons by-sa
- * For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
- * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
- * --------------------------------------------------------------
- */
-#include <Audio.h>
-#include <stddef.h>
-#include <string.h>
-
-SupportedExtension cAudio::knownExtensions[] = {
- { "aac", "audio/aac" },
- { "aif", "audio/x-aiff" },
- { "aiff", "audio/x-aiff" },
- { "aifc", "audio/x-aiff" },
- { "au", "audio/x-au" },
- { "fla", "audio/flac" },
- { "flac", "audio/flac" },
- { "oga", "audio/ogg" },
- { "ogg", "audio/ogg" },
- { "mka", "audio/x-matroska" },
- { "mp3", "audio/mpeg" },
- { "mp4", "audio/x-mpeg4" },
- { "m4a", "audio/x-m4" },
-// { "mpg", "audio/mpeg" },
- { "mpp", "audio/x-musepack" },
- { "ram", "audio/x-realaudio" },
- { NULL, NULL }
-};
-
-cAudio::cAudio(const cFile &File, const char *Mime)
- : cAbstractMedia(File, Mime, Audio)
-{
-}
-
-cAudio::~cAudio()
-{
-}
-
-const char *cAudio::ContentType(const char* Extension)
-{
- for (SupportedExtension *p = knownExtensions; p && p->extension; ++p) {
- if (!strcasecmp(p->extension, Extension)) return p->mimeType;
- }
- return NULL;
-}
-
-bool cAudio::NeedsFurtherScan(void) const
-{
-//TODO: common meta data: artist, title
- return true;
-}
diff --git a/libs/fsScan/src/DVDImage.cc b/libs/fsScan/src/DVDImage.cc
deleted file mode 100644
index 0d23ae1..0000000
--- a/libs/fsScan/src/DVDImage.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-/**
- * ======================== legal notice ======================
- *
- * File: DVDImage.cc
- * Created: 3. Juli 2012, 08
- * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
- * Project: libfsScan: mediatypes and filesystem scanning
- *
- * CMP - compound media player
- *
- * is a client/server mediaplayer intended to play any media from any workstation
- * without the need to export or mount shares. cmps is an easy to use backend
- * with a (ready to use) HTML-interface. Additionally the backend supports
- * authentication via HTTP-digest authorization.
- * cmpc is a client with vdr-like osd-menues.
- *
- * Copyright (c) 2012 Reinhard Mantey, some rights reserved!
- * published under Creative Commons by-sa
- * For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
- * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
- * --------------------------------------------------------------
- */
-#include <DVDImage.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "File.h"
-#define FILE_MASK "VIDEO_TS/VTS_%02d_%d.VOB"
-
-cDVDImage::cDVDImage(const cFile &File)
- : cAbstractMultiFileMovie(File, "video/mpeg", DVDImage)
-{
- bufSize = 32;
-}
-
-cDVDImage::~cDVDImage()
-{
-}
-
-const char *cDVDImage::Name(void) const
-{
- return cAbstractMedia::Name();
-}
-
-size_t cDVDImage::Size(void) const
-{
- return cAbstractMedia::Size();
-}
-
-void cDVDImage::Refresh(void)
-{
- size_t maxSize = 0;
- size_t total = 0;
- int numOfMovieFiles = 0;
- cFile *tmp;
-
- movieFiles = 0;
- mainMovie = 0;
- if (!checkBuffer()) return;
- for (int movie = 1; movie < 100; ++movie) {
- total = 0;
- for (int fileNo = 1;; ++fileNo) {
- sprintf(buf, FILE_MASK, movie, fileNo);
- tmp = new cFile(KeyPath(), buf);
-
- if (!tmp || !tmp->Exists()) {
- numOfMovieFiles = fileNo - 1;
- break;
- }
- total += tmp->Size();
- delete tmp;
- }
- if (total > maxSize) {
- maxSize = total;
- mainMovie = movie;
- movieFiles = numOfMovieFiles;
- }
- }
- SetSize(total);
-}
-
-const char *cDVDImage::FirstFile(void)
-{
- if (!checkBuffer()) return NULL;
-
- curFileNo = 1;
- sprintf(buf, FILE_MASK, mainMovie, curFileNo);
- cFile *tmp = new cFile(KeyPath(), buf);
- const char *rv = NULL;
-
- if (tmp) {
- rv = tmp->AbsolutePath();
- delete tmp;
- }
- return rv;
-}
-
-const char *cDVDImage::NextFile(void)
-{
- if (++curFileNo < movieFiles) {
- if (!checkBuffer()) return NULL;
- sprintf(buf, FILE_MASK, mainMovie, curFileNo);
- cFile *tmp = new cFile(KeyPath(), buf);
- const char *rv = NULL;
-
- if (tmp) {
- tmp->AbsolutePath();
- delete tmp;
-
- return rv;
- }
- }
- return NULL;
-}
diff --git a/libs/fsScan/src/FSMediaScanner.cc b/libs/fsScan/src/FSMediaScanner.cc
deleted file mode 100644
index f4ac14e..0000000
--- a/libs/fsScan/src/FSMediaScanner.cc
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * ======================== legal notice ======================
- *
- * File: FSMediaScanner.cc
- * Created: 2. Juli 2012, 13
- * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
- * Project: libfsScan: mediatypes and filesystem scanning
- *
- * CMP - compound media player
- *
- * is a client/server mediaplayer intended to play any media from any workstation
- * without the need to export or mount shares. cmps is an easy to use backend
- * with a (ready to use) HTML-interface. Additionally the backend supports
- * authentication via HTTP-digest authorization.
- * cmpc is a client with vdr-like osd-menues.
- *
- * Copyright (c) 2012 Reinhard Mantey, some rights reserved!
- * published under Creative Commons by-sa
- * For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
- * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
- * --------------------------------------------------------------
- */
-#include <FSMediaScanner.h>
-#include <AbstractMedia.h>
-#include <Logging.h>
-#include <stddef.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-#include <sys/dir.h>
-#include <sys/stat.h>
-#include <stdio.h>
-#include <errno.h>
-#include <util.h>
-
-void freeMediaCallback(void *elem)
-{
- delete (cAbstractMedia *)elem;
-}
-
-cFSMediaScanner::cFSMediaScanner()
- : fileBufSize(512)
- , pool(freeMediaCallback)
- , mediaFactory(NULL)
-{
-}
-
-cFSMediaScanner::~cFSMediaScanner()
-{
- pool.clear();
- if (mediaFactory) delete mediaFactory;
-}
-
-void cFSMediaScanner::SetMediaFactory(cMediaFactory* factory)
-{
- mediaFactory = factory;
-}
-
-// return true if "a" should be ordered before "b"
-bool defaultMediaSortOrder(void *a, void *b)
-{
- if (a == b) return false;
- if (!a) return false;
- if (!b) return true;
- cAbstractMedia *m0 = (cAbstractMedia *)a;
- cAbstractMedia *m1 = (cAbstractMedia *)b;
- bool rv = false;
-
- if (m0->MediaType() == m1->MediaType())
- rv = strcasecmp(m0->Name(), m1->Name()) < 0;
- else
- rv = (m0->MediaType() - m1->MediaType()) < 0;
-
- return rv;
-}
-
-void cFSMediaScanner::Refresh()
-{
- if (!mediaFactory) return;
- pool.clear();
- categories.clear();
-
- mediaFactory->Scan4Media(pool);
- cAbstractMedia::SupportedMediaType ot = cAbstractMedia::Invalid;
- cAbstractMedia *m;
-
- pool.sort(defaultMediaSortOrder);
- for (size_t i=0; i < pool.size(); ++i) {
- m = (cAbstractMedia *) pool[i];
- if (m->MediaType() != ot) {
- ot = m->MediaType();
- categories[ot] = i;
- }
- }
-}
-
-cAbstractMedia *cFSMediaScanner::FindMedia(const char *Path)
-{
- cAbstractMedia *rv = NULL, *tmp;
-
- for (size_t i=0; i < pool.size(); ++i) {
- tmp = (cAbstractMedia *) pool[i];
- if (!strcmp(tmp->LogicalPath(), Path)) {
- rv = tmp;
- break;
- }
- }
- return rv;
-}
diff --git a/libs/fsScan/src/LegacyVdrRecording.cc b/libs/fsScan/src/LegacyVdrRecording.cc
deleted file mode 100644
index 5ee635c..0000000
--- a/libs/fsScan/src/LegacyVdrRecording.cc
+++ /dev/null
@@ -1,104 +0,0 @@
-/**
- * ======================== legal notice ======================
- *
- * File: LegacyVdrRecording.cc
- * Created: 3. Juli 2012, 08
- * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
- * Project: libfsScan: mediatypes and filesystem scanning
- *
- * CMP - compound media player
- *
- * is a client/server mediaplayer intended to play any media from any workstation
- * without the need to export or mount shares. cmps is an easy to use backend
- * with a (ready to use) HTML-interface. Additionally the backend supports
- * authentication via HTTP-digest authorization.
- * cmpc is a client with vdr-like osd-menues.
- *
- * Copyright (c) 2012 Reinhard Mantey, some rights reserved!
- * published under Creative Commons by-sa
- * For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
- * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
- * --------------------------------------------------------------
- */
-#include <LegacyVdrRecording.h>
-#include <StringBuilder.h>
-#include <File.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#define FILE_MASK "%03d.vdr"
-
-cLegacyVdrRecording::cLegacyVdrRecording(const cFile &File)
- : cAbstractMultiFileMovie(File, "video/mpeg", LegacyVdrRecording)
-{
- cStringBuilder sb;
- cFile *parent = File.Parent();
-
- sb.Append(parent->Name());
- sb.Append(" (").Append(File.Name()).Append(")");
- delete parent;
- SetName(sb.toString());
- bufSize = 8;
-}
-
-cLegacyVdrRecording::~cLegacyVdrRecording()
-{
-}
-
-void cLegacyVdrRecording::Refresh(void)
-{
- size_t total = 0;
- cFile *tmp;
-
- if (!checkBuffer()) return;
- movieFiles = 0;
- for (int fileNo = 1;; ++fileNo) {
- sprintf(buf, FILE_MASK, fileNo);
- tmp = new cFile(KeyPath(), buf);
-
- if (!tmp || !tmp->Exists()) {
- movieFiles = fileNo - 1;
- delete tmp;
- break;
- }
- total += tmp->Size();
- delete tmp;
- }
- SetSize(total);
-}
-
-const char *cLegacyVdrRecording::FirstFile(void)
-{
- if (!checkBuffer()) return NULL;
- curFileNo = 1;
- sprintf(buf, FILE_MASK, curFileNo);
- cFile *tmp = new cFile(KeyPath(), buf);
- const char *rv = NULL;
-
- if (tmp) {
- rv = tmp->AbsolutePath();
- delete tmp;
- }
- return rv;
-}
-
-const char *cLegacyVdrRecording::NextFile(void)
-{
- if (++curFileNo < movieFiles) {
- if (!checkBuffer()) return NULL;
- sprintf(buf, FILE_MASK, curFileNo);
- cFile *tmp = new cFile(KeyPath(), buf);
- const char *rv = NULL;
-
- if (tmp) {
- rv = tmp->AbsolutePath();
- delete tmp;
-
- return rv;
- }
- }
- return NULL;
-}
diff --git a/libs/fsScan/src/MediaFactory.cc b/libs/fsScan/src/MediaFactory.cc
deleted file mode 100644
index 4dec763..0000000
--- a/libs/fsScan/src/MediaFactory.cc
+++ /dev/null
@@ -1,148 +0,0 @@
-/**
- * ======================== legal notice ======================
- *
- * File: MediaFactory.cc
- * Created: 2. Juli 2012, 15
- * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
- * Project: libfsScan: mediatypes and filesystem scanning
- *
- * CMP - compound media player
- *
- * is a client/server mediaplayer intended to play any media from any workstation
- * without the need to export or mount shares. cmps is an easy to use backend
- * with a (ready to use) HTML-interface. Additionally the backend supports
- * authentication via HTTP-digest authorization.
- * cmpc is a client with vdr-like osd-menues.
- *
- * Copyright (c) 2012 Reinhard Mantey, some rights reserved!
- * published under Creative Commons by-sa
- * For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
- * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
- * --------------------------------------------------------------
- */
-#include <MediaFactory.h>
-#include <Audio.h>
-#include <Movie.h>
-#include <Picture.h>
-#include <LegacyVdrRecording.h>
-#include <VdrRecording.h>
-#include <DVDImage.h>
-#include <ServerConfig.h>
-#include <StringBuilder.h>
-#include <Logging.h>
-#include <File.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-cMediaFactory::cMediaFactory(const cServerConfig &sc)
- : config(sc)
- , baseDirectory(sc.DocumentRoot())
- , scratch(NULL)
- , scratchSize(1024)
-{
- scratch = (char *)malloc(scratchSize);
-}
-
-cMediaFactory::~cMediaFactory()
-{
- free(scratch);
-}
-
-void cMediaFactory::SetBaseDirectory(const cFile &dir)
-{
- if (!dir.IsDirectory()) {
- esyslog("ERROR: attempt to set base directory to a file (%s)", dir.Name());
- return;
- }
- baseDirectory = dir;
-}
-
-int cMediaFactory::createMedia(void *opaque, cFile *Parent, const char *Name)
-{
- if (!opaque) return -1;
- cMediaFactory *mf = (cMediaFactory *) opaque;
-
- return mf->CreateMedia(Parent, Name);
-}
-
-int cMediaFactory::CreateMedia(const cFile *Parent, const char *Name)
-{
-// cManagedVector *pool = (cManagedVector *) opaque;
- cFile *curFile = new cFile(*Parent, Name);
- const char *mimeType = NULL;
- cAbstractMedia *rv = NULL;
-
- if (!curFile) {
- esyslog("ERROR: out of memory!");
- return -1;
- }
- if (!curFile->Exists()) {
- delete curFile;
- return -1;
- }
- if (curFile->IsDirectory()) {
- static const char *keyFiles[] = { "001.vdr", "00001.ts", "VIDEO_TS/VIDEO_TS.IFO", NULL };
- cFile *tmp;
- const char *check;
- int n=0;
-
- for (const char **kf = keyFiles; kf && *kf; ++kf, ++n) {
- tmp = new cFile(*curFile, *kf);
- check = tmp ? tmp->AbsolutePath() : NULL;
-
- if (tmp->Exists() && tmp->IsFile() && !tmp->IsDirectory()) {
- switch (n) {
- case 0: rv = new cLegacyVdrRecording(*curFile); break;
- case 1: rv = new cVdrRecording(*curFile); break;
- default: rv = new cDVDImage(*curFile); break;
- }
- }
- delete tmp;
- }
- if (!rv) curFile->VisitFiles(createMedia, this);
- }
- else {
- const char *extension = strrchr(Name, '.');
-
- if (!extension) {
- delete curFile;
-
- return -1;
- }
- ++extension;
- mimeType = cMovie::ContentType(extension);
- if (mimeType) rv = new cMovie(*curFile, mimeType);
- else {
- mimeType = cAudio::ContentType(extension);
- if (mimeType) rv = new cAudio(*curFile, mimeType);
- else {
- mimeType = cPicture::ContentType(extension);
- if (mimeType) rv = new cPicture(*curFile, mimeType);
- }
- }
- }
- delete curFile;
- if (rv) {
- if (config.WantExtendedScan() && rv->NeedsFurtherScan()) Scan4MetaData(rv);
- mediaPool->push_back(rv);
- return 0;
- }
- return -1;
-}
-
-void cMediaFactory::Scan4Media(cManagedVector& pool)
-{
- if (!baseDirectory.Exists() || !baseDirectory.IsDirectory()) return;
-
- baseDirectory.SetVirtualRoot();
- mediaPool = &pool;
- baseDirectory.VisitFiles(createMedia, this);
-}
-
-void cMediaFactory::Scan4MetaData(cAbstractMedia* media)
-{
- //TODO:
-}
diff --git a/libs/fsScan/src/Movie.cc b/libs/fsScan/src/Movie.cc
deleted file mode 100644
index a63ff19..0000000
--- a/libs/fsScan/src/Movie.cc
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * ======================== legal notice ======================
- *
- * File: Movie.cc
- * Created: 2. Juli 2012, 15
- * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
- * Project: libfsScan: mediatypes and filesystem scanning
- *
- * CMP - compound media player
- *
- * is a client/server mediaplayer intended to play any media from any workstation
- * without the need to export or mount shares. cmps is an easy to use backend
- * with a (ready to use) HTML-interface. Additionally the backend supports
- * authentication via HTTP-digest authorization.
- * cmpc is a client with vdr-like osd-menues.
- *
- * Copyright (c) 2012 Reinhard Mantey, some rights reserved!
- * published under Creative Commons by-sa
- * For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
- * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
- * --------------------------------------------------------------
- */
-#include <Movie.h>
-#include <stddef.h>
-#include <string.h>
-
-SupportedExtension cMovie::knownExtensions[] = {
- { "asd", "video/x-ms-asf" },
- { "asf", "video/x-ms-asf" },
- { "avi", "video/x-msvideo" },
- { "dv", "video/x-dv" },
- { "flv", "video/x-flv" },
- { "gl", "video/x-gl" },
- { "iso", "application/x-iso9660-image" },
- { "ogv", "video/ogg" },
- { "mkv", "video/x-matroska" },
- { "mov", "video/quicktime" },
- { "mpg", "video/mpeg" },
- { "mpeg", "video/mpeg" },
- { "swf", "application/x-shockwave-flash" },
- { NULL, NULL }
-};
-
-cMovie::cMovie(const cFile &File, const char *Mime, SupportedMediaType Type)
- : cAbstractMedia(File, Mime, Type)
-{
-}
-
-cMovie::~cMovie()
-{
-}
-
-const char *cMovie::ContentType(const char* Extension)
-{
- for (SupportedExtension *p = knownExtensions; p && p->extension; ++p) {
- if (!strcasecmp(p->extension, Extension)) return p->mimeType;
- }
- return NULL;
-}
-
-bool cMovie::NeedsFurtherScan(void) const
-{
-//TODO: common meta data: width, height, interlaced
- return true;
-}
diff --git a/libs/fsScan/src/Picture.cc b/libs/fsScan/src/Picture.cc
deleted file mode 100644
index 19a02a1..0000000
--- a/libs/fsScan/src/Picture.cc
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * ======================== legal notice ======================
- *
- * File: Picture.cc
- * Created: 2. Juli 2012, 15
- * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
- * Project: libfsScan: mediatypes and filesystem scanning
- *
- * CMP - compound media player
- *
- * is a client/server mediaplayer intended to play any media from any workstation
- * without the need to export or mount shares. cmps is an easy to use backend
- * with a (ready to use) HTML-interface. Additionally the backend supports
- * authentication via HTTP-digest authorization.
- * cmpc is a client with vdr-like osd-menues.
- *
- * Copyright (c) 2012 Reinhard Mantey, some rights reserved!
- * published under Creative Commons by-sa
- * For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
- * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
- * --------------------------------------------------------------
- */
-#include <Picture.h>
-#include <stddef.h>
-#include <string.h>
-
-SupportedExtension cPicture::knownExtensions[] = {
- { "bmp", "image/x-windows-bmp" },
- { "gif", "image/gif" },
- { "jff", "image/jpeg" },
- { "jfif", "image/jpeg" },
- { "jif", "image/jpeg" },
- { "jp2", "image/jp2" },
- { "jpe", "image/jpeg" },
- { "jpeg", "image/jpeg" },
- { "jpg", "image/jpeg" },
- { "jpm", "image/jpm" },
- { "jpx", "image/jpx" },
- { "pbm", "image/x-portable-bitmap" },
- { "pct", "image/x-pict" },
- { "pcx", "image/x-pcx" },
- { "png", "image/png" },
- { "pnm", "image/x-portable-anymap" },
- { "ppm", "image/x-portable-pixmap" },
- { "qti", "image/quicktime" },
- { "ras", "image/x-cmu-raster" },
- { "rgb", "image/x-rgb" },
- { NULL, NULL }
-};
-
-cPicture::cPicture(const cFile &File, const char *Mime)
-: cAbstractMedia(File, Mime, Picture)
-{
-}
-
-cPicture::~cPicture()
-{
-}
-
-const char *cPicture::ContentType(const char* Extension)
-{
- for (SupportedExtension *p = knownExtensions; p && p->extension; ++p) {
- if (!strcasecmp(p->extension, Extension)) return p->mimeType;
- }
- return NULL;
-}
-
diff --git a/libs/fsScan/src/VdrRecording.cc b/libs/fsScan/src/VdrRecording.cc
deleted file mode 100644
index 03abccf..0000000
--- a/libs/fsScan/src/VdrRecording.cc
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * ======================== legal notice ======================
- *
- * File: VdrRecording.cc
- * Created: 3. Juli 2012, 08
- * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
- * Project: libfsScan: mediatypes and filesystem scanning
- *
- * CMP - compound media player
- *
- * is a client/server mediaplayer intended to play any media from any workstation
- * without the need to export or mount shares. cmps is an easy to use backend
- * with a (ready to use) HTML-interface. Additionally the backend supports
- * authentication via HTTP-digest authorization.
- * cmpc is a client with vdr-like osd-menues.
- *
- * Copyright (c) 2012 Reinhard Mantey, some rights reserved!
- * published under Creative Commons by-sa
- * For details see http://creativecommons.org/licenses/by-sa/3.0/
- *
- * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
- *
- * --------------------------------------------------------------
- */
-#include <VdrRecording.h>
-#include <StringBuilder.h>
-#include <File.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#define FILE_MASK "/%05d.ts"
-
-cVdrRecording::cVdrRecording(const cFile &File)
- : cAbstractMultiFileMovie(File, "video/mpeg", VdrRecording)
-{
- cStringBuilder sb;
- cFile *parent = File.Parent();
-
- sb.Append(parent->Name());
- sb.Append(" (").Append(File.Name()).Append(")");
- delete parent;
- SetName(sb.toString());
- bufSize = 10;
-}
-
-cVdrRecording::~cVdrRecording()
-{
-}
-
-void cVdrRecording::Refresh(void)
-{
- size_t total = 0;
- cFile *tmp;
-
- if (!checkBuffer()) return;
- movieFiles = 0;
- for (int fileNo = 1;; ++fileNo) {
- sprintf(buf, FILE_MASK, fileNo);
- tmp = new cFile(KeyPath(), buf);
-
- if (!tmp || !tmp->Exists()) {
- movieFiles = fileNo - 1;
- delete tmp;
- break;
- }
- total += tmp->Size();
- delete tmp;
- }
- SetSize(total);
-}
-
-const char *cVdrRecording::FirstFile(void)
-{
- if (!checkBuffer()) return NULL;
- curFileNo = 1;
- sprintf(buf, FILE_MASK, curFileNo);
- cFile *tmp = new cFile(KeyPath(), buf);
- const char *rv = NULL;
-
- if (tmp) {
- rv = tmp->AbsolutePath();
- delete tmp;
- }
- return rv;
-}
-
-const char *cVdrRecording::NextFile(void)
-{
- if (++curFileNo < movieFiles) {
- if (!checkBuffer()) return NULL;
- sprintf(buf, FILE_MASK, curFileNo);
- cFile *tmp = new cFile(KeyPath(), buf);
- const char *rv = NULL;
-
- if (tmp) {
- rv = tmp->AbsolutePath();
- delete tmp;
-
- return rv;
- }
- }
- return NULL;
-}