git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fire cuesheet changed on load
[enigma2.git]
/
lib
/
service
/
servicedvb.cpp
diff --git
a/lib/service/servicedvb.cpp
b/lib/service/servicedvb.cpp
index 3487c3e64bfceda28d0cb0bb34f829a61a02bea6..3d5510163516d8b94026e2d5c9827b6660afecb0 100644
(file)
--- a/
lib/service/servicedvb.cpp
+++ b/
lib/service/servicedvb.cpp
@@
-246,6
+246,8
@@
RESULT eDVBPVRServiceOfflineOperations::getListOfFilenames(std::list<std::string
res.clear();
res.push_back(m_ref.path);
res.push_back(m_ref.path + ".meta");
res.clear();
res.push_back(m_ref.path);
res.push_back(m_ref.path + ".meta");
+ res.push_back(m_ref.path + ".ap");
+ res.push_back(m_ref.path + ".cuts");
return 0;
}
return 0;
}
@@
-604,6
+606,11
@@
void eDVBServicePlay::serviceEvent(int event)
updateTimeshiftPids();
if (!m_timeshift_active)
updateDecoder();
updateTimeshiftPids();
if (!m_timeshift_active)
updateDecoder();
+ if (m_first_program_info && m_is_pvr)
+ {
+ m_first_program_info = 0;
+ seekTo(0);
+ }
m_event((iPlayableService*)this, evUpdatedInfo);
break;
}
m_event((iPlayableService*)this, evUpdatedInfo);
break;
}
@@
-637,6
+644,7
@@
RESULT eDVBServicePlay::start()
two (one for decoding, one for data source), as we must be prepared
to start recording from the data demux. */
m_cue = new eCueSheet();
two (one for decoding, one for data source), as we must be prepared
to start recording from the data demux. */
m_cue = new eCueSheet();
+ m_first_program_info = 1;
r = m_service_handler.tune((eServiceReferenceDVB&)m_reference, m_is_pvr, m_cue);
m_event(this, evStart);
m_event((iPlayableService*)this, evSeekableStatusChanged);
r = m_service_handler.tune((eServiceReferenceDVB&)m_reference, m_is_pvr, m_cue);
m_event(this, evStart);
m_event((iPlayableService*)this, evSeekableStatusChanged);
@@
-815,7
+823,18
@@
RESULT eDVBServicePlay::getPlayPosition(pts_t &pos)
if ((m_timeshift_enabled ? m_service_handler_timeshift : m_service_handler).getPVRChannel(pvr_channel))
return -1;
if ((m_timeshift_enabled ? m_service_handler_timeshift : m_service_handler).getPVRChannel(pvr_channel))
return -1;
- return pvr_channel->getCurrentPosition(m_decode_demux, pos, 1);
+ int r = 0;
+
+ /* if there is a decoder, use audio or video PTS */
+ if (m_decoder)
+ {
+ r = m_decoder->getPTS(0, pos);
+ if (r)
+ return r;
+ }
+
+ /* fixup */
+ return pvr_channel->getCurrentPosition(m_decode_demux, pos, m_decoder ? 1 : 0);
}
RESULT eDVBServicePlay::setTrickmode(int trick)
}
RESULT eDVBServicePlay::setTrickmode(int trick)
@@
-1241,6
+1260,8
@@
void eDVBServicePlay::setCutList(PyObject *list)
eDebug("adding %08llx, %d", pts, type);
}
m_cuesheet_changed = 1;
eDebug("adding %08llx, %d", pts, type);
}
m_cuesheet_changed = 1;
+
+ m_event((iPlayableService*)this, evCuesheetChanged);
}
void eDVBServicePlay::updateTimeshiftPids()
}
void eDVBServicePlay::updateTimeshiftPids()
@@
-1382,7
+1403,7
@@
void eDVBServicePlay::updateDecoder()
if (m_decode_demux)
m_decode_demux->getMPEGDecoder(m_decoder);
if (m_cue)
if (m_decode_demux)
m_decode_demux->getMPEGDecoder(m_decoder);
if (m_cue)
- m_cue->setDecodingDemux(m_decode_demux);
+ m_cue->setDecodingDemux(m_decode_demux
, m_decoder
);
}
if (m_decoder)
}
if (m_decoder)
@@
-1457,6
+1478,7
@@
void eDVBServicePlay::loadCuesheet()
eDebug("cutfile not found!");
m_cuesheet_changed = 0;
eDebug("cutfile not found!");
m_cuesheet_changed = 0;
+ m_event((iPlayableService*)this, evCuesheetChanged);
}
void eDVBServicePlay::saveCuesheet()
}
void eDVBServicePlay::saveCuesheet()