#include <lib/base/thread.h>
#include <lib/service/iservice.h>
-#define cue
-
class eSubtitleWidget;
class gPixmap;
class eStaticServiceDVDInfo;
class eServiceFactoryDVD: public iServiceHandler
{
-DECLARE_REF(eServiceFactoryDVD);
+ DECLARE_REF(eServiceFactoryDVD);
public:
eServiceFactoryDVD();
virtual ~eServiceFactoryDVD();
RESULT offlineOperations(const eServiceReference &, ePtr<iServiceOfflineOperations> &ptr);
};
-class eServiceDVD: public iPlayableService, public iPauseableService, public iSeekableService,
- public iServiceInformation, public iSubtitleOutput, public iServiceKeys, public eThread, public Object
-#ifdef cue
-, public iCueSheet
-#endif
+class eServiceDVD: public iPlayableService, public iPauseableService, public iSeekableService, public iAudioTrackSelection,
+ public iServiceInformation, public iSubtitleOutput, public iServiceKeys, public iCueSheet, public eThread, public Object
{
friend class eServiceFactoryDVD;
-DECLARE_REF(eServiceDVD);
+ DECLARE_REF(eServiceDVD);
public:
virtual ~eServiceDVD();
// not implemented (yet)
RESULT audioChannel(ePtr<iAudioChannelSelection> &ptr) { ptr = 0; return -1; }
- RESULT audioTracks(ePtr<iAudioTrackSelection> &ptr) { ptr = 0; return -1; }
+ RESULT audioTracks(ePtr<iAudioTrackSelection> &ptr);
RESULT frontendInfo(ePtr<iFrontendInformation> &ptr) { ptr = 0; return -1; }
RESULT subServices(ePtr<iSubserviceList> &ptr) { ptr = 0; return -1; }
RESULT timeshift(ePtr<iTimeshiftService> &ptr) { ptr = 0; return -1; }
RESULT audioDelay(ePtr<iAudioDelay> &ptr) { ptr = 0; return -1; }
RESULT rdsDecoder(ePtr<iRdsDecoder> &ptr) { ptr = 0; return -1; }
RESULT stream(ePtr<iStreamableService> &ptr) { ptr = 0; return -1; }
-#ifdef cue
+ RESULT streamed(ePtr<iStreamedService> &ptr) { ptr = 0; return -1; }
RESULT cueSheet(ePtr<iCueSheet> &ptr);
-#else
- RESULT cueSheet(ePtr<iCueSheet> &ptr) { ptr = 0; return -1; }
-#endif
// iPlayableService
RESULT connectEvent(const Slot2<void,iPlayableService*,int> &event, ePtr<eConnection> &connection);
PyObject *getSubtitleList();
PyObject *getCachedSubtitle();
-#if 1
// iSeekableService
RESULT getLength(pts_t &len);
RESULT seekTo(pts_t to);
RESULT setTrickmode(int trick=0);
RESULT isCurrentlySeekable();
RESULT seekChapter(int chapter);
-#endif
+ RESULT seekTitle(int title);
// iServiceInformation
RESULT getName(std::string &name);
std::string getInfoString(int w);
virtual PyObject *getInfoObject(int w);
-#ifdef cue
// iCueSheet
PyObject *getCutList();
void setCutList(SWIG_PYOBJECT(ePyObject));
void setCutListEnable(int enable);
-#endif
- // iServiceKeys
+
+ // iAudioTrackSelection
+ int getNumberOfTracks();
+ RESULT selectTrack(unsigned int i);
+ RESULT getTrackInfo(struct iAudioTrackInfo &, unsigned int n);
+ int getCurrentTrack();
+
+ // iServiceKeys
RESULT keyPressed(int key);
+
private:
- eServiceDVD(const char *filename);
+ eServiceDVD(eServiceReference ref);
void gotMessage(int); // message from dvdlib
void gotThreadMessage(const int &); // message from dvd thread
void thread();
void thread_finished();
- std::string m_filename;
+ eServiceReference m_ref;
Signal2<void,iPlayableService*,int> m_event;
enum
{
- stIdle, stRunning, stStopped,
+ stIdle, stRunning, stMenu, stStopped
};
int m_state;
int m_current_trick;
- pts_t m_doSeekTo;
- int m_seekTitle;
char m_ddvd_titlestring[96];
- eSocketNotifier m_sn;
+ ePtr<eSocketNotifier> m_sn;
eFixedMessagePump<int> m_pump;
-#ifdef cue
-// ePtr<eCueSheet> m_cue;
-//
-// struct cueEntry
-// {
-// pts_t where;
-// unsigned int what;
-//
-// bool operator < (const struct cueEntry &o) const
-// {
-// return where < o.where;
-// }
-// cueEntry(const pts_t &where, unsigned int what) :
-// where(where), what(what)
-// {
-// }
-// };
-
-// std::multiset<cueEntry> m_cue_entries;
- int m_cuesheet_changed, m_cutlist_enabled;
pts_t m_cue_pts;
-
+ struct ddvd_resume m_resume_info;
+
void loadCuesheet();
void saveCuesheet();
-
-// void cutlistToCuesheet();
-#endif
+
+ int m_width, m_height, m_aspect, m_framerate, m_progressive;
};
#endif