Ticket #9155: programid.diff
File programid.diff, 4.5 KB (added by , 13 years ago) |
---|
-
libs/libmythtv/eithelper.cpp
374 374 QString rating_system = QString(""); 375 375 QString advisory = QString(""); 376 376 float stars = 0.0; 377 QDate originalairdate; 377 378 378 379 if (EITFixUp::kFixDish & fix) 379 380 { … … 420 421 DishEventTagsDescriptor tags(tags_data); 421 422 seriesId = tags.seriesid(); 422 423 programId = tags.programid(); 424 originalairdate = tags.originalairdate(); // future use 425 426 if (programId.startsWith("MV") || programId.startsWith("SP")) 427 seriesId = ""; 423 428 } 424 429 425 430 const unsigned char *properties_data = -
libs/libmythtv/mpeg/dishdescriptors.cpp
3 3 #include "dishdescriptors.h" 4 4 #include "atsc_huffman.h" 5 5 #include "programinfo.h" // for subtitle types and audio and video properties 6 #include "dvbtables.h" 6 7 7 8 QString DishEventNameDescriptor::Name(uint compression_type) const 8 9 { … … 81 82 82 83 QString DishEventTagsDescriptor::programid(void) const 83 84 { 84 QString id;85 QString prefix = QString(""); 85 86 86 87 if (DescriptorLength() != 8) 87 88 return QString::null; 88 89 89 id.sprintf("%02x%02x%02x%02x%02x%02x%02x", _data[3], _data[4], _data[5], 90 _data[6], _data[7], _data[8], 91 _data[9]); 90 QString series = seriesid(); 91 series.remove(0, 2); 92 92 93 return id; 93 uint episode = ((_data[6] & 0x3f) << 0x08) | _data[7]; 94 95 if (_data[2] == 0x7c) 96 prefix = "MV"; 97 else if (_data[2] == 0x7d) 98 prefix = "SP"; 99 else if (_data[2] == 0x7e) 100 { 101 if (episode > 0) 102 prefix = "EP"; 103 else 104 prefix = "SH"; 105 } else 106 return prefix; 107 108 QString id = QString("%1%2%3").arg(prefix).arg(series).arg(episode, 4, 0); 109 110 return id; 94 111 } 95 112 96 QString DishEventTagsDescriptor::seriesid(void) const 113 QString DishEventTagsDescriptor::seriesid(void) const 97 114 { 98 QString id;115 QString prefix = QString(""); 99 116 100 117 if (DescriptorLength() != 8) 101 118 return QString::null; 102 119 103 id.sprintf("%02x%02x%02x%01x", _data[3], _data[4], _data[5], 104 ((_data[6] & 0xf0) >> 0x04)); 120 if (_data[2] == 0x7c) 121 prefix = "MV"; 122 else if (_data[2] == 0x7d) 123 prefix = "SP"; 124 else if (_data[2] == 0x7e) 125 prefix = "EP"; 126 else 127 return prefix; 105 128 129 uint series = (_data[3] << 0x12) | (_data[4] << 0x0a) | (_data[5] << 0x02) | 130 ((_data[6] & 0xc0) >> 0x06); 131 132 QString id = QString("%1%2").arg(prefix).arg(series, 8, 0); 133 106 134 return id; 107 135 } 108 136 137 QDate DishEventTagsDescriptor::originalairdate(void) const 138 { 139 unsigned char mjd[5]; 140 141 if (DescriptorLength() != 8) 142 return QDate::QDate(); 143 144 mjd[0] = _data[8]; 145 mjd[1] = _data[9]; 146 mjd[2] = 0; 147 mjd[3] = 0; 148 mjd[4] = 0; 149 150 QDateTime t = dvbdate2qt(mjd); 151 152 if (!t.isValid()) 153 return QDate::QDate(); 154 155 QDate originalairdate = t.date(); 156 157 if (originalairdate.year() < 1940) 158 return QDate::QDate(); 159 160 return originalairdate; 161 } 162 109 163 QMutex DishEventMPAADescriptor::mpaaRatingsLock; 110 164 map<uint,QString> DishEventMPAADescriptor::mpaaRatingsDesc; 111 165 bool DishEventMPAADescriptor::mpaaRatingsExists = false; -
libs/libmythtv/mpeg/dishdescriptors.h
8 8 9 9 #include <qmutex.h> 10 10 #include <QString> 11 #include <QDate> 11 12 12 13 #include "atscdescriptors.h" 13 14 … … 144 145 assert(DescriptorID::dish_event_tags == DescriptorTag()); 145 146 // descriptor_length 8 1.0 146 147 } 147 // unknown 8 2.0 148 // seriesid 28 3.0 149 QString seriesid(void) const; 150 151 // programid 42 3.0 148 // seriesid 64 2.0 149 QString seriesid(void) const; 152 150 QString programid(void) const; 151 QDate originalairdate(void) const; 153 152 }; 154 153 155 154 typedef enum