Ticket #1056: dishnet_eit_8612.patch

File dishnet_eit_8612.patch, 4.1 KB (added by greg, 14 years ago)
  • libs/libmythtv/mpeg/mpegdescriptors.h

     
    115115        audio_stream                = 0x81,
    116116        caption_service             = 0x86,
    117117        content_advisory            = 0x87,
     118
     119        // Dish Network
     120        dish_ename                  = 0x91,
     121        dish_edescription           = 0x92,
     122
    118123        extended_channel_name       = 0xA0,
    119124        service_location            = 0xA1,
    120125        atsc_time_shifted_service   = 0xA2,
  • libs/libmythtv/siparser.cpp

     
    570570            break;
    571571        case 0x42: /* Service Table(s) */
    572572        case 0x46: 
     573            VERBOSE(VB_SIPARSER, LOC + QString("Calling ParseSDT (%1 / %2)")
     574                                   .arg(head.table_id, 0, 16).arg(pid, 0, 16));
     575
    573576            ParseSDT(pid, &head, &buffer[8], size-8);
    574577            break;
    575578#ifdef USING_DVB_EIT
     
    577580            /* Standard Now/Next Event Information Table(s) */
    578581        case 0x50 ... 0x6F:
    579582            /* Standard Future Event Information Table(s) */
     583            VERBOSE(VB_SIPARSER, LOC + QString("Calling ParseDVBEIT (%1/%2)")
     584                                   .arg(head.table_id, 0, 16).arg(pid, 0, 16));
    580585            ParseDVBEIT(pid, &head, &buffer[8], size-8);
    581586            break;
     587        case 0x80 ... 0xFE:
     588            /* Dishnet uses this range for longterm(7-9days) EIT */
     589            VERBOSE(VB_SIPARSER, LOC + QString("Calling ParseDVBEIT DN(%1/%2)")
     590                                   .arg(head.table_id, 0, 16).arg(pid, 0, 16));
     591            ParseDVBEIT(pid, &head, &buffer[8], size-8);
     592            break;
    582593#endif
    583594        }
    584595    }
     
    11801191    uint16_t network_id = buffer[0] << 8 | buffer[1];
    11811192    // TODO: Handle Network Specifics here if they aren't set
    11821193
     1194    //TODO : Make this configurable.
     1195    PrivateTypes.ForceGuidePresent = true;
     1196
    11831197    if (PrivateTypesLoaded == false)
    11841198        LoadPrivateTypes(network_id);
    11851199
     
    12661280            Table[EVENTS]->RequestEmit(s.ServiceID);
    12671281            eit_requested = true;
    12681282        }
     1283 
     1284        //TODO: This should be tied into the above ?
     1285        if ((PrivateTypes.ForceGuidePresent) && (!eit_requested))
     1286        {
     1287            Table[EVENTS]->RequestEmit(s.ServiceID);
     1288            eit_requested = true;
     1289        }
    12691290#endif
    12701291
    12711292        VERBOSE(VB_SIPARSER, LOC +
     
    12921313    Table[EVENTS]->DependencyMet(SERVICES);
    12931314    //Table[EVENTS]->AddPid(0x12,0x00,0x00,true); // see ticket #755
    12941315    Table[EVENTS]->AddPid(0x12,0x7F,0x80,0x12); // see ticket #755
     1316
     1317    // This should only be added based on the user enabling 7-9day dishnet
     1318    // EIT events
     1319    Table[EVENTS]->AddPid(0x300,0x00,0x00,true);
    12951320}
    12961321
    12971322/** \fn GetLanguagePriority(const QString&)
     
    19671992{
    19681993    uint    descriptorTag    = data[0];
    19691994    uint    descriptorLength = data[1];
     1995    int tnum;
    19701996
    19711997    switch (descriptorTag)
    19721998    {
     
    20222048            ProcessContentDescriptor(data, descriptorLength + 2, event);
    20232049            break;
    20242050
     2051        case DescriptorID::dish_ename:
     2052            if (event.TableID > 0x80)
     2053                tnum = 2;
     2054            else
     2055                tnum = 1;
     2056
     2057            Huffman2ToQString((uint8_t *)data+3, data[1]-1, tnum, event.Event_Name);
     2058            break;
     2059
     2060        case DescriptorID::dish_edescription:
     2061            if (event.TableID > 0x80)
     2062                tnum = 2;
     2063            else
     2064                tnum = 1;
     2065
     2066            if ((data[3]&0xf8) == 0x80)
     2067                Huffman2ToQString((uint8_t *)data+4, data[1]-2, tnum, event.Description);
     2068            else
     2069                Huffman2ToQString((uint8_t *)data+3, data[1]-1, tnum, event.Description);
     2070            //VERBOSE(VB_EIT, LOC + QString("Descr : %1").arg(event.Description));
     2071            break;
     2072
    20252073        default:
    20262074            ProcessUnusedDescriptor(pid, data, descriptorLength + 2);
    20272075            break;