libdvbpsi  1.3.0
dr_54.h
Go to the documentation of this file.
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