summaryrefslogtreecommitdiff
path: root/src/yuzu/configuration/configure_camera.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/yuzu/configuration/configure_camera.cpp')
-rw-r--r--src/yuzu/configuration/configure_camera.cpp163
1 files changed, 0 insertions, 163 deletions
diff --git a/src/yuzu/configuration/configure_camera.cpp b/src/yuzu/configuration/configure_camera.cpp
deleted file mode 100644
index 3368f53f3..000000000
--- a/src/yuzu/configuration/configure_camera.cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-// Text : Copyright 2022 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-#include <memory>
-#include <QtCore>
-#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
-#include <QCameraImageCapture>
-#include <QCameraInfo>
-#endif
-#include <QStandardItemModel>
-#include <QTimer>
-
-#include "common/settings.h"
-#include "input_common/drivers/camera.h"
-#include "input_common/main.h"
-#include "ui_configure_camera.h"
-#include "yuzu/configuration/configure_camera.h"
-
-ConfigureCamera::ConfigureCamera(QWidget* parent, InputCommon::InputSubsystem* input_subsystem_)
- : QDialog(parent), input_subsystem{input_subsystem_},
- ui(std::make_unique<Ui::ConfigureCamera>()) {
- ui->setupUi(this);
-
- connect(ui->restore_defaults_button, &QPushButton::clicked, this,
- &ConfigureCamera::RestoreDefaults);
- connect(ui->preview_button, &QPushButton::clicked, this, &ConfigureCamera::PreviewCamera);
-
- auto blank_image = QImage(320, 240, QImage::Format::Format_RGB32);
- blank_image.fill(Qt::black);
- DisplayCapturedFrame(0, blank_image);
-
- LoadConfiguration();
- resize(0, 0);
-}
-
-ConfigureCamera::~ConfigureCamera() = default;
-
-void ConfigureCamera::PreviewCamera() {
-#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
- const auto index = ui->ir_sensor_combo_box->currentIndex();
- bool camera_found = false;
- const QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
- for (const QCameraInfo& cameraInfo : cameras) {
- if (input_devices[index] == cameraInfo.deviceName().toStdString() ||
- input_devices[index] == "Auto") {
- LOG_INFO(Frontend, "Selected Camera {} {}", cameraInfo.description().toStdString(),
- cameraInfo.deviceName().toStdString());
- camera = std::make_unique<QCamera>(cameraInfo);
- if (!camera->isCaptureModeSupported(QCamera::CaptureMode::CaptureViewfinder) &&
- !camera->isCaptureModeSupported(QCamera::CaptureMode::CaptureStillImage)) {
- LOG_ERROR(Frontend,
- "Camera doesn't support CaptureViewfinder or CaptureStillImage");
- continue;
- }
- camera_found = true;
- break;
- }
- }
-
- // Clear previous frame
- auto blank_image = QImage(320, 240, QImage::Format::Format_RGB32);
- blank_image.fill(Qt::black);
- DisplayCapturedFrame(0, blank_image);
-
- if (!camera_found) {
- return;
- }
-
- camera_capture = std::make_unique<QCameraImageCapture>(camera.get());
-
- if (!camera_capture->isCaptureDestinationSupported(
- QCameraImageCapture::CaptureDestination::CaptureToBuffer)) {
- LOG_ERROR(Frontend, "Camera doesn't support saving to buffer");
- return;
- }
-
- camera_capture->setCaptureDestination(QCameraImageCapture::CaptureDestination::CaptureToBuffer);
- connect(camera_capture.get(), &QCameraImageCapture::imageCaptured, this,
- &ConfigureCamera::DisplayCapturedFrame);
- camera->unload();
- if (camera->isCaptureModeSupported(QCamera::CaptureMode::CaptureViewfinder)) {
- camera->setCaptureMode(QCamera::CaptureViewfinder);
- } else if (camera->isCaptureModeSupported(QCamera::CaptureMode::CaptureStillImage)) {
- camera->setCaptureMode(QCamera::CaptureStillImage);
- }
- camera->load();
- camera->start();
-
- pending_snapshots = 0;
- is_virtual_camera = false;
-
- camera_timer = std::make_unique<QTimer>();
- connect(camera_timer.get(), &QTimer::timeout, [this] {
- // If the camera doesn't capture, test for virtual cameras
- if (pending_snapshots > 5) {
- is_virtual_camera = true;
- }
- // Virtual cameras like obs need to reset the camera every capture
- if (is_virtual_camera) {
- camera->stop();
- camera->start();
- }
- pending_snapshots++;
- camera_capture->capture();
- });
-
- camera_timer->start(250);
-#endif
-}
-
-void ConfigureCamera::DisplayCapturedFrame(int requestId, const QImage& img) {
- LOG_INFO(Frontend, "ImageCaptured {} {}", img.width(), img.height());
- const auto converted = img.scaled(320, 240, Qt::AspectRatioMode::IgnoreAspectRatio,
- Qt::TransformationMode::SmoothTransformation);
- ui->preview_box->setPixmap(QPixmap::fromImage(converted));
- pending_snapshots = 0;
-}
-
-void ConfigureCamera::changeEvent(QEvent* event) {
- if (event->type() == QEvent::LanguageChange) {
- RetranslateUI();
- }
-
- QDialog::changeEvent(event);
-}
-
-void ConfigureCamera::RetranslateUI() {
- ui->retranslateUi(this);
-}
-
-void ConfigureCamera::ApplyConfiguration() {
- const auto index = ui->ir_sensor_combo_box->currentIndex();
- Settings::values.ir_sensor_device.SetValue(input_devices[index]);
-}
-
-void ConfigureCamera::LoadConfiguration() {
- input_devices.clear();
- ui->ir_sensor_combo_box->clear();
- input_devices.push_back("Auto");
- ui->ir_sensor_combo_box->addItem(tr("Auto"));
-#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
- const auto cameras = QCameraInfo::availableCameras();
- for (const QCameraInfo& cameraInfo : cameras) {
- input_devices.push_back(cameraInfo.deviceName().toStdString());
- ui->ir_sensor_combo_box->addItem(cameraInfo.description());
- }
-#endif
-
- const auto current_device = Settings::values.ir_sensor_device.GetValue();
-
- const auto devices_it = std::find_if(
- input_devices.begin(), input_devices.end(),
- [current_device](const std::string& device) { return device == current_device; });
- const int device_index =
- devices_it != input_devices.end()
- ? static_cast<int>(std::distance(input_devices.begin(), devices_it))
- : 0;
- ui->ir_sensor_combo_box->setCurrentIndex(device_index);
-}
-
-void ConfigureCamera::RestoreDefaults() {
- ui->ir_sensor_combo_box->setCurrentIndex(0);
-}