+// eDebug("[%d] looked for %lld, found %llu=%llx", sizeof offset, offset, m_structure_cache[i * 2], m_structure_cache[i * 2 + 1]);
+ offset = m_structure_cache[i * 2];
+ data = m_structure_cache[i * 2 + 1];
+ return 0;
+}
+
+int eMPEGStreamInformation::getStructureEntry_next(off_t &offset, unsigned long long &data)
+{
+ if (!m_structure_read)
+ {
+ eDebug("getStructureEntry failed because of no m_structure_read");
+ return -1;
+ }
+
+ off_t _offset = offset;
+ if ((m_structure_cache_entries == 0) || ((off_t)m_structure_cache[0] > offset) || ((off_t)m_structure_cache[(m_structure_cache_entries - 1)*2] <= offset))
+ {
+ if(update_structure_cache_entries(_offset))
+ {
+ return -1;
+ }
+ }
+
+ int i = 0;
+ while ((off_t)m_structure_cache[i * 2] <= offset)
+ {
+ ++i;
+ if (i == m_structure_cache_entries)
+ {
+ eDebug("structure data consistency fail!, we are looking for %llu, but last entry is %llu", offset, m_structure_cache[(m_structure_cache_entries-1)*2]);
+ return -1;
+ }
+ }
+ if (!i)
+ {
+ eDebug("structure data (first entry) consistency fail!");
+ return -1;
+ }
+
+// eDebug("[%d] looked for %llu, found data %llu=%llx",sizeof offset, offset, m_structure_cache[i * 2], m_structure_cache[i * 2 + 1]);
+ offset = m_structure_cache[i * 2];
+ data = m_structure_cache[i * 2 + 1];
+ return 0;
+}
+
+int eMPEGStreamInformation::getStructureEntry_prev(off_t &offset, unsigned long long &data)
+{
+ if (!m_structure_read)
+ {
+ eDebug("getStructureEntry failed because of no m_structure_read");
+ return -1;
+ }
+
+ off_t _offset = offset;
+ if ((m_structure_cache_entries == 0) || ((off_t)m_structure_cache[0] >= offset) || ((off_t)m_structure_cache[(m_structure_cache_entries - 1)*2] < offset))
+ {
+ if(update_structure_cache_entries(_offset))
+ {
+ return -1;
+ }
+ }
+
+ int i = m_structure_cache_entries-1;
+ while ((off_t)m_structure_cache[i * 2] >= offset)
+ {
+ if (i <= 0)
+ {
+ eDebug("structure data consistency fail!, we are looking for %llu, but last entry is %llu", offset, m_structure_cache[i * 2]);
+ return -1;
+ }
+ --i;
+ }
+ if (i == m_structure_cache_entries-1)
+ {
+ eDebug("structure data (first entry) consistency fail!");
+ return -1;
+ }
+
+// eDebug("[%d] looked for %llu, found data %llu=%llx",sizeof offset, offset, m_structure_cache[i * 2], m_structure_cache[i * 2 + 1]);