libdvbpsi
1.3.0
|
00001 /***************************************************************************** 00002 * dr_54.h 00003 * Copyright (C) 2013 VideoLAN 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Lesser General Public 00007 * License as published by the Free Software Foundation; either 00008 * version 2.1 of the License, or (at your option) any later version. 00009 * 00010 * This library is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Lesser General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Lesser General Public 00016 * License along with this library; if not, write to the Free Software 00017 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 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 /* Content category */ 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 /* Movie/Drama */ 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 /* News/Current affairs */ 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 /* Show/Game show */ 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 /* Sports */ 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 /* Children's/Youth */ 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 /* Music/Ballet/Dance */ 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 /* Arts/Culture */ 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 /* Socal/Political/Economics */ 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 /* Eduction/Science/Factual */ 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 /* Leisure/Hobbies */ 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 /* Special characteristics */ 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 * dvbpsi_content_t 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 * dvbpsi_content_dr_t 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 * dvbpsi_DecodeContentDataDr 00225 *****************************************************************************/ 00234 dvbpsi_content_dr_t* dvbpsi_DecodeContentDr( 00235 dvbpsi_descriptor_t * p_descriptor); 00236 00237 00238 /***************************************************************************** 00239 * dvbpsi_GenContentDataDr 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