static void *htsp_server, *htsp_server_2;
-#define HTSP_PROTO_VERSION 35
+#define HTSP_PROTO_VERSION 36
#define HTSP_ASYNC_OFF 0x00
#define HTSP_ASYNC_ON 0x01
htsmsg_add_u32(c, "channels", ssc->es_channels);
if (ssc->es_sri)
htsmsg_add_u32(c, "rate", ssc->es_sri);
+ htsmsg_add_u32(c, "rds_uecp", ssc->es_rds_uecp == 0 ? 0 : 1);
}
if (ssc->ssc_gh)
int position;
int tt_position;
int video_stream;
+ int rds_uecp;
int pcr_shared = 0;
const char *lang;
uint8_t audio_type, audio_version;
hts_stream_type = SCT_UNKNOWN;
composition_id = -1;
ancillary_id = -1;
+ rds_uecp = 0;
position = 0;
tt_position = 1000;
lang = NULL;
break;
case DVB_DESC_ANCILLARY_DATA:
- if(dlen < 1 || hts_stream_type != SCT_UNKNOWN)
+ if(dlen < 1)
break;
- if(estype == 0x89 && (ptr[0] & 0x40) == 0x40) // ancillary_data_id 0x40 : RDS via UECP
+ if((ptr[0] & 0x40) == 0x40) /* ancillary_data_id : RDS via UECP */
+ rds_uecp = 1;
+
+ if(rds_uecp && hts_stream_type == SCT_UNKNOWN && estype == 0x89)
hts_stream_type = SCT_RDS;
break;
update |= PMT_UPDATE_ANCILLARY_ID;
}
+ if(st->es_rds_uecp != rds_uecp) {
+ st->es_rds_uecp = rds_uecp;
+ update |= PMT_UPDATE_RDS_UECP;
+ }
+
if (st->es_pid == set->set_pcr_pid)
pcr_shared = 1;
}
if (update) {
tvhdebug(mt->mt_subsys, "%s: Service \"%s\" PMT (version %d) updated"
- "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
+ "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
mt->mt_name,
nicename, version,
update&PMT_UPDATE_PCR ? ", PCR PID changed":"",
update&PMT_UPDATE_CA_PROVIDER_CHANGE? ", CA provider changed":"",
update&PMT_UPDATE_CAID_DELETED ? ", CAID deleted":"",
update&PMT_UPDATE_CAID_PID ? ", CAID PID changed":"",
+ update&PMT_UPDATE_RDS_UECP ? ", RDS UECP flag changed":"",
update&PMT_REORDERED ? ", PIDs reordered":"");
}
#define PMT_UPDATE_CA_PROVIDER_CHANGE (1<<12)
#define PMT_UPDATE_CAID_DELETED (1<<13)
#define PMT_UPDATE_CAID_PID (1<<14)
-#define PMT_REORDERED (1<<15)
+#define PMT_UPDATE_RDS_UECP (1<<15)
+#define PMT_REORDERED (1<<16)
uint32_t dvb_psi_parse_pmt
(mpegts_table_t *mt, const char *nicename, elementary_set_t *set,