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

31 lines
966 B
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);
signals:
void camerasChanged(const CallCameraDevices& devices);
void imageChanged(const QImage& image);
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);
};