From 0fd2aaf66fa4a630d5ad3a5311869f389a8caec8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96man?= Date: Wed, 6 Feb 2013 03:22:06 -0500 Subject: [PATCH] ATSC: In VCT, if tsid is 0, assume it's current mux --- src/dvb/dvb_tables.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/dvb/dvb_tables.c b/src/dvb/dvb_tables.c index 1a8fee98..2dbe5474 100644 --- a/src/dvb/dvb_tables.c +++ b/src/dvb/dvb_tables.c @@ -967,6 +967,7 @@ static int atsc_vct_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, uint8_t tableid, void *opaque) { + th_dvb_mux_instance_t *tdmi0 = tdmi; th_dvb_adapter_t *tda = tdmi->tdmi_adapter; service_t *t; int numch; @@ -1000,15 +1001,18 @@ atsc_vct_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, tsid = (ptr[22] << 8) | ptr[23]; onid = (ptr[24] << 8) | ptr[25]; - - /* Search all muxes on adapter */ - LIST_FOREACH(tdmi, &tda->tda_muxes, tdmi_adapter_link) - if(tdmi->tdmi_transport_stream_id == tsid && - tdmi->tdmi_network_id == onid); - break; - - if(tdmi == NULL) - continue; + + if(tsid == 0) { + tdmi = tdmi0; + } else { + /* Search all muxes on adapter */ + LIST_FOREACH(tdmi, &tda->tda_muxes, tdmi_adapter_link) { + if(tdmi->tdmi_transport_stream_id == tsid && tdmi->tdmi_network_id == onid) + break; + } + if(tdmi == NULL) + continue; + } service_id = (ptr[24] << 8) | ptr[25]; if((t = dvb_service_find(tdmi, service_id, 0, NULL)) == NULL)