Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
dvbpsi: move the service enable / seen flag to PMT table (test also r…
…unning elementary streams), fixes #3167
  • Loading branch information
perexg committed Oct 17, 2015
1 parent a647f52 commit 35c0d91
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 6 deletions.
15 changes: 9 additions & 6 deletions src/input/mpegts/dvb_psi.c
Expand Up @@ -872,12 +872,6 @@ dvb_pat_callback
tvhdebug("pat", " sid %04X (%d) on pid %04X (%d)", sid, sid, pid, pid);
int save = 0;
if ((s = mpegts_service_find(mm, sid, pid, 1, &save))) {
if (!s->s_enabled && s->s_auto == SERVICE_AUTO_PAT_MISSING) {
tvhinfo("mpegts", "enabling service %s [sid %04X/%d] (found in PAT)",
s->s_nicename, s->s_dvb_service_id, s->s_dvb_service_id);
service_set_enabled((service_t *)s, 1, SERVICE_AUTO_NORMAL);
}
s->s_dvb_check_seen = dispatch_clock;
mpegts_table_add(mm, DVB_PMT_BASE, DVB_PMT_MASK, dvb_pmt_callback,
NULL, "pmt",
MT_CRC | MT_QUICKREQ | MT_ONESHOT | MT_SCANSUBS,
Expand Down Expand Up @@ -2358,6 +2352,15 @@ psi_parse_pmt
// notify descrambler that we found another CAIDs
if (update & PMT_UPDATE_NEW_CAID)
descrambler_caid_changed((service_t *)t);

if (service_has_audio_or_video((service_t *)t)) {
t->s_dvb_check_seen = dispatch_clock;
if (!t->s_enabled && t->s_auto == SERVICE_AUTO_PAT_MISSING) {
tvhinfo("mpegts", "enabling service %s [sid %04X/%d] (found in PAT and PMT)",
t->s_nicename, t->s_dvb_service_id, t->s_dvb_service_id);
service_set_enabled((service_t *)t, 1, SERVICE_AUTO_NORMAL);
}
}
}
return ret;
}
Expand Down
10 changes: 10 additions & 0 deletions src/service.c
Expand Up @@ -1071,6 +1071,16 @@ service_data_timeout(void *aux)
/**
*
*/
int
service_has_audio_or_video(service_t *t)
{
elementary_stream_t *st;
TAILQ_FOREACH(st, &t->s_components, es_link)
if (SCT_ISVIDEO(st->es_type) || SCT_ISAUDIO(st->es_type))
return 1;
return 0;
}

int
service_is_sdtv(service_t *t)
{
Expand Down
1 change: 1 addition & 0 deletions src/service.h
Expand Up @@ -530,6 +530,7 @@ void service_settings_write(service_t *t);

const char *service_servicetype_txt(service_t *t);

int service_has_audio_or_video(service_t *t);
int service_is_sdtv(service_t *t);
int service_is_hdtv(service_t *t);
int service_is_radio(service_t *t);
Expand Down

0 comments on commit 35c0d91

Please sign in to comment.