if ((nott && m_text) || (!m_text && !nott))
m_changed |= changeText | changeState;
+ const char *decoder_states[] = {"stop", "pause", "play", "decoderfastforward", "trickmode", "slowmotion"};
+ eDebug("decoder state: %s, vpid=%d, apid=%d", decoder_states[m_state], m_vpid, m_apid);
+
bool changed = !!m_changed;
#if HAVE_DVB_API_VERSION < 3
bool checkAVSync = m_changed & (changeAudio|changeVideo|changePCR);
}
eTSMPEGDecoder::eTSMPEGDecoder(eDVBDemux *demux, int decoder)
- :m_demux(demux), m_changed(0), m_decoder(decoder), m_video_clip_fd(-1), m_showSinglePicTimer(eTimer::create(eApp))
+ : m_demux(demux),
+ m_vpid(-1), m_vtype(-1), m_apid(-1), m_atype(-1), m_pcrpid(-1), m_textpid(-1),
+ m_changed(0), m_decoder(decoder), m_video_clip_fd(-1), m_showSinglePicTimer(eTimer::create(eApp))
{
demux->connectEvent(slot(*this, &eTSMPEGDecoder::demux_event), m_demux_event_conn);
CONNECT(m_showSinglePicTimer->timeout, eTSMPEGDecoder::finishShowSinglePic);
unsigned char seq_end[] = { 0x00, 0x00, 0x01, 0xB7 };
unsigned char iframe[s.st_size];
unsigned char stuffing[8192];
+ int streamtype = VIDEO_STREAMTYPE_MPEG2;
memset(stuffing, 0, 8192);
read(f, iframe, s.st_size);
if (ioctl(m_video_clip_fd, VIDEO_SELECT_SOURCE, VIDEO_SOURCE_MEMORY) < 0)
eDebug("VIDEO_SELECT_SOURCE MEMORY failed (%m)");
+ if (ioctl(m_video_clip_fd, VIDEO_SET_STREAMTYPE, streamtype) < 0)
+ eDebug("VIDEO_SET_STREAMTYPE failed(%m)");
if (ioctl(m_video_clip_fd, VIDEO_PLAY) < 0)
eDebug("VIDEO_PLAY failed (%m)");
- if (::ioctl(m_video_clip_fd, VIDEO_CONTINUE) < 0)
+ if (ioctl(m_video_clip_fd, VIDEO_CONTINUE) < 0)
eDebug("video: VIDEO_CONTINUE: %m");
- if (::ioctl(m_video_clip_fd, VIDEO_CLEAR_BUFFER) < 0)
+ if (ioctl(m_video_clip_fd, VIDEO_CLEAR_BUFFER) < 0)
eDebug("video: VIDEO_CLEAR_BUFFER: %m");
while(pos <= (s.st_size-4) && !(seq_end_avail = (!iframe[pos] && !iframe[pos+1] && iframe[pos+2] == 1 && iframe[pos+3] == 0xB7)))
++pos;