From 33a89236db89adff05190cc40fd7f9b00d56fc4d Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Fri, 6 Jan 2012 20:16:49 -0200 Subject: [PATCH] utils/dvb: Add support for detecting the virtual channel on ISDB-T Signed-off-by: Mauro Carvalho Chehab --- utils/dvb/descriptors.c | 10 ++++++++-- utils/dvb/dvbv5-scan.c | 6 +++++- utils/dvb/libscan.h | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/utils/dvb/descriptors.c b/utils/dvb/descriptors.c index 782d2de..ee01157 100644 --- a/utils/dvb/descriptors.c +++ b/utils/dvb/descriptors.c @@ -272,7 +272,6 @@ static void parse_descriptor(struct dvb_descriptors *dvb_desc, case CA_EMM_TS_descriptor: case CA_contract_information_descriptor: case CA_service_descriptor: - case TS_Information_descriptior: case extended_broadcaster_descriptor: case logo_transmission_descriptor: case basic_local_event_descriptor: @@ -293,11 +292,18 @@ static void parse_descriptor(struct dvb_descriptors *dvb_desc, case service_group_descriptor: case carousel_compatible_composite_Descriptor: case conditional_playback_descriptor: - case ISDBT_delivery_system_descriptor: case partial_reception_descriptor: case emergency_information_descriptor: case data_component_descriptor: case system_management_descriptor: + break; + + case TS_Information_descriptior: + dvb_desc->nit_table.virtual_channel = buf[2]; + if (dvb_desc->verbose) + printf("Virtual channel = %d\n", buf[2]); + break; + case ISDBT_delivery_system_descriptor: /* FIXME: Add parser for ISDB descriptors */ break; diff --git a/utils/dvb/dvbv5-scan.c b/utils/dvb/dvbv5-scan.c index 49b7885..6c0e0c3 100644 --- a/utils/dvb/dvbv5-scan.c +++ b/utils/dvb/dvbv5-scan.c @@ -221,7 +221,11 @@ static int run_scan(const char *fname, int format, for (i = 0; i < dvb_desc->sdt_table.service_table_len; i++) { struct service_table *service_table = &dvb_desc->sdt_table.service_table[i]; if (service_table->service_name) - printf("Service #%d: %s\n", i, service_table->service_name); + printf("Service #%d: %s", i, service_table->service_name); + if (dvb_desc->nit_table.virtual_channel) + printf(" channel %d", + dvb_desc->nit_table.virtual_channel); + printf("\n"); } store_dvb_channel(&dvb_file_new, parms, dvb_desc, 0); diff --git a/utils/dvb/libscan.h b/utils/dvb/libscan.h index e37d446..5d60bf4 100644 --- a/utils/dvb/libscan.h +++ b/utils/dvb/libscan.h @@ -34,6 +34,7 @@ struct nit_table { char *network_name, *network_alias; struct transport_table *tr_table; unsigned tr_table_len; + unsigned virtual_channel; }; struct service_table { -- 2.7.4