rpcsx/rpcs3/rpcs3qt/qt_camera_handler.h

40 lines
1.1 KiB
C
Raw Normal View History

2021-10-13 20:18:18 +02:00
#pragma once
#include "Emu/Io/camera_handler_base.h"
2021-05-22 10:42:05 +02:00
#include "qt_camera_video_sink.h"
#include "qt_camera_error_handler.h"
2021-10-13 20:18:18 +02:00
#include <QCamera>
2021-05-22 10:42:05 +02:00
#include <QMediaCaptureSession>
#include <QVideoSink>
2021-10-13 20:18:18 +02:00
class qt_camera_handler final : public camera_handler_base
2021-10-13 20:18:18 +02:00
{
public:
qt_camera_handler();
virtual ~qt_camera_handler();
2021-05-22 10:42:05 +02:00
void set_camera(const QCameraDevice& camera_info);
2021-10-13 20:18:18 +02:00
void open_camera() override;
void close_camera() override;
void start_camera() override;
void stop_camera() override;
void set_format(s32 format, u32 bytesize) override;
2021-10-13 20:18:18 +02:00
void set_frame_rate(u32 frame_rate) override;
void set_resolution(u32 width, u32 height) override;
void set_mirrored(bool mirrored) override;
u64 frame_number() const override;
camera_handler_state get_image(u8* buf, u64 size, u32& width, u32& height, u64& frame_number, u64& bytes_read) override;
2021-10-13 20:18:18 +02:00
private:
2021-05-22 10:42:05 +02:00
void reset();
2021-10-13 20:18:18 +02:00
void update_camera_settings();
std::string m_camera_id;
std::shared_ptr<QCamera> m_camera;
2021-05-22 10:42:05 +02:00
std::unique_ptr<QMediaCaptureSession> m_media_capture_session;
std::unique_ptr<qt_camera_video_sink> m_video_sink;
std::unique_ptr<qt_camera_error_handler> m_error_handler;
2021-10-13 20:18:18 +02:00
};