data[3]=data3;
data[4]=data4;
}
+ operator bool() const
+ {
+ return valid();
+ }
#endif
eServiceReference(int type, int flags, const std::string &path)
: type(type), flags(flags), path(path)
return r < 0;
return path < c.path;
}
- operator bool() const
- {
- return valid();
- }
int valid() const
{
virtual int getLength(const eServiceReference &ref);
virtual SWIG_VOID(RESULT) getEvent(const eServiceReference &ref, ePtr<eServiceEvent> &SWIG_OUTPUT, time_t start_time=-1);
// returns true when not implemented
- virtual int isPlayable(const eServiceReference &ref, const eServiceReference &ignore);
+ virtual int isPlayable(const eServiceReference &ref, const eServiceReference &ignore, bool simulate=false);
virtual int getInfo(const eServiceReference &ref, int w);
virtual std::string getInfoString(const eServiceReference &ref,int w);
enum {
sIsCrypted, /* is encrypted (no indication if decrypt was possible) */
sAspect, /* aspect ratio: 0=4:3, 1=16:9, 2=whatever we need */
+ sFrameRate, /* frame rate */
+ sProgressive, /* 0 = interlaced, 1 = progressive */
sIsMultichannel, /* multichannel *available* (probably not selected) */
/* "user serviceable info" - they are not reliable. Don't use them for anything except the service menu!
sDescription,
sServiceref,
sTimeCreate, /* unix time or string */
+ sFileSize,
- sTitle,
- sArtist,
- sAlbum,
- sComment,
- sTracknumber,
- sGenre,
sCAIDs,
sVideoType, /* MPEG2 MPEG4 */
sTransponderData, /* transponderdata as python dict */
+ sCurrentChapter,
+ sCurrentTitle,
+ sTotalChapters,
+ sTotalTitles,
+
+ sTagTitle,
+ sTagTitleSortname,
+ sTagArtist,
+ sTagArtistSortname,
+ sTagAlbum,
+ sTagAlbumSortname,
+ sTagComposer,
+ sTagDate,
+ sTagGenre,
+ sTagComment,
+ sTagExtendedComment,
+ sTagTrackNumber,
+ sTagTrackCount,
+ sTagAlbumVolumeNumber,
+ sTagAlbumVolumeCount,
+ sTagLocation,
+ sTagHomepage,
+ sTagDescription,
+ sTagVersion,
+ sTagISRC,
+ sTagOrganization,
+ sTagCopyright,
+ sTagCopyrightURI,
+ sTagContact,
+ sTagLicense,
+ sTagLicenseURI,
+ sTagPerformer,
+ sTagCodec,
+ sTagVideoCodec,
+ sTagAudioCodec,
+ sTagBitrate,
+ sTagNominalBitrate,
+ sTagMinimumBitrate,
+ sTagMaximumBitrate,
+ sTagSerial,
+ sTagEncoder,
+ sTagEncoderVersion,
+ sTagTrackGain,
+ sTagTrackPeak,
+ sTagAlbumGain,
+ sTagAlbumPeak,
+ sTagReferenceLevel,
+ sTagLanguageCode,
+ sTagImage,
+ sTagPreviewImage,
+ sTagAttachment,
+ sTagBeatsPerMinute,
+ sTagKeywords,
+ sTagCRC,
+ sTagChannelMode,
+
sUser = 0x100
};
enum {
~iPausableService();
#endif
public:
+
+ /* this will set the *state* directly. So just call a SINGLE function of those at a time. */
virtual RESULT pause()=0;
virtual RESULT unpause()=0;
/* for transferring a service... */
virtual SWIG_VOID(RESULT) getListOfFilenames(std::list<std::string> &SWIG_OUTPUT)=0;
+
+ /* a blocking call to reindex a file */
+ virtual int reindex() = 0;
// TODO: additional stuff, like a conversion interface?
};
};
SWIG_TEMPLATE_TYPEDEF(ePtr<iStreamableService>, iStreamableServicePtr);
+SWIG_IGNORE(iStreamedService);
+class iStreamedService: public iObject
+{
+#ifdef SWIG
+ iStreamedService();
+ ~iStreamedService();
+#endif
+public:
+ virtual PyObject *getBufferCharge()=0;
+ virtual int setBufferSize(int size)=0;
+};
+SWIG_TEMPLATE_TYPEDEF(ePtr<iStreamedService>, iStreamedServicePtr);
+
class iServiceKeys_ENUMS
{
#ifdef SWIG
evUpdatedRassInteractivePicMask,
evVideoSizeChanged,
+ evVideoFramerateChanged,
+ evVideoProgressiveChanged,
+
+ evBuffering,
evStopped,
virtual SWIG_VOID(RESULT) audioDelay(ePtr<iAudioDelay> &SWIG_OUTPUT)=0;
virtual SWIG_VOID(RESULT) rdsDecoder(ePtr<iRdsDecoder> &SWIG_OUTPUT)=0;
virtual SWIG_VOID(RESULT) stream(ePtr<iStreamableService> &SWIG_OUTPUT)=0;
+ virtual SWIG_VOID(RESULT) streamed(ePtr<iStreamedService> &SWIG_OUTPUT)=0;
virtual SWIG_VOID(RESULT) keys(ePtr<iServiceKeys> &SWIG_OUTPUT)=0;
};
SWIG_TEMPLATE_TYPEDEF(ePtr<iPlayableService>, iPlayableServicePtr);
evRecordStopped,
evNewProgramInfo,
evRecordFailed,
- evRecordWriteError
+ evRecordWriteError,
+ evNewEventInfo
};
enum {
NoError=0,
virtual RESULT connectEvent(const Slot2<void,iRecordableService*,int> &event, ePtr<eConnection> &connection)=0;
#endif
virtual SWIG_VOID(RESULT) getError(int &SWIG_OUTPUT)=0;
- virtual RESULT prepare(const char *filename, time_t begTime=-1, time_t endTime=-1, int eit_event_id=-1)=0;
+ virtual RESULT prepare(const char *filename, time_t begTime=-1, time_t endTime=-1, int eit_event_id=-1, const char *name=0, const char *descr=0, const char *tags=0)=0;
virtual RESULT prepareStreaming()=0;
- virtual RESULT start()=0;
+ virtual RESULT start(bool simulate=false)=0;
virtual RESULT stop()=0;
virtual SWIG_VOID(RESULT) frontendInfo(ePtr<iFrontendInformation> &SWIG_OUTPUT)=0;
virtual SWIG_VOID(RESULT) stream(ePtr<iStreamableService> &SWIG_OUTPUT)=0;
+ virtual SWIG_VOID(RESULT) subServices(ePtr<iSubserviceList> &SWIG_OUTPUT)=0;
};
SWIG_TEMPLATE_TYPEDEF(ePtr<iRecordableService>, iRecordableServicePtr);