From 5324e768c31643fa1741bf94105c4604be482a7c Mon Sep 17 00:00:00 2001 From: initramfs Date: Fri, 5 Aug 2016 01:15:08 +0800 Subject: [PATCH 1/2] fix(avform): add missing "first" video mode back to video modes This commit fixes the fact that the selectBestModes() function strips off the first video mode, often a 1080p or 720p mode. Fixes #3588. --- src/widget/form/settings/avform.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/widget/form/settings/avform.cpp b/src/widget/form/settings/avform.cpp index cd3b75a4d..bbc433622 100644 --- a/src/widget/form/settings/avform.cpp +++ b/src/widget/form/settings/avform.cpp @@ -247,12 +247,22 @@ void AVForm::selectBestModes(QVector &allVideoModes) for (auto it = bestModeInds.rbegin(); it != bestModeInds.rend(); ++it) { VideoMode mode = allVideoModes[it->second]; - int size = getModeSize(mode); - auto result = std::find_if(newVideoModes.cbegin(), newVideoModes.cend(), - [size](VideoMode mode) { return getModeSize(mode) == size; }); - if (result == newVideoModes.end()) + if(newVideoModes.empty()) + { newVideoModes.push_back(mode); + } + else + { + int size = getModeSize(mode); + auto result = std::find_if(newVideoModes.cbegin(), newVideoModes.cend(), + [size](VideoMode mode) { return getModeSize(mode) == size; }); + + if(result == newVideoModes.end()) + { + newVideoModes.push_back(mode); + } + } } allVideoModes = newVideoModes; } From 192c1e8ff53e6c29c92d4e99107c70c9f9ae00cc Mon Sep 17 00:00:00 2001 From: initramfs Date: Fri, 5 Aug 2016 02:53:14 +0800 Subject: [PATCH 2/2] fix(avform): display true video height in video mode selection --- src/widget/form/settings/avform.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/widget/form/settings/avform.cpp b/src/widget/form/settings/avform.cpp index bbc433622..f53107250 100644 --- a/src/widget/form/settings/avform.cpp +++ b/src/widget/form/settings/avform.cpp @@ -248,7 +248,7 @@ void AVForm::selectBestModes(QVector &allVideoModes) { VideoMode mode = allVideoModes[it->second]; - if(newVideoModes.empty()) + if (newVideoModes.empty()) { newVideoModes.push_back(mode); } @@ -258,10 +258,8 @@ void AVForm::selectBestModes(QVector &allVideoModes) auto result = std::find_if(newVideoModes.cbegin(), newVideoModes.cend(), [size](VideoMode mode) { return getModeSize(mode) == size; }); - if(result == newVideoModes.end()) - { + if (result == newVideoModes.end()) newVideoModes.push_back(mode); - } } } allVideoModes = newVideoModes; @@ -281,7 +279,7 @@ void AVForm::fillCameraModesComboBox() qDebug("width: %d, height: %d, FPS: %f, pixel format: %s\n", mode.width, mode.height, mode.FPS, pixelFormat.toStdString().c_str()); if (mode.height && mode.width) - str += QString("%1p").arg(getModeSize(mode)); + str += QString("%1p").arg(mode.height); else str += tr("Default resolution");