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
No related branches found
No related tags found
No related merge requests found
...@@ -44,14 +44,14 @@ namespace api ...@@ -44,14 +44,14 @@ namespace api
namespace video namespace video
{ {
constexpr static const char PREVIEW_RENDERER_ID[] = "local"; constexpr static const char PREVIEW_RENDERER_ID[] = "local";
using Channel = std::string; using Channel = std::string;
using Resolution = std::string; using Resolution = std::string;
using Framerate = float; using Framerate = float;
using FrameratesList = std::vector<Framerate>; 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 * This class is used by Renderer class to expose video data frame
......
...@@ -237,16 +237,24 @@ AVModel::getDeviceCapabilities(const std::string& name) const ...@@ -237,16 +237,24 @@ AVModel::getDeviceCapabilities(const std::string& name) const
VideoManager::instance().getCapabilities(name.c_str()); VideoManager::instance().getCapabilities(name.c_str());
video::Capabilities result; video::Capabilities result;
for (auto& channel : capabilites.toStdMap()) { for (auto& channel : capabilites.toStdMap()) {
std::map<video::Resolution, video::FrameratesList> channelCapabilities; video::ResRateList channelCapabilities;
for (auto& resToRates : channel.second.toStdMap()) { for (auto& resToRates : channel.second.toStdMap()) {
video::FrameratesList rates; video::FrameratesList rates;
QVectorIterator<QString> itRates(resToRates.second); QVectorIterator<QString> itRates(resToRates.second);
while (itRates.hasNext()) { while (itRates.hasNext()) {
rates.emplace_back(itRates.next().toFloat()); rates.emplace_back(itRates.next().toFloat());
} }
channelCapabilities.insert( channelCapabilities.emplace_back(
std::make_pair(resToRates.first.toStdString(), rates)); 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( result.insert(
std::make_pair(channel.first.toStdString(), channelCapabilities)); 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