From 6624a4285c2f6a25c4c37d2c84000ac03404336a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96man?= Date: Wed, 16 Apr 2008 05:31:18 +0000 Subject: [PATCH] Only add PMT demuxer if we actually created the transport in the PAT table scan --- dvb.c | Bin 12652 -> 12759 bytes dvb.h | 2 +- dvb_tables.c | 11 ++++++----- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/dvb.c b/dvb.c index ee4dca5fce4cdb3734c10e7f82966ea87c4b03b9..1906fb26d79ed3e421dc9154a1a30525ff15e1b4 100644 GIT binary patch delta 129 zcmaEpbUk^)B|ae?E>2Db1%=GK5(TZ~qSVBa)X5k5^i(p_G$6bb1w~s0zfd0^O)j7^ mn3@y?TLpv3d(<5#Tl2>gqu6lsRQ}zvY&u}0HV5d+umAv5-X_=p delta 29 lcmcbf{3dC`CBDf|`E)0%Y1m9I=a1j~pMRU|=H0q7ECACX46pzI diff --git a/dvb.h b/dvb.h index 4e01653d..16db8e98 100644 --- a/dvb.h +++ b/dvb.h @@ -48,7 +48,7 @@ void dvb_fe_start(th_dvb_adapter_t *tda); void tdmi_check_scan_status(th_dvb_mux_instance_t *tdmi); th_transport_t *dvb_find_transport(th_dvb_mux_instance_t *tdmi, - uint16_t sid, int pmt_pid); + uint16_t sid, int pmt_pid, int *created); th_dvb_mux_instance_t *dvb_mux_create(th_dvb_adapter_t *tda, struct dvb_frontend_parameters *fe_param, diff --git a/dvb_tables.c b/dvb_tables.c index c59e56e9..43a43de6 100644 --- a/dvb_tables.c +++ b/dvb_tables.c @@ -240,7 +240,7 @@ dvb_eit_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, len -= 11; ptr += 11; - t = dvb_find_transport(tdmi, serviceid, 0); + t = dvb_find_transport(tdmi, serviceid, 0, NULL); if(t == NULL) return; @@ -395,7 +395,7 @@ dvb_sdt_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, snprintf(chname0, sizeof(chname0), "noname-sid-0x%x", service_id); } - t = dvb_find_transport(tdmi, service_id, 0); + t = dvb_find_transport(tdmi, service_id, 0, NULL); if(t == NULL) break; @@ -437,7 +437,7 @@ dvb_pat_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, { uint16_t service, pmt, tid; th_transport_t *t; - + int created; if(len < 5) return; @@ -451,8 +451,9 @@ dvb_pat_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, pmt = (ptr[2] & 0x1f) << 8 | ptr[3]; if(service != 0) { - t = dvb_find_transport(tdmi, service, pmt); - dvb_table_add_transport(tdmi, t, pmt); /* Add PMT to our table scanner */ + t = dvb_find_transport(tdmi, service, pmt, &created); + if(created) /* Add PMT to our table scanner */ + dvb_table_add_transport(tdmi, t, pmt); } ptr += 4; len -= 4;