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  _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 = (_data[3] & 0xf8) == 0x80;
27  return _data + ((offset) ? 4 : 3);
28 }
29 
31 {
32  if (DescriptorLength() <= 2)
33  return 0;
34 
35  bool offset = (_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 subtitle_props;
60 }
61 
63 {
64  decompress_properties(compression_type);
65 
66  return audio_props;
67 }
68 
70 {
73 
74  if (HasProperties())
75  {
76  QString properties_raw = atsc_huffman2_to_string(
77  _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 = ((_data[6] & 0x3f) << 0x08) | _data[7];
98 
99  if (_data[2] == 0x7c)
100  prefix = "MV";
101  else if (_data[2] == 0x7d)
102  prefix = "SP";
103  else if (_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 (_data[2] == 0x7c)
125  prefix = "MV";
126  else if (_data[2] == 0x7d)
127  prefix = "SP";
128  else if (_data[2] == 0x7e)
129  prefix = "EP";
130  else
131  return prefix;
132 
133  uint series = (_data[3] << 0x12) | (_data[4] << 0x0a) | (_data[5] << 0x02) |
134  ((_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] = _data[8];
149  mjd[1] = _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 (!mpaaRatingsExists)
190  Init();
191 
192  QMutexLocker locker(&mpaaRatingsLock);
193 
194  QMap<uint,QString>::const_iterator it = mpaaRatingsDesc.find(rating_raw());
195  if (it != 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(&mpaaRatingsLock);
228 
229  if (mpaaRatingsExists)
230  return;
231 
232  mpaaRatingsDesc[0x01] = "G";
233  mpaaRatingsDesc[0x02] = "PG";
234  mpaaRatingsDesc[0x03] = "PG-13";
235  mpaaRatingsDesc[0x04] = "R";
236  mpaaRatingsDesc[0x05] = "NC-17";
237  mpaaRatingsDesc[0x06] = "NR";
238 
239  mpaaRatingsExists = true;
240 }
241 
245 
247 {
248  if (!vchipRatingsExists)
249  Init();
250 
251  QMutexLocker locker(&vchipRatingsLock);
252 
253  QMap<uint,QString>::const_iterator it = vchipRatingsDesc.find(rating_raw());
254  if (it != 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(&vchipRatingsLock);
283 
284  if (vchipRatingsExists)
285  return;
286 
287  vchipRatingsDesc[0x01] = "TV-Y";
288  vchipRatingsDesc[0x02] = "TV-Y7";
289  vchipRatingsDesc[0x03] = "TV-G";
290  vchipRatingsDesc[0x04] = "TV-PG";
291  vchipRatingsDesc[0x05] = "TV-14";
292  vchipRatingsDesc[0x06] = "TV-MA";
293 
294  vchipRatingsExists = true;
295 }
296 
297 QMap<uint,QString> DishContentDescriptor::themeDesc;
298 QMap<uint,QString> DishContentDescriptor::dishCategoryDesc;
300 
301 QString dish_theme_type_to_string(uint theme_type)
302 {
303  // cppcheck-suppress variableScope
304  static const char *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(themes[theme_type]);
312 
313  return "";
314 }
315 
316 DishThemeType string_to_dish_theme_type(const QString &theme_type)
317 {
318  static const char *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 == 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 = themeDesc.find(Nibble2(0));
340  if (it != 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(&categoryLock);
353 
354  // Try to get detailed description
355  QMap<uint,QString>::const_iterator it =
356  dishCategoryDesc.find(UserNibble(0));
357  if (it != 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(&categoryLock);
376 
378  return;
379 
380  // Dish/BEV "Themes"
381  themeDesc[kThemeMovie] = QCoreApplication::translate("(Categories)",
382  "Movie");
383  themeDesc[kThemeSports] = QCoreApplication::translate("(Categories)",
384  "Sports");
385  themeDesc[kThemeNews] = QCoreApplication::translate("(Categories)",
386  "News/Business");
387  themeDesc[kThemeFamily] = QCoreApplication::translate("(Categories)",
388  "Family/Children");
389  themeDesc[kThemeEducation] = QCoreApplication::translate("(Categories)",
390  "Education");
391  themeDesc[kThemeSeries] = QCoreApplication::translate("(Categories)",
392  "Series/Special");
393  themeDesc[kThemeMusic] = QCoreApplication::translate("(Categories)",
394  "Music/Art");
395  themeDesc[kThemeReligious] = QCoreApplication::translate("(Categories)",
396  "Religious");
397 
398  // Dish/BEV categories
399  dishCategoryDesc[0x01] = QCoreApplication::translate("(Categories)",
400  "Action");
401  dishCategoryDesc[0x02] = QCoreApplication::translate("(Categories)",
402  "Adults only");
403  dishCategoryDesc[0x03] = QCoreApplication::translate("(Categories)",
404  "Adventure");
405  dishCategoryDesc[0x04] = QCoreApplication::translate("(Categories)",
406  "Animals");
407  dishCategoryDesc[0x05] = QCoreApplication::translate("(Categories)",
408  "Animated");
409  dishCategoryDesc[0x07] = QCoreApplication::translate("(Categories)",
410  "Anthology");
411  dishCategoryDesc[0x08] = QCoreApplication::translate("(Categories)",
412  "Art");
413  dishCategoryDesc[0x09] = QCoreApplication::translate("(Categories)",
414  "Auto");
415  dishCategoryDesc[0x0a] = QCoreApplication::translate("(Categories)",
416  "Awards");
417  dishCategoryDesc[0x0b] = QCoreApplication::translate("(Categories)",
418  "Ballet");
419  dishCategoryDesc[0x0c] = QCoreApplication::translate("(Categories)",
420  "Baseball");
421  dishCategoryDesc[0x0d] = QCoreApplication::translate("(Categories)",
422  "Basketball");
423  dishCategoryDesc[0x11] = QCoreApplication::translate("(Categories)",
424  "Biography");
425  dishCategoryDesc[0x12] = QCoreApplication::translate("(Categories)",
426  "Boat");
427  dishCategoryDesc[0x14] = QCoreApplication::translate("(Categories)",
428  "Bowling");
429  dishCategoryDesc[0x15] = QCoreApplication::translate("(Categories)",
430  "Boxing");
431  dishCategoryDesc[0x16] = QCoreApplication::translate("(Categories)",
432  "Bus./financial");
433  dishCategoryDesc[0x1a] = QCoreApplication::translate("(Categories)",
434  "Children");
435  dishCategoryDesc[0x1b] = QCoreApplication::translate("(Categories)",
436  "Children-special");
437  dishCategoryDesc[0x1c] = QCoreApplication::translate("(Categories)",
438  "Children-news");
439  dishCategoryDesc[0x1d] = QCoreApplication::translate("(Categories)",
440  "Children-music");
441  dishCategoryDesc[0x1f] = QCoreApplication::translate("(Categories)",
442  "Collectibles");
443  dishCategoryDesc[0x20] = QCoreApplication::translate("(Categories)",
444  "Comedy");
445  dishCategoryDesc[0x21] = QCoreApplication::translate("(Categories)",
446  "Comedy-drama");
447  dishCategoryDesc[0x22] = QCoreApplication::translate("(Categories)",
448  "Computers");
449  dishCategoryDesc[0x23] = QCoreApplication::translate("(Categories)",
450  "Cooking");
451  dishCategoryDesc[0x24] = QCoreApplication::translate("(Categories)",
452  "Crime");
453  dishCategoryDesc[0x25] = QCoreApplication::translate("(Categories)",
454  "Crime drama");
455  dishCategoryDesc[0x27] = QCoreApplication::translate("(Categories)",
456  "Dance");
457  dishCategoryDesc[0x29] = QCoreApplication::translate("(Categories)",
458  "Docudrama");
459  dishCategoryDesc[0x2a] = QCoreApplication::translate("(Categories)",
460  "Documentary");
461  dishCategoryDesc[0x2b] = QCoreApplication::translate("(Categories)",
462  "Drama");
463  dishCategoryDesc[0x2c] = QCoreApplication::translate("(Categories)",
464  "Educational");
465  dishCategoryDesc[0x2f] = QCoreApplication::translate("(Categories)",
466  "Exercise");
467  dishCategoryDesc[0x31] = QCoreApplication::translate("(Categories)",
468  "Fantasy");
469  dishCategoryDesc[0x32] = QCoreApplication::translate("(Categories)",
470  "Fashion");
471  dishCategoryDesc[0x34] = QCoreApplication::translate("(Categories)",
472  "Fishing");
473  dishCategoryDesc[0x35] = QCoreApplication::translate("(Categories)",
474  "Football");
475  dishCategoryDesc[0x36] = QCoreApplication::translate("(Categories)",
476  "French");
477  dishCategoryDesc[0x37] = QCoreApplication::translate("(Categories)",
478  "Fundraiser");
479  dishCategoryDesc[0x38] = QCoreApplication::translate("(Categories)",
480  "Game show");
481  dishCategoryDesc[0x39] = QCoreApplication::translate("(Categories)",
482  "Golf");
483  dishCategoryDesc[0x3a] = QCoreApplication::translate("(Categories)",
484  "Gymnastics");
485  dishCategoryDesc[0x3b] = QCoreApplication::translate("(Categories)",
486  "Health");
487  dishCategoryDesc[0x3c] = QCoreApplication::translate("(Categories)",
488  "History");
489  dishCategoryDesc[0x3d] = QCoreApplication::translate("(Categories)",
490  "Historical drama");
491  dishCategoryDesc[0x3e] = QCoreApplication::translate("(Categories)",
492  "Hockey");
493  dishCategoryDesc[0x3f] = QCoreApplication::translate("(Categories)",
494  "Holiday");
495  dishCategoryDesc[0x40] = QCoreApplication::translate("(Categories)",
496  "Holiday-children");
497  dishCategoryDesc[0x41] = QCoreApplication::translate("(Categories)",
498  "Holiday-children special");
499  dishCategoryDesc[0x44] = QCoreApplication::translate("(Categories)",
500  "Holiday special");
501  dishCategoryDesc[0x45] = QCoreApplication::translate("(Categories)",
502  "Horror");
503  dishCategoryDesc[0x46] = QCoreApplication::translate("(Categories)",
504  "Horse racing");
505  dishCategoryDesc[0x47] = QCoreApplication::translate("(Categories)",
506  "House/garden");
507  dishCategoryDesc[0x49] = QCoreApplication::translate("(Categories)",
508  "How-to");
509  dishCategoryDesc[0x4b] = QCoreApplication::translate("(Categories)",
510  "Interview");
511  dishCategoryDesc[0x4d] = QCoreApplication::translate("(Categories)",
512  "Lacrosse");
513  dishCategoryDesc[0x4f] = QCoreApplication::translate("(Categories)",
514  "Martial Arts");
515  dishCategoryDesc[0x50] = QCoreApplication::translate("(Categories)",
516  "Medical");
517  dishCategoryDesc[0x51] = QCoreApplication::translate("(Categories)",
518  "Miniseries");
519  dishCategoryDesc[0x52] = QCoreApplication::translate("(Categories)",
520  "Motorsports");
521  dishCategoryDesc[0x53] = QCoreApplication::translate("(Categories)",
522  "Motorcycle");
523  dishCategoryDesc[0x54] = QCoreApplication::translate("(Categories)",
524  "Music");
525  dishCategoryDesc[0x55] = QCoreApplication::translate("(Categories)",
526  "Music special");
527  dishCategoryDesc[0x56] = QCoreApplication::translate("(Categories)",
528  "Music talk");
529  dishCategoryDesc[0x57] = QCoreApplication::translate("(Categories)",
530  "Musical");
531  dishCategoryDesc[0x58] = QCoreApplication::translate("(Categories)",
532  "Musical comedy");
533  dishCategoryDesc[0x5a] = QCoreApplication::translate("(Categories)",
534  "Mystery");
535  dishCategoryDesc[0x5b] = QCoreApplication::translate("(Categories)",
536  "Nature");
537  dishCategoryDesc[0x5c] = QCoreApplication::translate("(Categories)",
538  "News");
539  dishCategoryDesc[0x5f] = QCoreApplication::translate("(Categories)",
540  "Opera");
541  dishCategoryDesc[0x60] = QCoreApplication::translate("(Categories)",
542  "Outdoors");
543  dishCategoryDesc[0x63] = QCoreApplication::translate("(Categories)",
544  "Public affairs");
545  dishCategoryDesc[0x66] = QCoreApplication::translate("(Categories)",
546  "Reality");
547  dishCategoryDesc[0x67] = QCoreApplication::translate("(Categories)",
548  "Religious");
549  dishCategoryDesc[0x68] = QCoreApplication::translate("(Categories)",
550  "Rodeo");
551  dishCategoryDesc[0x69] = QCoreApplication::translate("(Categories)",
552  "Romance");
553  dishCategoryDesc[0x6a] = QCoreApplication::translate("(Categories)",
554  "Romance-comedy");
555  dishCategoryDesc[0x6b] = QCoreApplication::translate("(Categories)",
556  "Rugby");
557  dishCategoryDesc[0x6c] = QCoreApplication::translate("(Categories)",
558  "Running");
559  dishCategoryDesc[0x6e] = QCoreApplication::translate("(Categories)",
560  "Science");
561  dishCategoryDesc[0x6f] = QCoreApplication::translate("(Categories)",
562  "Science fiction");
563  dishCategoryDesc[0x70] = QCoreApplication::translate("(Categories)",
564  "Self improvement");
565  dishCategoryDesc[0x71] = QCoreApplication::translate("(Categories)",
566  "Shopping");
567  dishCategoryDesc[0x74] = QCoreApplication::translate("(Categories)",
568  "Skiing");
569  dishCategoryDesc[0x77] = QCoreApplication::translate("(Categories)",
570  "Soap");
571  dishCategoryDesc[0x7b] = QCoreApplication::translate("(Categories)",
572  "Soccer");
573  dishCategoryDesc[0x7c] = QCoreApplication::translate("(Categories)",
574  "Softball");
575  dishCategoryDesc[0x7d] = QCoreApplication::translate("(Categories)",
576  "Spanish");
577  dishCategoryDesc[0x7e] = QCoreApplication::translate("(Categories)",
578  "Special");
579  dishCategoryDesc[0x81] = QCoreApplication::translate("(Categories)",
580  "Sports non-event");
581  dishCategoryDesc[0x82] = QCoreApplication::translate("(Categories)",
582  "Sports talk");
583  dishCategoryDesc[0x83] = QCoreApplication::translate("(Categories)",
584  "Suspense");
585  dishCategoryDesc[0x85] = QCoreApplication::translate("(Categories)",
586  "Swimming");
587  dishCategoryDesc[0x86] = QCoreApplication::translate("(Categories)",
588  "Talk");
589  dishCategoryDesc[0x87] = QCoreApplication::translate("(Categories)",
590  "Tennis");
591  dishCategoryDesc[0x89] = QCoreApplication::translate("(Categories)",
592  "Track/field");
593  dishCategoryDesc[0x8a] = QCoreApplication::translate("(Categories)",
594  "Travel");
595  dishCategoryDesc[0x8b] = QCoreApplication::translate("(Categories)",
596  "Variety");
597  dishCategoryDesc[0x8c] = QCoreApplication::translate("(Categories)",
598  "Volleyball");
599  dishCategoryDesc[0x8d] = QCoreApplication::translate("(Categories)",
600  "War");
601  dishCategoryDesc[0x8e] = QCoreApplication::translate("(Categories)",
602  "Watersports");
603  dishCategoryDesc[0x8f] = QCoreApplication::translate("(Categories)",
604  "Weather");
605  dishCategoryDesc[0x90] = QCoreApplication::translate("(Categories)",
606  "Western");
607  dishCategoryDesc[0x92] = QCoreApplication::translate("(Categories)",
608  "Wrestling");
609  dishCategoryDesc[0x93] = QCoreApplication::translate("(Categories)",
610  "Yoga");
611  dishCategoryDesc[0x94] = QCoreApplication::translate("(Categories)",
612  "Agriculture");
613  dishCategoryDesc[0x95] = QCoreApplication::translate("(Categories)",
614  "Anime");
615  dishCategoryDesc[0x97] = QCoreApplication::translate("(Categories)",
616  "Arm Wrestling");
617  dishCategoryDesc[0x98] = QCoreApplication::translate("(Categories)",
618  "Arts/crafts");
619  dishCategoryDesc[0x99] = QCoreApplication::translate("(Categories)",
620  "Auction");
621  dishCategoryDesc[0x9a] = QCoreApplication::translate("(Categories)",
622  "Auto racing");
623  dishCategoryDesc[0x9b] = QCoreApplication::translate("(Categories)",
624  "Air racing");
625  dishCategoryDesc[0x9c] = QCoreApplication::translate("(Categories)",
626  "Badminton");
627  dishCategoryDesc[0xa0] = QCoreApplication::translate("(Categories)",
628  "Bicycle racing");
629  dishCategoryDesc[0xa1] = QCoreApplication::translate("(Categories)",
630  "Boat Racing");
631  dishCategoryDesc[0xa6] = QCoreApplication::translate("(Categories)",
632  "Community");
633  dishCategoryDesc[0xa7] = QCoreApplication::translate("(Categories)",
634  "Consumer");
635  dishCategoryDesc[0xaa] = QCoreApplication::translate("(Categories)",
636  "Debate");
637  dishCategoryDesc[0xac] = QCoreApplication::translate("(Categories)",
638  "Dog show");
639  dishCategoryDesc[0xad] = QCoreApplication::translate("(Categories)",
640  "Drag racing");
641  dishCategoryDesc[0xae] = QCoreApplication::translate("(Categories)",
642  "Entertainment");
643  dishCategoryDesc[0xaf] = QCoreApplication::translate("(Categories)",
644  "Environment");
645  dishCategoryDesc[0xb0] = QCoreApplication::translate("(Categories)",
646  "Equestrian");
647  dishCategoryDesc[0xb3] = QCoreApplication::translate("(Categories)",
648  "Field hockey");
649  dishCategoryDesc[0xb5] = QCoreApplication::translate("(Categories)",
650  "Football");
651  dishCategoryDesc[0xb6] = QCoreApplication::translate("(Categories)",
652  "Gay/lesbian");
653  dishCategoryDesc[0xb7] = QCoreApplication::translate("(Categories)",
654  "Handball");
655  dishCategoryDesc[0xb8] = QCoreApplication::translate("(Categories)",
656  "Home improvement");
657  dishCategoryDesc[0xb9] = QCoreApplication::translate("(Categories)",
658  "Hunting");
659  dishCategoryDesc[0xbb] = QCoreApplication::translate("(Categories)",
660  "Hydroplane racing");
661  dishCategoryDesc[0xc1] = QCoreApplication::translate("(Categories)",
662  "Law");
663  dishCategoryDesc[0xc3] = QCoreApplication::translate("(Categories)",
664  "Motorcycle racing");
665  dishCategoryDesc[0xc5] = QCoreApplication::translate("(Categories)",
666  "Newsmagazine");
667  dishCategoryDesc[0xc7] = QCoreApplication::translate("(Categories)",
668  "Paranormal");
669  dishCategoryDesc[0xc8] = QCoreApplication::translate("(Categories)",
670  "Parenting");
671  dishCategoryDesc[0xca] = QCoreApplication::translate("(Categories)",
672  "Performing arts");
673  dishCategoryDesc[0xcc] = QCoreApplication::translate("(Categories)",
674  "Politics");
675  dishCategoryDesc[0xcf] = QCoreApplication::translate("(Categories)",
676  "Pro wrestling");
677  dishCategoryDesc[0xd3] = QCoreApplication::translate("(Categories)",
678  "Sailing");
679  dishCategoryDesc[0xd4] = QCoreApplication::translate("(Categories)",
680  "Shooting");
681  dishCategoryDesc[0xd5] = QCoreApplication::translate("(Categories)",
682  "Sitcom");
683  dishCategoryDesc[0xd6] = QCoreApplication::translate("(Categories)",
684  "Skateboarding");
685  dishCategoryDesc[0xd9] = QCoreApplication::translate("(Categories)",
686  "Snowboarding");
687  dishCategoryDesc[0xdd] = QCoreApplication::translate("(Categories)",
688  "Standup");
689  dishCategoryDesc[0xdf] = QCoreApplication::translate("(Categories)",
690  "Surfing");
691  dishCategoryDesc[0xe0] = QCoreApplication::translate("(Categories)",
692  "Tennis");
693  dishCategoryDesc[0xe1] = QCoreApplication::translate("(Categories)",
694  "Triathlon");
695  dishCategoryDesc[0xe6] = QCoreApplication::translate("(Categories)",
696  "Card games");
697  dishCategoryDesc[0xe7] = QCoreApplication::translate("(Categories)",
698  "Poker");
699  dishCategoryDesc[0xea] = QCoreApplication::translate("(Categories)",
700  "Military");
701  dishCategoryDesc[0xeb] = QCoreApplication::translate("(Categories)",
702  "Technology");
703  dishCategoryDesc[0xec] = QCoreApplication::translate("(Categories)",
704  "Mixed martial arts");
705  dishCategoryDesc[0xed] = QCoreApplication::translate("(Categories)",
706  "Action sports");
707  dishCategoryDesc[0xff] = QCoreApplication::translate("(Categories)",
708  "Dish Network");
709 
710  dishCategoryDescExists = true;
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)
DishThemeType
uint UserNibble(uint i) const
static QMap< uint, QString > themeDesc
bool HasName(void) const
unsigned int uint
Definition: compat.h:140
static volatile bool dishCategoryDescExists
static QMap< uint, QString > mpaaRatingsDesc
QString toString() const override
static void Init(void)
QString advisory(void) const
static QMutex vchipRatingsLock
uint stars_raw(void) const
void decompress_properties(uint compression_type) const
QString seriesid(void) const
static void Init(void)
unsigned char t
Definition: ParseText.cpp:329
QString Name(uint) const
uint rating_raw(void) const
static QMutex mpaaRatingsLock
static QMap< uint, QString > vchipRatingsDesc
uint DescriptorLength(void) const
QDate originalairdate(void) const
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
QString GetCategory(void) const
const unsigned char * _data
QString programid(void) const
static QMap< uint, QString > dishCategoryDesc
uint rating_raw(void) const
QString rating(void) const
QDateTime dvbdate2qt(const unsigned char *buf)
Definition: dvbtables.cpp:277
static QMutex categoryLock
uint Nibble1(uint i) const
QString advisory(void) const
const unsigned char * DescriptionRaw(void) const