33 lines
1.2 KiB
C++
33 lines
1.2 KiB
C++
#pragma once
|
|
#include <QObject>
|
|
#include <QImage>
|
|
#include <QTimer>
|
|
#include <memory>
|
|
#include "call_camera_capture.h"
|
|
|
|
// Камера изолирована в процессе; TX/RX владеют codec и получают только CPU-изображения.
|
|
class CallVideoEngine : public QObject {
|
|
Q_OBJECT
|
|
public:
|
|
explicit CallVideoEngine(QObject* parent = nullptr);
|
|
~CallVideoEngine() override;
|
|
void start(quint64 id);
|
|
void stop();
|
|
void setVideo(bool enabled, const QByteArray& camera, int width, int height, int codec);
|
|
void setPresentationDriven(bool enabled); // Окно подтверждает рисование; без окна достаточно доставки signal.
|
|
void imagePresented(quint64 serial);
|
|
signals:
|
|
void camerasChanged(const CallCameraDevices& devices);
|
|
void imageChanged(const QImage& image, quint64 serial);
|
|
void localImageChanged(const QImage& image);
|
|
void statusChanged(const QString& status);
|
|
private:
|
|
struct Impl;
|
|
std::unique_ptr<Impl> m;
|
|
QTimer m_timer;
|
|
void closeCamera();
|
|
void transmit();
|
|
void receive();
|
|
void publishImage(const QImage& image, int64_t pts);
|
|
};
|