From 0e36d0b352d543437f0f744230c2eb8c0bc77f36 Mon Sep 17 00:00:00 2001 From: AGS5 <alinegondimsantos@gmail.com> Date: Mon, 15 Jun 2020 14:49:14 -0400 Subject: [PATCH] plugin: modify preview source Change-Id: I26660bccd3ab150687c118e22edc27d9e9f9e333 --- src/media/video/video_input.cpp | 21 +++++++++++++++++++++ src/media/video/video_input.h | 5 ++++- src/media/video/video_rtp_session.cpp | 7 +++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/media/video/video_input.cpp b/src/media/video/video_input.cpp index 4e87ac9daa..8dc2e07f07 100644 --- a/src/media/video/video_input.cpp +++ b/src/media/video/video_input.cpp @@ -68,9 +68,13 @@ VideoInput::VideoInput(VideoInputMode inputMode, const std::string& id_) inputMode_ = VideoInputMode::ManagedByDaemon; #endif } +#ifdef __ANDROID__ + sink_ = Manager::instance().createSinkClient(id_); +#else if (inputMode_ == VideoInputMode::ManagedByDaemon) { sink_ = Manager::instance().createSinkClient(id_); } +#endif } VideoInput::~VideoInput() @@ -591,6 +595,23 @@ VideoInput::setSink(const std::string& sinkId) sink_ = Manager::instance().createSinkClient(sinkId); } +void VideoInput::setFrameSize(const int width, const int height) +{ + /* Signal the client about readable sink */ + sink_->setFrameSize(width, height); +} + +void VideoInput::setupSink() +{ + setup(); +} + +void VideoInput::stopSink() +{ + detach(sink_.get()); + sink_->stop(); +} + void VideoInput::updateStartTime(int64_t startTime) { diff --git a/src/media/video/video_input.h b/src/media/video/video_input.h index 082bde5c17..220ee3178f 100644 --- a/src/media/video/video_input.h +++ b/src/media/video/video_input.h @@ -74,7 +74,10 @@ public: void setPaused(bool paused) { paused_ = paused; } - void setSeekTime(int64_t time); + void setSeekTime(int64_t time); + void setFrameSize(const int width, const int height); + void setupSink(); + void stopSink(); std::shared_future<DeviceParams> switchInput(const std::string& resource); #if VIDEO_CLIENT_INPUT diff --git a/src/media/video/video_rtp_session.cpp b/src/media/video/video_rtp_session.cpp index 2d50cb0791..ed39906ddd 100644 --- a/src/media/video/video_rtp_session.cpp +++ b/src/media/video/video_rtp_session.cpp @@ -120,6 +120,13 @@ void VideoRtpSession::startSender() JAMI_WARN("Can't lock video input"); return; } + +#ifdef __ANDROID__ + if (auto input1 = std::static_pointer_cast<VideoInput>(videoLocal_)) { + input1->setupSink(); + input1->setFrameSize(localVideoParams_.width, localVideoParams_.height); + } +#endif } -- GitLab