summaryrefslogtreecommitdiffstats
path: root/libk9copy/k9dvd.h
diff options
context:
space:
mode:
Diffstat (limited to 'libk9copy/k9dvd.h')
-rwxr-xr-xlibk9copy/k9dvd.h174
1 files changed, 174 insertions, 0 deletions
diff --git a/libk9copy/k9dvd.h b/libk9copy/k9dvd.h
new file mode 100755
index 0000000..55182df
--- /dev/null
+++ b/libk9copy/k9dvd.h
@@ -0,0 +1,174 @@
+/**************************************************************************
+* Copyright (C) 2005 by Jean-Michel Petit *
+* jm_petit@laposte.net *
+* *
+* This program is free software; you can redistribute it and/or modify *
+* it under the terms of the GNU General Public License as published by *
+* the Free Software Foundation; either version 2 of the License, or *
+* (at your option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+* GNU General Public License for more details. *
+* *
+* You should have received a copy of the GNU General Public License *
+* along with this program; if not, write to the *
+* Free Software Foundation, Inc., *
+* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+***************************************************************************/
+#ifndef K9DVD_H
+#define K9DVD_H
+#include "k9common.h"
+#include "k9dvdread.h"
+#include <qstringlist.h>
+#include <qdatetime.h>
+#include <qvaluelist.h>
+
+
+struct streamSize {
+ unsigned char id;
+ float size_mb;
+ float percent;
+};
+
+struct stream_counter {
+ unsigned char id;
+ int count;
+ float size_mb;
+ float percent;
+};
+
+class k9DVDProgress;
+class k9DVDChapter;
+class k9DVDTitle;
+class k9DVDTitleset;
+
+/** get the DVD structure with titles lengths and streams lengths.
+ *@author
+ */
+
+class k9DVD : public QObject {
+Q_OBJECT
+private:
+ QObjectList m_titles;
+ QPtrList<k9DVDTitleset> m_titlesets;
+ QString m_title;
+ int m_titleCount;
+ k9DVDTitle *m_longestTitle;
+ QStringList m_lvideoFormat;
+ QStringList m_laspectRatio;
+ QStringList m_lquantization;
+ QStringList m_lmpegVersion;
+ QStringList m_lvideoHeight;
+ QStringList m_lvideoWidth;
+ QStringList m_lpermittedDf;
+ QStringList m_laudioFormat;
+ QStringList m_lsampleFreq;
+ QStringList m_laudioType;
+ QStringList m_lsubpType;
+ QStringList m_langCode;
+ QStringList m_langName;
+ double m_frames_per_s[4];
+ uint m_menuSize;
+ k9DVDProgress *m_progressDlg;
+ QString m_Device;
+ bool m_error;
+ QString m_errMsg;
+ bool m_opened;
+ QString m_format;
+ k9DVDTitle* m_start;
+ int m_titlesetCount;
+public:
+ k9DVD(QObject *parent=0,const char *name=0,const QStringList args=0) ;
+ ~k9DVD();
+
+ /**
+ * Opens and estimates the size of each stream
+ * @param device input device
+ * @return return code (0=ok)
+ */
+ virtual int scandvd (const QString & device,bool _quickScan);
+
+ /**
+ * gets the title of the DVD
+ * @return DVD title
+ */
+ virtual const QString& getDVDTitle();
+
+ /**
+ * set the title of the DVD
+ * @param _newVal the new DVD title
+ */
+ virtual void setDVDTitle(const QString &_newVal);
+
+ /**
+ *
+ * @return returns the number of titles
+ */
+ virtual const int& gettitleCount();
+
+ /**
+ *
+ * @return returns the number of titlesets
+ */
+ virtual const int& gettitlesetCount();
+
+
+ /**
+ * returns a title of the DVD
+ * @param num the title number
+ * @return the title
+ */
+ virtual k9DVDTitle* gettitle(int num);
+
+ /**
+ * returns a title (which is in tt_srpt)
+ * @param num the title number
+ * @return the title
+ */
+ virtual k9DVDTitle* gettitleByNum(int num);
+ virtual k9DVDTitle *getlongestTitle();
+ virtual float getfactor(bool withMenus,bool _streams,bool _useDvdAuthor);
+ virtual const QString& getDevice();
+ virtual const bool& geterror();
+ virtual const QString& geterrMsg();
+ virtual const bool& getopened();
+ virtual uint64_t getsizeSelected(bool _streams);
+ virtual QString &getFormat();
+ virtual k9DVDTitle* getstart();
+ virtual void setstart(k9DVDTitle* title);
+ virtual int getnewTitleNum(k9DVDTitle *title);
+ virtual int getmenuSize();
+ virtual void close();
+ virtual k9DVDTitleset *gettitleset(int num);
+ virtual k9DVDRead * getdvd() {return &m_dvd;}
+ static QString lang_name(const QString & code,const QString & name);
+private: // Private methods
+ k9DVDRead m_dvd;
+ k9DVDTitle* addTitle(k9DVDTitleset *titleset,int id,int num,int _VTS,int _pgc,uint32_t _startSector, bool _indexed);
+ float calcVobuSize(ifo_handle_t *_ifo,k9DVDChapter *_chapter);
+ long stream_vob( int title, unsigned long startblock, unsigned long lastblock, struct stream_counter *sc);
+ int identify_stream( unsigned char *buffer ) ;
+ int dvdtime2msec(dvd_time_t *dt);
+ int get_title_name(const char* dvd_device, char* title);
+ void calcStreamSize(k9DVDTitle & title);
+ void setError(const QString &err);
+ int getVampsID(int type);
+ int calcNumTitle(ifo_handle_t *ifo,int _vts,int _ttn);
+public slots: // Public slots
+ void slotVobProgress(unsigned int position,unsigned int total);
+ void slotTitleProgress(unsigned int position,unsigned int total);
+ void slotTitleText(QString &text);
+ void slotTotalText(QString &text);
+signals: // Signals
+ void sigVobProgress(unsigned int position,unsigned int total);
+ void sigTitleProgress(unsigned int position,unsigned int total);
+ void sigTitleText(QString &text);
+ void sigTotalText(QString &text);
+};
+
+typedef struct lng { char code[3]; QString name;};
+
+#endif
+