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