ePtr<eDVBDemux> m_demux;
int m_fd, m_fd_demux, m_dev, m_is_freezed;
public:
- enum { aMPEG, aAC3, aDTS, aAAC };
+ enum { aMPEG, aAC3, aDTS, aAAC, aAACHE, aLPCM };
eDVBAudio(eDVBDemux *demux, int dev);
enum { aMonoLeft, aStereo, aMonoRight };
void setChannel(int channel);
ePtr<eSocketNotifier> m_sn;
void video_event(int what);
Signal1<void, struct iTSMPEGDecoder::videoEvent> m_event;
+ int m_width, m_height, m_framerate, m_aspect, m_progressive;
public:
- enum { MPEG2, MPEG4_H264 };
+ enum { MPEG2, MPEG4_H264, MPEG1, MPEG4_Part2, VC1, VC1_SM };
eDVBVideo(eDVBDemux *demux, int dev);
void stop();
#if HAVE_DVB_API_VERSION < 3
int getPTS(pts_t &now);
virtual ~eDVBVideo();
RESULT connectEvent(const Slot1<void, struct iTSMPEGDecoder::videoEvent> &event, ePtr<eConnection> &conn);
+ int getWidth();
+ int getHeight();
+ int getProgressive();
+ int getFrameRate();
+ int getAspect();
};
class eDVBPCR: public iObject
DECLARE_REF(eDVBPCR);
private:
ePtr<eDVBDemux> m_demux;
- int m_fd_demux;
+ int m_fd_demux, m_dev;
public:
- eDVBPCR(eDVBDemux *demux);
+ eDVBPCR(eDVBDemux *demux, int dev);
#if HAVE_DVB_API_VERSION < 3
int setPid(int pid);
int startPid();
DECLARE_REF(eDVBTText);
private:
ePtr<eDVBDemux> m_demux;
- int m_fd_demux;
+ int m_fd_demux, m_dev;
public:
- eDVBTText(eDVBDemux *demux);
+ eDVBTText(eDVBDemux *demux, int dev);
int startPid(int pid);
void stop();
virtual ~eDVBTText();
changeVideo = 1,
changeAudio = 2,
changePCR = 4,
- changeText = 8
+ changeText = 8,
+ changeState = 16,
};
int m_changed, m_decoder;
- int m_is_ff, m_is_sm, m_is_trickmode;
+ int m_state;
+ int m_ff_sm_ratio;
int setState();
ePtr<eConnection> m_demux_event_conn;
ePtr<eConnection> m_video_event_conn;
RESULT setSyncPCR(int pcrpid);
RESULT setTextPID(int textpid);
RESULT setSyncMaster(int who);
- RESULT start();
- RESULT preroll();
- RESULT freeze(int cont);
- RESULT unfreeze();
- RESULT setSinglePictureMode(int when);
- RESULT setPictureSkipMode(int what);
- RESULT setFastForward(int frames_to_skip);
- RESULT setSlowMotion(int repeat);
- RESULT setZoom(int what);
+
+ /*
+ The following states exist:
+
+ - stop: data source closed, no playback
+ - pause: data source active, decoder paused
+ - play: data source active, decoder consuming
+ - decoder fast forward: data source linear, decoder drops frames
+ - trickmode, highspeed reverse: data source fast forwards / reverses, decoder just displays frames as fast as it can
+ - slow motion: decoder displays frames multiple times
+ */
+ enum {
+ stateStop,
+ statePause,
+ statePlay,
+ stateDecoderFastForward,
+ stateTrickmode,
+ stateSlowMotion
+ };
+ RESULT set(); /* just apply settings, keep state */
+ RESULT play(); /* -> play */
+ RESULT pause(); /* -> pause */
+ RESULT setFastForward(int frames_to_skip); /* -> decoder fast forward */
+ RESULT setSlowMotion(int repeat); /* -> slow motion **/
+ RESULT setTrickmode(); /* -> highspeed fast forward */
+
RESULT flush();
- RESULT setTrickmode(int what);
RESULT showSinglePic(const char *filename);
RESULT setRadioPic(const std::string &filename);
/* what 0=auto, 1=video, 2=audio. */
RESULT getPTS(int what, pts_t &pts);
RESULT connectVideoEvent(const Slot1<void, struct videoEvent> &event, ePtr<eConnection> &connection);
+ int getVideoWidth();
+ int getVideoHeight();
+ int getVideoProgressive();
+ int getVideoFrameRate();
+ int getVideoAspect();
};
#endif