Files
utun2/tools/chatgui/src/call_video_engine.h
T

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);
};