MythTV  master
dishdescriptors.cpp
Go to the documentation of this file.
1 // -*- Mode: c++ -*-
2 
3 // Qt headers
4 #include <QCoreApplication>
5 
6 // MythTV headers
7 #include "dishdescriptors.h"
8 #include "atsc_huffman.h"
9 #include "programinfo.h" // for subtitle types and audio and video properties
10 #include "dvbtables.h"
11 
12 QString DishEventNameDescriptor::Name(uint compression_type) const
13 {
14  if (!HasName())
15  return QString();
16 
18  m_data + 3, DescriptorLength() - 1, compression_type);
19 }
20 
21 const unsigned char *DishEventDescriptionDescriptor::DescriptionRaw(void) const
22 {
23  if (DescriptorLength() <= 2)
24  return nullptr;
25 
26  bool offset = (m_data[3] & 0xf8) == 0x80;
27  return m_data + ((offset) ? 4 : 3);
28 }
29 
31 {
32  if (DescriptorLength() <= 2)
33  return 0;
34 
35  bool offset = (m_data[3] & 0xf8) == 0x80;
36  return DescriptorLength() - ((offset) ? 2 : 1);
37 }
38 
40  uint compression_type) const
41 {
42  const unsigned char *raw = DescriptionRaw();
43  uint len = DescriptionRawLength();
44 
45  if (raw && len)
46  return atsc_huffman2_to_string(raw, len, compression_type);
47 
48  return QString();
49 }
50 
54 
56 {
57  decompress_properties(compression_type);
58 
59  return s_subtitleProps;
60 }
61 
63 {
64  decompress_properties(compression_type);
65 
66  return s_audioProps;
67 }
68 
70 {
71  s_subtitleProps = SUB_UNKNOWN;
72  s_audioProps = AUD_UNKNOWN;
73 
74  if (HasProperties())
75  {
76  QString properties_raw = atsc_huffman2_to_string(
77  m_data + 4, DescriptorLength() - 2, compression_type);
78 
79  if (properties_raw.contains("6|CC"))
80  s_subtitleProps |= SUB_HARDHEAR;
81 
82  if (properties_raw.contains("7|Stereo"))
83  s_audioProps |= AUD_STEREO;
84  }
85 }
86 
88 {
89  QString prefix = QString("");
90 
91  if (DescriptorLength() != 8)
92  return QString();
93 
94  QString series = seriesid();
95  series.remove(0, 2);
96 
97  uint episode = ((m_data[6] & 0x3f) << 0x08) | m_data[7];
98 
99  if (m_data[2] == 0x7c)
100  prefix = "MV";
101  else if (m_data[2] == 0x7d)
102  prefix = "SP";
103  else if (m_data[2] == 0x7e)
104  {
105  if (episode > 0)
106  prefix = "EP";
107  else
108  prefix = "SH";
109  } else
110  return prefix;
111 
112  QString id = QString("%1%2%3").arg(prefix).arg(series).arg(episode, 4, 0);
113 
114  return id;
115 }
116 
118 {
119  QString prefix = QString("");
120 
121  if (DescriptorLength() != 8)
122  return QString();
123 
124  if (m_data[2] == 0x7c)
125  prefix = "MV";
126  else if (m_data[2] == 0x7d)
127  prefix = "SP";
128  else if (m_data[2] == 0x7e)
129  prefix = "EP";
130  else
131  return prefix;
132 
133  uint series = (m_data[3] << 0x12) | (m_data[4] << 0x0a) | (m_data[5] << 0x02) |
134  ((m_data[6] & 0xc0) >> 0x06);
135 
136  QString id = QString("%1%2").arg(prefix).arg(series, 8, 0);
137 
138  return id;
139 }
140 
142 {
143  std::array<uint8_t,5> mjd {};
144 
145  if (DescriptorLength() != 8)
146  return {};
147 
148  mjd[0] = m_data[8];
149  mjd[1] = m_data[9];
150  mjd[2] = 0;
151  mjd[3] = 0;
152  mjd[4] = 0;
153 
154  QDateTime t = dvbdate2qt(mjd);
155 
156  if (!t.isValid())
157  return {};
158 
159  QDate originalairdate = t.date();
160 
161  if (originalairdate.year() < 1895)
162  return {};
163 
164  return originalairdate;
165 }
166 
170 
172 {
173  switch(stars_raw())
174  {
175  case 0x01: return 1.0 / 4;
176  case 0x02: return 1.5 / 4;
177  case 0x03: return 2.0 / 4;
178  case 0x04: return 2.5 / 4;
179  case 0x05: return 3.0 / 4;
180  case 0x06: return 3.5 / 4;
181  case 0x07: return 4.0 / 4;
182  }
183 
184  return 0.0;
185 }
186 
188 {
189  if (!s_mpaaRatingsExists)
190  Init();
191 
192  QMutexLocker locker(&s_mpaaRatingsLock);
193 
194  QMap<uint,QString>::const_iterator it = s_mpaaRatingsDesc.constFind(rating_raw());
195  if (it != s_mpaaRatingsDesc.constEnd())
196  return *it;
197 
198  // Found nothing? Just return empty string.
199  return "";
200 }
201 
203 {
204  int advisory = advisory_raw();
205  QStringList advisories;
206 
207  if (advisory & 0x01)
208  advisories.append("S");
209  if (advisory & 0x02)
210  advisories.append("L");
211  if (advisory & 0x04)
212  advisories.append("mQ");
213  if (advisory & 0x08)
214  advisories.append("FV");
215  if (advisory & 0x10)
216  advisories.append("V");
217  if (advisory & 0x20)
218  advisories.append("mK");
219  if (advisory & 0x40)
220  advisories.append("N");
221 
222  return advisories.join(",");
223 }
224 
226 {
227  QMutexLocker locker(&s_mpaaRatingsLock);
228 
230  return;
231 
232  s_mpaaRatingsDesc[0x01] = "G";
233  s_mpaaRatingsDesc[0x02] = "PG";
234  s_mpaaRatingsDesc[0x03] = "PG-13";
235  s_mpaaRatingsDesc[0x04] = "R";
236  s_mpaaRatingsDesc[0x05] = "NC-17";
237  s_mpaaRatingsDesc[0x06] = "NR";
238 
239  s_mpaaRatingsExists = true;
240 }
241 
245 
247 {
249  Init();
250 
251  QMutexLocker locker(&s_vchipRatingsLock);
252 
253  QMap<uint,QString>::const_iterator it = s_vchipRatingsDesc.constFind(rating_raw());
254  if (it != s_vchipRatingsDesc.constEnd())
255  return *it;
256 
257  // Found nothing? Just return empty string.
258  return "";
259 }
260 
262 {
263  int advisory = advisory_raw();
264  QStringList advisories;
265 
266  if (advisory & 0x01)
267  advisories.append("FV");
268  if (advisory & 0x02)
269  advisories.append("V");
270  if (advisory & 0x04)
271  advisories.append("S");
272  if (advisory & 0x08)
273  advisories.append("L");
274  if (advisory & 0x10)
275  advisories.append("D");
276 
277  return advisories.join(",");
278 }
279 
281 {
282  QMutexLocker locker(&s_vchipRatingsLock);
283 
285  return;
286 
287  s_vchipRatingsDesc[0x01] = "TV-Y";
288  s_vchipRatingsDesc[0x02] = "TV-Y7";
289  s_vchipRatingsDesc[0x03] = "TV-G";
290  s_vchipRatingsDesc[0x04] = "TV-PG";
291  s_vchipRatingsDesc[0x05] = "TV-14";
292  s_vchipRatingsDesc[0x06] = "TV-MA";
293 
294  s_vchipRatingsExists = true;
295 }
296 
297 QMap<uint,QString> DishContentDescriptor::s_themeDesc;
300 
301 QString dish_theme_type_to_string(uint theme_type)
302 {
303  static const std::array<const std::string,kThemeLast> s_themes =
304  {
305  "", "Movie", "Sports", "News/Business", "Family/Children", "Education",
306  "Series/Special", "Music/Art", "Religious", "Off-Air"
307  };
308 
309  if ((theme_type > kThemeNone) && (theme_type < kThemeLast))
310  return QString::fromStdString(s_themes[theme_type]);
311 
312  return "";
313 }
314 
315 DishThemeType string_to_dish_theme_type(const QString &theme_type)
316 {
317  static const std::array<const std::string,kThemeLast> s_themes
318  {
319  "", "Movie", "Sports", "News/Business", "Family/Children", "Education",
320  "Series/Special", "Music/Art", "Religious", "Off-Air"
321  };
322 
323  for (uint i = 1; i < 10; i++)
324  if (theme_type.toStdString() == s_themes[i])
325  return (DishThemeType) i;
326 
327  return kThemeNone;
328 }
329 
331 {
333  Init();
334 
335  if (Nibble1(0) == 0x00)
336  return kThemeOffAir;
337 
338  QMap<uint,QString>::const_iterator it = s_themeDesc.constFind(Nibble2(0));
339  if (it != s_themeDesc.constEnd())
340  return string_to_dish_theme_type(*it);
341 
342  // Found nothing? Just return empty string.
343  return kThemeNone;
344 }
345 
347 {
349  Init();
350 
351  QMutexLocker locker(&s_categoryLock);
352 
353  // Try to get detailed description
354  QMap<uint,QString>::const_iterator it =
355  s_dishCategoryDesc.constFind(UserNibble(0));
356  if (it != s_dishCategoryDesc.constEnd())
357  return *it;
358 
359  // Fallback to just the theme
360  QString theme = dish_theme_type_to_string(GetTheme());
361 
362  return theme;
363 }
364 
366 {
367  return QString("%1 : %2").arg(int(GetTheme())).arg(GetCategory());
368 }
369 
371 {
373 
374  QMutexLocker locker(&s_categoryLock);
375 
377  return;
378 
379  // Dish/BEV "Themes"
380  s_themeDesc[kThemeMovie] = QCoreApplication::translate("(Categories)",
381  "Movie");
382  s_themeDesc[kThemeSports] = QCoreApplication::translate("(Categories)",
383  "Sports");
384  s_themeDesc[kThemeNews] = QCoreApplication::translate("(Categories)",
385  "News/Business");
386  s_themeDesc[kThemeFamily] = QCoreApplication::translate("(Categories)",
387  "Family/Children");
388  s_themeDesc[kThemeEducation] = QCoreApplication::translate("(Categories)",
389  "Education");
390  s_themeDesc[kThemeSeries] = QCoreApplication::translate("(Categories)",
391  "Series/Special");
392  s_themeDesc[kThemeMusic] = QCoreApplication::translate("(Categories)",
393  "Music/Art");
394  s_themeDesc[kThemeReligious] = QCoreApplication::translate("(Categories)",
395  "Religious");
396 
397  // Dish/BEV categories
398  s_dishCategoryDesc[0x01] = QCoreApplication::translate("(Categories)",
399  "Action");
400  s_dishCategoryDesc[0x02] = QCoreApplication::translate("(Categories)",
401  "Adults only");
402  s_dishCategoryDesc[0x03] = QCoreApplication::translate("(Categories)",
403  "Adventure");
404  s_dishCategoryDesc[0x04] = QCoreApplication::translate("(Categories)",
405  "Animals");
406  s_dishCategoryDesc[0x05] = QCoreApplication::translate("(Categories)",
407  "Animated");
408  s_dishCategoryDesc[0x07] = QCoreApplication::translate("(Categories)",
409  "Anthology");
410  s_dishCategoryDesc[0x08] = QCoreApplication::translate("(Categories)",
411  "Art");
412  s_dishCategoryDesc[0x09] = QCoreApplication::translate("(Categories)",
413  "Auto");
414  s_dishCategoryDesc[0x0a] = QCoreApplication::translate("(Categories)",
415  "Awards");
416  s_dishCategoryDesc[0x0b] = QCoreApplication::translate("(Categories)",
417  "Ballet");
418  s_dishCategoryDesc[0x0c] = QCoreApplication::translate("(Categories)",
419  "Baseball");
420  s_dishCategoryDesc[0x0d] = QCoreApplication::translate("(Categories)",
421  "Basketball");
422  s_dishCategoryDesc[0x11] = QCoreApplication::translate("(Categories)",
423  "Biography");
424  s_dishCategoryDesc[0x12] = QCoreApplication::translate("(Categories)",
425  "Boat");
426  s_dishCategoryDesc[0x14] = QCoreApplication::translate("(Categories)",
427  "Bowling");
428  s_dishCategoryDesc[0x15] = QCoreApplication::translate("(Categories)",
429  "Boxing");
430  s_dishCategoryDesc[0x16] = QCoreApplication::translate("(Categories)",
431  "Bus./financial");
432  s_dishCategoryDesc[0x1a] = QCoreApplication::translate("(Categories)",
433  "Children");
434  s_dishCategoryDesc[0x1b] = QCoreApplication::translate("(Categories)",
435  "Children-special");
436  s_dishCategoryDesc[0x1c] = QCoreApplication::translate("(Categories)",
437  "Children-news");
438  s_dishCategoryDesc[0x1d] = QCoreApplication::translate("(Categories)",
439  "Children-music");
440  s_dishCategoryDesc[0x1f] = QCoreApplication::translate("(Categories)",
441  "Collectibles");
442  s_dishCategoryDesc[0x20] = QCoreApplication::translate("(Categories)",
443  "Comedy");
444  s_dishCategoryDesc[0x21] = QCoreApplication::translate("(Categories)",
445  "Comedy-drama");
446  s_dishCategoryDesc[0x22] = QCoreApplication::translate("(Categories)",
447  "Computers");
448  s_dishCategoryDesc[0x23] = QCoreApplication::translate("(Categories)",
449  "Cooking");
450  s_dishCategoryDesc[0x24] = QCoreApplication::translate("(Categories)",
451  "Crime");
452  s_dishCategoryDesc[0x25] = QCoreApplication::translate("(Categories)",
453  "Crime drama");
454  s_dishCategoryDesc[0x27] = QCoreApplication::translate("(Categories)",
455  "Dance");
456  s_dishCategoryDesc[0x29] = QCoreApplication::translate("(Categories)",
457  "Docudrama");
458  s_dishCategoryDesc[0x2a] = QCoreApplication::translate("(Categories)",
459  "Documentary");
460  s_dishCategoryDesc[0x2b] = QCoreApplication::translate("(Categories)",
461  "Drama");
462  s_dishCategoryDesc[0x2c] = QCoreApplication::translate("(Categories)",
463  "Educational");
464  s_dishCategoryDesc[0x2f] = QCoreApplication::translate("(Categories)",
465  "Exercise");
466  s_dishCategoryDesc[0x31] = QCoreApplication::translate("(Categories)",
467  "Fantasy");
468  s_dishCategoryDesc[0x32] = QCoreApplication::translate("(Categories)",
469  "Fashion");
470  s_dishCategoryDesc[0x34] = QCoreApplication::translate("(Categories)",
471  "Fishing");
472  s_dishCategoryDesc[0x35] = QCoreApplication::translate("(Categories)",
473  "Football");
474  s_dishCategoryDesc[0x36] = QCoreApplication::translate("(Categories)",
475  "French");
476  s_dishCategoryDesc[0x37] = QCoreApplication::translate("(Categories)",
477  "Fundraiser");
478  s_dishCategoryDesc[0x38] = QCoreApplication::translate("(Categories)",
479  "Game show");
480  s_dishCategoryDesc[0x39] = QCoreApplication::translate("(Categories)",
481  "Golf");
482  s_dishCategoryDesc[0x3a] = QCoreApplication::translate("(Categories)",
483  "Gymnastics");
484  s_dishCategoryDesc[0x3b] = QCoreApplication::translate("(Categories)",
485  "Health");
486  s_dishCategoryDesc[0x3c] = QCoreApplication::translate("(Categories)",
487  "History");
488  s_dishCategoryDesc[0x3d] = QCoreApplication::translate("(Categories)",
489  "Historical drama");
490  s_dishCategoryDesc[0x3e] = QCoreApplication::translate("(Categories)",
491  "Hockey");
492  s_dishCategoryDesc[0x3f] = QCoreApplication::translate("(Categories)",
493  "Holiday");
494  s_dishCategoryDesc[0x40] = QCoreApplication::translate("(Categories)",
495  "Holiday-children");
496  s_dishCategoryDesc[0x41] = QCoreApplication::translate("(Categories)",
497  "Holiday-children special");
498  s_dishCategoryDesc[0x44] = QCoreApplication::translate("(Categories)",
499  "Holiday special");
500  s_dishCategoryDesc[0x45] = QCoreApplication::translate("(Categories)",
501  "Horror");
502  s_dishCategoryDesc[0x46] = QCoreApplication::translate("(Categories)",
503  "Horse racing");
504  s_dishCategoryDesc[0x47] = QCoreApplication::translate("(Categories)",
505  "House/garden");
506  s_dishCategoryDesc[0x49] = QCoreApplication::translate("(Categories)",
507  "How-to");
508  s_dishCategoryDesc[0x4b] = QCoreApplication::translate("(Categories)",
509  "Interview");
510  s_dishCategoryDesc[0x4d] = QCoreApplication::translate("(Categories)",
511  "Lacrosse");
512  s_dishCategoryDesc[0x4f] = QCoreApplication::translate("(Categories)",
513  "Martial Arts");
514  s_dishCategoryDesc[0x50] = QCoreApplication::translate("(Categories)",
515  "Medical");
516  s_dishCategoryDesc[0x51] = QCoreApplication::translate("(Categories)",
517  "Miniseries");
518  s_dishCategoryDesc[0x52] = QCoreApplication::translate("(Categories)",
519  "Motorsports");
520  s_dishCategoryDesc[0x53] = QCoreApplication::translate("(Categories)",
521  "Motorcycle");
522  s_dishCategoryDesc[0x54] = QCoreApplication::translate("(Categories)",
523  "Music");
524  s_dishCategoryDesc[0x55] = QCoreApplication::translate("(Categories)",
525  "Music special");
526  s_dishCategoryDesc[0x56] = QCoreApplication::translate("(Categories)",
527  "Music talk");
528  s_dishCategoryDesc[0x57] = QCoreApplication::translate("(Categories)",
529  "Musical");
530  s_dishCategoryDesc[0x58] = QCoreApplication::translate("(Categories)",
531  "Musical comedy");
532  s_dishCategoryDesc[0x5a] = QCoreApplication::translate("(Categories)",
533  "Mystery");
534  s_dishCategoryDesc[0x5b] = QCoreApplication::translate("(Categories)",
535  "Nature");
536  s_dishCategoryDesc[0x5c] = QCoreApplication::translate("(Categories)",
537  "News");
538  s_dishCategoryDesc[0x5f] = QCoreApplication::translate("(Categories)",
539  "Opera");
540  s_dishCategoryDesc[0x60] = QCoreApplication::translate("(Categories)",
541  "Outdoors");
542  s_dishCategoryDesc[0x63] = QCoreApplication::translate("(Categories)",
543  "Public affairs");
544  s_dishCategoryDesc[0x66] = QCoreApplication::translate("(Categories)",
545  "Reality");
546  s_dishCategoryDesc[0x67] = QCoreApplication::translate("(Categories)",
547  "Religious");
548  s_dishCategoryDesc[0x68] = QCoreApplication::translate("(Categories)",
549  "Rodeo");
550  s_dishCategoryDesc[0x69] = QCoreApplication::translate("(Categories)",
551  "Romance");
552  s_dishCategoryDesc[0x6a] = QCoreApplication::translate("(Categories)",
553  "Romance-comedy");
554  s_dishCategoryDesc[0x6b] = QCoreApplication::translate("(Categories)",
555  "Rugby");
556  s_dishCategoryDesc[0x6c] = QCoreApplication::translate("(Categories)",
557  "Running");
558  s_dishCategoryDesc[0x6e] = QCoreApplication::translate("(Categories)",
559  "Science");
560  s_dishCategoryDesc[0x6f] = QCoreApplication::translate("(Categories)",
561  "Science fiction");
562  s_dishCategoryDesc[0x70] = QCoreApplication::translate("(Categories)",
563  "Self improvement");
564  s_dishCategoryDesc[0x71] = QCoreApplication::translate("(Categories)",
565  "Shopping");
566  s_dishCategoryDesc[0x74] = QCoreApplication::translate("(Categories)",
567  "Skiing");
568  s_dishCategoryDesc[0x77] = QCoreApplication::translate("(Categories)",
569  "Soap");
570  s_dishCategoryDesc[0x7b] = QCoreApplication::translate("(Categories)",
571  "Soccer");
572  s_dishCategoryDesc[0x7c] = QCoreApplication::translate("(Categories)",
573  "Softball");
574  s_dishCategoryDesc[0x7d] = QCoreApplication::translate("(Categories)",
575  "Spanish");
576  s_dishCategoryDesc[0x7e] = QCoreApplication::translate("(Categories)",
577  "Special");
578  s_dishCategoryDesc[0x81] = QCoreApplication::translate("(Categories)",
579  "Sports non-event");
580  s_dishCategoryDesc[0x82] = QCoreApplication::translate("(Categories)",
581  "Sports talk");
582  s_dishCategoryDesc[0x83] = QCoreApplication::translate("(Categories)",
583  "Suspense");
584  s_dishCategoryDesc[0x85] = QCoreApplication::translate("(Categories)",
585  "Swimming");
586  s_dishCategoryDesc[0x86] = QCoreApplication::translate("(Categories)",
587  "Talk");
588  s_dishCategoryDesc[0x87] = QCoreApplication::translate("(Categories)",
589  "Tennis");
590  s_dishCategoryDesc[0x89] = QCoreApplication::translate("(Categories)",
591  "Track/field");
592  s_dishCategoryDesc[0x8a] = QCoreApplication::translate("(Categories)",
593  "Travel");
594  s_dishCategoryDesc[0x8b] = QCoreApplication::translate("(Categories)",
595  "Variety");
596  s_dishCategoryDesc[0x8c] = QCoreApplication::translate("(Categories)",
597  "Volleyball");
598  s_dishCategoryDesc[0x8d] = QCoreApplication::translate("(Categories)",
599  "War");
600  s_dishCategoryDesc[0x8e] = QCoreApplication::translate("(Categories)",
601  "Watersports");
602  s_dishCategoryDesc[0x8f] = QCoreApplication::translate("(Categories)",
603  "Weather");
604  s_dishCategoryDesc[0x90] = QCoreApplication::translate("(Categories)",
605  "Western");
606  s_dishCategoryDesc[0x92] = QCoreApplication::translate("(Categories)",
607  "Wrestling");
608  s_dishCategoryDesc[0x93] = QCoreApplication::translate("(Categories)",
609  "Yoga");
610  s_dishCategoryDesc[0x94] = QCoreApplication::translate("(Categories)",
611  "Agriculture");
612  s_dishCategoryDesc[0x95] = QCoreApplication::translate("(Categories)",
613  "Anime");
614  s_dishCategoryDesc[0x97] = QCoreApplication::translate("(Categories)",
615  "Arm Wrestling");
616  s_dishCategoryDesc[0x98] = QCoreApplication::translate("(Categories)",
617  "Arts/crafts");
618  s_dishCategoryDesc[0x99] = QCoreApplication::translate("(Categories)",
619  "Auction");
620  s_dishCategoryDesc[0x9a] = QCoreApplication::translate("(Categories)",
621  "Auto racing");
622  s_dishCategoryDesc[0x9b] = QCoreApplication::translate("(Categories)",
623  "Air racing");
624  s_dishCategoryDesc[0x9c] = QCoreApplication::translate("(Categories)",
625  "Badminton");
626  s_dishCategoryDesc[0xa0] = QCoreApplication::translate("(Categories)",
627  "Bicycle racing");
628  s_dishCategoryDesc[0xa1] = QCoreApplication::translate("(Categories)",
629  "Boat Racing");
630  s_dishCategoryDesc[0xa6] = QCoreApplication::translate("(Categories)",
631  "Community");
632  s_dishCategoryDesc[0xa7] = QCoreApplication::translate("(Categories)",
633  "Consumer");
634  s_dishCategoryDesc[0xaa] = QCoreApplication::translate("(Categories)",
635  "Debate");
636  s_dishCategoryDesc[0xac] = QCoreApplication::translate("(Categories)",
637  "Dog show");
638  s_dishCategoryDesc[0xad] = QCoreApplication::translate("(Categories)",
639  "Drag racing");
640  s_dishCategoryDesc[0xae] = QCoreApplication::translate("(Categories)",
641  "Entertainment");
642  s_dishCategoryDesc[0xaf] = QCoreApplication::translate("(Categories)",
643  "Environment");
644  s_dishCategoryDesc[0xb0] = QCoreApplication::translate("(Categories)",
645  "Equestrian");
646  s_dishCategoryDesc[0xb3] = QCoreApplication::translate("(Categories)",
647  "Field hockey");
648  s_dishCategoryDesc[0xb5] = QCoreApplication::translate("(Categories)",
649  "Football");
650  s_dishCategoryDesc[0xb6] = QCoreApplication::translate("(Categories)",
651  "Gay/lesbian");
652  s_dishCategoryDesc[0xb7] = QCoreApplication::translate("(Categories)",
653  "Handball");
654  s_dishCategoryDesc[0xb8] = QCoreApplication::translate("(Categories)",
655  "Home improvement");
656  s_dishCategoryDesc[0xb9] = QCoreApplication::translate("(Categories)",
657  "Hunting");
658  s_dishCategoryDesc[0xbb] = QCoreApplication::translate("(Categories)",
659  "Hydroplane racing");
660  s_dishCategoryDesc[0xc1] = QCoreApplication::translate("(Categories)",
661  "Law");
662  s_dishCategoryDesc[0xc3] = QCoreApplication::translate("(Categories)",
663  "Motorcycle racing");
664  s_dishCategoryDesc[0xc5] = QCoreApplication::translate("(Categories)",
665  "Newsmagazine");
666  s_dishCategoryDesc[0xc7] = QCoreApplication::translate("(Categories)",
667  "Paranormal");
668  s_dishCategoryDesc[0xc8] = QCoreApplication::translate("(Categories)",
669  "Parenting");
670  s_dishCategoryDesc[0xca] = QCoreApplication::translate("(Categories)",
671  "Performing arts");
672  s_dishCategoryDesc[0xcc] = QCoreApplication::translate("(Categories)",
673  "Politics");
674  s_dishCategoryDesc[0xcf] = QCoreApplication::translate("(Categories)",
675  "Pro wrestling");
676  s_dishCategoryDesc[0xd3] = QCoreApplication::translate("(Categories)",
677  "Sailing");
678  s_dishCategoryDesc[0xd4] = QCoreApplication::translate("(Categories)",
679  "Shooting");
680  s_dishCategoryDesc[0xd5] = QCoreApplication::translate("(Categories)",
681  "Sitcom");
682  s_dishCategoryDesc[0xd6] = QCoreApplication::translate("(Categories)",
683  "Skateboarding");
684  s_dishCategoryDesc[0xd9] = QCoreApplication::translate("(Categories)",
685  "Snowboarding");
686  s_dishCategoryDesc[0xdd] = QCoreApplication::translate("(Categories)",
687  "Standup");
688  s_dishCategoryDesc[0xdf] = QCoreApplication::translate("(Categories)",
689  "Surfing");
690  s_dishCategoryDesc[0xe0] = QCoreApplication::translate("(Categories)",
691  "Tennis");
692  s_dishCategoryDesc[0xe1] = QCoreApplication::translate("(Categories)",
693  "Triathlon");
694  s_dishCategoryDesc[0xe6] = QCoreApplication::translate("(Categories)",
695  "Card games");
696  s_dishCategoryDesc[0xe7] = QCoreApplication::translate("(Categories)",
697  "Poker");
698  s_dishCategoryDesc[0xea] = QCoreApplication::translate("(Categories)",
699  "Military");
700  s_dishCategoryDesc[0xeb] = QCoreApplication::translate("(Categories)",
701  "Technology");
702  s_dishCategoryDesc[0xec] = QCoreApplication::translate("(Categories)",
703  "Mixed martial arts");
704  s_dishCategoryDesc[0xed] = QCoreApplication::translate("(Categories)",
705  "Action sports");
706  s_dishCategoryDesc[0xff] = QCoreApplication::translate("(Categories)",
707  "Dish Network");
708 
710 }
string_to_dish_theme_type
DishThemeType string_to_dish_theme_type(const QString &theme_type)
Definition: dishdescriptors.cpp:315
MPEGDescriptor::DescriptorLength
uint DescriptorLength(void) const
Definition: mpegdescriptors.h:346
DishEventVCHIPDescriptor::s_vchipRatingsDesc
static QMap< uint, QString > s_vchipRatingsDesc
Definition: dishdescriptors.h:64
ContentDescriptor::Nibble1
uint Nibble1(uint i) const
Definition: dvbdescriptors.h:595
DishEventVCHIPDescriptor::s_vchipRatingsLock
static QMutex s_vchipRatingsLock
Definition: dishdescriptors.h:63
DishEventNameDescriptor::HasName
bool HasName(void) const
Definition: dishdescriptors.h:78
DishEventPropertiesDescriptor::s_decompressed
static bool s_decompressed
Definition: dishdescriptors.h:120
kThemeMusic
@ kThemeMusic
Definition: dishdescriptors.h:146
DishEventVCHIPDescriptor::advisory_raw
uint advisory_raw(void) const
Definition: dishdescriptors.h:56
DishEventPropertiesDescriptor::AudioProperties
uint AudioProperties(uint compression_type) const
Definition: dishdescriptors.cpp:62
DishThemeType
DishThemeType
Definition: dishdescriptors.h:137
DishEventPropertiesDescriptor::s_subtitleProps
static uint s_subtitleProps
Definition: dishdescriptors.h:118
DishEventPropertiesDescriptor::decompress_properties
void decompress_properties(uint compression_type) const
Definition: dishdescriptors.cpp:69
atsc_huffman2_to_string
QString atsc_huffman2_to_string(const unsigned char *compressed, uint length, uint table)
Definition: atsc_huffman.cpp:2289
DishEventDescriptionDescriptor::DescriptionRaw
const unsigned char * DescriptionRaw(void) const
Definition: dishdescriptors.cpp:21
kThemeSeries
@ kThemeSeries
Definition: dishdescriptors.h:145
DishEventMPAADescriptor::Init
static void Init(void)
Definition: dishdescriptors.cpp:225
DishEventMPAADescriptor::s_mpaaRatingsLock
static QMutex s_mpaaRatingsLock
Definition: dishdescriptors.h:38
kThemeNews
@ kThemeNews
Definition: dishdescriptors.h:142
DishEventVCHIPDescriptor::Init
static void Init(void)
Definition: dishdescriptors.cpp:280
kThemeSports
@ kThemeSports
Definition: dishdescriptors.h:141
DishEventVCHIPDescriptor::rating_raw
uint rating_raw(void) const
Definition: dishdescriptors.h:52
dish_theme_type_to_string
QString dish_theme_type_to_string(uint theme_type)
Definition: dishdescriptors.cpp:301
kThemeLast
@ kThemeLast
Definition: dishdescriptors.h:149
atsc_huffman.h
hardwareprofile.distros.mythtv_data.data_mythtv.prefix
string prefix
Definition: data_mythtv.py:40
DishEventTagsDescriptor::seriesid
QString seriesid(void) const
Definition: dishdescriptors.cpp:117
DishEventVCHIPDescriptor::s_vchipRatingsExists
static bool s_vchipRatingsExists
Definition: dishdescriptors.h:65
DishContentDescriptor::s_dishCategoryDescExists
static volatile bool s_dishCategoryDescExists
Definition: dishdescriptors.h:171
DishEventMPAADescriptor::s_mpaaRatingsDesc
static QMap< uint, QString > s_mpaaRatingsDesc
Definition: dishdescriptors.h:39
ContentDescriptor::UserNibble
uint UserNibble(uint i) const
Definition: dvbdescriptors.h:605
programinfo.h
DishEventMPAADescriptor::rating_raw
uint rating_raw(void) const
Definition: dishdescriptors.h:27
DishContentDescriptor::GetCategory
QString GetCategory(void) const
Definition: dishdescriptors.cpp:346
hardwareprofile.i18n.t
t
Definition: i18n.py:36
MPEGDescriptor::m_data
const unsigned char * m_data
Definition: mpegdescriptors.h:370
DishEventVCHIPDescriptor::advisory
QString advisory(void) const
Definition: dishdescriptors.cpp:261
DishContentDescriptor::s_themeDesc
static QMap< uint, QString > s_themeDesc
Definition: dishdescriptors.h:169
DishEventMPAADescriptor::advisory_raw
uint advisory_raw(void) const
Definition: dishdescriptors.h:31
DishEventMPAADescriptor::advisory
QString advisory(void) const
Definition: dishdescriptors.cpp:202
dvbtables.h
DishEventMPAADescriptor::stars_raw
uint stars_raw(void) const
Definition: dishdescriptors.h:23
uint
unsigned int uint
Definition: compat.h:140
DishEventVCHIPDescriptor::rating
QString rating(void) const
Definition: dishdescriptors.cpp:246
DishEventMPAADescriptor::s_mpaaRatingsExists
static bool s_mpaaRatingsExists
Definition: dishdescriptors.h:40
ContentDescriptor::s_categoryLock
static QMutex s_categoryLock
Definition: dvbdescriptors.h:616
DishEventPropertiesDescriptor::s_audioProps
static uint s_audioProps
Definition: dishdescriptors.h:119
DishEventDescriptionDescriptor::Description
QString Description(uint compression_type) const
Definition: dishdescriptors.cpp:39
DishEventPropertiesDescriptor::HasProperties
bool HasProperties(void) const
Definition: dishdescriptors.h:110
DishEventTagsDescriptor::originalairdate
QDate originalairdate(void) const
Definition: dishdescriptors.cpp:141
DishEventMPAADescriptor::stars
float stars(void) const
Definition: dishdescriptors.cpp:171
dvbdate2qt
QDateTime dvbdate2qt(const unsigned char *buf)
Definition: dvbtables.cpp:304
DishContentDescriptor::GetTheme
DishThemeType GetTheme(void) const
Definition: dishdescriptors.cpp:330
kThemeNone
@ kThemeNone
Definition: dishdescriptors.h:139
DishContentDescriptor::toString
QString toString() const override
Definition: dishdescriptors.cpp:365
dishdescriptors.h
DishEventTagsDescriptor::programid
QString programid(void) const
Definition: dishdescriptors.cpp:87
DishContentDescriptor::Init
static void Init(void)
Definition: dishdescriptors.cpp:370
DishContentDescriptor::s_dishCategoryDesc
static QMap< uint, QString > s_dishCategoryDesc
Definition: dishdescriptors.h:170
kThemeEducation
@ kThemeEducation
Definition: dishdescriptors.h:144
kThemeMovie
@ kThemeMovie
Definition: dishdescriptors.h:140
DishEventMPAADescriptor::rating
QString rating(void) const
Definition: dishdescriptors.cpp:187
DishEventDescriptionDescriptor::DescriptionRawLength
uint DescriptionRawLength(void) const
Definition: dishdescriptors.cpp:30
kThemeFamily
@ kThemeFamily
Definition: dishdescriptors.h:143
DishEventPropertiesDescriptor::SubtitleProperties
uint SubtitleProperties(uint compression_type) const
Definition: dishdescriptors.cpp:55
ContentDescriptor::Init
static void Init(void)
Definition: dvbdescriptors.cpp:307
kThemeOffAir
@ kThemeOffAir
Definition: dishdescriptors.h:148
kThemeReligious
@ kThemeReligious
Definition: dishdescriptors.h:147
DishEventNameDescriptor::Name
QString Name(uint compression_type) const
Definition: dishdescriptors.cpp:12
ContentDescriptor::Nibble2
uint Nibble2(uint i) const
Definition: dvbdescriptors.h:597