diff --git a/src/media/video/video_input.cpp b/src/media/video/video_input.cpp index 4e87ac9daa669c0a0d0997df85e15405f7faac27..8dc2e07f07a04389a5e2e1a4fd6552610b64e76b 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 082bde5c176b4f2d6157f0b329db7e00b912f808..220ee3178f1ff8b332751bec7fd45657080087c6 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 2d50cb07916785ebcec82b3366cc622e4a934f1b..ed39906ddd107d53313d695e28f5db85f41fd09d 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 }