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