Index: libs/libmythtv/mpeg/mpegdescriptors.cpp =================================================================== --- libs/libmythtv/mpeg/mpegdescriptors.cpp.orig 2006-06-20 17:31:10.000000000 -0400 +++ libs/libmythtv/mpeg/mpegdescriptors.cpp 2006-06-20 17:36:06.000000000 -0400 @@ -223,8 +223,12 @@ return QString("Audio"); case DescriptorID::caption_service: return QString("Caption Service"); - case DescriptorID:: content_advisory: + case DescriptorID::content_advisory: return QString("Content Advisory"); + case DescriptorID::dish_ename: + return QString("Dishnet EIT Name"); + case DescriptorID::dish_edescription: + return QString("Dishnet EIT Description"); case DescriptorID::extended_channel_name: return QString("Extended Channel Name"); case DescriptorID::service_location: Index: libs/libmythtv/mpeg/mpegdescriptors.h =================================================================== --- libs/libmythtv/mpeg/mpegdescriptors.h.orig 2006-06-20 17:31:10.000000000 -0400 +++ libs/libmythtv/mpeg/mpegdescriptors.h 2006-06-20 17:36:06.000000000 -0400 @@ -115,6 +115,11 @@ audio_stream = 0x81, caption_service = 0x86, content_advisory = 0x87, + + // Dish Network + dish_ename = 0x91, + dish_edescription = 0x92, + extended_channel_name = 0xA0, service_location = 0xA1, atsc_time_shifted_service = 0xA2, Index: libs/libmythtv/siparser.cpp =================================================================== --- libs/libmythtv/siparser.cpp.orig 2006-06-20 17:31:10.000000000 -0400 +++ libs/libmythtv/siparser.cpp 2006-06-20 17:37:24.000000000 -0400 @@ -570,6 +570,9 @@ break; case 0x42: /* Service Table(s) */ case 0x46: + VERBOSE(VB_SIPARSER, LOC + QString("Calling ParseSDT (%1 / %2)") + .arg(head.table_id, 0, 16).arg(pid, 0, 16)); + ParseSDT(pid, &head, &buffer[8], size-8); break; #ifdef USING_DVB_EIT @@ -577,6 +580,14 @@ /* Standard Now/Next Event Information Table(s) */ case 0x50 ... 0x6F: /* Standard Future Event Information Table(s) */ + VERBOSE(VB_SIPARSER, LOC + QString("Calling ParseDVBEIT (%1/%2)") + .arg(head.table_id, 0, 16).arg(pid, 0, 16)); + ParseDVBEIT(pid, &head, &buffer[8], size-8); + break; + case 0x80 ... 0xFE: + /* Dishnet uses this range for longterm(7-9days) EIT */ + VERBOSE(VB_SIPARSER, LOC + QString("Calling ParseDVBEIT DN(%1/%2)") + .arg(head.table_id, 0, 16).arg(pid, 0, 16)); ParseDVBEIT(pid, &head, &buffer[8], size-8); break; #endif @@ -1180,6 +1191,9 @@ uint16_t network_id = buffer[0] << 8 | buffer[1]; // TODO: Handle Network Specifics here if they aren't set + //TODO : Make this configurable. + PrivateTypes.ForceGuidePresent = true; + if (PrivateTypesLoaded == false) LoadPrivateTypes(network_id); @@ -1266,6 +1280,13 @@ Table[EVENTS]->RequestEmit(s.ServiceID); eit_requested = true; } + + //TODO: This should be tied into the above ? + if ((PrivateTypes.ForceGuidePresent) && (!eit_requested)) + { + Table[EVENTS]->RequestEmit(s.ServiceID); + eit_requested = true; + } #endif VERBOSE(VB_SIPARSER, LOC + @@ -1292,6 +1313,10 @@ Table[EVENTS]->DependencyMet(SERVICES); //Table[EVENTS]->AddPid(0x12,0x00,0x00,true); // see ticket #755 Table[EVENTS]->AddPid(0x12,0x7F,0x80,0x12); // see ticket #755 + + // This should only be added based on the user enabling 7-9day dishnet + // EIT events + Table[EVENTS]->AddPid(0x300,0x00,0x00,true); } /** \fn SIParser::GetLanguagePriority(const QString&) @@ -1967,6 +1992,7 @@ { uint descriptorTag = data[0]; uint descriptorLength = data[1]; + int tnum; switch (descriptorTag) { @@ -2022,6 +2048,28 @@ ProcessContentDescriptor(data, descriptorLength + 2, event); break; + case DescriptorID::dish_ename: + if (event.TableID > 0x80) + tnum = 2; + else + tnum = 1; + + Huffman2ToQString((uint8_t *)data+3, data[1]-1, tnum, event.Event_Name); + break; + + case DescriptorID::dish_edescription: + if (event.TableID > 0x80) + tnum = 2; + else + tnum = 1; + + if ((data[3]&0xf8) == 0x80) + Huffman2ToQString((uint8_t *)data+4, data[1]-2, tnum, event.Description); + else + Huffman2ToQString((uint8_t *)data+3, data[1]-1, tnum, event.Description); + //VERBOSE(VB_EIT, LOC + QString("Descr : %1").arg(event.Description)); + break; + default: ProcessUnusedDescriptor(pid, data, descriptorLength + 2); break;