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