Browse Source

Restore the current preview when reopening stream controls

master
evgeny 3 days ago
parent
commit
198ebc0acb
  1. 7
      tools/chatgui/src/stream_publish_engine.cpp
  2. 1
      tools/chatgui/src/stream_publish_engine.h
  3. 1
      tools/chatgui/src/stream_publish_window.cpp

7
tools/chatgui/src/stream_publish_engine.cpp

@ -133,6 +133,13 @@ bool StreamPublishEngine::active() const { return m->id != 0; }
bool StreamPublishEngine::running() const { return m->running.load(); } bool StreamPublishEngine::running() const { return m->running.load(); }
uint64_t StreamPublishEngine::group() const { return m->group; } uint64_t StreamPublishEngine::group() const { return m->group; }
StreamPublishConfig StreamPublishEngine::config() const { std::lock_guard<std::mutex> guard(m->lock); return m->wanted; } StreamPublishConfig StreamPublishEngine::config() const { std::lock_guard<std::mutex> guard(m->lock); return m->wanted; }
QVariant StreamPublishEngine::previewFrame() const {
#ifdef HAVE_STREAM_CAPTURE
std::lock_guard<std::mutex> guard(m->lock); return QVariant::fromValue(m->previewFrame);
#else
return {};
#endif
}
QList<int> StreamPublishEngine::codecs() const { std::lock_guard<std::mutex> guard(m->lock); return m->codecs; } QList<int> StreamPublishEngine::codecs() const { std::lock_guard<std::mutex> guard(m->lock); return m->codecs; }
bool StreamPublishEngine::muted() const { return m->muted.load(); } bool StreamPublishEngine::muted() const { return m->muted.load(); }
void StreamPublishEngine::setMuted(bool muted) { void StreamPublishEngine::setMuted(bool muted) {

1
tools/chatgui/src/stream_publish_engine.h

@ -48,6 +48,7 @@ public:
bool running() const; bool running() const;
uint64_t group() const; uint64_t group() const;
StreamPublishConfig config() const; StreamPublishConfig config() const;
QVariant previewFrame() const;
QList<int> codecs() const; QList<int> codecs() const;
static QList<StreamVideoSource> sources(); static QList<StreamVideoSource> sources();
static bool supported(); static bool supported();

1
tools/chatgui/src/stream_publish_window.cpp

@ -38,6 +38,7 @@ StreamPublishWindow::StreamPublishWindow(StreamPublishEngine* engine, uint64_t g
#ifdef HAVE_STREAM_CAPTURE #ifdef HAVE_STREAM_CAPTURE
auto* preview = new QVideoWidget(this); m_preview = preview; auto* preview = new QVideoWidget(this); m_preview = preview;
preview->setMinimumHeight(160); preview->setAspectRatioMode(Qt::KeepAspectRatio); preview->setMinimumHeight(160); preview->setAspectRatioMode(Qt::KeepAspectRatio);
preview->videoSink()->setVideoFrame(engine->previewFrame().value<QVideoFrame>());
connect(engine, &StreamPublishEngine::previewVideoChanged, this, [this, preview](const QVariant& frame) { connect(engine, &StreamPublishEngine::previewVideoChanged, this, [this, preview](const QVariant& frame) {
auto video = frame.value<QVideoFrame>(); auto video = frame.value<QVideoFrame>();
if (!video.isValid() || isVisible()) preview->videoSink()->setVideoFrame(video); if (!video.isValid() || isVisible()) preview->videoSink()->setVideoFrame(video);

Loading…
Cancel
Save