getservices.cpp: fix e2tv streaming on cable boxes

This commit is contained in:
GetAway
2024-04-29 09:58:54 +02:00
parent 648dc493ad
commit 9321aaada0

View File

@@ -221,7 +221,7 @@ CZapitChannel * CServiceManager::FindChannelByName(std::string name)
} }
CZapitChannel * CServiceManager::FindChannelByPattern(std::string pattern) CZapitChannel* CServiceManager::FindChannelByPattern(std::string pattern)
{ {
for (channel_map_iterator_t it = allchans.begin(); it != allchans.end(); ++it) { for (channel_map_iterator_t it = allchans.begin(); it != allchans.end(); ++it) {
//INFO("searching for %s in %s", pattern.c_str(), it->second.getName().c_str()); //INFO("searching for %s in %s", pattern.c_str(), it->second.getName().c_str());
@@ -244,21 +244,29 @@ CZapitChannel * CServiceManager::FindCurrentChannel(const t_channel_id channel_i
CZapitChannel * CServiceManager::FindChannel48(const t_channel_id channel_id) CZapitChannel * CServiceManager::FindChannel48(const t_channel_id channel_id)
{ {
for (channel_map_iterator_t it = allchans.begin(); it != allchans.end(); ++it) { for (channel_map_iterator_t it = allchans.begin(); it != allchans.end(); ++it) {
if((it->second.getChannelID() & 0xFFFFFFFFFFFFULL) == (channel_id & 0xFFFFFFFFFFFFULL)) if ((it->second.getChannelID() & 0xFFFFFFFFFFFFULL) == (channel_id & 0xFFFFFFFFFFFFULL))
return &it->second; return &(it->second);
} }
return NULL; return NULL;
} }
CZapitChannel* CServiceManager::FindChannel48Pos(const t_channel_id channel_id, CZapitChannel * CServiceManager::FindChannel48Pos(const t_channel_id channel_id,
const t_satellite_position pos) const t_satellite_position pos)
{ {
for (channel_map_iterator_t it = allchans.begin(); it != allchans.end(); ++it) { for (channel_map_iterator_t it = allchans.begin(); it != allchans.end(); ++it) {
CZapitChannel *ret = &it->second; CZapitChannel &channel = it->second;
if ((ret->getChannelID() & 0xFFFFFFFFFFFFULL) != (channel_id & 0xFFFFFFFFFFFFULL)) if (CFrontend::isCable(channel.delsys))
continue; {
if (pos == ret->getSatellitePosition()) if ((channel.getChannelID() & 0xFFFFFFFFFFFFULL) == (channel_id & 0xFFFFFFFFFFFFULL))
return ret; return &channel;
}
else
{
if ((channel.getChannelID() & 0xFFFFFFFFFFFFULL) != (channel_id & 0xFFFFFFFFFFFFULL))
continue;
if (pos == channel.getSatellitePosition())
return &channel;
}
} }
return NULL; return NULL;
} }