diff options
Diffstat (limited to 'libs/mediaScan/include/AbstractMedia.h')
-rw-r--r-- | libs/mediaScan/include/AbstractMedia.h | 85 |
1 files changed, 85 insertions, 0 deletions
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: <a href="mailto:geronimo013@gmx.de">Geronimo</a> + * Project: libfsScan: mediatypes and filesystem scanning + * + * CMP - compound media player + * + * is a client/server mediaplayer intended to play any media from any workstation + * without the need to export or mount shares. cmps is an easy to use backend + * with a (ready to use) HTML-interface. Additionally the backend supports + * authentication via HTTP-digest authorization. + * cmpc is a client with vdr-like osd-menues. + * + * Copyright (c) 2012 Reinhard Mantey, some rights reserved! + * published under Creative Commons by-sa + * For details see http://creativecommons.org/licenses/by-sa/3.0/ + * + * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp + * + * -------------------------------------------------------------- + */ +#ifndef ABSTRACTMEDIA_H +#define ABSTRACTMEDIA_H + +#include <File.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <vector> + +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 */ + |