#pragma once #include #include #include #include #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 m; QTimer m_timer; void closeCamera(); void transmit(); void receive(); void publishImage(const QImage& image, int64_t pts); };