From b606f479e9c027c0289b98bfea1b30e57989ed10 Mon Sep 17 00:00:00 2001 From: Bruno Date: Tue, 25 May 2021 09:08:51 +0200 Subject: [PATCH] Bugfix change device source resolution --- DeviceSource.cpp | 3 +++ Source.cpp | 7 +++++++ Source.h | 1 + 3 files changed, 11 insertions(+) diff --git a/DeviceSource.cpp b/DeviceSource.cpp index 44cbc5c..5001758 100644 --- a/DeviceSource.cpp +++ b/DeviceSource.cpp @@ -384,10 +384,13 @@ void DeviceSource::setDevice(const std::string &devicename) pipeline << " ! videoconvert"; + dettach(); + // open gstreamer stream_->open( pipeline.str(), best.width, best.height); stream_->play(true); + // will be ready after init and one frame rendered ready_ = false; } diff --git a/Source.cpp b/Source.cpp index 1212f59..340f46b 100644 --- a/Source.cpp +++ b/Source.cpp @@ -425,6 +425,13 @@ void Source::render() } } +void Source::dettach() +{ + // replace renderbuffer_ + if (renderbuffer_) + delete renderbuffer_; + renderbuffer_ = nullptr; +} void Source::attach(FrameBuffer *renderbuffer) { diff --git a/Source.h b/Source.h index 99f1c4c..d9e7978 100644 --- a/Source.h +++ b/Source.h @@ -246,6 +246,7 @@ protected: // NB: rendershader_ is applied at render() FrameBuffer *renderbuffer_; void attach(FrameBuffer *renderbuffer); + void dettach() ; // the rendersurface draws the renderbuffer in the scene // It is associated to the rendershader for mixing effects