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
12QString DishEventNameDescriptor::Name(uint compression_type) const
13{
14 if (!HasName())
15 return {};
16
18 m_data + 3, DescriptorLength() - 1, compression_type);
19}
20
21const 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();
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{
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
298}
299
300QMap<uint,QString> DishContentDescriptor::s_themeDesc;
303
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
318DishThemeType 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}
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
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
unsigned int uint
Definition: freesurround.h:24