utils/dvb: Add a few other descriptors
authorMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 7 Jan 2012 09:07:39 +0000 (07:07 -0200)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 7 Jan 2012 13:12:16 +0000 (11:12 -0200)
with the help of libdvbpsi, added a few other descriptors found at
some ISDB-T  channels.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
utils/dvb/descriptors.c
utils/dvb/descriptors.h

index 881fe6f..e75f0d6 100644 (file)
@@ -9,6 +9,10 @@ static char *default_charset = "iso-8859-1";
 static char *output_charset = "utf-8";
 
 static const char *descriptors[] = {
+       [0 ...255 ] = "Unknown descriptor ",
+       [dvbpsi_registration_descriptor] = "dvbpsi_registration_descriptor",
+       [ds_alignment_descriptor] = "ds_alignment_descriptor",
+       [iso639_language_descriptor] = "iso639_language_descriptor",
        [network_name_descriptor] = "network_name_descriptor",
        [service_list_descriptor] = "service_list_descriptor",
        [stuffing_descriptor] = "stuffing_descriptor",
@@ -73,6 +77,9 @@ static const char *descriptors[] = {
        [XAIT_location_descriptor] = "XAIT_location_descriptor",
        [FTA_content_management_descriptor] = "FTA_content_management_descriptor",
        [extension_descriptor] = "extension_descriptor",
+
+       [CUE_identifier_descriptor] = "CUE_identifier_descriptor",
+
        [conditional_access_descriptor] = "conditional_access_descriptor",
        [copyright_descriptor] = "copyright_descriptor",
        [carousel_id_descriptor] = "carousel_id_descriptor",
@@ -149,6 +156,19 @@ static void parse_descriptor(struct dvb_descriptors *dvb_desc,
                        printf("%s (0x%02x), len %d\n",
                               descriptors[buf[0]], buf[0], buf[1]);
                switch(buf[0]) {
+               case iso639_language_descriptor:
+               {
+                       int i;
+                       const unsigned char *p = &buf[2];
+
+                       if (dvb_desc->verbose) {
+                               for (i = 0; i < dlen; i+= 4, p += 4) {
+                                       printf("Language = %c%c%c, amode = %d\n",
+                                               p[0], p[1], p[2], p[3]);
+                               }
+                       }
+                       break;
+               }
                case network_name_descriptor:
                        parse_string(&dvb_desc->nit_table.network_name,
                                &dvb_desc->nit_table.network_alias,
@@ -190,6 +210,8 @@ static void parse_descriptor(struct dvb_descriptors *dvb_desc,
                        }
                        break;
                }
+               case ds_alignment_descriptor:
+               case dvbpsi_registration_descriptor:
                case service_list_descriptor:
                case stuffing_descriptor:
                case satellite_delivery_system_descriptor:
@@ -250,6 +272,7 @@ static void parse_descriptor(struct dvb_descriptors *dvb_desc,
                case XAIT_location_descriptor:
                case FTA_content_management_descriptor:
                case extension_descriptor:
+               case CUE_identifier_descriptor:
                        /* FIXME: Add parser */
                        break;
 
index c6154ed..e967e98 100644 (file)
@@ -3,6 +3,11 @@
  */
 
 enum descriptors {
+       /* ISO/IEC 13818-1 */
+
+       dvbpsi_registration_descriptor                  = 0x05,
+       ds_alignment_descriptor                         = 0x06,
+       iso639_language_descriptor                      = 0x0a,
 
        /* ETSI EN 300 468 V1.11.1 (2010-04) */
 
@@ -71,6 +76,9 @@ enum descriptors {
        FTA_content_management_descriptor               = 0x7e,
        extension_descriptor                            = 0x7f,
 
+       /* SCTE 35 2004 */
+       CUE_identifier_descriptor                       = 0x8a,
+
        /* ISDB Descriptors, as defined on ABNT NBR 15603-1 2007 */
 
        conditional_access_descriptor                   = 0x09,