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