return -1;
}
+ePtr<eDVBResourceManager> NewResourceManagerPtr(void)
+{
+ ePtr<eDVBResourceManager> ptr;
+ eDVBResourceManager::getInstance(ptr);
+ return ptr;
+}
+
eDVBResourceManager::eDVBResourceManager()
:m_releaseCachedChannelTimer(eApp)
{
int eDVBResourceManager::canAllocateChannel(const eDVBChannelID &channelid, const eDVBChannelID& ignore)
{
- bool ret=3000;
+ int ret=30000;
if (m_cached_channel)
{
eDVBChannel *cache_chan = (eDVBChannel*)&(*m_cached_channel);
eDebug("getNextSourceSpan, no decoding demux. forcing normal play");
return;
}
-
+
if (m_skipmode_n)
{
eDebug("skipmode %d:%d", m_skipmode_m, m_skipmode_n);
max = m_skipmode_n;
}
-
+
eDebug("getNextSourceSpan, current offset is %08llx!", current_offset);
-
+
current_offset += m_skipmode_m;
-
+
while (!m_cue->m_seek_requests.empty())
{
std::pair<int, pts_t> seek = m_cue->m_seek_requests.front();
eDebug("seekTo: getCurrentPosition failed!");
continue;
}
+ } else if (pts < 0) /* seek relative to end */
+ {
+ pts_t len;
+ if (!getLength(len))
+ {
+ eDebug("seeking relative to end. len=%lld, seek = %lld", len, pts);
+ pts += len;
+ } else
+ {
+ eWarning("getLength failed - can't seek relative to end!");
+ continue;
+ }
}
if (relative == 1) /* pts relative */
off_t offset = 0;
if (m_tstools.getOffset(offset, pts))
+ {
+ eDebug("get offset for pts=%lld failed!", pts);
continue;
+ }
eDebug("ok, resolved skip (rel: %d, diff %lld), now at %08llx", relative, pts, offset);
current_offset = offset;
m_pvr_thread = new eFilePushThread();
m_pvr_thread->enablePVRCommit(1);
+ m_pvr_thread->setStreamMode(1);
m_pvr_thread->setScatterGather(this);
if (m_pvr_thread->start(file, m_pvr_fd_dst))
void eCueSheet::seekTo(int relative, const pts_t &pts)
{
{
- eSingleLock l(m_lock);
+ eSingleLocker l(m_lock);
m_seek_requests.push_back(std::pair<int, pts_t>(relative, pts));
}
m_event(evtSeek);
void eCueSheet::clear()
{
- eSingleLock l(m_lock);
+ eSingleLocker l(m_lock);
m_spans.clear();
}
void eCueSheet::addSourceSpan(const pts_t &begin, const pts_t &end)
{
{
- eSingleLock l(m_lock);
+ eSingleLocker l(m_lock);
m_spans.push_back(std::pair<pts_t, pts_t>(begin, end));
}
}
void eCueSheet::setSkipmode(const pts_t &ratio)
{
{
- eSingleLock l(m_lock);
+ eSingleLocker l(m_lock);
m_skipmode_ratio = ratio;
}
m_event(evtSkipmode);