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=true;
+ int ret=30000;
if (m_cached_channel)
{
eDVBChannel *cache_chan = (eDVBChannel*)&(*m_cached_channel);
if (!m_list)
{
eDebug("no channel list set!");
- ret = false;
+ ret = 0;
goto error;
}
if (m_list->getChannelFrontendData(channelid, feparm))
{
eDebug("channel not found!");
- ret = false;
+ ret = 0;
goto error;
}
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;
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);