rendered paste bodyIndex: mythtv-trunk/libs/libmythtv/eithelper.cpp
===================================================================
--- mythtv-trunk.orig/libs/libmythtv/eithelper.cpp
+++ mythtv-trunk/libs/libmythtv/eithelper.cpp
@@ -210,6 +210,8 @@ void EITHelper::AddETT(uint atsc_major,
void EITHelper::AddEIT(const DVBEventInformationTable *eit)
{
+ QDateTime invalid = QDateTime::currentDateTime().addDays(30);
+
uint descCompression = (eit->TableID() > 0x80) ? 2 : 1;
uint fix = fixup[eit->OriginalNetworkID() << 16];
fix |= fixup[(((uint64_t)eit->TSID()) << 32) |
@@ -224,6 +226,12 @@ void EITHelper::AddEIT(const DVBEventInf
uint version = eit->Version();
for (uint i = 0; i < eit->EventCount(); i++)
{
+ if (eit->StartTimeUTC(i) > invalid)
+ {
+ VERBOSE(VB_IMPORTANT, LOC + QString("\nFound invalid event\n\n") + eit->toString());
+ continue;
+ }
+
// Skip event if we have already processed it before...
if (!eitcache->IsNewEIT(networkid, tsid, serviceid, tableid, version,
eit->EventID(i), eit->EndTimeUnixUTC(i)))
Index: mythtv-trunk/libs/libmythtv/mpeg/dvbtables.cpp
===================================================================
--- mythtv-trunk.orig/libs/libmythtv/mpeg/dvbtables.cpp
+++ mythtv-trunk/libs/libmythtv/mpeg/dvbtables.cpp
@@ -186,6 +186,32 @@ uint DVBEventInformationTable::StartTime
return secsSince1970;
}
+QString DVBEventInformationTable::toString(void) const
+{
+ QString str =
+ QString("EIT: TSID(0x%1) original_network_id(0x%2) service_id(%3), "
+ "No. of events: %4\n")
+ .arg(OriginalNetworkID())
+ .arg(TSID())
+ .arg(ServiceID())
+ .arg(EventCount());
+
+ for (uint i = 0; i < EventCount(); i++)
+ {
+ str.append(QString(" event #%1 EID(0x%2)\n")
+ .arg(i, 2, 10)
+ .arg(EventID(i), 0, 16));
+ str.append(" starts " + StartTimeUTC(i).toString(Qt::ISODate) +
+ QString(" (%2, %3), length %4\n")
+ .arg(StartTimeKey(i))
+ .arg(StartTimeUnixUTC(i))
+ .arg(DurationInSeconds(i)));
+ str.append(QString(" event descriptors length: %1\n")
+ .arg(DescriptorsLength(i)));
+ }
+ return str;
+}
+
/** \fn dvbdate2qt(const unsigned char*)
* \return UTC time
*/
Index: mythtv-trunk/libs/libmythtv/mpeg/dvbtables.h
===================================================================
--- mythtv-trunk.orig/libs/libmythtv/mpeg/dvbtables.h
+++ mythtv-trunk/libs/libmythtv/mpeg/dvbtables.h
@@ -282,6 +282,8 @@ class DVBEventInformationTable : public
static bool IsEIT(uint table_id);
+ QString toString(void) const;
+
private:
mutable vector<const unsigned char*> _ptrs; // used to parse
};
Index: mythtv-trunk/libs/libmythtv/mpeg/pespacket.cpp
===================================================================
--- mythtv-trunk.orig/libs/libmythtv/mpeg/pespacket.cpp
+++ mythtv-trunk/libs/libmythtv/mpeg/pespacket.cpp
@@ -21,6 +21,11 @@ using namespace std;
bool PESPacket::AddTSPacket(const TSPacket* packet)
{
uint tlen = Length() + ((_pesdata-1) - _fullbuffer) + 4 /* CRC bytes */;
+
+// cerr << tlen << " = ";
+// cerr << Length() << " + (( ";
+// cerr << (uint64_t)_pesdata << "-1) - ";
+// cerr << (uint64_t)_fullbuffer << " ) + 4" << endl;
if (!tsheader()->PayloadStart())
{
@@ -78,6 +83,8 @@ bool PESPacket::AddTSPacket(const TSPack
return true;
}
+// cerr << _pesdataSize << ":";
+// cerr << tlen << endl;
if (_pesdataSize >= tlen)
{
_badPacket = !VerifyCRC();
@@ -153,7 +160,8 @@ uint PESPacket::CalcCRC(void) const
bool PESPacket::VerifyCRC(void) const
{
- bool ret = !HasCRC() || (CalcCRC() == CRC());
+ bool ret = !HasCRC()
+ || (CalcCRC() == CRC());
if (!ret)
{
VERBOSE(VB_SIPARSER,
@@ -324,20 +332,20 @@ static QMutex pes_alloc_mutex;
unsigned char *pes_alloc(uint size)
{
QMutexLocker locker(&pes_alloc_mutex);
- if (size <= 188)
+/* if (size <= 188)
return get_188_block();
else if (size <= 4096)
- return get_4096_block();
+ return get_4096_block();*/
return (unsigned char*) malloc(size);
}
void pes_free(unsigned char *ptr)
{
QMutexLocker locker(&pes_alloc_mutex);
- if (is_188_block(ptr))
+ /*if (is_188_block(ptr))
return_188_block(ptr);
else if (is_4096_block(ptr))
return_4096_block(ptr);
- else
+ else*/
free(ptr);
}