libdvbpsi  1.1.0
dr_54.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * dr_54.h
3  * Copyright (C) 2013 VideoLAN
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18  *
19  *****************************************************************************/
20 
30 #ifndef _DVBPSI_DR_54_H_
31 #define _DVBPSI_DR_54_H_
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37 #define DVDPSI_GetContentCategoryFromType(type) ((type) >> 4)
38 
39 #define L1L2MERGE(L1,L2) ( ( DVBPSI_CONTENT_CAT ## L1<<4) | (L2) )
40 
41 #define DVBPSI_CONTENT_CAT_UNDEFINED 0x0
42 #define DVBPSI_CONTENT_CAT_MOVIE 0x1
43 #define DVBPSI_CONTENT_CAT_NEWS 0x2
44 #define DVBPSI_CONTENT_CAT_SHOW 0x3
45 #define DVBPSI_CONTENT_CAT_SPORTS 0x4
46 #define DVBPSI_CONTENT_CAT_CHILDREN 0x5
47 #define DVBPSI_CONTENT_CAT_MUSIC 0x6
48 #define DVBPSI_CONTENT_CAT_CULTURE 0x7
49 #define DVBPSI_CONTENT_CAT_SOCIAL 0x8
50 #define DVBPSI_CONTENT_CAT_EDUCATION 0x9
51 #define DVBPSI_CONTENT_CAT_LEISURE 0xa
52 #define DVBPSI_CONTENT_CAT_SPECIAL 0xb
53 #define DVBPSI_CONTENT_CAT_USERDEFINED 0xf
54 
55 /* Movie/Drama */
56 #define DVBPSI_CONTENT_MOVIE_GENERAL L1L2MERGE( _MOVIE, 0x0 )
57 #define DVBPSI_CONTENT_MOVIE_DETECTIVE L1L2MERGE( _MOVIE, 0x1 )
58 #define DVBPSI_CONTENT_MOVIE_ADVENTURE L1L2MERGE( _MOVIE, 0x2 )
59 #define DVBPSI_CONTENT_MOVIE_SF L1L2MERGE( _MOVIE, 0x3 )
60 #define DVBPSI_CONTENT_MOVIE_COMEDY L1L2MERGE( _MOVIE, 0x4 )
61 #define DVBPSI_CONTENT_MOVIE_SOAP L1L2MERGE( _MOVIE, 0x5 )
62 #define DVBPSI_CONTENT_MOVIE_ROMANCE L1L2MERGE( _MOVIE, 0x6 )
63 #define DVBPSI_CONTENT_MOVIE_CLASSICAL L1L2MERGE( _MOVIE, 0x7 )
64 #define DVBPSI_CONTENT_MOVIE_ADULT L1L2MERGE( _MOVIE, 0x8 )
65 #define DVBPSI_CONTENT_MOVIE_USERDEFINED L1L2MERGE( _MOVIE, 0xf )
66 /* News/Current affairs */
67 #define DVBPSI_CONTENT_NEWS_GENERAL L1L2MERGE( _NEWS, 0x0 )
68 #define DVBPSI_CONTENT_NEWS_WEATHER L1L2MERGE( _NEWS, 0x1 )
69 #define DVBPSI_CONTENT_NEWS_MAGAZINE L1L2MERGE( _NEWS, 0x2 )
70 #define DVBPSI_CONTENT_NEWS_DOCUMENTARY L1L2MERGE( _NEWS, 0x3 )
71 #define DVBPSI_CONTENT_NEWS_DISCUSSION L1L2MERGE( _NEWS, 0x4 )
72 #define DVBPSI_CONTENT_NEWS_USERDEFINED L1L2MERGE( _NEWS, 0xf )
73 /* Show/Game show */
74 #define DVBPSI_CONTENT_SHOW_GENERAL L1L2MERGE( _SHOW, 0x0 )
75 #define DVBPSI_CONTENT_SHOW_QUIZ L1L2MERGE( _SHOW, 0x1 )
76 #define DVBPSI_CONTENT_SHOW_VARIETY L1L2MERGE( _SHOW, 0x2 )
77 #define DVBPSI_CONTENT_SHOW_TALK L1L2MERGE( _SHOW, 0x3 )
78 #define DVBPSI_CONTENT_SHOW_USERDEFINED L1L2MERGE( _SHOW, 0xf )
79 /* Sports */
80 #define DVBPSI_CONTENT_SPORTS_GENERAL L1L2MERGE( _SPORTS, 0x0 )
81 #define DVBPSI_CONTENT_SPORTS_EVENTS L1L2MERGE( _SPORTS, 0x1 )
82 #define DVBPSI_CONTENT_SPORTS_MAGAZINE L1L2MERGE( _SPORTS, 0x2 )
83 #define DVBPSI_CONTENT_SPORTS_FOOTBALL L1L2MERGE( _SPORTS, 0x3 )
84 #define DVBPSI_CONTENT_SPORTS_TENNIS L1L2MERGE( _SPORTS, 0x4 )
85 #define DVBPSI_CONTENT_SPORTS_TEAM L1L2MERGE( _SPORTS, 0x5 )
86 #define DVBPSI_CONTENT_SPORTS_ATHLETICS L1L2MERGE( _SPORTS, 0x6 )
87 #define DVBPSI_CONTENT_SPORTS_MOTOR L1L2MERGE( _SPORTS, 0x7 )
88 #define DVBPSI_CONTENT_SPORTS_WATER L1L2MERGE( _SPORTS, 0x8 )
89 #define DVBPSI_CONTENT_SPORTS_WINTER L1L2MERGE( _SPORTS, 0x9 )
90 #define DVBPSI_CONTENT_SPORTS_EQUESTRIAN L1L2MERGE( _SPORTS, 0xa )
91 #define DVBPSI_CONTENT_SPORTS_MARTIAL L1L2MERGE( _SPORTS, 0xb )
92 #define DVBPSI_CONTENT_SPORTS_USERDEFINED L1L2MERGE( _SPORTS, 0xf )
93 /* Children's/Youth */
94 #define DVBPSI_CONTENT_CHILDREN_GENERAL L1L2MERGE( _CHILDREN, 0x0 )
95 #define DVBPSI_CONTENT_CHILDREN_PRESCHOOL L1L2MERGE( _CHILDREN, 0x1 )
96 #define DVBPSI_CONTENT_CHILDREN_06TO14ENT L1L2MERGE( _CHILDREN, 0x2 )
97 #define DVBPSI_CONTENT_CHILDREN_10TO16ENT L1L2MERGE( _CHILDREN, 0x3 )
98 #define DVBPSI_CONTENT_CHILDREN_EDUCATIONAL L1L2MERGE( _CHILDREN, 0x4 )
99 #define DVBPSI_CONTENT_CHILDREN_CARTOONS L1L2MERGE( _CHILDREN, 0x5 )
100 #define DVBPSI_CONTENT_CHILDREN_USERDEFINED L1L2MERGE( _CHILDREN, 0xf )
101 /* Music/Ballet/Dance */
102 #define DVBPSI_CONTENT_MUSIC_GENERAL L1L2MERGE( _MUSIC, 0x0 )
103 #define DVBPSI_CONTENT_MUSIC_POPROCK L1L2MERGE( _MUSIC, 0x1 )
104 #define DVBPSI_CONTENT_MUSIC_CLASSICAL L1L2MERGE( _MUSIC, 0x2 )
105 #define DVBPSI_CONTENT_MUSIC_FOLK L1L2MERGE( _MUSIC, 0x3 )
106 #define DVBPSI_CONTENT_MUSIC_JAZZ L1L2MERGE( _MUSIC, 0x4 )
107 #define DVBPSI_CONTENT_MUSIC_OPERA L1L2MERGE( _MUSIC, 0x5 )
108 #define DVBPSI_CONTENT_MUSIC_BALLET L1L2MERGE( _MUSIC, 0x6 )
109 #define DVBPSI_CONTENT_MUSIC_USERDEFINED L1L2MERGE( _MUSIC, 0xf )
110 /* Arts/Culture */
111 #define DVBPSI_CONTENT_CULTURE_GENERAL L1L2MERGE( _CULTURE, 0x0 )
112 #define DVBPSI_CONTENT_CULTURE_PERFORMANCE L1L2MERGE( _CULTURE, 0x1 )
113 #define DVBPSI_CONTENT_CULTURE_FINEARTS L1L2MERGE( _CULTURE, 0x2 )
114 #define DVBPSI_CONTENT_CULTURE_RELIGION L1L2MERGE( _CULTURE, 0x3 )
115 #define DVBPSI_CONTENT_CULTURE_TRADITIONAL L1L2MERGE( _CULTURE, 0x4 )
116 #define DVBPSI_CONTENT_CULTURE_LITERATURE L1L2MERGE( _CULTURE, 0x5 )
117 #define DVBPSI_CONTENT_CULTURE_CINEMA L1L2MERGE( _CULTURE, 0x6 )
118 #define DVBPSI_CONTENT_CULTURE_EXPERIMENTAL L1L2MERGE( _CULTURE, 0x7 )
119 #define DVBPSI_CONTENT_CULTURE_PRESS L1L2MERGE( _CULTURE, 0x8 )
120 #define DVBPSI_CONTENT_CULTURE_NEWMEDIA L1L2MERGE( _CULTURE, 0x9 )
121 #define DVBPSI_CONTENT_CULTURE_MAGAZINE L1L2MERGE( _CULTURE, 0xa )
122 #define DVBPSI_CONTENT_CULTURE_FASHION L1L2MERGE( _CULTURE, 0xb )
123 #define DVBPSI_CONTENT_CULTURE_USERDEFINED L1L2MERGE( _CULTURE, 0xf )
124 /* Socal/Political/Economics */
125 #define DVBPSI_CONTENT_SOCIAL_GENERAL L1L2MERGE( _SOCIAL, 0x0 )
126 #define DVBPSI_CONTENT_SOCIAL_MAGAZINE L1L2MERGE( _SOCIAL, 0x1 )
127 #define DVBPSI_CONTENT_SOCIAL_ADVISORY L1L2MERGE( _SOCIAL, 0x2 )
128 #define DVBPSI_CONTENT_SOCIAL_PEOPLE L1L2MERGE( _SOCIAL, 0x3 )
129 #define DVBPSI_CONTENT_SOCIAL_USERDEFINED L1L2MERGE( _SOCIAL, 0xf )
130 /* Eduction/Science/Factual */
131 #define DVBPSI_CONTENT_EDUCATION_GENERAL L1L2MERGE( _EDUCATION, 0x0 )
132 #define DVBPSI_CONTENT_EDUCATION_NATURE L1L2MERGE( _EDUCATION, 0x1 )
133 #define DVBPSI_CONTENT_EDUCATION_TECHNOLOGY L1L2MERGE( _EDUCATION, 0x2 )
134 #define DVBPSI_CONTENT_EDUCATION_MEDICINE L1L2MERGE( _EDUCATION, 0x3 )
135 #define DVBPSI_CONTENT_EDUCATION_FOREIGN L1L2MERGE( _EDUCATION, 0x4 )
136 #define DVBPSI_CONTENT_EDUCATION_SOCIAL L1L2MERGE( _EDUCATION, 0x5 )
137 #define DVBPSI_CONTENT_EDUCATION_FURTHER L1L2MERGE( _EDUCATION, 0x6 )
138 #define DVBPSI_CONTENT_EDUCATION_LANGUAGE L1L2MERGE( _EDUCATION, 0x7 )
139 #define DVBPSI_CONTENT_EDUCATION_USERDEFINED L1L2MERGE( _EDUCATION, 0xf )
140 /* Leisure/Hobbies */
141 #define DVBPSI_CONTENT_LEISURE_GENERAL L1L2MERGE( _LEISURE, 0x0 )
142 #define DVBPSI_CONTENT_LEISURE_TRAVEL L1L2MERGE( _LEISURE, 0x1 )
143 #define DVBPSI_CONTENT_LEISURE_HANDICRAFT L1L2MERGE( _LEISURE, 0x2 )
144 #define DVBPSI_CONTENT_LEISURE_MOTORING L1L2MERGE( _LEISURE, 0x3 )
145 #define DVBPSI_CONTENT_LEISURE_FITNESS L1L2MERGE( _LEISURE, 0x4 )
146 #define DVBPSI_CONTENT_LEISURE_COOKING L1L2MERGE( _LEISURE, 0x5 )
147 #define DVBPSI_CONTENT_LEISURE_SHOPPING L1L2MERGE( _LEISURE, 0x6 )
148 #define DVBPSI_CONTENT_LEISURE_GARDENING L1L2MERGE( _LEISURE, 0x7 )
149 #define DVBPSI_CONTENT_LEISURE_USERDEFINED L1L2MERGE( _LEISURE, 0xf )
150 /* Special characteristics */
151 #define DVBPSI_CONTENT_SPECIAL_ORIGINALLANGUAGE L1L2MERGE( _SPECIAL, 0x0 )
152 #define DVBPSI_CONTENT_SPECIAL_BLACKANDWHITE L1L2MERGE( _SPECIAL, 0x1 )
153 #define DVBPSI_CONTENT_SPECIAL_UNPUBLISHED L1L2MERGE( _SPECIAL, 0x2 )
154 #define DVBPSI_CONTENT_SPECIAL_LIVE L1L2MERGE( _SPECIAL, 0x3 )
155 #define DVBPSI_CONTENT_SPECIAL_PLANOSTEREOSCOPIC L1L2MERGE( _SPECIAL, 0x4 )
156 #define DVBPSI_CONTENT_SPECIAL_USERDEFINED L1L2MERGE( _SPECIAL, 0xb )
157 #define DVBPSI_CONTENT_SPECIAL_USERDEFINED1 L1L2MERGE( _SPECIAL, 0xc )
158 #define DVBPSI_CONTENT_SPECIAL_USERDEFINED2 L1L2MERGE( _SPECIAL, 0xd )
159 #define DVBPSI_CONTENT_SPECIAL_USERDEFINED3 L1L2MERGE( _SPECIAL, 0xe )
160 #define DVBPSI_CONTENT_SPECIAL_USERDEFINED4 L1L2MERGE( _SPECIAL, 0xf )
161 
162 /*****************************************************************************
163  * dvbpsi_content_t
164  *****************************************************************************/
176 typedef struct dvbpsi_content_s
177 {
178  uint8_t i_type;
179  uint8_t i_user_byte;
182 
187 #define DVBPSI_CONTENT_DR_MAX 64
188 
189 /*****************************************************************************
190  * dvbpsi_content_dr_t
191  *****************************************************************************/
203 typedef struct dvbpsi_content_dr_s
204 {
209 
210 
211 /*****************************************************************************
212  * dvbpsi_DecodeContentDataDr
213  *****************************************************************************/
223  dvbpsi_descriptor_t * p_descriptor);
224 
225 
226 /*****************************************************************************
227  * dvbpsi_GenContentDataDr
228  *****************************************************************************/
240  dvbpsi_content_dr_t * p_decoded,
241  bool b_duplicate);
242 
243 
244 #ifdef __cplusplus
245 };
246 #endif
247 
248 #else
249 #error "Multiple inclusions of dr_54.h"
250 #endif