eDebug("video: AUDIO_CONTINUE: %m");
}
+void eDVBAudio::setChannel(int channel)
+{
+ int val = AUDIO_STEREO;
+ switch (channel)
+ {
+ case aMonoLeft: val = AUDIO_MONO_LEFT; break;
+ case aMonoRight: val = AUDIO_MONO_RIGHT; break;
+ default: break;
+ }
+ if (::ioctl(m_fd, AUDIO_CHANNEL_SELECT, val) < 0)
+ eDebug("video: AUDIO_CHANNEL_SELECT: %m");
+}
+
int eDVBAudio::getPTS(pts_t &now)
{
return ::ioctl(m_fd, AUDIO_GET_PTS, &now);
eWarning("%s: %m", filename);
eDebug("demux device: %s", filename);
}
-
-int eDVBVideo::startPid(int pid)
+
+// not finally values i think.. !!
+#define VIDEO_STREAMTYPE_MPEG2 0
+#define VIDEO_STREAMTYPE_MPEG4_H264 1
+
+int eDVBVideo::startPid(int pid, int type)
{
if ((m_fd < 0) || (m_fd_demux < 0))
return -1;
dmx_pes_filter_params pes;
+ if (::ioctl(m_fd, VIDEO_SET_STREAMTYPE,
+ type == MPEG4_H264 ? VIDEO_STREAMTYPE_MPEG4_H264 : VIDEO_STREAMTYPE_MPEG2) < 0)
+ eWarning("video: VIDEO_SET_STREAMTYPE: %m");
+
pes.pid = pid;
pes.input = DMX_IN_FRONTEND;
pes.output = DMX_OUT_DECODER;
{
eDebug("new video");
m_video = new eDVBVideo(m_demux, m_decoder);
- if (m_video->startPid(m_vpid))
+ if (m_video->startPid(m_vpid, m_vtype))
{
eWarning("video: startpid failed!");
res = -1;
setState();
}
-RESULT eTSMPEGDecoder::setVideoPID(int vpid)
+RESULT eTSMPEGDecoder::setVideoPID(int vpid, int type)
{
if (m_vpid != vpid)
{
m_changed |= changeVideo;
m_vpid = vpid;
+ m_vtype = type;
}
return 0;
}
return 0;
}
+RESULT eTSMPEGDecoder::setAudioChannel(int channel)
+{
+ if (m_audio)
+ m_audio->setChannel(channel);
+ else
+ eDebug("eTSMPEGDecoder::setAudioChannel but no audio decoder exist");
+ return 0;
+}
+
RESULT eTSMPEGDecoder::setSyncPCR(int pcrpid)
{
if (m_pcrpid != pcrpid)