/usr/include/dvbpsi/dr_54.h is in libdvbpsi-dev 1.2.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 | /*****************************************************************************
* dr_54.h
* Copyright (C) 2013 VideoLAN
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
/*!
* \file <dr_54.h>
* \author François Cartegnie <fcvlcdev@free.fr>
* \brief Content descriptor parsing.
*
* Content descriptor parsing, according to ETSI EN 300 468
* section 6.2.9.
*/
#ifndef _DVBPSI_DR_54_H_
#define _DVBPSI_DR_54_H_
#ifdef __cplusplus
extern "C" {
#endif
/*!
* \def DVBPSI_GetContentCategoryFromType
* \brief Extract content category by type. The value 'type' includes the
* content category (MSB) and content detail (LSB).
*/
#define DVBPSI_GetContentCategoryFromType(type) ((type) >> 4)
/*!
* \def L1L2MERGE
* \brief Merge content category and content detail in one byte. The
* category is in the topmost 4-bits (MSB) and the content detail in
* the lower 4-bits (LSB).
*/
#define L1L2MERGE(L1,L2) ( ( DVBPSI_CONTENT_CAT ## L1<<4) | (L2) )
/* Content category */
#define DVBPSI_CONTENT_CAT_UNDEFINED 0x0 /*!< Undefined content */
#define DVBPSI_CONTENT_CAT_MOVIE 0x1 /*!< Movie content */
#define DVBPSI_CONTENT_CAT_NEWS 0x2 /*!< News content */
#define DVBPSI_CONTENT_CAT_SHOW 0x3 /*!< TV Show content */
#define DVBPSI_CONTENT_CAT_SPORTS 0x4 /*!< Sports content */
#define DVBPSI_CONTENT_CAT_CHILDREN 0x5 /*!< Children content */
#define DVBPSI_CONTENT_CAT_MUSIC 0x6 /*!< Music content */
#define DVBPSI_CONTENT_CAT_CULTURE 0x7 /*!< Culture content */
#define DVBPSI_CONTENT_CAT_SOCIAL 0x8 /*!< Social content */
#define DVBPSI_CONTENT_CAT_EDUCATION 0x9 /*!< Educational content */
#define DVBPSI_CONTENT_CAT_LEISURE 0xa /*!< Leisure content */
#define DVBPSI_CONTENT_CAT_SPECIAL 0xb /*!< Special content */
#define DVBPSI_CONTENT_CAT_USERDEFINED 0xf /*!< User defined content */
/* Movie/Drama */
#define DVBPSI_CONTENT_MOVIE_GENERAL L1L2MERGE( _MOVIE, 0x0 ) /*!< General Movie */
#define DVBPSI_CONTENT_MOVIE_DETECTIVE L1L2MERGE( _MOVIE, 0x1 ) /*!< Detective Movie */
#define DVBPSI_CONTENT_MOVIE_ADVENTURE L1L2MERGE( _MOVIE, 0x2 ) /*!< Adventure Movie */
#define DVBPSI_CONTENT_MOVIE_SF L1L2MERGE( _MOVIE, 0x3 ) /*!< SciFi Movie */
#define DVBPSI_CONTENT_MOVIE_COMEDY L1L2MERGE( _MOVIE, 0x4 ) /*!< Comedy Movie */
#define DVBPSI_CONTENT_MOVIE_SOAP L1L2MERGE( _MOVIE, 0x5 ) /*!< Soap Movie */
#define DVBPSI_CONTENT_MOVIE_ROMANCE L1L2MERGE( _MOVIE, 0x6 ) /*!< Romance Movie */
#define DVBPSI_CONTENT_MOVIE_CLASSICAL L1L2MERGE( _MOVIE, 0x7 ) /*!< Classical Movie */
#define DVBPSI_CONTENT_MOVIE_ADULT L1L2MERGE( _MOVIE, 0x8 ) /*!< Adult Movie */
#define DVBPSI_CONTENT_MOVIE_USERDEFINED L1L2MERGE( _MOVIE, 0xf ) /*!< User defined Movie */
/* News/Current affairs */
#define DVBPSI_CONTENT_NEWS_GENERAL L1L2MERGE( _NEWS, 0x0 ) /*!< General News */
#define DVBPSI_CONTENT_NEWS_WEATHER L1L2MERGE( _NEWS, 0x1 ) /*!< Weather News */
#define DVBPSI_CONTENT_NEWS_MAGAZINE L1L2MERGE( _NEWS, 0x2 ) /*!< Magazine News */
#define DVBPSI_CONTENT_NEWS_DOCUMENTARY L1L2MERGE( _NEWS, 0x3 ) /*!< Documentary News */
#define DVBPSI_CONTENT_NEWS_DISCUSSION L1L2MERGE( _NEWS, 0x4 ) /*!< Discussion News */
#define DVBPSI_CONTENT_NEWS_USERDEFINED L1L2MERGE( _NEWS, 0xf ) /*!< User defined News */
/* Show/Game show */
#define DVBPSI_CONTENT_SHOW_GENERAL L1L2MERGE( _SHOW, 0x0 ) /*!< General Show */
#define DVBPSI_CONTENT_SHOW_QUIZ L1L2MERGE( _SHOW, 0x1 ) /*!< Quiz Show */
#define DVBPSI_CONTENT_SHOW_VARIETY L1L2MERGE( _SHOW, 0x2 ) /*!< Variety Show */
#define DVBPSI_CONTENT_SHOW_TALK L1L2MERGE( _SHOW, 0x3 ) /*!< Talk Show */
#define DVBPSI_CONTENT_SHOW_USERDEFINED L1L2MERGE( _SHOW, 0xf ) /*!< User defined Show */
/* Sports */
#define DVBPSI_CONTENT_SPORTS_GENERAL L1L2MERGE( _SPORTS, 0x0 ) /*!< General Sports */
#define DVBPSI_CONTENT_SPORTS_EVENTS L1L2MERGE( _SPORTS, 0x1 ) /*!< Sports Events */
#define DVBPSI_CONTENT_SPORTS_MAGAZINE L1L2MERGE( _SPORTS, 0x2 ) /*!< Sports Magazine */
#define DVBPSI_CONTENT_SPORTS_FOOTBALL L1L2MERGE( _SPORTS, 0x3 ) /*!< Football Sports */
#define DVBPSI_CONTENT_SPORTS_TENNIS L1L2MERGE( _SPORTS, 0x4 ) /*!< Tennis Sports */
#define DVBPSI_CONTENT_SPORTS_TEAM L1L2MERGE( _SPORTS, 0x5 ) /*!< Team Sports */
#define DVBPSI_CONTENT_SPORTS_ATHLETICS L1L2MERGE( _SPORTS, 0x6 ) /*!< Athletics Sports */
#define DVBPSI_CONTENT_SPORTS_MOTOR L1L2MERGE( _SPORTS, 0x7 ) /*!< Motor Sports */
#define DVBPSI_CONTENT_SPORTS_WATER L1L2MERGE( _SPORTS, 0x8 ) /*!< Water Sports */
#define DVBPSI_CONTENT_SPORTS_WINTER L1L2MERGE( _SPORTS, 0x9 ) /*!< Winter Sports */
#define DVBPSI_CONTENT_SPORTS_EQUESTRIAN L1L2MERGE( _SPORTS, 0xa ) /*!< Equestrian Sports */
#define DVBPSI_CONTENT_SPORTS_MARTIAL L1L2MERGE( _SPORTS, 0xb ) /*!< Marital Sports */
#define DVBPSI_CONTENT_SPORTS_USERDEFINED L1L2MERGE( _SPORTS, 0xf ) /*!< User defined Sports */
/* Children's/Youth */
#define DVBPSI_CONTENT_CHILDREN_GENERAL L1L2MERGE( _CHILDREN, 0x0 ) /*!< General Children */
#define DVBPSI_CONTENT_CHILDREN_PRESCHOOL L1L2MERGE( _CHILDREN, 0x1 ) /*!< Preschool Children */
#define DVBPSI_CONTENT_CHILDREN_06TO14ENT L1L2MERGE( _CHILDREN, 0x2 ) /*!< 06 to 14 years old Children */
#define DVBPSI_CONTENT_CHILDREN_10TO16ENT L1L2MERGE( _CHILDREN, 0x3 ) /*!< 10 to 16 years old Children */
#define DVBPSI_CONTENT_CHILDREN_EDUCATIONAL L1L2MERGE( _CHILDREN, 0x4 ) /*!< Educational Children */
#define DVBPSI_CONTENT_CHILDREN_CARTOONS L1L2MERGE( _CHILDREN, 0x5 ) /*!< Cartoons Children */
#define DVBPSI_CONTENT_CHILDREN_USERDEFINED L1L2MERGE( _CHILDREN, 0xf ) /*!< User defined for Children */
/* Music/Ballet/Dance */
#define DVBPSI_CONTENT_MUSIC_GENERAL L1L2MERGE( _MUSIC, 0x0 ) /*!< General Music */
#define DVBPSI_CONTENT_MUSIC_POPROCK L1L2MERGE( _MUSIC, 0x1 ) /*!< Poprock Music */
#define DVBPSI_CONTENT_MUSIC_CLASSICAL L1L2MERGE( _MUSIC, 0x2 ) /*!< Classical Music */
#define DVBPSI_CONTENT_MUSIC_FOLK L1L2MERGE( _MUSIC, 0x3 ) /*!< Folk Music */
#define DVBPSI_CONTENT_MUSIC_JAZZ L1L2MERGE( _MUSIC, 0x4 ) /*!< Jazz Music */
#define DVBPSI_CONTENT_MUSIC_OPERA L1L2MERGE( _MUSIC, 0x5 ) /*!< Opera Music */
#define DVBPSI_CONTENT_MUSIC_BALLET L1L2MERGE( _MUSIC, 0x6 ) /*!< Ballet Music */
#define DVBPSI_CONTENT_MUSIC_USERDEFINED L1L2MERGE( _MUSIC, 0xf ) /*!< User defined Music */
/* Arts/Culture */
#define DVBPSI_CONTENT_CULTURE_GENERAL L1L2MERGE( _CULTURE, 0x0 ) /*!< General Culture */
#define DVBPSI_CONTENT_CULTURE_PERFORMANCE L1L2MERGE( _CULTURE, 0x1 ) /*!< Performance Culture */
#define DVBPSI_CONTENT_CULTURE_FINEARTS L1L2MERGE( _CULTURE, 0x2 ) /*!< Fine Arts Culture */
#define DVBPSI_CONTENT_CULTURE_RELIGION L1L2MERGE( _CULTURE, 0x3 ) /*!< Religion Culture */
#define DVBPSI_CONTENT_CULTURE_TRADITIONAL L1L2MERGE( _CULTURE, 0x4 ) /*!< Traditional Culture */
#define DVBPSI_CONTENT_CULTURE_LITERATURE L1L2MERGE( _CULTURE, 0x5 ) /*!< Literature Culture */
#define DVBPSI_CONTENT_CULTURE_CINEMA L1L2MERGE( _CULTURE, 0x6 ) /*!< Cinema Culture */
#define DVBPSI_CONTENT_CULTURE_EXPERIMENTAL L1L2MERGE( _CULTURE, 0x7 ) /*!< Experimental Culture */
#define DVBPSI_CONTENT_CULTURE_PRESS L1L2MERGE( _CULTURE, 0x8 ) /*!< Press Culture */
#define DVBPSI_CONTENT_CULTURE_NEWMEDIA L1L2MERGE( _CULTURE, 0x9 ) /*!< New Media Culture */
#define DVBPSI_CONTENT_CULTURE_MAGAZINE L1L2MERGE( _CULTURE, 0xa ) /*!< Multure magzine */
#define DVBPSI_CONTENT_CULTURE_FASHION L1L2MERGE( _CULTURE, 0xb ) /*!< Fashion Culture */
#define DVBPSI_CONTENT_CULTURE_USERDEFINED L1L2MERGE( _CULTURE, 0xf ) /*!< User defined Culture */
/* Socal/Political/Economics */
#define DVBPSI_CONTENT_SOCIAL_GENERAL L1L2MERGE( _SOCIAL, 0x0 ) /*!< General Social */
#define DVBPSI_CONTENT_SOCIAL_MAGAZINE L1L2MERGE( _SOCIAL, 0x1 ) /*!< Social Magazine*/
#define DVBPSI_CONTENT_SOCIAL_ADVISORY L1L2MERGE( _SOCIAL, 0x2 ) /*!< Advisory Social */
#define DVBPSI_CONTENT_SOCIAL_PEOPLE L1L2MERGE( _SOCIAL, 0x3 ) /*!< Social People */
#define DVBPSI_CONTENT_SOCIAL_USERDEFINED L1L2MERGE( _SOCIAL, 0xf ) /*!< User defined Social */
/* Eduction/Science/Factual */
#define DVBPSI_CONTENT_EDUCATION_GENERAL L1L2MERGE( _EDUCATION, 0x0 ) /*!< General Education */
#define DVBPSI_CONTENT_EDUCATION_NATURE L1L2MERGE( _EDUCATION, 0x1 ) /*!< Nature Education */
#define DVBPSI_CONTENT_EDUCATION_TECHNOLOGY L1L2MERGE( _EDUCATION, 0x2 ) /*!< Technology Education */
#define DVBPSI_CONTENT_EDUCATION_MEDICINE L1L2MERGE( _EDUCATION, 0x3 ) /*!< Medicine Education */
#define DVBPSI_CONTENT_EDUCATION_FOREIGN L1L2MERGE( _EDUCATION, 0x4 ) /*!< Foreign Education */
#define DVBPSI_CONTENT_EDUCATION_SOCIAL L1L2MERGE( _EDUCATION, 0x5 ) /*!< Social Education */
#define DVBPSI_CONTENT_EDUCATION_FURTHER L1L2MERGE( _EDUCATION, 0x6 ) /*!< Futher Education */
#define DVBPSI_CONTENT_EDUCATION_LANGUAGE L1L2MERGE( _EDUCATION, 0x7 ) /*!< Language Education */
#define DVBPSI_CONTENT_EDUCATION_USERDEFINED L1L2MERGE( _EDUCATION, 0xf ) /*!< User defined Education */
/* Leisure/Hobbies */
#define DVBPSI_CONTENT_LEISURE_GENERAL L1L2MERGE( _LEISURE, 0x0 ) /*!< General Leisure */
#define DVBPSI_CONTENT_LEISURE_TRAVEL L1L2MERGE( _LEISURE, 0x1 ) /*!< Travel Leisure */
#define DVBPSI_CONTENT_LEISURE_HANDICRAFT L1L2MERGE( _LEISURE, 0x2 ) /*!< Handicraft Leisure */
#define DVBPSI_CONTENT_LEISURE_MOTORING L1L2MERGE( _LEISURE, 0x3 ) /*!< Motoring Leisure */
#define DVBPSI_CONTENT_LEISURE_FITNESS L1L2MERGE( _LEISURE, 0x4 ) /*!< Fitness Leisure */
#define DVBPSI_CONTENT_LEISURE_COOKING L1L2MERGE( _LEISURE, 0x5 ) /*!< Cooking Leisure */
#define DVBPSI_CONTENT_LEISURE_SHOPPING L1L2MERGE( _LEISURE, 0x6 ) /*!< Shopping Leisure */
#define DVBPSI_CONTENT_LEISURE_GARDENING L1L2MERGE( _LEISURE, 0x7 ) /*!< Gardening Leisure */
#define DVBPSI_CONTENT_LEISURE_USERDEFINED L1L2MERGE( _LEISURE, 0xf ) /*!< User defined Leisure */
/* Special characteristics */
#define DVBPSI_CONTENT_SPECIAL_ORIGINALLANGUAGE L1L2MERGE( _SPECIAL, 0x0 ) /*!< Original language Special */
#define DVBPSI_CONTENT_SPECIAL_BLACKANDWHITE L1L2MERGE( _SPECIAL, 0x1 ) /*!< Black and White Special */
#define DVBPSI_CONTENT_SPECIAL_UNPUBLISHED L1L2MERGE( _SPECIAL, 0x2 ) /*!< Unpublished Special */
#define DVBPSI_CONTENT_SPECIAL_LIVE L1L2MERGE( _SPECIAL, 0x3 ) /*!< Live Special */
#define DVBPSI_CONTENT_SPECIAL_PLANOSTEREOSCOPIC L1L2MERGE( _SPECIAL, 0x4 ) /*!< Planostereoscopic Special */
#define DVBPSI_CONTENT_SPECIAL_USERDEFINED L1L2MERGE( _SPECIAL, 0xb ) /*!< User defined Special */
#define DVBPSI_CONTENT_SPECIAL_USERDEFINED1 L1L2MERGE( _SPECIAL, 0xc ) /*!< User defined Special */
#define DVBPSI_CONTENT_SPECIAL_USERDEFINED2 L1L2MERGE( _SPECIAL, 0xd ) /*!< User defined Special */
#define DVBPSI_CONTENT_SPECIAL_USERDEFINED3 L1L2MERGE( _SPECIAL, 0xe ) /*!< User defined Special */
#define DVBPSI_CONTENT_SPECIAL_USERDEFINED4 L1L2MERGE( _SPECIAL, 0xf ) /*!< User defined Special */
/*****************************************************************************
* dvbpsi_content_t
*****************************************************************************/
/*!
* \struct dvbpsi_content_s
* \brief Content nibble structure.
*
* This structure is used since content_descriptor will contain several
* content nibbles pairs.
*/
/*!
* \typedef struct dvbpsi_content_s dvbpsi_content_t
* \brief dvbpsi_content_t type definition.
*/
typedef struct dvbpsi_content_s
{
uint8_t i_type; /*!< content nibble level 1+2 (4+4bits)*/
uint8_t i_user_byte; /*!< defined by broadcaster */
} dvbpsi_content_t;
/*!
* \def DVBPSI_CONTENT_DR_MAX
* \brief Maximum number of dvbps_content_t entries present in @see dvbpsi_content_dr_t
*/
#define DVBPSI_CONTENT_DR_MAX 64
/*****************************************************************************
* dvbpsi_content_dr_t
*****************************************************************************/
/*!
* \struct dvbpsi_content_dr_s
* \brief "content" descriptor structure.
*
* This structure is used to store a decoded "content"
* descriptor. (ETSI EN 300 468 section 6.2.9).
*/
/*!
* \typedef struct dvbpsi_content_dr_s dvbpsi_content_dr_t
* \brief dvbpsi_content_dr_t type definition.
*/
typedef struct dvbpsi_content_dr_s
{
uint8_t i_contents_number; /*!< number of content */
dvbpsi_content_t p_content[DVBPSI_CONTENT_DR_MAX]; /*!< parental rating table */
} dvbpsi_content_dr_t;
/*****************************************************************************
* dvbpsi_DecodeContentDataDr
*****************************************************************************/
/*!
* \fn dvbpsi_content_dr_t * dvbpsi_DecodeContentDr(
dvbpsi_descriptor_t * p_descriptor)
* \brief "content" descriptor decoder.
* \param p_descriptor pointer to the descriptor structure
* \return a pointer to a new "content" descriptor structure
* which contains the decoded data.
*/
dvbpsi_content_dr_t* dvbpsi_DecodeContentDr(
dvbpsi_descriptor_t * p_descriptor);
/*****************************************************************************
* dvbpsi_GenContentDataDr
*****************************************************************************/
/*!
* \fn dvbpsi_descriptor_t * dvbpsi_GenContentDr(
dvbpsi_content_dr_t * p_decoded, bool b_duplicate)
* \brief "content" descriptor generator.
* \param p_decoded pointer to a decoded "content" descriptor
* structure
* \param b_duplicate if true then duplicate the p_decoded structure into
* the descriptor
* \return a pointer to a new descriptor structure which contains encoded data.
*/
dvbpsi_descriptor_t * dvbpsi_GenContentDr(
dvbpsi_content_dr_t * p_decoded,
bool b_duplicate);
#ifdef __cplusplus
};
#endif
#else
#error "Multiple inclusions of dr_54.h"
#endif
|