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 {
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"))
81 
82  if (properties_raw.contains("7|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  unsigned char mjd[5];
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() < 1940)
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.find(rating_raw());
195  if (it != s_mpaaRatingsDesc.end())
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.find(rating_raw());
254  if (it != s_vchipRatingsDesc.end())
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  // cppcheck-suppress variableScope
304  static const char *s_themes[kThemeLast] =
305  {
306  "", "Movie", "Sports", "News/Business", "Family/Children", "Education",
307  "Series/Special", "Music/Art", "Religious", "Off-Air"
308  };
309 
310  if ((theme_type > kThemeNone) && (theme_type < kThemeLast))
311  return QString(s_themes[theme_type]);
312 
313  return "";
314 }
315 
316 DishThemeType string_to_dish_theme_type(const QString &theme_type)
317 {
318  static const char *s_themes[kThemeLast] =
319  {
320  "", "Movie", "Sports", "News/Business", "Family/Children", "Education",
321  "Series/Special", "Music/Art", "Religious", "Off-Air"
322  };
323 
324  for (uint i = 1; i < 10; i++)
325  if (theme_type == s_themes[i])
326  return (DishThemeType) i;
327 
328  return kThemeNone;
329 }
330 
332 {
334  Init();
335 
336  if (Nibble1(0) == 0x00)
337  return kThemeOffAir;
338 
339  QMap<uint,QString>::const_iterator it = s_themeDesc.find(Nibble2(0));
340  if (it != s_themeDesc.end())
341  return string_to_dish_theme_type(*it);
342 
343  // Found nothing? Just return empty string.
344  return kThemeNone;
345 }
346 
348 {
350  Init();
351 
352  QMutexLocker locker(&s_categoryLock);
353 
354  // Try to get detailed description
355  QMap<uint,QString>::const_iterator it =
357  if (it != s_dishCategoryDesc.end())
358  return *it;
359 
360  // Fallback to just the theme
361  QString theme = dish_theme_type_to_string(GetTheme());
362 
363  return theme;
364 }
365 
367 {
368  return QString("%1 : %2").arg(int(GetTheme())).arg(GetCategory());
369 }
370 
372 {
374 
375  QMutexLocker locker(&s_categoryLock);
376 
378  return;
379 
380  // Dish/BEV "Themes"
381  s_themeDesc[kThemeMovie] = QCoreApplication::translate("(Categories)",
382  "Movie");
383  s_themeDesc[kThemeSports] = QCoreApplication::translate("(Categories)",
384  "Sports");
385  s_themeDesc[kThemeNews] = QCoreApplication::translate("(Categories)",
386  "News/Business");
387  s_themeDesc[kThemeFamily] = QCoreApplication::translate("(Categories)",
388  "Family/Children");
389  s_themeDesc[kThemeEducation] = QCoreApplication::translate("(Categories)",
390  "Education");
391  s_themeDesc[kThemeSeries] = QCoreApplication::translate("(Categories)",
392  "Series/Special");
393  s_themeDesc[kThemeMusic] = QCoreApplication::translate("(Categories)",
394  "Music/Art");
395  s_themeDesc[kThemeReligious] = QCoreApplication::translate("(Categories)",
396  "Religious");
397 
398  // Dish/BEV categories
399  s_dishCategoryDesc[0x01] = QCoreApplication::translate("(Categories)",
400  "Action");
401  s_dishCategoryDesc[0x02] = QCoreApplication::translate("(Categories)",
402  "Adults only");
403  s_dishCategoryDesc[0x03] = QCoreApplication::translate("(Categories)",
404  "Adventure");
405  s_dishCategoryDesc[0x04] = QCoreApplication::translate("(Categories)",
406  "Animals");
407  s_dishCategoryDesc[0x05] = QCoreApplication::translate("(Categories)",
408  "Animated");
409  s_dishCategoryDesc[0x07] = QCoreApplication::translate("(Categories)",
410  "Anthology");
411  s_dishCategoryDesc[0x08] = QCoreApplication::translate("(Categories)",
412  "Art");
413  s_dishCategoryDesc[0x09] = QCoreApplication::translate("(Categories)",
414  "Auto");
415  s_dishCategoryDesc[0x0a] = QCoreApplication::translate("(Categories)",
416  "Awards");
417  s_dishCategoryDesc[0x0b] = QCoreApplication::translate("(Categories)",
418  "Ballet");
419  s_dishCategoryDesc[0x0c] = QCoreApplication::translate("(Categories)",
420  "Baseball");
421  s_dishCategoryDesc[0x0d] = QCoreApplication::translate("(Categories)",
422  "Basketball");
423  s_dishCategoryDesc[0x11] = QCoreApplication::translate("(Categories)",
424  "Biography");
425  s_dishCategoryDesc[0x12] = QCoreApplication::translate("(Categories)",
426  "Boat");
427  s_dishCategoryDesc[0x14] = QCoreApplication::translate("(Categories)",
428  "Bowling");
429  s_dishCategoryDesc[0x15] = QCoreApplication::translate("(Categories)",
430  "Boxing");
431  s_dishCategoryDesc[0x16] = QCoreApplication::translate("(Categories)",
432  "Bus./financial");
433  s_dishCategoryDesc[0x1a] = QCoreApplication::translate("(Categories)",
434  "Children");
435  s_dishCategoryDesc[0x1b] = QCoreApplication::translate("(Categories)",
436  "Children-special");
437  s_dishCategoryDesc[0x1c] = QCoreApplication::translate("(Categories)",
438  "Children-news");
439  s_dishCategoryDesc[0x1d] = QCoreApplication::translate("(Categories)",
440  "Children-music");
441  s_dishCategoryDesc[0x1f] = QCoreApplication::translate("(Categories)",
442  "Collectibles");
443  s_dishCategoryDesc[0x20] = QCoreApplication::translate("(Categories)",
444  "Comedy");
445  s_dishCategoryDesc[0x21] = QCoreApplication::translate("(Categories)",
446  "Comedy-drama");
447  s_dishCategoryDesc[0x22] = QCoreApplication::translate("(Categories)",
448  "Computers");
449  s_dishCategoryDesc[0x23] = QCoreApplication::translate("(Categories)",
450  "Cooking");
451  s_dishCategoryDesc[0x24] = QCoreApplication::translate("(Categories)",
452  "Crime");
453  s_dishCategoryDesc[0x25] = QCoreApplication::translate("(Categories)",
454  "Crime drama");
455  s_dishCategoryDesc[0x27] = QCoreApplication::translate("(Categories)",
456  "Dance");
457  s_dishCategoryDesc[0x29] = QCoreApplication::translate("(Categories)",
458  "Docudrama");
459  s_dishCategoryDesc[0x2a] = QCoreApplication::translate("(Categories)",
460  "Documentary");
461  s_dishCategoryDesc[0x2b] = QCoreApplication::translate("(Categories)",
462  "Drama");
463  s_dishCategoryDesc[0x2c] = QCoreApplication::translate("(Categories)",
464  "Educational");
465  s_dishCategoryDesc[0x2f] = QCoreApplication::translate("(Categories)",
466  "Exercise");
467  s_dishCategoryDesc[0x31] = QCoreApplication::translate("(Categories)",
468  "Fantasy");
469  s_dishCategoryDesc[0x32] = QCoreApplication::translate("(Categories)",
470  "Fashion");
471  s_dishCategoryDesc[0x34] = QCoreApplication::translate("(Categories)",
472  "Fishing");
473  s_dishCategoryDesc[0x35] = QCoreApplication::translate("(Categories)",
474  "Football");
475  s_dishCategoryDesc[0x36] = QCoreApplication::translate("(Categories)",
476  "French");
477  s_dishCategoryDesc[0x37] = QCoreApplication::translate("(Categories)",
478  "Fundraiser");
479  s_dishCategoryDesc[0x38] = QCoreApplication::translate("(Categories)",
480  "Game show");
481  s_dishCategoryDesc[0x39] = QCoreApplication::translate("(Categories)",
482  "Golf");
483  s_dishCategoryDesc[0x3a] = QCoreApplication::translate("(Categories)",
484  "Gymnastics");
485  s_dishCategoryDesc[0x3b] = QCoreApplication::translate("(Categories)",
486  "Health");
487  s_dishCategoryDesc[0x3c] = QCoreApplication::translate("(Categories)",
488  "History");
489  s_dishCategoryDesc[0x3d] = QCoreApplication::translate("(Categories)",
490  "Historical drama");
491  s_dishCategoryDesc[0x3e] = QCoreApplication::translate("(Categories)",
492  "Hockey");
493  s_dishCategoryDesc[0x3f] = QCoreApplication::translate("(Categories)",
494  "Holiday");
495  s_dishCategoryDesc[0x40] = QCoreApplication::translate("(Categories)",
496  "Holiday-children");
497  s_dishCategoryDesc[0x41] = QCoreApplication::translate("(Categories)",
498  "Holiday-children special");
499  s_dishCategoryDesc[0x44] = QCoreApplication::translate("(Categories)",
500  "Holiday special");
501  s_dishCategoryDesc[0x45] = QCoreApplication::translate("(Categories)",
502  "Horror");
503  s_dishCategoryDesc[0x46] = QCoreApplication::translate("(Categories)",
504  "Horse racing");
505  s_dishCategoryDesc[0x47] = QCoreApplication::translate("(Categories)",
506  "House/garden");
507  s_dishCategoryDesc[0x49] = QCoreApplication::translate("(Categories)",
508  "How-to");
509  s_dishCategoryDesc[0x4b] = QCoreApplication::translate("(Categories)",
510  "Interview");
511  s_dishCategoryDesc[0x4d] = QCoreApplication::translate("(Categories)",
512  "Lacrosse");
513  s_dishCategoryDesc[0x4f] = QCoreApplication::translate("(Categories)",
514  "Martial Arts");
515  s_dishCategoryDesc[0x50] = QCoreApplication::translate("(Categories)",
516  "Medical");
517  s_dishCategoryDesc[0x51] = QCoreApplication::translate("(Categories)",
518  "Miniseries");
519  s_dishCategoryDesc[0x52] = QCoreApplication::translate("(Categories)",
520  "Motorsports");
521  s_dishCategoryDesc[0x53] = QCoreApplication::translate("(Categories)",
522  "Motorcycle");
523  s_dishCategoryDesc[0x54] = QCoreApplication::translate("(Categories)",
524  "Music");
525  s_dishCategoryDesc[0x55] = QCoreApplication::translate("(Categories)",
526  "Music special");
527  s_dishCategoryDesc[0x56] = QCoreApplication::translate("(Categories)",
528  "Music talk");
529  s_dishCategoryDesc[0x57] = QCoreApplication::translate("(Categories)",
530  "Musical");
531  s_dishCategoryDesc[0x58] = QCoreApplication::translate("(Categories)",
532  "Musical comedy");
533  s_dishCategoryDesc[0x5a] = QCoreApplication::translate("(Categories)",
534  "Mystery");
535  s_dishCategoryDesc[0x5b] = QCoreApplication::translate("(Categories)",
536  "Nature");
537  s_dishCategoryDesc[0x5c] = QCoreApplication::translate("(Categories)",
538  "News");
539  s_dishCategoryDesc[0x5f] = QCoreApplication::translate("(Categories)",
540  "Opera");
541  s_dishCategoryDesc[0x60] = QCoreApplication::translate("(Categories)",
542  "Outdoors");
543  s_dishCategoryDesc[0x63] = QCoreApplication::translate("(Categories)",
544  "Public affairs");
545  s_dishCategoryDesc[0x66] = QCoreApplication::translate("(Categories)",
546  "Reality");
547  s_dishCategoryDesc[0x67] = QCoreApplication::translate("(Categories)",
548  "Religious");
549  s_dishCategoryDesc[0x68] = QCoreApplication::translate("(Categories)",
550  "Rodeo");
551  s_dishCategoryDesc[0x69] = QCoreApplication::translate("(Categories)",
552  "Romance");
553  s_dishCategoryDesc[0x6a] = QCoreApplication::translate("(Categories)",
554  "Romance-comedy");
555  s_dishCategoryDesc[0x6b] = QCoreApplication::translate("(Categories)",
556  "Rugby");
557  s_dishCategoryDesc[0x6c] = QCoreApplication::translate("(Categories)",
558  "Running");
559  s_dishCategoryDesc[0x6e] = QCoreApplication::translate("(Categories)",
560  "Science");
561  s_dishCategoryDesc[0x6f] = QCoreApplication::translate("(Categories)",
562  "Science fiction");
563  s_dishCategoryDesc[0x70] = QCoreApplication::translate("(Categories)",
564  "Self improvement");
565  s_dishCategoryDesc[0x71] = QCoreApplication::translate("(Categories)",
566  "Shopping");
567  s_dishCategoryDesc[0x74] = QCoreApplication::translate("(Categories)",
568  "Skiing");
569  s_dishCategoryDesc[0x77] = QCoreApplication::translate("(Categories)",
570  "Soap");
571  s_dishCategoryDesc[0x7b] = QCoreApplication::translate("(Categories)",
572  "Soccer");
573  s_dishCategoryDesc[0x7c] = QCoreApplication::translate("(Categories)",
574  "Softball");
575  s_dishCategoryDesc[0x7d] = QCoreApplication::translate("(Categories)",
576  "Spanish");
577  s_dishCategoryDesc[0x7e] = QCoreApplication::translate("(Categories)",
578  "Special");
579  s_dishCategoryDesc[0x81] = QCoreApplication::translate("(Categories)",
580  "Sports non-event");
581  s_dishCategoryDesc[0x82] = QCoreApplication::translate("(Categories)",
582  "Sports talk");
583  s_dishCategoryDesc[0x83] = QCoreApplication::translate("(Categories)",
584  "Suspense");
585  s_dishCategoryDesc[0x85] = QCoreApplication::translate("(Categories)",
586  "Swimming");
587  s_dishCategoryDesc[0x86] = QCoreApplication::translate("(Categories)",
588  "Talk");
589  s_dishCategoryDesc[0x87] = QCoreApplication::translate("(Categories)",
590  "Tennis");
591  s_dishCategoryDesc[0x89] = QCoreApplication::translate("(Categories)",
592  "Track/field");
593  s_dishCategoryDesc[0x8a] = QCoreApplication::translate("(Categories)",
594  "Travel");
595  s_dishCategoryDesc[0x8b] = QCoreApplication::translate("(Categories)",
596  "Variety");
597  s_dishCategoryDesc[0x8c] = QCoreApplication::translate("(Categories)",
598  "Volleyball");
599  s_dishCategoryDesc[0x8d] = QCoreApplication::translate("(Categories)",
600  "War");
601  s_dishCategoryDesc[0x8e] = QCoreApplication::translate("(Categories)",
602  "Watersports");
603  s_dishCategoryDesc[0x8f] = QCoreApplication::translate("(Categories)",
604  "Weather");
605  s_dishCategoryDesc[0x90] = QCoreApplication::translate("(Categories)",
606  "Western");
607  s_dishCategoryDesc[0x92] = QCoreApplication::translate("(Categories)",
608  "Wrestling");
609  s_dishCategoryDesc[0x93] = QCoreApplication::translate("(Categories)",
610  "Yoga");
611  s_dishCategoryDesc[0x94] = QCoreApplication::translate("(Categories)",
612  "Agriculture");
613  s_dishCategoryDesc[0x95] = QCoreApplication::translate("(Categories)",
614  "Anime");
615  s_dishCategoryDesc[0x97] = QCoreApplication::translate("(Categories)",
616  "Arm Wrestling");
617  s_dishCategoryDesc[0x98] = QCoreApplication::translate("(Categories)",
618  "Arts/crafts");
619  s_dishCategoryDesc[0x99] = QCoreApplication::translate("(Categories)",
620  "Auction");
621  s_dishCategoryDesc[0x9a] = QCoreApplication::translate("(Categories)",
622  "Auto racing");
623  s_dishCategoryDesc[0x9b] = QCoreApplication::translate("(Categories)",
624  "Air racing");
625  s_dishCategoryDesc[0x9c] = QCoreApplication::translate("(Categories)",
626  "Badminton");
627  s_dishCategoryDesc[0xa0] = QCoreApplication::translate("(Categories)",
628  "Bicycle racing");
629  s_dishCategoryDesc[0xa1] = QCoreApplication::translate("(Categories)",
630  "Boat Racing");
631  s_dishCategoryDesc[0xa6] = QCoreApplication::translate("(Categories)",
632  "Community");
633  s_dishCategoryDesc[0xa7] = QCoreApplication::translate("(Categories)",
634  "Consumer");
635  s_dishCategoryDesc[0xaa] = QCoreApplication::translate("(Categories)",
636  "Debate");
637  s_dishCategoryDesc[0xac] = QCoreApplication::translate("(Categories)",
638  "Dog show");
639  s_dishCategoryDesc[0xad] = QCoreApplication::translate("(Categories)",
640  "Drag racing");
641  s_dishCategoryDesc[0xae] = QCoreApplication::translate("(Categories)",
642  "Entertainment");
643  s_dishCategoryDesc[0xaf] = QCoreApplication::translate("(Categories)",
644  "Environment");
645  s_dishCategoryDesc[0xb0] = QCoreApplication::translate("(Categories)",
646  "Equestrian");
647  s_dishCategoryDesc[0xb3] = QCoreApplication::translate("(Categories)",
648  "Field hockey");
649  s_dishCategoryDesc[0xb5] = QCoreApplication::translate("(Categories)",
650  "Football");
651  s_dishCategoryDesc[0xb6] = QCoreApplication::translate("(Categories)",
652  "Gay/lesbian");
653  s_dishCategoryDesc[0xb7] = QCoreApplication::translate("(Categories)",
654  "Handball");
655  s_dishCategoryDesc[0xb8] = QCoreApplication::translate("(Categories)",
656  "Home improvement");
657  s_dishCategoryDesc[0xb9] = QCoreApplication::translate("(Categories)",
658  "Hunting");
659  s_dishCategoryDesc[0xbb] = QCoreApplication::translate("(Categories)",
660  "Hydroplane racing");
661  s_dishCategoryDesc[0xc1] = QCoreApplication::translate("(Categories)",
662  "Law");
663  s_dishCategoryDesc[0xc3] = QCoreApplication::translate("(Categories)",
664  "Motorcycle racing");
665  s_dishCategoryDesc[0xc5] = QCoreApplication::translate("(Categories)",
666  "Newsmagazine");
667  s_dishCategoryDesc[0xc7] = QCoreApplication::translate("(Categories)",
668  "Paranormal");
669  s_dishCategoryDesc[0xc8] = QCoreApplication::translate("(Categories)",
670  "Parenting");
671  s_dishCategoryDesc[0xca] = QCoreApplication::translate("(Categories)",
672  "Performing arts");
673  s_dishCategoryDesc[0xcc] = QCoreApplication::translate("(Categories)",
674  "Politics");
675  s_dishCategoryDesc[0xcf] = QCoreApplication::translate("(Categories)",
676  "Pro wrestling");
677  s_dishCategoryDesc[0xd3] = QCoreApplication::translate("(Categories)",
678  "Sailing");
679  s_dishCategoryDesc[0xd4] = QCoreApplication::translate("(Categories)",
680  "Shooting");
681  s_dishCategoryDesc[0xd5] = QCoreApplication::translate("(Categories)",
682  "Sitcom");
683  s_dishCategoryDesc[0xd6] = QCoreApplication::translate("(Categories)",
684  "Skateboarding");
685  s_dishCategoryDesc[0xd9] = QCoreApplication::translate("(Categories)",
686  "Snowboarding");
687  s_dishCategoryDesc[0xdd] = QCoreApplication::translate("(Categories)",
688  "Standup");
689  s_dishCategoryDesc[0xdf] = QCoreApplication::translate("(Categories)",
690  "Surfing");
691  s_dishCategoryDesc[0xe0] = QCoreApplication::translate("(Categories)",
692  "Tennis");
693  s_dishCategoryDesc[0xe1] = QCoreApplication::translate("(Categories)",
694  "Triathlon");
695  s_dishCategoryDesc[0xe6] = QCoreApplication::translate("(Categories)",
696  "Card games");
697  s_dishCategoryDesc[0xe7] = QCoreApplication::translate("(Categories)",
698  "Poker");
699  s_dishCategoryDesc[0xea] = QCoreApplication::translate("(Categories)",
700  "Military");
701  s_dishCategoryDesc[0xeb] = QCoreApplication::translate("(Categories)",
702  "Technology");
703  s_dishCategoryDesc[0xec] = QCoreApplication::translate("(Categories)",
704  "Mixed martial arts");
705  s_dishCategoryDesc[0xed] = QCoreApplication::translate("(Categories)",
706  "Action sports");
707  s_dishCategoryDesc[0xff] = QCoreApplication::translate("(Categories)",
708  "Dish Network");
709 
711 }
DishThemeType GetTheme(void) const
uint SubtitleProperties(uint compression_type) const
QString atsc_huffman2_to_string(const unsigned char *compressed, uint length, uint table)
QString dish_theme_type_to_string(uint theme_type)
static QMutex s_categoryLock
DishThemeType
uint UserNibble(uint i) const
static bool s_vchipRatingsExists
QString Description(uint compression_type) const
bool HasName(void) const
static QMutex s_mpaaRatingsLock
QString toString() const override
static void Init(void)
QString advisory(void) const
uint stars_raw(void) const
void decompress_properties(uint compression_type) const
QString seriesid(void) const
const unsigned char * m_data
static QMap< uint, QString > s_mpaaRatingsDesc
static void Init(void)
static volatile bool s_dishCategoryDescExists
uint rating_raw(void) const
unsigned int uint
Definition: compat.h:140
static QMap< uint, QString > s_vchipRatingsDesc
uint DescriptorLength(void) const
QDate originalairdate(void) const
static QMap< uint, QString > s_dishCategoryDesc
uint advisory_raw(void) const
uint Nibble2(uint i) const
DishThemeType string_to_dish_theme_type(const QString &theme_type)
uint advisory_raw(void) const
uint AudioProperties(uint compression_type) const
QString rating(void) const
static bool s_mpaaRatingsExists
QString GetCategory(void) const
QString programid(void) const
uint rating_raw(void) const
static QMap< uint, QString > s_themeDesc
static QMutex s_vchipRatingsLock
QString Name(uint compression_type) const
QString rating(void) const
QDateTime dvbdate2qt(const unsigned char *buf)
Definition: dvbtables.cpp:289
uint Nibble1(uint i) const
QString advisory(void) const
const unsigned char * DescriptionRaw(void) const