- printf("sid %d/%d: ts_id=%d, provider_name=\"%s\", channel_name=\"%s\"\n",
- p_sdt->i_network_id, p_service->i_service_id,
- p_sdt->i_extension, provider_name,
- channel_name);
+ // Do our own deduplication, since libdvbpsi only deduplicates against
+ // the last version seen, not the entire history.
+ static std::set<channel_id> seen_channels;
+ channel_id id = { p_sdt->i_network_id, p_service->i_service_id, p_sdt->i_extension };
+ if (seen_channels.insert(id).second) {
+ last_used_packet_num = packet_num;
+ printf("sid %d/%d: ts_id=%d, provider_name=\"%s\", channel_name=\"%s\"\n",
+ p_sdt->i_network_id, p_service->i_service_id,
+ p_sdt->i_extension, provider_name,
+ channel_name);
+ }