int nal_unit_type = (sc >> 1);
if (nal_unit_type == 35) /* H265 NAL unit access delimiter */
{
- unsigned long long data = sc | (pkt[4] << 8);
+ unsigned long long data = sc | (pkt[5] << 8);
m_streaminfo.writeStructureEntry(offset + pkt_offset, data);
- if ((pkt[4] >> 5) == 0) /* check pic_type for I-frame */
+ if ((pkt[5] >> 5) == 0) /* check pic_type for I-frame */
{
if (ptsvalid)
{
m_subtitle_sync_timer = eTimer::create(eApp);
+ m_current_video_pid_type = 0;
+
CONNECT(m_subtitle_sync_timer->timeout, eDVBServicePlay::checkSubtitleTiming);
}
{
eDebug("setting cue skipmode to %d", skipmode);
if (m_cue)
- m_cue->setSkipmode(skipmode * 90000); /* convert to 90000 per second */
+ {
+ long long _skipmode = skipmode;
+ if (!m_timeshift_active && (m_current_video_pid_type == eDVBServicePMTHandler::videoStream::vtH265_HEVC))
+ {
+ if (ratio < 0)
+ _skipmode = skipmode * 3;
+ else
+ _skipmode = skipmode * 4;
+ }
+
+ m_cue->setSkipmode(_skipmode * 90000); /* convert to 90000 per second */
+ }
}
m_skipmode = skipmode;
setPCMDelay(pcm_delay == -1 ? 0 : pcm_delay);
m_decoder->setVideoPID(vpid, vpidtype);
+ m_current_video_pid_type = vpidtype;
selectAudioStream();
//if (!(m_is_pvr || m_is_stream || m_timeshift_active || !m_is_primary))
eDVBServicePMTHandler m_service_handler_timeshift;
eDVBServiceEITHandler m_event_handler;
int m_current_audio_pid;
+ int m_current_video_pid_type;
eDVBServicePlay(const eServiceReference &ref, eDVBService *service);