00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00030 #ifndef _DVBPSI_DR_54_H_
00031 #define _DVBPSI_DR_54_H_
00032
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036
00042 #define DVBPSI_GetContentCategoryFromType(type) ((type) >> 4)
00043
00050 #define L1L2MERGE(L1,L2) ( ( DVBPSI_CONTENT_CAT ## L1<<4) | (L2) )
00051
00052
00053 #define DVBPSI_CONTENT_CAT_UNDEFINED 0x0
00054 #define DVBPSI_CONTENT_CAT_MOVIE 0x1
00055 #define DVBPSI_CONTENT_CAT_NEWS 0x2
00056 #define DVBPSI_CONTENT_CAT_SHOW 0x3
00057 #define DVBPSI_CONTENT_CAT_SPORTS 0x4
00058 #define DVBPSI_CONTENT_CAT_CHILDREN 0x5
00059 #define DVBPSI_CONTENT_CAT_MUSIC 0x6
00060 #define DVBPSI_CONTENT_CAT_CULTURE 0x7
00061 #define DVBPSI_CONTENT_CAT_SOCIAL 0x8
00062 #define DVBPSI_CONTENT_CAT_EDUCATION 0x9
00063 #define DVBPSI_CONTENT_CAT_LEISURE 0xa
00064 #define DVBPSI_CONTENT_CAT_SPECIAL 0xb
00065 #define DVBPSI_CONTENT_CAT_USERDEFINED 0xf
00067
00068 #define DVBPSI_CONTENT_MOVIE_GENERAL L1L2MERGE( _MOVIE, 0x0 )
00069 #define DVBPSI_CONTENT_MOVIE_DETECTIVE L1L2MERGE( _MOVIE, 0x1 )
00070 #define DVBPSI_CONTENT_MOVIE_ADVENTURE L1L2MERGE( _MOVIE, 0x2 )
00071 #define DVBPSI_CONTENT_MOVIE_SF L1L2MERGE( _MOVIE, 0x3 )
00072 #define DVBPSI_CONTENT_MOVIE_COMEDY L1L2MERGE( _MOVIE, 0x4 )
00073 #define DVBPSI_CONTENT_MOVIE_SOAP L1L2MERGE( _MOVIE, 0x5 )
00074 #define DVBPSI_CONTENT_MOVIE_ROMANCE L1L2MERGE( _MOVIE, 0x6 )
00075 #define DVBPSI_CONTENT_MOVIE_CLASSICAL L1L2MERGE( _MOVIE, 0x7 )
00076 #define DVBPSI_CONTENT_MOVIE_ADULT L1L2MERGE( _MOVIE, 0x8 )
00077 #define DVBPSI_CONTENT_MOVIE_USERDEFINED L1L2MERGE( _MOVIE, 0xf )
00078
00079 #define DVBPSI_CONTENT_NEWS_GENERAL L1L2MERGE( _NEWS, 0x0 )
00080 #define DVBPSI_CONTENT_NEWS_WEATHER L1L2MERGE( _NEWS, 0x1 )
00081 #define DVBPSI_CONTENT_NEWS_MAGAZINE L1L2MERGE( _NEWS, 0x2 )
00082 #define DVBPSI_CONTENT_NEWS_DOCUMENTARY L1L2MERGE( _NEWS, 0x3 )
00083 #define DVBPSI_CONTENT_NEWS_DISCUSSION L1L2MERGE( _NEWS, 0x4 )
00084 #define DVBPSI_CONTENT_NEWS_USERDEFINED L1L2MERGE( _NEWS, 0xf )
00085
00086 #define DVBPSI_CONTENT_SHOW_GENERAL L1L2MERGE( _SHOW, 0x0 )
00087 #define DVBPSI_CONTENT_SHOW_QUIZ L1L2MERGE( _SHOW, 0x1 )
00088 #define DVBPSI_CONTENT_SHOW_VARIETY L1L2MERGE( _SHOW, 0x2 )
00089 #define DVBPSI_CONTENT_SHOW_TALK L1L2MERGE( _SHOW, 0x3 )
00090 #define DVBPSI_CONTENT_SHOW_USERDEFINED L1L2MERGE( _SHOW, 0xf )
00091
00092 #define DVBPSI_CONTENT_SPORTS_GENERAL L1L2MERGE( _SPORTS, 0x0 )
00093 #define DVBPSI_CONTENT_SPORTS_EVENTS L1L2MERGE( _SPORTS, 0x1 )
00094 #define DVBPSI_CONTENT_SPORTS_MAGAZINE L1L2MERGE( _SPORTS, 0x2 )
00095 #define DVBPSI_CONTENT_SPORTS_FOOTBALL L1L2MERGE( _SPORTS, 0x3 )
00096 #define DVBPSI_CONTENT_SPORTS_TENNIS L1L2MERGE( _SPORTS, 0x4 )
00097 #define DVBPSI_CONTENT_SPORTS_TEAM L1L2MERGE( _SPORTS, 0x5 )
00098 #define DVBPSI_CONTENT_SPORTS_ATHLETICS L1L2MERGE( _SPORTS, 0x6 )
00099 #define DVBPSI_CONTENT_SPORTS_MOTOR L1L2MERGE( _SPORTS, 0x7 )
00100 #define DVBPSI_CONTENT_SPORTS_WATER L1L2MERGE( _SPORTS, 0x8 )
00101 #define DVBPSI_CONTENT_SPORTS_WINTER L1L2MERGE( _SPORTS, 0x9 )
00102 #define DVBPSI_CONTENT_SPORTS_EQUESTRIAN L1L2MERGE( _SPORTS, 0xa )
00103 #define DVBPSI_CONTENT_SPORTS_MARTIAL L1L2MERGE( _SPORTS, 0xb )
00104 #define DVBPSI_CONTENT_SPORTS_USERDEFINED L1L2MERGE( _SPORTS, 0xf )
00105
00106 #define DVBPSI_CONTENT_CHILDREN_GENERAL L1L2MERGE( _CHILDREN, 0x0 )
00107 #define DVBPSI_CONTENT_CHILDREN_PRESCHOOL L1L2MERGE( _CHILDREN, 0x1 )
00108 #define DVBPSI_CONTENT_CHILDREN_06TO14ENT L1L2MERGE( _CHILDREN, 0x2 )
00109 #define DVBPSI_CONTENT_CHILDREN_10TO16ENT L1L2MERGE( _CHILDREN, 0x3 )
00110 #define DVBPSI_CONTENT_CHILDREN_EDUCATIONAL L1L2MERGE( _CHILDREN, 0x4 )
00111 #define DVBPSI_CONTENT_CHILDREN_CARTOONS L1L2MERGE( _CHILDREN, 0x5 )
00112 #define DVBPSI_CONTENT_CHILDREN_USERDEFINED L1L2MERGE( _CHILDREN, 0xf )
00113
00114 #define DVBPSI_CONTENT_MUSIC_GENERAL L1L2MERGE( _MUSIC, 0x0 )
00115 #define DVBPSI_CONTENT_MUSIC_POPROCK L1L2MERGE( _MUSIC, 0x1 )
00116 #define DVBPSI_CONTENT_MUSIC_CLASSICAL L1L2MERGE( _MUSIC, 0x2 )
00117 #define DVBPSI_CONTENT_MUSIC_FOLK L1L2MERGE( _MUSIC, 0x3 )
00118 #define DVBPSI_CONTENT_MUSIC_JAZZ L1L2MERGE( _MUSIC, 0x4 )
00119 #define DVBPSI_CONTENT_MUSIC_OPERA L1L2MERGE( _MUSIC, 0x5 )
00120 #define DVBPSI_CONTENT_MUSIC_BALLET L1L2MERGE( _MUSIC, 0x6 )
00121 #define DVBPSI_CONTENT_MUSIC_USERDEFINED L1L2MERGE( _MUSIC, 0xf )
00122
00123 #define DVBPSI_CONTENT_CULTURE_GENERAL L1L2MERGE( _CULTURE, 0x0 )
00124 #define DVBPSI_CONTENT_CULTURE_PERFORMANCE L1L2MERGE( _CULTURE, 0x1 )
00125 #define DVBPSI_CONTENT_CULTURE_FINEARTS L1L2MERGE( _CULTURE, 0x2 )
00126 #define DVBPSI_CONTENT_CULTURE_RELIGION L1L2MERGE( _CULTURE, 0x3 )
00127 #define DVBPSI_CONTENT_CULTURE_TRADITIONAL L1L2MERGE( _CULTURE, 0x4 )
00128 #define DVBPSI_CONTENT_CULTURE_LITERATURE L1L2MERGE( _CULTURE, 0x5 )
00129 #define DVBPSI_CONTENT_CULTURE_CINEMA L1L2MERGE( _CULTURE, 0x6 )
00130 #define DVBPSI_CONTENT_CULTURE_EXPERIMENTAL L1L2MERGE( _CULTURE, 0x7 )
00131 #define DVBPSI_CONTENT_CULTURE_PRESS L1L2MERGE( _CULTURE, 0x8 )
00132 #define DVBPSI_CONTENT_CULTURE_NEWMEDIA L1L2MERGE( _CULTURE, 0x9 )
00133 #define DVBPSI_CONTENT_CULTURE_MAGAZINE L1L2MERGE( _CULTURE, 0xa )
00134 #define DVBPSI_CONTENT_CULTURE_FASHION L1L2MERGE( _CULTURE, 0xb )
00135 #define DVBPSI_CONTENT_CULTURE_USERDEFINED L1L2MERGE( _CULTURE, 0xf )
00136
00137 #define DVBPSI_CONTENT_SOCIAL_GENERAL L1L2MERGE( _SOCIAL, 0x0 )
00138 #define DVBPSI_CONTENT_SOCIAL_MAGAZINE L1L2MERGE( _SOCIAL, 0x1 )
00139 #define DVBPSI_CONTENT_SOCIAL_ADVISORY L1L2MERGE( _SOCIAL, 0x2 )
00140 #define DVBPSI_CONTENT_SOCIAL_PEOPLE L1L2MERGE( _SOCIAL, 0x3 )
00141 #define DVBPSI_CONTENT_SOCIAL_USERDEFINED L1L2MERGE( _SOCIAL, 0xf )
00142
00143 #define DVBPSI_CONTENT_EDUCATION_GENERAL L1L2MERGE( _EDUCATION, 0x0 )
00144 #define DVBPSI_CONTENT_EDUCATION_NATURE L1L2MERGE( _EDUCATION, 0x1 )
00145 #define DVBPSI_CONTENT_EDUCATION_TECHNOLOGY L1L2MERGE( _EDUCATION, 0x2 )
00146 #define DVBPSI_CONTENT_EDUCATION_MEDICINE L1L2MERGE( _EDUCATION, 0x3 )
00147 #define DVBPSI_CONTENT_EDUCATION_FOREIGN L1L2MERGE( _EDUCATION, 0x4 )
00148 #define DVBPSI_CONTENT_EDUCATION_SOCIAL L1L2MERGE( _EDUCATION, 0x5 )
00149 #define DVBPSI_CONTENT_EDUCATION_FURTHER L1L2MERGE( _EDUCATION, 0x6 )
00150 #define DVBPSI_CONTENT_EDUCATION_LANGUAGE L1L2MERGE( _EDUCATION, 0x7 )
00151 #define DVBPSI_CONTENT_EDUCATION_USERDEFINED L1L2MERGE( _EDUCATION, 0xf )
00152
00153 #define DVBPSI_CONTENT_LEISURE_GENERAL L1L2MERGE( _LEISURE, 0x0 )
00154 #define DVBPSI_CONTENT_LEISURE_TRAVEL L1L2MERGE( _LEISURE, 0x1 )
00155 #define DVBPSI_CONTENT_LEISURE_HANDICRAFT L1L2MERGE( _LEISURE, 0x2 )
00156 #define DVBPSI_CONTENT_LEISURE_MOTORING L1L2MERGE( _LEISURE, 0x3 )
00157 #define DVBPSI_CONTENT_LEISURE_FITNESS L1L2MERGE( _LEISURE, 0x4 )
00158 #define DVBPSI_CONTENT_LEISURE_COOKING L1L2MERGE( _LEISURE, 0x5 )
00159 #define DVBPSI_CONTENT_LEISURE_SHOPPING L1L2MERGE( _LEISURE, 0x6 )
00160 #define DVBPSI_CONTENT_LEISURE_GARDENING L1L2MERGE( _LEISURE, 0x7 )
00161 #define DVBPSI_CONTENT_LEISURE_USERDEFINED L1L2MERGE( _LEISURE, 0xf )
00162
00163 #define DVBPSI_CONTENT_SPECIAL_ORIGINALLANGUAGE L1L2MERGE( _SPECIAL, 0x0 )
00164 #define DVBPSI_CONTENT_SPECIAL_BLACKANDWHITE L1L2MERGE( _SPECIAL, 0x1 )
00165 #define DVBPSI_CONTENT_SPECIAL_UNPUBLISHED L1L2MERGE( _SPECIAL, 0x2 )
00166 #define DVBPSI_CONTENT_SPECIAL_LIVE L1L2MERGE( _SPECIAL, 0x3 )
00167 #define DVBPSI_CONTENT_SPECIAL_PLANOSTEREOSCOPIC L1L2MERGE( _SPECIAL, 0x4 )
00168 #define DVBPSI_CONTENT_SPECIAL_USERDEFINED L1L2MERGE( _SPECIAL, 0xb )
00169 #define DVBPSI_CONTENT_SPECIAL_USERDEFINED1 L1L2MERGE( _SPECIAL, 0xc )
00170 #define DVBPSI_CONTENT_SPECIAL_USERDEFINED2 L1L2MERGE( _SPECIAL, 0xd )
00171 #define DVBPSI_CONTENT_SPECIAL_USERDEFINED3 L1L2MERGE( _SPECIAL, 0xe )
00172 #define DVBPSI_CONTENT_SPECIAL_USERDEFINED4 L1L2MERGE( _SPECIAL, 0xf )
00174
00175
00176
00177
00188 typedef struct dvbpsi_content_s
00189 {
00190 uint8_t i_type;
00191 uint8_t i_user_byte;
00193 } dvbpsi_content_t;
00194
00199 #define DVBPSI_CONTENT_DR_MAX 64
00200
00201
00202
00203
00215 typedef struct dvbpsi_content_dr_s
00216 {
00217 uint8_t i_contents_number;
00218 dvbpsi_content_t p_content[DVBPSI_CONTENT_DR_MAX];
00220 } dvbpsi_content_dr_t;
00221
00222
00223
00224
00225
00234 dvbpsi_content_dr_t* dvbpsi_DecodeContentDr(
00235 dvbpsi_descriptor_t * p_descriptor);
00236
00237
00238
00239
00240
00251 dvbpsi_descriptor_t * dvbpsi_GenContentDr(
00252 dvbpsi_content_dr_t * p_decoded,
00253 bool b_duplicate);
00254
00255
00256 #ifdef __cplusplus
00257 };
00258 #endif
00259
00260 #else
00261 #error "Multiple inclusions of dr_54.h"
00262 #endif