std::vector<Representation *> reps = (*adaptIt)->getRepresentations();
Representation *candidate = select(reps, (best)?best->getBandwidth():0, bitrate);
if (candidate)
+ {
+ if (candidate->getBandwidth() > bitrate) /* none matched, returned lowest */
+ return candidate;
best = candidate;
+ }
}
return best;
}
Representation * RepresentationSelector::select(std::vector<Representation *>& reps,
uint64_t minbitrate, uint64_t maxbitrate) const
{
- Representation *candidate = NULL;
+ Representation *candidate = NULL, *lowest = NULL;
std::vector<Representation *>::const_iterator repIt;
for(repIt=reps.begin(); repIt!=reps.end(); repIt++)
{
+ if ( !lowest || (*repIt)->getBandwidth() < lowest->getBandwidth())
+ lowest = *repIt;
+
if ( (*repIt)->getBandwidth() < maxbitrate &&
(*repIt)->getBandwidth() > minbitrate )
{
minbitrate = (*repIt)->getBandwidth();
}
}
+
+ if (!candidate)
+ return candidate = lowest;
+
return candidate;
}