From 41922cdaf9c8db57c6b51f090eefe95b0008a0fb Mon Sep 17 00:00:00 2001 From: geronimo Date: Mon, 30 Jul 2012 09:19:12 +0200 Subject: former libfsScan now contains only media related stuff, so renamed lib to libmediaScan --- libs/fsScan/.dep.inc | 5 - libs/fsScan/Makefile | 128 ------------------ libs/fsScan/include/AbstractMedia.h | 85 ------------ libs/fsScan/include/AbstractMultiFileMovie.h | 57 -------- libs/fsScan/include/Audio.h | 46 ------- libs/fsScan/include/DVDImage.h | 46 ------- libs/fsScan/include/FSMediaScanner.h | 52 -------- libs/fsScan/include/LegacyVdrRecording.h | 41 ------ libs/fsScan/include/MediaFactory.h | 58 -------- libs/fsScan/include/Movie.h | 46 ------- libs/fsScan/include/Picture.h | 44 ------ libs/fsScan/include/VdrRecording.h | 41 ------ libs/fsScan/mediaScan.cbp | 74 ----------- libs/fsScan/mediaScan.depend | 1 - libs/fsScan/mediaScan.layout | 34 ----- libs/fsScan/nbproject/Makefile-Debug.mk | 148 --------------------- libs/fsScan/nbproject/Makefile-Release.mk | 140 ------------------- libs/fsScan/nbproject/Makefile-impl.mk | 133 ------------------ libs/fsScan/nbproject/Makefile-variables.mk | 35 ----- libs/fsScan/nbproject/Package-Debug.bash | 75 ----------- libs/fsScan/nbproject/Package-Release.bash | 75 ----------- libs/fsScan/nbproject/configurations.xml | 147 -------------------- .../fsScan/nbproject/private/Makefile-variables.mk | 7 - libs/fsScan/nbproject/private/configurations.xml | 72 ---------- libs/fsScan/nbproject/private/private.xml | 9 -- libs/fsScan/nbproject/project.xml | 30 ----- libs/fsScan/src/AbstractMedia.cc | 135 ------------------- libs/fsScan/src/AbstractMultiFileMovie.cc | 108 --------------- libs/fsScan/src/Audio.cc | 70 ---------- libs/fsScan/src/DVDImage.cc | 117 ---------------- libs/fsScan/src/FSMediaScanner.cc | 111 ---------------- libs/fsScan/src/LegacyVdrRecording.cc | 104 --------------- libs/fsScan/src/MediaFactory.cc | 148 --------------------- libs/fsScan/src/Movie.cc | 67 ---------- libs/fsScan/src/Picture.cc | 69 ---------- libs/fsScan/src/VdrRecording.cc | 103 -------------- libs/fsScan/summary.txt | 1 - libs/mediaScan/.dep.inc | 5 + libs/mediaScan/Makefile | 128 ++++++++++++++++++ libs/mediaScan/include/AbstractMedia.h | 85 ++++++++++++ libs/mediaScan/include/AbstractMultiFileMovie.h | 57 ++++++++ libs/mediaScan/include/Audio.h | 46 +++++++ libs/mediaScan/include/DVDImage.h | 46 +++++++ libs/mediaScan/include/FSMediaScanner.h | 52 ++++++++ libs/mediaScan/include/LegacyVdrRecording.h | 41 ++++++ libs/mediaScan/include/MediaFactory.h | 58 ++++++++ libs/mediaScan/include/Movie.h | 46 +++++++ libs/mediaScan/include/Picture.h | 44 ++++++ libs/mediaScan/include/VdrRecording.h | 41 ++++++ libs/mediaScan/mediaScan.cbp | 74 +++++++++++ libs/mediaScan/mediaScan.depend | 1 + libs/mediaScan/mediaScan.layout | 34 +++++ libs/mediaScan/nbproject/Makefile-Debug.mk | 148 +++++++++++++++++++++ libs/mediaScan/nbproject/Makefile-Release.mk | 140 +++++++++++++++++++ libs/mediaScan/nbproject/Makefile-impl.mk | 133 ++++++++++++++++++ libs/mediaScan/nbproject/Makefile-variables.mk | 35 +++++ libs/mediaScan/nbproject/Package-Debug.bash | 75 +++++++++++ libs/mediaScan/nbproject/Package-Release.bash | 75 +++++++++++ libs/mediaScan/nbproject/configurations.xml | 147 ++++++++++++++++++++ .../nbproject/private/Makefile-variables.mk | 7 + .../mediaScan/nbproject/private/configurations.xml | 72 ++++++++++ libs/mediaScan/nbproject/private/private.xml | 9 ++ libs/mediaScan/nbproject/project.xml | 30 +++++ libs/mediaScan/src/AbstractMedia.cc | 135 +++++++++++++++++++ libs/mediaScan/src/AbstractMultiFileMovie.cc | 108 +++++++++++++++ libs/mediaScan/src/Audio.cc | 70 ++++++++++ libs/mediaScan/src/DVDImage.cc | 117 ++++++++++++++++ libs/mediaScan/src/FSMediaScanner.cc | 111 ++++++++++++++++ libs/mediaScan/src/LegacyVdrRecording.cc | 104 +++++++++++++++ libs/mediaScan/src/MediaFactory.cc | 148 +++++++++++++++++++++ libs/mediaScan/src/Movie.cc | 67 ++++++++++ libs/mediaScan/src/Picture.cc | 69 ++++++++++ libs/mediaScan/src/VdrRecording.cc | 103 ++++++++++++++ libs/mediaScan/summary.txt | 1 + 74 files changed, 2662 insertions(+), 2662 deletions(-) delete mode 100644 libs/fsScan/.dep.inc delete mode 100644 libs/fsScan/Makefile delete mode 100644 libs/fsScan/include/AbstractMedia.h delete mode 100644 libs/fsScan/include/AbstractMultiFileMovie.h delete mode 100644 libs/fsScan/include/Audio.h delete mode 100644 libs/fsScan/include/DVDImage.h delete mode 100644 libs/fsScan/include/FSMediaScanner.h delete mode 100644 libs/fsScan/include/LegacyVdrRecording.h delete mode 100644 libs/fsScan/include/MediaFactory.h delete mode 100644 libs/fsScan/include/Movie.h delete mode 100644 libs/fsScan/include/Picture.h delete mode 100644 libs/fsScan/include/VdrRecording.h delete mode 100644 libs/fsScan/mediaScan.cbp delete mode 100644 libs/fsScan/mediaScan.depend delete mode 100644 libs/fsScan/mediaScan.layout delete mode 100644 libs/fsScan/nbproject/Makefile-Debug.mk delete mode 100644 libs/fsScan/nbproject/Makefile-Release.mk delete mode 100644 libs/fsScan/nbproject/Makefile-impl.mk delete mode 100644 libs/fsScan/nbproject/Makefile-variables.mk delete mode 100644 libs/fsScan/nbproject/Package-Debug.bash delete mode 100644 libs/fsScan/nbproject/Package-Release.bash delete mode 100644 libs/fsScan/nbproject/configurations.xml delete mode 100644 libs/fsScan/nbproject/private/Makefile-variables.mk delete mode 100644 libs/fsScan/nbproject/private/configurations.xml delete mode 100644 libs/fsScan/nbproject/private/private.xml delete mode 100644 libs/fsScan/nbproject/project.xml delete mode 100644 libs/fsScan/src/AbstractMedia.cc delete mode 100644 libs/fsScan/src/AbstractMultiFileMovie.cc delete mode 100644 libs/fsScan/src/Audio.cc delete mode 100644 libs/fsScan/src/DVDImage.cc delete mode 100644 libs/fsScan/src/FSMediaScanner.cc delete mode 100644 libs/fsScan/src/LegacyVdrRecording.cc delete mode 100644 libs/fsScan/src/MediaFactory.cc delete mode 100644 libs/fsScan/src/Movie.cc delete mode 100644 libs/fsScan/src/Picture.cc delete mode 100644 libs/fsScan/src/VdrRecording.cc delete mode 100644 libs/fsScan/summary.txt create mode 100644 libs/mediaScan/.dep.inc create mode 100644 libs/mediaScan/Makefile create mode 100644 libs/mediaScan/include/AbstractMedia.h create mode 100644 libs/mediaScan/include/AbstractMultiFileMovie.h create mode 100644 libs/mediaScan/include/Audio.h create mode 100644 libs/mediaScan/include/DVDImage.h create mode 100644 libs/mediaScan/include/FSMediaScanner.h create mode 100644 libs/mediaScan/include/LegacyVdrRecording.h create mode 100644 libs/mediaScan/include/MediaFactory.h create mode 100644 libs/mediaScan/include/Movie.h create mode 100644 libs/mediaScan/include/Picture.h create mode 100644 libs/mediaScan/include/VdrRecording.h create mode 100644 libs/mediaScan/mediaScan.cbp create mode 100644 libs/mediaScan/mediaScan.depend create mode 100644 libs/mediaScan/mediaScan.layout create mode 100644 libs/mediaScan/nbproject/Makefile-Debug.mk create mode 100644 libs/mediaScan/nbproject/Makefile-Release.mk create mode 100644 libs/mediaScan/nbproject/Makefile-impl.mk create mode 100644 libs/mediaScan/nbproject/Makefile-variables.mk create mode 100644 libs/mediaScan/nbproject/Package-Debug.bash create mode 100644 libs/mediaScan/nbproject/Package-Release.bash create mode 100644 libs/mediaScan/nbproject/configurations.xml create mode 100644 libs/mediaScan/nbproject/private/Makefile-variables.mk create mode 100644 libs/mediaScan/nbproject/private/configurations.xml create mode 100644 libs/mediaScan/nbproject/private/private.xml create mode 100644 libs/mediaScan/nbproject/project.xml create mode 100644 libs/mediaScan/src/AbstractMedia.cc create mode 100644 libs/mediaScan/src/AbstractMultiFileMovie.cc create mode 100644 libs/mediaScan/src/Audio.cc create mode 100644 libs/mediaScan/src/DVDImage.cc create mode 100644 libs/mediaScan/src/FSMediaScanner.cc create mode 100644 libs/mediaScan/src/LegacyVdrRecording.cc create mode 100644 libs/mediaScan/src/MediaFactory.cc create mode 100644 libs/mediaScan/src/Movie.cc create mode 100644 libs/mediaScan/src/Picture.cc create mode 100644 libs/mediaScan/src/VdrRecording.cc create mode 100644 libs/mediaScan/summary.txt (limited to 'libs') diff --git a/libs/fsScan/.dep.inc b/libs/fsScan/.dep.inc deleted file mode 100644 index 4560e55..0000000 --- a/libs/fsScan/.dep.inc +++ /dev/null @@ -1,5 +0,0 @@ -# This code depends on make tool being used -DEPFILES=$(wildcard $(addsuffix .d, ${OBJECTFILES})) -ifneq (${DEPFILES},) -include ${DEPFILES} -endif diff --git a/libs/fsScan/Makefile b/libs/fsScan/Makefile deleted file mode 100644 index ec9de69..0000000 --- a/libs/fsScan/Makefile +++ /dev/null @@ -1,128 +0,0 @@ -# -# There exist several targets which are by default empty and which can be -# used for execution of your targets. These targets are usually executed -# before and after some main targets. They are: -# -# .build-pre: called before 'build' target -# .build-post: called after 'build' target -# .clean-pre: called before 'clean' target -# .clean-post: called after 'clean' target -# .clobber-pre: called before 'clobber' target -# .clobber-post: called after 'clobber' target -# .all-pre: called before 'all' target -# .all-post: called after 'all' target -# .help-pre: called before 'help' target -# .help-post: called after 'help' target -# -# Targets beginning with '.' are not intended to be called on their own. -# -# Main targets can be executed directly, and they are: -# -# build build a specific configuration -# clean remove built files from a configuration -# clobber remove all built files -# all build all configurations -# help print help mesage -# -# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and -# .help-impl are implemented in nbproject/makefile-impl.mk. -# -# Available make variables: -# -# CND_BASEDIR base directory for relative paths -# CND_DISTDIR default top distribution directory (build artifacts) -# CND_BUILDDIR default top build directory (object files, ...) -# CONF name of current configuration -# CND_PLATFORM_${CONF} platform name (current configuration) -# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration) -# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration) -# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration) -# CND_PACKAGE_DIR_${CONF} directory of package (current configuration) -# CND_PACKAGE_NAME_${CONF} name of package (current configuration) -# CND_PACKAGE_PATH_${CONF} path to package (current configuration) -# -# NOCDDL - - -# Environment -MKDIR=mkdir -CP=cp -CCADMIN=CCadmin - - -# build -build: .build-post - -.build-pre: -# Add your pre 'build' code here... - -.build-post: .build-impl -# Add your post 'build' code here... - - -# clean -clean: .clean-post - -.clean-pre: -# Add your pre 'clean' code here... - -.clean-post: .clean-impl -# Add your post 'clean' code here... - - -# clobber -clobber: .clobber-post - -.clobber-pre: -# Add your pre 'clobber' code here... - -.clobber-post: .clobber-impl -# Add your post 'clobber' code here... - - -# all -all: .all-post - -.all-pre: -# Add your pre 'all' code here... - -.all-post: .all-impl -# Add your post 'all' code here... - - -# build tests -build-tests: .build-tests-post - -.build-tests-pre: -# Add your pre 'build-tests' code here... - -.build-tests-post: .build-tests-impl -# Add your post 'build-tests' code here... - - -# run tests -test: .test-post - -.test-pre: -# Add your pre 'test' code here... - -.test-post: .test-impl -# Add your post 'test' code here... - - -# help -help: .help-post - -.help-pre: -# Add your pre 'help' code here... - -.help-post: .help-impl -# Add your post 'help' code here... - - - -# include project implementation makefile -include nbproject/Makefile-impl.mk - -# include project make variables -include nbproject/Makefile-variables.mk diff --git a/libs/fsScan/include/AbstractMedia.h b/libs/fsScan/include/AbstractMedia.h deleted file mode 100644 index 8c87dd5..0000000 --- a/libs/fsScan/include/AbstractMedia.h +++ /dev/null @@ -1,85 +0,0 @@ -/** - * ======================== legal notice ====================== - * - * File: AbstractMedia.h - * Created: 2. Juli 2012, 14 - * Author: Geronimo - * 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 - * - * -------------------------------------------------------------- - */ -#ifndef ABSTRACTMEDIA_H -#define ABSTRACTMEDIA_H - -#include -#include -#include -#include - -typedef struct { - const char *extension; - const char *mimeType; -} SupportedExtension; - -class cAbstractMedia { -public: - typedef enum { - Invalid, - Audio, - Movie, - DVDImage, - LegacyVdrRecording, - VdrRecording, - Picture, - Unknown - } SupportedMediaType; - - virtual ~cAbstractMedia(); - - SupportedMediaType MediaType(void) const { return mediaType; } - const char *MimeType(void) const { return mimeType; } - const char *AbsolutePath(void) const; - ulong LastModified(void) const; - const char *LogicalPath(void) const { return logicalPath; } - virtual const char *Name(void) const; - virtual bool NeedsFurtherScan(void) const; - virtual size_t Size(void) const; - virtual const char *URI(void) const { return uri; } - virtual void Refresh(void); - ///< will be called right before start streaming, so this call is used to - ///< determine the real size, number of files, etc. - virtual size_t ReadChunk(char *buf, size_t bufSize); - ///< used to hide the differences between single- and multi-file media. - virtual void Reset(void); - static const char *MediaType2Text(int Type); - -protected: - cAbstractMedia(const cFile &File, const char *Mime, SupportedMediaType Type); - void SetMimeType(const char *MimeType); - const cFile &KeyPath(void) { return keyPath; } - int fd; - -private: - SupportedMediaType mediaType; - char *mimeType; - char *uri; - char *logicalPath; - cFile keyPath; - }; - -#endif /* ABSTRACTMEDIA_H */ - diff --git a/libs/fsScan/include/AbstractMultiFileMovie.h b/libs/fsScan/include/AbstractMultiFileMovie.h deleted file mode 100644 index 6913a74..0000000 --- a/libs/fsScan/include/AbstractMultiFileMovie.h +++ /dev/null @@ -1,57 +0,0 @@ -/** - * ======================== legal notice ====================== - * - * File: AbstractMultiFileMovie.h - * Created: 3. Juli 2012, 07 - * Author: Geronimo - * 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 - * - * -------------------------------------------------------------- - */ -#ifndef ABSTRACTMULTIFILEMOVIE_H -#define ABSTRACTMULTIFILEMOVIE_H - -#include - -class cAbstractMultiFileMovie : public cMovie { -public: - virtual ~cAbstractMultiFileMovie(); - - virtual size_t ReadChunk(char *buf, size_t bufSize); - virtual const char *Name(void) const { return name; } - virtual const char *FirstFile(void) = 0; - virtual const char *NextFile(void) = 0; - virtual size_t Size(void) const { return size; } - -protected: - cAbstractMultiFileMovie(const cFile &File, const char *Mime, SupportedMediaType Type); - virtual void Reset(void); - void SetName(char *Name); - void SetSize(size_t Size); - bool checkBuffer(void); - int movieFiles; - int curFileNo; - char *buf; - int bufSize; - -private: - char *name; ///< name of multifile media may be different from any filesystem name, so handle a copy - size_t size; - }; - -#endif /* ABSTRACTMULTIFILEMOVIE_H */ - diff --git a/libs/fsScan/include/Audio.h b/libs/fsScan/include/Audio.h deleted file mode 100644 index 42611c2..0000000 --- a/libs/fsScan/include/Audio.h +++ /dev/null @@ -1,46 +0,0 @@ -/** - * ======================== legal notice ====================== - * - * File: Audio.h - * Created: 2. Juli 2012, 15 - * Author: Geronimo - * 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 - * - * -------------------------------------------------------------- - */ -#ifndef AUDIO_H -#define AUDIO_H - -#include - -class cAudio : public cAbstractMedia { -public: - cAudio(const cFile &File, const char *Mime); - virtual ~cAudio(); - - virtual bool NeedsFurtherScan(void) const; - -private: - static const char *ContentType(const char *Extension); - static SupportedExtension knownExtensions[]; - friend class cMediaFactory; - friend class FScanTest; - friend int check4Media(void *, cFile *, const char *); - }; - -#endif /* AUDIO_H */ - diff --git a/libs/fsScan/include/DVDImage.h b/libs/fsScan/include/DVDImage.h deleted file mode 100644 index 5845d77..0000000 --- a/libs/fsScan/include/DVDImage.h +++ /dev/null @@ -1,46 +0,0 @@ -/** - * ======================== legal notice ====================== - * - * File: DVDImage.h - * Created: 3. Juli 2012, 08 - * Author: Geronimo - * 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 - * - * -------------------------------------------------------------- - */ -#ifndef DVDIMAGE_H -#define DVDIMAGE_H - -#include - -class cDVDImage : public cAbstractMultiFileMovie { -public: - cDVDImage(const cFile &File); - virtual ~cDVDImage(); - - virtual const char *Name(void) const; - virtual const char *FirstFile(void); - virtual const char *NextFile(void); - virtual void Refresh(void); - virtual size_t Size(void) const; - -private: - int mainMovie; - }; - -#endif /* DVDIMAGE_H */ - diff --git a/libs/fsScan/include/FSMediaScanner.h b/libs/fsScan/include/FSMediaScanner.h deleted file mode 100644 index 1c85b46..0000000 --- a/libs/fsScan/include/FSMediaScanner.h +++ /dev/null @@ -1,52 +0,0 @@ -/** - * ======================== legal notice ====================== - * - * File: FSMediaScanner.h - * Created: 2. Juli 2012, 13 - * Author: Geronimo - * 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 - * - * -------------------------------------------------------------- - */ -#ifndef FSMEDIASCANNER_H -#define FSMEDIASCANNER_H - -#include -#include -#include - -class cAbstractMedia; -class cFSMediaScanner { -public: - cFSMediaScanner(); - virtual ~cFSMediaScanner(); - - cManagedVector &MediaPool(void) { return pool; } - std::map &Categories(void) { return categories; } - cAbstractMedia *FindMedia(const char *LogicalPath); - void Refresh(void); - void SetMediaFactory(cMediaFactory *factory); - -private: - size_t fileBufSize; - cManagedVector pool; - std::map categories; - cMediaFactory *mediaFactory; - }; - -#endif /* FSMEDIASCANNER_H */ - diff --git a/libs/fsScan/include/LegacyVdrRecording.h b/libs/fsScan/include/LegacyVdrRecording.h deleted file mode 100644 index cc46348..0000000 --- a/libs/fsScan/include/LegacyVdrRecording.h +++ /dev/null @@ -1,41 +0,0 @@ -/** - * ======================== legal notice ====================== - * - * File: LegacyVdrRecording.h - * Created: 3. Juli 2012, 08 - * Author: Geronimo - * 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 - * - * -------------------------------------------------------------- - */ -#ifndef LEGACYVDRRECORDING_H -#define LEGACYVDRRECORDING_H - -#include - -class cLegacyVdrRecording : public cAbstractMultiFileMovie { -public: - cLegacyVdrRecording(const cFile &File); - virtual ~cLegacyVdrRecording(); - - virtual const char *FirstFile(void); - virtual const char *NextFile(void); - virtual void Refresh(void); - }; - -#endif /* LEGACYVDRRECORDING_H */ - diff --git a/libs/fsScan/include/MediaFactory.h b/libs/fsScan/include/MediaFactory.h deleted file mode 100644 index 2ddcaa5..0000000 --- a/libs/fsScan/include/MediaFactory.h +++ /dev/null @@ -1,58 +0,0 @@ -/** - * ======================== legal notice ====================== - * - * File: MediaFactory.h - * Created: 2. Juli 2012, 15 - * Author: Geronimo - * 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 - * - * -------------------------------------------------------------- - */ -#ifndef MEDIAFACTORY_H -#define MEDIAFACTORY_H - -#include -#include -#include - -class cAbstractMedia; -class cFile; -class cManagedVector; -class cServerConfig; -class cMediaFactory { -public: - cMediaFactory(const cServerConfig &config); - virtual ~cMediaFactory(); - - cAbstractMedia *CreateMedia(const cFile &FileOrDirectory); - void Scan4Media(cManagedVector &pool); - const cFile &BaseDirectory(void) { return baseDirectory; } - void SetBaseDirectory(const cFile &dir); - -private: - void Scan4MetaData(cAbstractMedia *media); - int CreateMedia(const cFile *Parent, const char *Name); - static int createMedia(void *opaque, cFile *Parent, const char *Name); - const cServerConfig &config; - cFile baseDirectory; - cManagedVector *mediaPool; - char *scratch; - size_t scratchSize; - }; - -#endif /* MEDIAFACTORY_H */ - diff --git a/libs/fsScan/include/Movie.h b/libs/fsScan/include/Movie.h deleted file mode 100644 index 5a4f60d..0000000 --- a/libs/fsScan/include/Movie.h +++ /dev/null @@ -1,46 +0,0 @@ -/** - * ======================== legal notice ====================== - * - * File: Movie.h - * Created: 2. Juli 2012, 15 - * Author: Geronimo - * 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 - * - * -------------------------------------------------------------- - */ -#ifndef MOVIE_H -#define MOVIE_H - -#include - -class cMovie : public cAbstractMedia { -public: - cMovie(const cFile &File, const char *Mime, SupportedMediaType Type = cAbstractMedia::Movie); - virtual ~cMovie(); - - virtual bool NeedsFurtherScan(void) const; - -private: - static const char *ContentType(const char *Extension); - static SupportedExtension knownExtensions[]; - friend class cMediaFactory; - friend class FScanTest; - friend int check4Media(void *, cFile *, const char *); - }; - -#endif /* MOVIE_H */ - diff --git a/libs/fsScan/include/Picture.h b/libs/fsScan/include/Picture.h deleted file mode 100644 index 669509b..0000000 --- a/libs/fsScan/include/Picture.h +++ /dev/null @@ -1,44 +0,0 @@ -/** - * ======================== legal notice ====================== - * - * File: Picture.h - * Created: 2. Juli 2012, 15 - * Author: Geronimo - * 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 - * - * -------------------------------------------------------------- - */ -#ifndef PICTURE_H -#define PICTURE_H - -#include - -class cPicture : public cAbstractMedia { -public: - cPicture(const cFile &File, const char *Mime); - virtual ~cPicture(); - -private: - static const char *ContentType(const char *Extension); - static SupportedExtension knownExtensions[]; - friend class cMediaFactory; - friend class FScanTest; - friend int check4Media(void *, cFile *, const char *); - }; - -#endif /* PICTURE_H */ - diff --git a/libs/fsScan/include/VdrRecording.h b/libs/fsScan/include/VdrRecording.h deleted file mode 100644 index a8ec292..0000000 --- a/libs/fsScan/include/VdrRecording.h +++ /dev/null @@ -1,41 +0,0 @@ -/** - * ======================== legal notice ====================== - * - * File: VdrRecording.h - * Created: 3. Juli 2012, 08 - * Author: Geronimo - * 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 - * - * -------------------------------------------------------------- - */ -#ifndef VDRRECORDING_H -#define VDRRECORDING_H - -#include - -class cVdrRecording : public cAbstractMultiFileMovie { -public: - cVdrRecording(const cFile &File); - virtual ~cVdrRecording(); - - virtual const char *FirstFile(void); - virtual const char *NextFile(void); - virtual void Refresh(void); - }; - -#endif /* VDRRECORDING_H */ - diff --git a/libs/fsScan/mediaScan.cbp b/libs/fsScan/mediaScan.cbp deleted file mode 100644 index 6d4d7ec..0000000 --- a/libs/fsScan/mediaScan.cbp +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - diff --git a/libs/fsScan/mediaScan.depend b/libs/fsScan/mediaScan.depend deleted file mode 100644 index c4ac310..0000000 --- a/libs/fsScan/mediaScan.depend +++ /dev/null @@ -1 +0,0 @@ -# depslib dependency file v1.0 diff --git a/libs/fsScan/mediaScan.layout b/libs/fsScan/mediaScan.layout deleted file mode 100644 index 4398ab3..0000000 --- a/libs/fsScan/mediaScan.layout +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/fsScan/nbproject/Makefile-Debug.mk b/libs/fsScan/nbproject/Makefile-Debug.mk deleted file mode 100644 index 1e0062b..0000000 --- a/libs/fsScan/nbproject/Makefile-Debug.mk +++ /dev/null @@ -1,148 +0,0 @@ -# -# Generated Makefile - do not edit! -# -# Edit the Makefile in the project folder instead (../Makefile). Each target -# has a -pre and a -post target defined where you can add customized code. -# -# This makefile implements configuration specific macros and targets. - - -# Environment -MKDIR=mkdir -CP=cp -GREP=grep -NM=nm -CCADMIN=CCadmin -RANLIB=ranlib -CC=gcc -CCC=g++ -CXX=g++ -FC=gfortran -AS=as - -# Macros -CND_PLATFORM=GNU-Linux-x86 -CND_DLIB_EXT=so -CND_CONF=Debug -CND_DISTDIR=dist -CND_BUILDDIR=build - -# Include project Makefile -include Makefile - -# Object Directory -OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} - -# Object Files -OBJECTFILES= \ - ${OBJECTDIR}/src/Picture.o \ - ${OBJECTDIR}/src/Audio.o \ - ${OBJECTDIR}/src/DVDImage.o \ - ${OBJECTDIR}/src/VdrRecording.o \ - ${OBJECTDIR}/src/MediaFactory.o \ - ${OBJECTDIR}/src/LegacyVdrRecording.o \ - ${OBJECTDIR}/src/FSMediaScanner.o \ - ${OBJECTDIR}/src/AbstractMultiFileMovie.o \ - ${OBJECTDIR}/src/AbstractMedia.o \ - ${OBJECTDIR}/src/Movie.o - - -# C Compiler Flags -CFLAGS= - -# CC Compiler Flags -CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration -CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration - -# Fortran Compiler Flags -FFLAGS= - -# Assembler Flags -ASFLAGS= - -# Link Libraries and Options -LDLIBSOPTIONS= - -# Build Targets -.build-conf: ${BUILD_SUBPROJECTS} - "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a - -${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a: ${OBJECTFILES} - ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} - ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a - ${AR} -rv ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a ${OBJECTFILES} - $(RANLIB) ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a - -${OBJECTDIR}/src/Picture.o: src/Picture.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Picture.o src/Picture.cc - -${OBJECTDIR}/src/Audio.o: src/Audio.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Audio.o src/Audio.cc - -${OBJECTDIR}/src/DVDImage.o: src/DVDImage.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/DVDImage.o src/DVDImage.cc - -${OBJECTDIR}/src/VdrRecording.o: src/VdrRecording.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/VdrRecording.o src/VdrRecording.cc - -${OBJECTDIR}/src/MediaFactory.o: src/MediaFactory.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediaFactory.o src/MediaFactory.cc - -${OBJECTDIR}/src/LegacyVdrRecording.o: src/LegacyVdrRecording.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/LegacyVdrRecording.o src/LegacyVdrRecording.cc - -${OBJECTDIR}/src/FSMediaScanner.o: src/FSMediaScanner.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FSMediaScanner.o src/FSMediaScanner.cc - -${OBJECTDIR}/src/AbstractMultiFileMovie.o: src/AbstractMultiFileMovie.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractMultiFileMovie.o src/AbstractMultiFileMovie.cc - -${OBJECTDIR}/src/AbstractMedia.o: src/AbstractMedia.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractMedia.o src/AbstractMedia.cc - -${OBJECTDIR}/src/Movie.o: src/Movie.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Movie.o src/Movie.cc - -# Subprojects -.build-subprojects: - cd ../vdr && ${MAKE} -f Makefile CONF=Debug - cd ../util && ${MAKE} -f Makefile CONF=Debug - cd ../networking && ${MAKE} -f Makefile CONF=Debug - cd ../IO && ${MAKE} -f Makefile CONF=Debug - -# Clean Targets -.clean-conf: ${CLEAN_SUBPROJECTS} - ${RM} -r ${CND_BUILDDIR}/${CND_CONF} - ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a - -# Subprojects -.clean-subprojects: - cd ../vdr && ${MAKE} -f Makefile CONF=Debug clean - cd ../util && ${MAKE} -f Makefile CONF=Debug clean - cd ../networking && ${MAKE} -f Makefile CONF=Debug clean - cd ../IO && ${MAKE} -f Makefile CONF=Debug clean - -# Enable dependency checking -.dep.inc: .depcheck-impl - -include .dep.inc diff --git a/libs/fsScan/nbproject/Makefile-Release.mk b/libs/fsScan/nbproject/Makefile-Release.mk deleted file mode 100644 index bc8c6a9..0000000 --- a/libs/fsScan/nbproject/Makefile-Release.mk +++ /dev/null @@ -1,140 +0,0 @@ -# -# Generated Makefile - do not edit! -# -# Edit the Makefile in the project folder instead (../Makefile). Each target -# has a -pre and a -post target defined where you can add customized code. -# -# This makefile implements configuration specific macros and targets. - - -# Environment -MKDIR=mkdir -CP=cp -GREP=grep -NM=nm -CCADMIN=CCadmin -RANLIB=ranlib -CC=gcc -CCC=g++ -CXX=g++ -FC=gfortran -AS=as - -# Macros -CND_PLATFORM=GNU-Linux-x86 -CND_DLIB_EXT=so -CND_CONF=Release -CND_DISTDIR=dist -CND_BUILDDIR=build - -# Include project Makefile -include Makefile - -# Object Directory -OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} - -# Object Files -OBJECTFILES= \ - ${OBJECTDIR}/src/Picture.o \ - ${OBJECTDIR}/src/Audio.o \ - ${OBJECTDIR}/src/DVDImage.o \ - ${OBJECTDIR}/src/VdrRecording.o \ - ${OBJECTDIR}/src/MediaFactory.o \ - ${OBJECTDIR}/src/LegacyVdrRecording.o \ - ${OBJECTDIR}/src/FSMediaScanner.o \ - ${OBJECTDIR}/src/AbstractMultiFileMovie.o \ - ${OBJECTDIR}/src/AbstractMedia.o \ - ${OBJECTDIR}/src/Movie.o - - -# C Compiler Flags -CFLAGS= - -# CC Compiler Flags -CCFLAGS= -CXXFLAGS= - -# Fortran Compiler Flags -FFLAGS= - -# Assembler Flags -ASFLAGS= - -# Link Libraries and Options -LDLIBSOPTIONS= - -# Build Targets -.build-conf: ${BUILD_SUBPROJECTS} - "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a - -${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a: ${OBJECTFILES} - ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} - ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a - ${AR} -rv ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a ${OBJECTFILES} - $(RANLIB) ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a - -${OBJECTDIR}/src/Picture.o: src/Picture.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Picture.o src/Picture.cc - -${OBJECTDIR}/src/Audio.o: src/Audio.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Audio.o src/Audio.cc - -${OBJECTDIR}/src/DVDImage.o: src/DVDImage.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/DVDImage.o src/DVDImage.cc - -${OBJECTDIR}/src/VdrRecording.o: src/VdrRecording.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/VdrRecording.o src/VdrRecording.cc - -${OBJECTDIR}/src/MediaFactory.o: src/MediaFactory.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediaFactory.o src/MediaFactory.cc - -${OBJECTDIR}/src/LegacyVdrRecording.o: src/LegacyVdrRecording.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/LegacyVdrRecording.o src/LegacyVdrRecording.cc - -${OBJECTDIR}/src/FSMediaScanner.o: src/FSMediaScanner.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FSMediaScanner.o src/FSMediaScanner.cc - -${OBJECTDIR}/src/AbstractMultiFileMovie.o: src/AbstractMultiFileMovie.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractMultiFileMovie.o src/AbstractMultiFileMovie.cc - -${OBJECTDIR}/src/AbstractMedia.o: src/AbstractMedia.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractMedia.o src/AbstractMedia.cc - -${OBJECTDIR}/src/Movie.o: src/Movie.cc - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} $@.d - $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Movie.o src/Movie.cc - -# Subprojects -.build-subprojects: - -# Clean Targets -.clean-conf: ${CLEAN_SUBPROJECTS} - ${RM} -r ${CND_BUILDDIR}/${CND_CONF} - ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a - -# Subprojects -.clean-subprojects: - -# Enable dependency checking -.dep.inc: .depcheck-impl - -include .dep.inc diff --git a/libs/fsScan/nbproject/Makefile-impl.mk b/libs/fsScan/nbproject/Makefile-impl.mk deleted file mode 100644 index 1d398f7..0000000 --- a/libs/fsScan/nbproject/Makefile-impl.mk +++ /dev/null @@ -1,133 +0,0 @@ -# -# Generated Makefile - do not edit! -# -# Edit the Makefile in the project folder instead (../Makefile). Each target -# has a pre- and a post- target defined where you can add customization code. -# -# This makefile implements macros and targets common to all configurations. -# -# NOCDDL - - -# Building and Cleaning subprojects are done by default, but can be controlled with the SUB -# macro. If SUB=no, subprojects will not be built or cleaned. The following macro -# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf -# and .clean-reqprojects-conf unless SUB has the value 'no' -SUB_no=NO -SUBPROJECTS=${SUB_${SUB}} -BUILD_SUBPROJECTS_=.build-subprojects -BUILD_SUBPROJECTS_NO= -BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} -CLEAN_SUBPROJECTS_=.clean-subprojects -CLEAN_SUBPROJECTS_NO= -CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} - - -# Project Name -PROJECTNAME=fsScan - -# Active Configuration -DEFAULTCONF=Debug -CONF=${DEFAULTCONF} - -# All Configurations -ALLCONFS=Debug Release - - -# build -.build-impl: .build-pre .validate-impl .depcheck-impl - @#echo "=> Running $@... Configuration=$(CONF)" - "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf - - -# clean -.clean-impl: .clean-pre .validate-impl .depcheck-impl - @#echo "=> Running $@... Configuration=$(CONF)" - "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf - - -# clobber -.clobber-impl: .clobber-pre .depcheck-impl - @#echo "=> Running $@..." - for CONF in ${ALLCONFS}; \ - do \ - "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf; \ - done - -# all -.all-impl: .all-pre .depcheck-impl - @#echo "=> Running $@..." - for CONF in ${ALLCONFS}; \ - do \ - "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf; \ - done - -# build tests -.build-tests-impl: .build-impl .build-tests-pre - @#echo "=> Running $@... Configuration=$(CONF)" - "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-tests-conf - -# run tests -.test-impl: .build-tests-impl .test-pre - @#echo "=> Running $@... Configuration=$(CONF)" - "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .test-conf - -# dependency checking support -.depcheck-impl: - @echo "# This code depends on make tool being used" >.dep.inc - @if [ -n "${MAKE_VERSION}" ]; then \ - echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \ - echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ - echo "include \$${DEPFILES}" >>.dep.inc; \ - echo "endif" >>.dep.inc; \ - else \ - echo ".KEEP_STATE:" >>.dep.inc; \ - echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ - fi - -# configuration validation -.validate-impl: - @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ - then \ - echo ""; \ - echo "Error: can not find the makefile for configuration '${CONF}' in project ${PROJECTNAME}"; \ - echo "See 'make help' for details."; \ - echo "Current directory: " `pwd`; \ - echo ""; \ - fi - @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ - then \ - exit 1; \ - fi - - -# help -.help-impl: .help-pre - @echo "This makefile supports the following configurations:" - @echo " ${ALLCONFS}" - @echo "" - @echo "and the following targets:" - @echo " build (default target)" - @echo " clean" - @echo " clobber" - @echo " all" - @echo " help" - @echo "" - @echo "Makefile Usage:" - @echo " make [CONF=] [SUB=no] build" - @echo " make [CONF=] [SUB=no] clean" - @echo " make [SUB=no] clobber" - @echo " make [SUB=no] all" - @echo " make help" - @echo "" - @echo "Target 'build' will build a specific configuration and, unless 'SUB=no'," - @echo " also build subprojects." - @echo "Target 'clean' will clean a specific configuration and, unless 'SUB=no'," - @echo " also clean subprojects." - @echo "Target 'clobber' will remove all built files from all configurations and," - @echo " unless 'SUB=no', also from subprojects." - @echo "Target 'all' will will build all configurations and, unless 'SUB=no'," - @echo " also build subprojects." - @echo "Target 'help' prints this message." - @echo "" - diff --git a/libs/fsScan/nbproject/Makefile-variables.mk b/libs/fsScan/nbproject/Makefile-variables.mk deleted file mode 100644 index e22487e..0000000 --- a/libs/fsScan/nbproject/Makefile-variables.mk +++ /dev/null @@ -1,35 +0,0 @@ -# -# Generated - do not edit! -# -# NOCDDL -# -CND_BASEDIR=`pwd` -CND_BUILDDIR=build -CND_DISTDIR=dist -# Debug configuration -CND_PLATFORM_Debug=GNU-Linux-x86 -CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux-x86 -CND_ARTIFACT_NAME_Debug=libfsscan.a -CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux-x86/libfsscan.a -CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux-x86/package -CND_PACKAGE_NAME_Debug=fsScan.tar -CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux-x86/package/fsScan.tar -# Release configuration -CND_PLATFORM_Release=GNU-Linux-x86 -CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux-x86 -CND_ARTIFACT_NAME_Release=libfsscan.a -CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux-x86/libfsscan.a -CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux-x86/package -CND_PACKAGE_NAME_Release=fsScan.tar -CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux-x86/package/fsScan.tar -# -# include compiler specific variables -# -# dmake command -ROOT:sh = test -f nbproject/private/Makefile-variables.mk || \ - (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk) -# -# gmake command -.PHONY: $(shell test -f nbproject/private/Makefile-variables.mk || (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk)) -# -include nbproject/private/Makefile-variables.mk diff --git a/libs/fsScan/nbproject/Package-Debug.bash b/libs/fsScan/nbproject/Package-Debug.bash deleted file mode 100644 index 2a9c453..0000000 --- a/libs/fsScan/nbproject/Package-Debug.bash +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash -x - -# -# Generated - do not edit! -# - -# Macros -TOP=`pwd` -CND_PLATFORM=GNU-Linux-x86 -CND_CONF=Debug -CND_DISTDIR=dist -CND_BUILDDIR=build -NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging -TMPDIRNAME=tmp-packaging -OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a -OUTPUT_BASENAME=libfsscan.a -PACKAGE_TOP_DIR=fsScan/ - -# Functions -function checkReturnCode -{ - rc=$? - if [ $rc != 0 ] - then - exit $rc - fi -} -function makeDirectory -# $1 directory path -# $2 permission (optional) -{ - mkdir -p "$1" - checkReturnCode - if [ "$2" != "" ] - then - chmod $2 "$1" - checkReturnCode - fi -} -function copyFileToTmpDir -# $1 from-file path -# $2 to-file path -# $3 permission -{ - cp "$1" "$2" - checkReturnCode - if [ "$3" != "" ] - then - chmod $3 "$2" - checkReturnCode - fi -} - -# Setup -cd "${TOP}" -mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package -rm -rf ${NBTMPDIR} -mkdir -p ${NBTMPDIR} - -# Copy files and create directories and links -cd "${TOP}" -makeDirectory "${NBTMPDIR}/fsScan/lib" -copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}lib/${OUTPUT_BASENAME}" 0644 - - -# Generate tar file -cd "${TOP}" -rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/fsScan.tar -cd ${NBTMPDIR} -tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/fsScan.tar * -checkReturnCode - -# Cleanup -cd "${TOP}" -rm -rf ${NBTMPDIR} diff --git a/libs/fsScan/nbproject/Package-Release.bash b/libs/fsScan/nbproject/Package-Release.bash deleted file mode 100644 index d996196..0000000 --- a/libs/fsScan/nbproject/Package-Release.bash +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash -x - -# -# Generated - do not edit! -# - -# Macros -TOP=`pwd` -CND_PLATFORM=GNU-Linux-x86 -CND_CONF=Release -CND_DISTDIR=dist -CND_BUILDDIR=build -NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging -TMPDIRNAME=tmp-packaging -OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a -OUTPUT_BASENAME=libfsscan.a -PACKAGE_TOP_DIR=fsScan/ - -# Functions -function checkReturnCode -{ - rc=$? - if [ $rc != 0 ] - then - exit $rc - fi -} -function makeDirectory -# $1 directory path -# $2 permission (optional) -{ - mkdir -p "$1" - checkReturnCode - if [ "$2" != "" ] - then - chmod $2 "$1" - checkReturnCode - fi -} -function copyFileToTmpDir -# $1 from-file path -# $2 to-file path -# $3 permission -{ - cp "$1" "$2" - checkReturnCode - if [ "$3" != "" ] - then - chmod $3 "$2" - checkReturnCode - fi -} - -# Setup -cd "${TOP}" -mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package -rm -rf ${NBTMPDIR} -mkdir -p ${NBTMPDIR} - -# Copy files and create directories and links -cd "${TOP}" -makeDirectory "${NBTMPDIR}/fsScan/lib" -copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}lib/${OUTPUT_BASENAME}" 0644 - - -# Generate tar file -cd "${TOP}" -rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/fsScan.tar -cd ${NBTMPDIR} -tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/fsScan.tar * -checkReturnCode - -# Cleanup -cd "${TOP}" -rm -rf ${NBTMPDIR} diff --git a/libs/fsScan/nbproject/configurations.xml b/libs/fsScan/nbproject/configurations.xml deleted file mode 100644 index 9984a4c..0000000 --- a/libs/fsScan/nbproject/configurations.xml +++ /dev/null @@ -1,147 +0,0 @@ - - - - - include/AbstractMedia.h - include/AbstractMultiFileMovie.h - include/Audio.h - include/DVDImage.h - include/FSMediaScanner.h - include/LegacyVdrRecording.h - include/MediaFactory.h - include/Movie.h - include/Picture.h - include/VdrRecording.h - - - - - src/AbstractMedia.cc - src/AbstractMultiFileMovie.cc - src/Audio.cc - src/DVDImage.cc - src/FSMediaScanner.cc - src/LegacyVdrRecording.cc - src/MediaFactory.cc - src/Movie.cc - src/Picture.cc - src/VdrRecording.cc - - - - - Makefile - summary.txt - - - Makefile - - - - LOCAL_SOURCES - default - - - - - include - ../networking/include - ../IO/include - ../util/include - ../vdr/include - - -std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration - - _FILE_OFFSET_BITS=64 - _GNU_SOURCE=1 - _LARGEFILE64_SOURCE - _LARGEFILE_SOURCE - _REENTRANT - __STDC_CONSTANT_MACROS - __STDC_FORMAT_MACROS - __STDC_LIMIT_MACROS - - 2 - - - - - - - - - - - - - - - - - - LOCAL_SOURCES - default - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - - diff --git a/libs/fsScan/nbproject/private/Makefile-variables.mk b/libs/fsScan/nbproject/private/Makefile-variables.mk deleted file mode 100644 index a64183e..0000000 --- a/libs/fsScan/nbproject/private/Makefile-variables.mk +++ /dev/null @@ -1,7 +0,0 @@ -# -# Generated - do not edit! -# -# NOCDDL -# -# Debug configuration -# Release configuration diff --git a/libs/fsScan/nbproject/private/configurations.xml b/libs/fsScan/nbproject/private/configurations.xml deleted file mode 100644 index 616cc91..0000000 --- a/libs/fsScan/nbproject/private/configurations.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - Makefile - - - - localhost - 2 - - - - - - - - - - - - - - - gdb - - - - "${OUTPUT_PATH}" - - "${OUTPUT_PATH}" - - true - 0 - 0 - - - - - - - localhost - 2 - - - - - - - - - - - - - - - gdb - - - - "${OUTPUT_PATH}" - - "${OUTPUT_PATH}" - - true - 0 - 0 - - - - - - diff --git a/libs/fsScan/nbproject/private/private.xml b/libs/fsScan/nbproject/private/private.xml deleted file mode 100644 index dfdcba4..0000000 --- a/libs/fsScan/nbproject/private/private.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - 3 - 0 - - - - diff --git a/libs/fsScan/nbproject/project.xml b/libs/fsScan/nbproject/project.xml deleted file mode 100644 index f749866..0000000 --- a/libs/fsScan/nbproject/project.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - org.netbeans.modules.cnd.makeproject - - - fsScan - - cc - h - UTF-8 - - ../IO - ../vdr - ../util - ../networking - - - - - Debug - 3 - - - Release - 3 - - - - - 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: Geronimo - * 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -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: Geronimo - * 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 -#include -#include -#include -#include -#include - -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: Geronimo - * 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 -#include -#include - -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: Geronimo - * 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 -#include -#include -#include - -#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: Geronimo - * 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -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: Geronimo - * 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 -#include -#include -#include -#include -#include - -#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: Geronimo - * 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -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: Geronimo - * 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 -#include -#include - -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: Geronimo - * 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 -#include -#include - -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: Geronimo - * 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 -#include -#include -#include -#include -#include -#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; -} diff --git a/libs/fsScan/summary.txt b/libs/fsScan/summary.txt deleted file mode 100644 index e4c3847..0000000 --- a/libs/fsScan/summary.txt +++ /dev/null @@ -1 +0,0 @@ -libMediaScan: mediatypes and media scanning diff --git a/libs/mediaScan/.dep.inc b/libs/mediaScan/.dep.inc new file mode 100644 index 0000000..4560e55 --- /dev/null +++ b/libs/mediaScan/.dep.inc @@ -0,0 +1,5 @@ +# This code depends on make tool being used +DEPFILES=$(wildcard $(addsuffix .d, ${OBJECTFILES})) +ifneq (${DEPFILES},) +include ${DEPFILES} +endif diff --git a/libs/mediaScan/Makefile b/libs/mediaScan/Makefile new file mode 100644 index 0000000..ec9de69 --- /dev/null +++ b/libs/mediaScan/Makefile @@ -0,0 +1,128 @@ +# +# There exist several targets which are by default empty and which can be +# used for execution of your targets. These targets are usually executed +# before and after some main targets. They are: +# +# .build-pre: called before 'build' target +# .build-post: called after 'build' target +# .clean-pre: called before 'clean' target +# .clean-post: called after 'clean' target +# .clobber-pre: called before 'clobber' target +# .clobber-post: called after 'clobber' target +# .all-pre: called before 'all' target +# .all-post: called after 'all' target +# .help-pre: called before 'help' target +# .help-post: called after 'help' target +# +# Targets beginning with '.' are not intended to be called on their own. +# +# Main targets can be executed directly, and they are: +# +# build build a specific configuration +# clean remove built files from a configuration +# clobber remove all built files +# all build all configurations +# help print help mesage +# +# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and +# .help-impl are implemented in nbproject/makefile-impl.mk. +# +# Available make variables: +# +# CND_BASEDIR base directory for relative paths +# CND_DISTDIR default top distribution directory (build artifacts) +# CND_BUILDDIR default top build directory (object files, ...) +# CONF name of current configuration +# CND_PLATFORM_${CONF} platform name (current configuration) +# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration) +# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration) +# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration) +# CND_PACKAGE_DIR_${CONF} directory of package (current configuration) +# CND_PACKAGE_NAME_${CONF} name of package (current configuration) +# CND_PACKAGE_PATH_${CONF} path to package (current configuration) +# +# NOCDDL + + +# Environment +MKDIR=mkdir +CP=cp +CCADMIN=CCadmin + + +# build +build: .build-post + +.build-pre: +# Add your pre 'build' code here... + +.build-post: .build-impl +# Add your post 'build' code here... + + +# clean +clean: .clean-post + +.clean-pre: +# Add your pre 'clean' code here... + +.clean-post: .clean-impl +# Add your post 'clean' code here... + + +# clobber +clobber: .clobber-post + +.clobber-pre: +# Add your pre 'clobber' code here... + +.clobber-post: .clobber-impl +# Add your post 'clobber' code here... + + +# all +all: .all-post + +.all-pre: +# Add your pre 'all' code here... + +.all-post: .all-impl +# Add your post 'all' code here... + + +# build tests +build-tests: .build-tests-post + +.build-tests-pre: +# Add your pre 'build-tests' code here... + +.build-tests-post: .build-tests-impl +# Add your post 'build-tests' code here... + + +# run tests +test: .test-post + +.test-pre: +# Add your pre 'test' code here... + +.test-post: .test-impl +# Add your post 'test' code here... + + +# help +help: .help-post + +.help-pre: +# Add your pre 'help' code here... + +.help-post: .help-impl +# Add your post 'help' code here... + + + +# include project implementation makefile +include nbproject/Makefile-impl.mk + +# include project make variables +include nbproject/Makefile-variables.mk diff --git a/libs/mediaScan/include/AbstractMedia.h b/libs/mediaScan/include/AbstractMedia.h new file mode 100644 index 0000000..8c87dd5 --- /dev/null +++ b/libs/mediaScan/include/AbstractMedia.h @@ -0,0 +1,85 @@ +/** + * ======================== legal notice ====================== + * + * File: AbstractMedia.h + * Created: 2. Juli 2012, 14 + * Author: Geronimo + * 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 + * + * -------------------------------------------------------------- + */ +#ifndef ABSTRACTMEDIA_H +#define ABSTRACTMEDIA_H + +#include +#include +#include +#include + +typedef struct { + const char *extension; + const char *mimeType; +} SupportedExtension; + +class cAbstractMedia { +public: + typedef enum { + Invalid, + Audio, + Movie, + DVDImage, + LegacyVdrRecording, + VdrRecording, + Picture, + Unknown + } SupportedMediaType; + + virtual ~cAbstractMedia(); + + SupportedMediaType MediaType(void) const { return mediaType; } + const char *MimeType(void) const { return mimeType; } + const char *AbsolutePath(void) const; + ulong LastModified(void) const; + const char *LogicalPath(void) const { return logicalPath; } + virtual const char *Name(void) const; + virtual bool NeedsFurtherScan(void) const; + virtual size_t Size(void) const; + virtual const char *URI(void) const { return uri; } + virtual void Refresh(void); + ///< will be called right before start streaming, so this call is used to + ///< determine the real size, number of files, etc. + virtual size_t ReadChunk(char *buf, size_t bufSize); + ///< used to hide the differences between single- and multi-file media. + virtual void Reset(void); + static const char *MediaType2Text(int Type); + +protected: + cAbstractMedia(const cFile &File, const char *Mime, SupportedMediaType Type); + void SetMimeType(const char *MimeType); + const cFile &KeyPath(void) { return keyPath; } + int fd; + +private: + SupportedMediaType mediaType; + char *mimeType; + char *uri; + char *logicalPath; + cFile keyPath; + }; + +#endif /* ABSTRACTMEDIA_H */ + diff --git a/libs/mediaScan/include/AbstractMultiFileMovie.h b/libs/mediaScan/include/AbstractMultiFileMovie.h new file mode 100644 index 0000000..6913a74 --- /dev/null +++ b/libs/mediaScan/include/AbstractMultiFileMovie.h @@ -0,0 +1,57 @@ +/** + * ======================== legal notice ====================== + * + * File: AbstractMultiFileMovie.h + * Created: 3. Juli 2012, 07 + * Author: Geronimo + * 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 + * + * -------------------------------------------------------------- + */ +#ifndef ABSTRACTMULTIFILEMOVIE_H +#define ABSTRACTMULTIFILEMOVIE_H + +#include + +class cAbstractMultiFileMovie : public cMovie { +public: + virtual ~cAbstractMultiFileMovie(); + + virtual size_t ReadChunk(char *buf, size_t bufSize); + virtual const char *Name(void) const { return name; } + virtual const char *FirstFile(void) = 0; + virtual const char *NextFile(void) = 0; + virtual size_t Size(void) const { return size; } + +protected: + cAbstractMultiFileMovie(const cFile &File, const char *Mime, SupportedMediaType Type); + virtual void Reset(void); + void SetName(char *Name); + void SetSize(size_t Size); + bool checkBuffer(void); + int movieFiles; + int curFileNo; + char *buf; + int bufSize; + +private: + char *name; ///< name of multifile media may be different from any filesystem name, so handle a copy + size_t size; + }; + +#endif /* ABSTRACTMULTIFILEMOVIE_H */ + diff --git a/libs/mediaScan/include/Audio.h b/libs/mediaScan/include/Audio.h new file mode 100644 index 0000000..42611c2 --- /dev/null +++ b/libs/mediaScan/include/Audio.h @@ -0,0 +1,46 @@ +/** + * ======================== legal notice ====================== + * + * File: Audio.h + * Created: 2. Juli 2012, 15 + * Author: Geronimo + * 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 + * + * -------------------------------------------------------------- + */ +#ifndef AUDIO_H +#define AUDIO_H + +#include + +class cAudio : public cAbstractMedia { +public: + cAudio(const cFile &File, const char *Mime); + virtual ~cAudio(); + + virtual bool NeedsFurtherScan(void) const; + +private: + static const char *ContentType(const char *Extension); + static SupportedExtension knownExtensions[]; + friend class cMediaFactory; + friend class FScanTest; + friend int check4Media(void *, cFile *, const char *); + }; + +#endif /* AUDIO_H */ + diff --git a/libs/mediaScan/include/DVDImage.h b/libs/mediaScan/include/DVDImage.h new file mode 100644 index 0000000..5845d77 --- /dev/null +++ b/libs/mediaScan/include/DVDImage.h @@ -0,0 +1,46 @@ +/** + * ======================== legal notice ====================== + * + * File: DVDImage.h + * Created: 3. Juli 2012, 08 + * Author: Geronimo + * 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 + * + * -------------------------------------------------------------- + */ +#ifndef DVDIMAGE_H +#define DVDIMAGE_H + +#include + +class cDVDImage : public cAbstractMultiFileMovie { +public: + cDVDImage(const cFile &File); + virtual ~cDVDImage(); + + virtual const char *Name(void) const; + virtual const char *FirstFile(void); + virtual const char *NextFile(void); + virtual void Refresh(void); + virtual size_t Size(void) const; + +private: + int mainMovie; + }; + +#endif /* DVDIMAGE_H */ + diff --git a/libs/mediaScan/include/FSMediaScanner.h b/libs/mediaScan/include/FSMediaScanner.h new file mode 100644 index 0000000..1c85b46 --- /dev/null +++ b/libs/mediaScan/include/FSMediaScanner.h @@ -0,0 +1,52 @@ +/** + * ======================== legal notice ====================== + * + * File: FSMediaScanner.h + * Created: 2. Juli 2012, 13 + * Author: Geronimo + * 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 + * + * -------------------------------------------------------------- + */ +#ifndef FSMEDIASCANNER_H +#define FSMEDIASCANNER_H + +#include +#include +#include + +class cAbstractMedia; +class cFSMediaScanner { +public: + cFSMediaScanner(); + virtual ~cFSMediaScanner(); + + cManagedVector &MediaPool(void) { return pool; } + std::map &Categories(void) { return categories; } + cAbstractMedia *FindMedia(const char *LogicalPath); + void Refresh(void); + void SetMediaFactory(cMediaFactory *factory); + +private: + size_t fileBufSize; + cManagedVector pool; + std::map categories; + cMediaFactory *mediaFactory; + }; + +#endif /* FSMEDIASCANNER_H */ + diff --git a/libs/mediaScan/include/LegacyVdrRecording.h b/libs/mediaScan/include/LegacyVdrRecording.h new file mode 100644 index 0000000..cc46348 --- /dev/null +++ b/libs/mediaScan/include/LegacyVdrRecording.h @@ -0,0 +1,41 @@ +/** + * ======================== legal notice ====================== + * + * File: LegacyVdrRecording.h + * Created: 3. Juli 2012, 08 + * Author: Geronimo + * 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 + * + * -------------------------------------------------------------- + */ +#ifndef LEGACYVDRRECORDING_H +#define LEGACYVDRRECORDING_H + +#include + +class cLegacyVdrRecording : public cAbstractMultiFileMovie { +public: + cLegacyVdrRecording(const cFile &File); + virtual ~cLegacyVdrRecording(); + + virtual const char *FirstFile(void); + virtual const char *NextFile(void); + virtual void Refresh(void); + }; + +#endif /* LEGACYVDRRECORDING_H */ + diff --git a/libs/mediaScan/include/MediaFactory.h b/libs/mediaScan/include/MediaFactory.h new file mode 100644 index 0000000..2ddcaa5 --- /dev/null +++ b/libs/mediaScan/include/MediaFactory.h @@ -0,0 +1,58 @@ +/** + * ======================== legal notice ====================== + * + * File: MediaFactory.h + * Created: 2. Juli 2012, 15 + * Author: Geronimo + * 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 + * + * -------------------------------------------------------------- + */ +#ifndef MEDIAFACTORY_H +#define MEDIAFACTORY_H + +#include +#include +#include + +class cAbstractMedia; +class cFile; +class cManagedVector; +class cServerConfig; +class cMediaFactory { +public: + cMediaFactory(const cServerConfig &config); + virtual ~cMediaFactory(); + + cAbstractMedia *CreateMedia(const cFile &FileOrDirectory); + void Scan4Media(cManagedVector &pool); + const cFile &BaseDirectory(void) { return baseDirectory; } + void SetBaseDirectory(const cFile &dir); + +private: + void Scan4MetaData(cAbstractMedia *media); + int CreateMedia(const cFile *Parent, const char *Name); + static int createMedia(void *opaque, cFile *Parent, const char *Name); + const cServerConfig &config; + cFile baseDirectory; + cManagedVector *mediaPool; + char *scratch; + size_t scratchSize; + }; + +#endif /* MEDIAFACTORY_H */ + diff --git a/libs/mediaScan/include/Movie.h b/libs/mediaScan/include/Movie.h new file mode 100644 index 0000000..5a4f60d --- /dev/null +++ b/libs/mediaScan/include/Movie.h @@ -0,0 +1,46 @@ +/** + * ======================== legal notice ====================== + * + * File: Movie.h + * Created: 2. Juli 2012, 15 + * Author: Geronimo + * 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 + * + * -------------------------------------------------------------- + */ +#ifndef MOVIE_H +#define MOVIE_H + +#include + +class cMovie : public cAbstractMedia { +public: + cMovie(const cFile &File, const char *Mime, SupportedMediaType Type = cAbstractMedia::Movie); + virtual ~cMovie(); + + virtual bool NeedsFurtherScan(void) const; + +private: + static const char *ContentType(const char *Extension); + static SupportedExtension knownExtensions[]; + friend class cMediaFactory; + friend class FScanTest; + friend int check4Media(void *, cFile *, const char *); + }; + +#endif /* MOVIE_H */ + diff --git a/libs/mediaScan/include/Picture.h b/libs/mediaScan/include/Picture.h new file mode 100644 index 0000000..669509b --- /dev/null +++ b/libs/mediaScan/include/Picture.h @@ -0,0 +1,44 @@ +/** + * ======================== legal notice ====================== + * + * File: Picture.h + * Created: 2. Juli 2012, 15 + * Author: Geronimo + * 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 + * + * -------------------------------------------------------------- + */ +#ifndef PICTURE_H +#define PICTURE_H + +#include + +class cPicture : public cAbstractMedia { +public: + cPicture(const cFile &File, const char *Mime); + virtual ~cPicture(); + +private: + static const char *ContentType(const char *Extension); + static SupportedExtension knownExtensions[]; + friend class cMediaFactory; + friend class FScanTest; + friend int check4Media(void *, cFile *, const char *); + }; + +#endif /* PICTURE_H */ + diff --git a/libs/mediaScan/include/VdrRecording.h b/libs/mediaScan/include/VdrRecording.h new file mode 100644 index 0000000..a8ec292 --- /dev/null +++ b/libs/mediaScan/include/VdrRecording.h @@ -0,0 +1,41 @@ +/** + * ======================== legal notice ====================== + * + * File: VdrRecording.h + * Created: 3. Juli 2012, 08 + * Author: Geronimo + * 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 + * + * -------------------------------------------------------------- + */ +#ifndef VDRRECORDING_H +#define VDRRECORDING_H + +#include + +class cVdrRecording : public cAbstractMultiFileMovie { +public: + cVdrRecording(const cFile &File); + virtual ~cVdrRecording(); + + virtual const char *FirstFile(void); + virtual const char *NextFile(void); + virtual void Refresh(void); + }; + +#endif /* VDRRECORDING_H */ + diff --git a/libs/mediaScan/mediaScan.cbp b/libs/mediaScan/mediaScan.cbp new file mode 100644 index 0000000..6d4d7ec --- /dev/null +++ b/libs/mediaScan/mediaScan.cbp @@ -0,0 +1,74 @@ + + + + + + diff --git a/libs/mediaScan/mediaScan.depend b/libs/mediaScan/mediaScan.depend new file mode 100644 index 0000000..c4ac310 --- /dev/null +++ b/libs/mediaScan/mediaScan.depend @@ -0,0 +1 @@ +# depslib dependency file v1.0 diff --git a/libs/mediaScan/mediaScan.layout b/libs/mediaScan/mediaScan.layout new file mode 100644 index 0000000..4398ab3 --- /dev/null +++ b/libs/mediaScan/mediaScan.layout @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libs/mediaScan/nbproject/Makefile-Debug.mk b/libs/mediaScan/nbproject/Makefile-Debug.mk new file mode 100644 index 0000000..1e0062b --- /dev/null +++ b/libs/mediaScan/nbproject/Makefile-Debug.mk @@ -0,0 +1,148 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux-x86 +CND_DLIB_EXT=so +CND_CONF=Debug +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${OBJECTDIR}/src/Picture.o \ + ${OBJECTDIR}/src/Audio.o \ + ${OBJECTDIR}/src/DVDImage.o \ + ${OBJECTDIR}/src/VdrRecording.o \ + ${OBJECTDIR}/src/MediaFactory.o \ + ${OBJECTDIR}/src/LegacyVdrRecording.o \ + ${OBJECTDIR}/src/FSMediaScanner.o \ + ${OBJECTDIR}/src/AbstractMultiFileMovie.o \ + ${OBJECTDIR}/src/AbstractMedia.o \ + ${OBJECTDIR}/src/Movie.o + + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration +CXXFLAGS=-std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS= + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a: ${OBJECTFILES} + ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} + ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a + ${AR} -rv ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a ${OBJECTFILES} + $(RANLIB) ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a + +${OBJECTDIR}/src/Picture.o: src/Picture.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Picture.o src/Picture.cc + +${OBJECTDIR}/src/Audio.o: src/Audio.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Audio.o src/Audio.cc + +${OBJECTDIR}/src/DVDImage.o: src/DVDImage.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/DVDImage.o src/DVDImage.cc + +${OBJECTDIR}/src/VdrRecording.o: src/VdrRecording.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/VdrRecording.o src/VdrRecording.cc + +${OBJECTDIR}/src/MediaFactory.o: src/MediaFactory.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediaFactory.o src/MediaFactory.cc + +${OBJECTDIR}/src/LegacyVdrRecording.o: src/LegacyVdrRecording.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/LegacyVdrRecording.o src/LegacyVdrRecording.cc + +${OBJECTDIR}/src/FSMediaScanner.o: src/FSMediaScanner.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FSMediaScanner.o src/FSMediaScanner.cc + +${OBJECTDIR}/src/AbstractMultiFileMovie.o: src/AbstractMultiFileMovie.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractMultiFileMovie.o src/AbstractMultiFileMovie.cc + +${OBJECTDIR}/src/AbstractMedia.o: src/AbstractMedia.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractMedia.o src/AbstractMedia.cc + +${OBJECTDIR}/src/Movie.o: src/Movie.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Movie.o src/Movie.cc + +# Subprojects +.build-subprojects: + cd ../vdr && ${MAKE} -f Makefile CONF=Debug + cd ../util && ${MAKE} -f Makefile CONF=Debug + cd ../networking && ${MAKE} -f Makefile CONF=Debug + cd ../IO && ${MAKE} -f Makefile CONF=Debug + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a + +# Subprojects +.clean-subprojects: + cd ../vdr && ${MAKE} -f Makefile CONF=Debug clean + cd ../util && ${MAKE} -f Makefile CONF=Debug clean + cd ../networking && ${MAKE} -f Makefile CONF=Debug clean + cd ../IO && ${MAKE} -f Makefile CONF=Debug clean + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff --git a/libs/mediaScan/nbproject/Makefile-Release.mk b/libs/mediaScan/nbproject/Makefile-Release.mk new file mode 100644 index 0000000..bc8c6a9 --- /dev/null +++ b/libs/mediaScan/nbproject/Makefile-Release.mk @@ -0,0 +1,140 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux-x86 +CND_DLIB_EXT=so +CND_CONF=Release +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${OBJECTDIR}/src/Picture.o \ + ${OBJECTDIR}/src/Audio.o \ + ${OBJECTDIR}/src/DVDImage.o \ + ${OBJECTDIR}/src/VdrRecording.o \ + ${OBJECTDIR}/src/MediaFactory.o \ + ${OBJECTDIR}/src/LegacyVdrRecording.o \ + ${OBJECTDIR}/src/FSMediaScanner.o \ + ${OBJECTDIR}/src/AbstractMultiFileMovie.o \ + ${OBJECTDIR}/src/AbstractMedia.o \ + ${OBJECTDIR}/src/Movie.o + + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS= + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a: ${OBJECTFILES} + ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} + ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a + ${AR} -rv ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a ${OBJECTFILES} + $(RANLIB) ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a + +${OBJECTDIR}/src/Picture.o: src/Picture.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Picture.o src/Picture.cc + +${OBJECTDIR}/src/Audio.o: src/Audio.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Audio.o src/Audio.cc + +${OBJECTDIR}/src/DVDImage.o: src/DVDImage.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/DVDImage.o src/DVDImage.cc + +${OBJECTDIR}/src/VdrRecording.o: src/VdrRecording.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/VdrRecording.o src/VdrRecording.cc + +${OBJECTDIR}/src/MediaFactory.o: src/MediaFactory.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediaFactory.o src/MediaFactory.cc + +${OBJECTDIR}/src/LegacyVdrRecording.o: src/LegacyVdrRecording.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/LegacyVdrRecording.o src/LegacyVdrRecording.cc + +${OBJECTDIR}/src/FSMediaScanner.o: src/FSMediaScanner.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/FSMediaScanner.o src/FSMediaScanner.cc + +${OBJECTDIR}/src/AbstractMultiFileMovie.o: src/AbstractMultiFileMovie.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractMultiFileMovie.o src/AbstractMultiFileMovie.cc + +${OBJECTDIR}/src/AbstractMedia.o: src/AbstractMedia.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/AbstractMedia.o src/AbstractMedia.cc + +${OBJECTDIR}/src/Movie.o: src/Movie.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/Movie.o src/Movie.cc + +# Subprojects +.build-subprojects: + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a + +# Subprojects +.clean-subprojects: + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff --git a/libs/mediaScan/nbproject/Makefile-impl.mk b/libs/mediaScan/nbproject/Makefile-impl.mk new file mode 100644 index 0000000..1d398f7 --- /dev/null +++ b/libs/mediaScan/nbproject/Makefile-impl.mk @@ -0,0 +1,133 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a pre- and a post- target defined where you can add customization code. +# +# This makefile implements macros and targets common to all configurations. +# +# NOCDDL + + +# Building and Cleaning subprojects are done by default, but can be controlled with the SUB +# macro. If SUB=no, subprojects will not be built or cleaned. The following macro +# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf +# and .clean-reqprojects-conf unless SUB has the value 'no' +SUB_no=NO +SUBPROJECTS=${SUB_${SUB}} +BUILD_SUBPROJECTS_=.build-subprojects +BUILD_SUBPROJECTS_NO= +BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} +CLEAN_SUBPROJECTS_=.clean-subprojects +CLEAN_SUBPROJECTS_NO= +CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} + + +# Project Name +PROJECTNAME=fsScan + +# Active Configuration +DEFAULTCONF=Debug +CONF=${DEFAULTCONF} + +# All Configurations +ALLCONFS=Debug Release + + +# build +.build-impl: .build-pre .validate-impl .depcheck-impl + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf + + +# clean +.clean-impl: .clean-pre .validate-impl .depcheck-impl + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf + + +# clobber +.clobber-impl: .clobber-pre .depcheck-impl + @#echo "=> Running $@..." + for CONF in ${ALLCONFS}; \ + do \ + "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf; \ + done + +# all +.all-impl: .all-pre .depcheck-impl + @#echo "=> Running $@..." + for CONF in ${ALLCONFS}; \ + do \ + "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf; \ + done + +# build tests +.build-tests-impl: .build-impl .build-tests-pre + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-tests-conf + +# run tests +.test-impl: .build-tests-impl .test-pre + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .test-conf + +# dependency checking support +.depcheck-impl: + @echo "# This code depends on make tool being used" >.dep.inc + @if [ -n "${MAKE_VERSION}" ]; then \ + echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \ + echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ + echo "include \$${DEPFILES}" >>.dep.inc; \ + echo "endif" >>.dep.inc; \ + else \ + echo ".KEEP_STATE:" >>.dep.inc; \ + echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ + fi + +# configuration validation +.validate-impl: + @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ + then \ + echo ""; \ + echo "Error: can not find the makefile for configuration '${CONF}' in project ${PROJECTNAME}"; \ + echo "See 'make help' for details."; \ + echo "Current directory: " `pwd`; \ + echo ""; \ + fi + @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ + then \ + exit 1; \ + fi + + +# help +.help-impl: .help-pre + @echo "This makefile supports the following configurations:" + @echo " ${ALLCONFS}" + @echo "" + @echo "and the following targets:" + @echo " build (default target)" + @echo " clean" + @echo " clobber" + @echo " all" + @echo " help" + @echo "" + @echo "Makefile Usage:" + @echo " make [CONF=] [SUB=no] build" + @echo " make [CONF=] [SUB=no] clean" + @echo " make [SUB=no] clobber" + @echo " make [SUB=no] all" + @echo " make help" + @echo "" + @echo "Target 'build' will build a specific configuration and, unless 'SUB=no'," + @echo " also build subprojects." + @echo "Target 'clean' will clean a specific configuration and, unless 'SUB=no'," + @echo " also clean subprojects." + @echo "Target 'clobber' will remove all built files from all configurations and," + @echo " unless 'SUB=no', also from subprojects." + @echo "Target 'all' will will build all configurations and, unless 'SUB=no'," + @echo " also build subprojects." + @echo "Target 'help' prints this message." + @echo "" + diff --git a/libs/mediaScan/nbproject/Makefile-variables.mk b/libs/mediaScan/nbproject/Makefile-variables.mk new file mode 100644 index 0000000..e22487e --- /dev/null +++ b/libs/mediaScan/nbproject/Makefile-variables.mk @@ -0,0 +1,35 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +CND_BASEDIR=`pwd` +CND_BUILDDIR=build +CND_DISTDIR=dist +# Debug configuration +CND_PLATFORM_Debug=GNU-Linux-x86 +CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux-x86 +CND_ARTIFACT_NAME_Debug=libfsscan.a +CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux-x86/libfsscan.a +CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux-x86/package +CND_PACKAGE_NAME_Debug=fsScan.tar +CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux-x86/package/fsScan.tar +# Release configuration +CND_PLATFORM_Release=GNU-Linux-x86 +CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux-x86 +CND_ARTIFACT_NAME_Release=libfsscan.a +CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux-x86/libfsscan.a +CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux-x86/package +CND_PACKAGE_NAME_Release=fsScan.tar +CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux-x86/package/fsScan.tar +# +# include compiler specific variables +# +# dmake command +ROOT:sh = test -f nbproject/private/Makefile-variables.mk || \ + (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk) +# +# gmake command +.PHONY: $(shell test -f nbproject/private/Makefile-variables.mk || (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk)) +# +include nbproject/private/Makefile-variables.mk diff --git a/libs/mediaScan/nbproject/Package-Debug.bash b/libs/mediaScan/nbproject/Package-Debug.bash new file mode 100644 index 0000000..2a9c453 --- /dev/null +++ b/libs/mediaScan/nbproject/Package-Debug.bash @@ -0,0 +1,75 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux-x86 +CND_CONF=Debug +CND_DISTDIR=dist +CND_BUILDDIR=build +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a +OUTPUT_BASENAME=libfsscan.a +PACKAGE_TOP_DIR=fsScan/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/fsScan/lib" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}lib/${OUTPUT_BASENAME}" 0644 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/fsScan.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/fsScan.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff --git a/libs/mediaScan/nbproject/Package-Release.bash b/libs/mediaScan/nbproject/Package-Release.bash new file mode 100644 index 0000000..d996196 --- /dev/null +++ b/libs/mediaScan/nbproject/Package-Release.bash @@ -0,0 +1,75 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux-x86 +CND_CONF=Release +CND_DISTDIR=dist +CND_BUILDDIR=build +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a +OUTPUT_BASENAME=libfsscan.a +PACKAGE_TOP_DIR=fsScan/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/fsScan/lib" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}lib/${OUTPUT_BASENAME}" 0644 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/fsScan.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/fsScan.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff --git a/libs/mediaScan/nbproject/configurations.xml b/libs/mediaScan/nbproject/configurations.xml new file mode 100644 index 0000000..9984a4c --- /dev/null +++ b/libs/mediaScan/nbproject/configurations.xml @@ -0,0 +1,147 @@ + + + + + include/AbstractMedia.h + include/AbstractMultiFileMovie.h + include/Audio.h + include/DVDImage.h + include/FSMediaScanner.h + include/LegacyVdrRecording.h + include/MediaFactory.h + include/Movie.h + include/Picture.h + include/VdrRecording.h + + + + + src/AbstractMedia.cc + src/AbstractMultiFileMovie.cc + src/Audio.cc + src/DVDImage.cc + src/FSMediaScanner.cc + src/LegacyVdrRecording.cc + src/MediaFactory.cc + src/Movie.cc + src/Picture.cc + src/VdrRecording.cc + + + + + Makefile + summary.txt + + + Makefile + + + + LOCAL_SOURCES + default + + + + + include + ../networking/include + ../IO/include + ../util/include + ../vdr/include + + -std=gnu++0x -fomit-frame-pointer -fPIC -pthread -Wall -Wno-parentheses -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-limits -Wundef -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Werror=implicit-function-declaration + + _FILE_OFFSET_BITS=64 + _GNU_SOURCE=1 + _LARGEFILE64_SOURCE + _LARGEFILE_SOURCE + _REENTRANT + __STDC_CONSTANT_MACROS + __STDC_FORMAT_MACROS + __STDC_LIMIT_MACROS + + 2 + + + + + + + + + + + + + + + + + + LOCAL_SOURCES + default + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + + + diff --git a/libs/mediaScan/nbproject/private/Makefile-variables.mk b/libs/mediaScan/nbproject/private/Makefile-variables.mk new file mode 100644 index 0000000..a64183e --- /dev/null +++ b/libs/mediaScan/nbproject/private/Makefile-variables.mk @@ -0,0 +1,7 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +# Debug configuration +# Release configuration diff --git a/libs/mediaScan/nbproject/private/configurations.xml b/libs/mediaScan/nbproject/private/configurations.xml new file mode 100644 index 0000000..616cc91 --- /dev/null +++ b/libs/mediaScan/nbproject/private/configurations.xml @@ -0,0 +1,72 @@ + + + Makefile + + + + localhost + 2 + + + + + + + + + + + + + + + gdb + + + + "${OUTPUT_PATH}" + + "${OUTPUT_PATH}" + + true + 0 + 0 + + + + + + + localhost + 2 + + + + + + + + + + + + + + + gdb + + + + "${OUTPUT_PATH}" + + "${OUTPUT_PATH}" + + true + 0 + 0 + + + + + + diff --git a/libs/mediaScan/nbproject/private/private.xml b/libs/mediaScan/nbproject/private/private.xml new file mode 100644 index 0000000..dfdcba4 --- /dev/null +++ b/libs/mediaScan/nbproject/private/private.xml @@ -0,0 +1,9 @@ + + + + 3 + 0 + + + + diff --git a/libs/mediaScan/nbproject/project.xml b/libs/mediaScan/nbproject/project.xml new file mode 100644 index 0000000..f749866 --- /dev/null +++ b/libs/mediaScan/nbproject/project.xml @@ -0,0 +1,30 @@ + + + org.netbeans.modules.cnd.makeproject + + + fsScan + + cc + h + UTF-8 + + ../IO + ../vdr + ../util + ../networking + + + + + Debug + 3 + + + Release + 3 + + + + + diff --git a/libs/mediaScan/src/AbstractMedia.cc b/libs/mediaScan/src/AbstractMedia.cc new file mode 100644 index 0000000..924f01a --- /dev/null +++ b/libs/mediaScan/src/AbstractMedia.cc @@ -0,0 +1,135 @@ +/** + * ======================== legal notice ====================== + * + * File: AbstractMedia.cc + * Created: 2. Juli 2012, 14 + * Author: Geronimo + * 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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/mediaScan/src/AbstractMultiFileMovie.cc b/libs/mediaScan/src/AbstractMultiFileMovie.cc new file mode 100644 index 0000000..f679511 --- /dev/null +++ b/libs/mediaScan/src/AbstractMultiFileMovie.cc @@ -0,0 +1,108 @@ +/** + * ======================== legal notice ====================== + * + * File: AbstractMultiFileMovie.cc + * Created: 3. Juli 2012, 07 + * Author: Geronimo + * 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 +#include +#include +#include +#include +#include + +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/mediaScan/src/Audio.cc b/libs/mediaScan/src/Audio.cc new file mode 100644 index 0000000..6c90fbc --- /dev/null +++ b/libs/mediaScan/src/Audio.cc @@ -0,0 +1,70 @@ +/** + * ======================== legal notice ====================== + * + * File: Audio.cc + * Created: 2. Juli 2012, 15 + * Author: Geronimo + * 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 +#include +#include + +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/mediaScan/src/DVDImage.cc b/libs/mediaScan/src/DVDImage.cc new file mode 100644 index 0000000..0d23ae1 --- /dev/null +++ b/libs/mediaScan/src/DVDImage.cc @@ -0,0 +1,117 @@ +/** + * ======================== legal notice ====================== + * + * File: DVDImage.cc + * Created: 3. Juli 2012, 08 + * Author: Geronimo + * 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 +#include +#include +#include + +#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/mediaScan/src/FSMediaScanner.cc b/libs/mediaScan/src/FSMediaScanner.cc new file mode 100644 index 0000000..f4ac14e --- /dev/null +++ b/libs/mediaScan/src/FSMediaScanner.cc @@ -0,0 +1,111 @@ +/** + * ======================== legal notice ====================== + * + * File: FSMediaScanner.cc + * Created: 2. Juli 2012, 13 + * Author: Geronimo + * 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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/mediaScan/src/LegacyVdrRecording.cc b/libs/mediaScan/src/LegacyVdrRecording.cc new file mode 100644 index 0000000..5ee635c --- /dev/null +++ b/libs/mediaScan/src/LegacyVdrRecording.cc @@ -0,0 +1,104 @@ +/** + * ======================== legal notice ====================== + * + * File: LegacyVdrRecording.cc + * Created: 3. Juli 2012, 08 + * Author: Geronimo + * 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 +#include +#include +#include +#include +#include + +#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/mediaScan/src/MediaFactory.cc b/libs/mediaScan/src/MediaFactory.cc new file mode 100644 index 0000000..4dec763 --- /dev/null +++ b/libs/mediaScan/src/MediaFactory.cc @@ -0,0 +1,148 @@ +/** + * ======================== legal notice ====================== + * + * File: MediaFactory.cc + * Created: 2. Juli 2012, 15 + * Author: Geronimo + * 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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/mediaScan/src/Movie.cc b/libs/mediaScan/src/Movie.cc new file mode 100644 index 0000000..a63ff19 --- /dev/null +++ b/libs/mediaScan/src/Movie.cc @@ -0,0 +1,67 @@ +/** + * ======================== legal notice ====================== + * + * File: Movie.cc + * Created: 2. Juli 2012, 15 + * Author: Geronimo + * 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 +#include +#include + +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/mediaScan/src/Picture.cc b/libs/mediaScan/src/Picture.cc new file mode 100644 index 0000000..19a02a1 --- /dev/null +++ b/libs/mediaScan/src/Picture.cc @@ -0,0 +1,69 @@ +/** + * ======================== legal notice ====================== + * + * File: Picture.cc + * Created: 2. Juli 2012, 15 + * Author: Geronimo + * 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 +#include +#include + +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/mediaScan/src/VdrRecording.cc b/libs/mediaScan/src/VdrRecording.cc new file mode 100644 index 0000000..03abccf --- /dev/null +++ b/libs/mediaScan/src/VdrRecording.cc @@ -0,0 +1,103 @@ +/** + * ======================== legal notice ====================== + * + * File: VdrRecording.cc + * Created: 3. Juli 2012, 08 + * Author: Geronimo + * 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 +#include +#include +#include +#include +#include +#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; +} diff --git a/libs/mediaScan/summary.txt b/libs/mediaScan/summary.txt new file mode 100644 index 0000000..e4c3847 --- /dev/null +++ b/libs/mediaScan/summary.txt @@ -0,0 +1 @@ +libMediaScan: mediatypes and media scanning -- cgit v1.2.3