Skip to content
Snippets Groups Projects
Commit e0410462 authored by Andreas Traczyk's avatar Andreas Traczyk Committed by Kateryna Kostiuk
Browse files

avmodel: sort resolutions by descending resolution width

Change-Id: I348db733613346f3c9f4e5243a354367bda4cddd
parent 18ad1c36
Branches
No related tags found
No related merge requests found
......@@ -44,14 +44,14 @@ namespace api
namespace video
{
constexpr static const char PREVIEW_RENDERER_ID[] = "local";
using Channel = std::string;
using Resolution = std::string;
using Framerate = float;
using FrameratesList = std::vector<Framerate>;
using Capabilities = std::map<Channel, std::map<Resolution, FrameratesList>>;
using ResRateList = std::vector<std::pair<Resolution, FrameratesList>>;
using Capabilities = std::map<Channel, ResRateList>;
/**
* This class is used by Renderer class to expose video data frame
......
......@@ -237,16 +237,24 @@ AVModel::getDeviceCapabilities(const std::string& name) const
VideoManager::instance().getCapabilities(name.c_str());
video::Capabilities result;
for (auto& channel : capabilites.toStdMap()) {
std::map<video::Resolution, video::FrameratesList> channelCapabilities;
video::ResRateList channelCapabilities;
for (auto& resToRates : channel.second.toStdMap()) {
video::FrameratesList rates;
QVectorIterator<QString> itRates(resToRates.second);
while (itRates.hasNext()) {
rates.emplace_back(itRates.next().toFloat());
}
channelCapabilities.insert(
channelCapabilities.emplace_back(
std::make_pair(resToRates.first.toStdString(), rates));
}
// sort by resolution widths
std::sort(channelCapabilities.begin(), channelCapabilities.end(),
[](const std::pair<video::Resolution, video::FrameratesList>& lhs,
const std::pair<video::Resolution, video::FrameratesList>& rhs) {
auto lhsWidth = stoull(lhs.first.substr(0, lhs.first.find("x")));
auto rhsWidth = stoull(rhs.first.substr(0, rhs.first.find("x")));
return lhsWidth > rhsWidth;
});
result.insert(
std::make_pair(channel.first.toStdString(), channelCapabilities));
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment