utils/dvb: Add support for LCN descriptor
authorMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 7 Jan 2012 09:28:44 +0000 (07:28 -0200)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 7 Jan 2012 13:12:16 +0000 (11:12 -0200)
While this descriptor appears on several places, it took some
time to discover the format for it. Finally found it at:

http://mumudvb.braice.net/mumudrupal/sites/default/files/Specifiche_LCN.pdf

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

index e75f0d6..287e12d 100644 (file)
@@ -80,6 +80,9 @@ static const char *descriptors[] = {
 
        [CUE_identifier_descriptor] = "CUE_identifier_descriptor",
 
+       [component_name_descriptor] = "component_name_descriptor",
+       [logical_channel_number_descriptor] = "logical_channel_number_descriptor",
+
        [conditional_access_descriptor] = "conditional_access_descriptor",
        [copyright_descriptor] = "copyright_descriptor",
        [carousel_id_descriptor] = "carousel_id_descriptor",
@@ -272,10 +275,25 @@ 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:
+               case component_name_descriptor:
                        /* FIXME: Add parser */
                        break;
 
+               case logical_channel_number_descriptor:
+               {
+                       int i;
+                       const unsigned char *p = &buf[2];
+                       for (i = 0; i < dlen; i+= 4, p+= 4) {
+                               if (dvb_desc->verbose)
+                                       printf("Service ID: 0x%04x, LCN: %d\n",
+                                              p[0] << 8 | p[1],
+                                              (p[2] << 8 | p[3]) & 0x3ff);
+                       }
+                       break;
+               }
+
                case conditional_access_descriptor:
                case copyright_descriptor:
                case carousel_id_descriptor:
index e967e98..5febfa5 100644 (file)
@@ -79,6 +79,12 @@ enum descriptors {
        /* SCTE 35 2004 */
        CUE_identifier_descriptor                       = 0x8a,
 
+       /* From http://www.etherguidesystems.com/Help/SDOs/ATSC/Semantics/Descriptors/Default.aspx */
+       component_name_descriptor                       = 0xa3,
+
+       /* From http://www.coolstf.com/tsreader/descriptors.html */
+       logical_channel_number_descriptor               = 0x83,
+
        /* ISDB Descriptors, as defined on ABNT NBR 15603-1 2007 */
 
        conditional_access_descriptor                   = 0x09,