Skip to content
Snippets Groups Projects
Commit c5608b93 authored by Adrien Béraud's avatar Adrien Béraud
Browse files

videomanager: add deviceId to RequestKeyFrame

Change-Id: Ie8cdb2a771a64dbdb9384fbbfadb255bec64d9c6
parent f3af8193
No related branches found
No related tags found
No related merge requests found
...@@ -311,7 +311,7 @@ void init(ConfigurationCallback* confM, Callback* callM, PresenceCallback* presM ...@@ -311,7 +311,7 @@ void init(ConfigurationCallback* confM, Callback* callM, PresenceCallback* presM
exportable_callback<VideoSignal::GetCameraInfo>(bind(&VideoCallback::getCameraInfo, videoM, _1, _2, _3, _4)), exportable_callback<VideoSignal::GetCameraInfo>(bind(&VideoCallback::getCameraInfo, videoM, _1, _2, _3, _4)),
exportable_callback<VideoSignal::SetParameters>(bind(&VideoCallback::setParameters, videoM, _1, _2, _3, _4, _5)), exportable_callback<VideoSignal::SetParameters>(bind(&VideoCallback::setParameters, videoM, _1, _2, _3, _4, _5)),
exportable_callback<VideoSignal::SetBitrate>(bind(&VideoCallback::setBitrate, videoM, _1, _2)), exportable_callback<VideoSignal::SetBitrate>(bind(&VideoCallback::setBitrate, videoM, _1, _2)),
exportable_callback<VideoSignal::RequestKeyFrame>(bind(&VideoCallback::requestKeyFrame, videoM)), exportable_callback<VideoSignal::RequestKeyFrame>(bind(&VideoCallback::requestKeyFrame, videoM, _1)),
exportable_callback<VideoSignal::StartCapture>(bind(&VideoCallback::startCapture, videoM, _1)), exportable_callback<VideoSignal::StartCapture>(bind(&VideoCallback::startCapture, videoM, _1)),
exportable_callback<VideoSignal::StopCapture>(bind(&VideoCallback::stopCapture, videoM, _1)), exportable_callback<VideoSignal::StopCapture>(bind(&VideoCallback::stopCapture, videoM, _1)),
exportable_callback<VideoSignal::DecodingStarted>(bind(&VideoCallback::decodingStarted, videoM, _1, _2, _3, _4, _5)), exportable_callback<VideoSignal::DecodingStarted>(bind(&VideoCallback::decodingStarted, videoM, _1, _2, _3, _4, _5)),
......
...@@ -45,7 +45,7 @@ public: ...@@ -45,7 +45,7 @@ public:
virtual void getCameraInfo(const std::string& device, std::vector<int> *formats, std::vector<unsigned> *sizes, std::vector<unsigned> *rates) {} virtual void getCameraInfo(const std::string& device, std::vector<int> *formats, std::vector<unsigned> *sizes, std::vector<unsigned> *rates) {}
virtual void setParameters(const std::string&, const int format, const int width, const int height, const int rate) {} virtual void setParameters(const std::string&, const int format, const int width, const int height, const int rate) {}
virtual void setBitrate(const std::string&, const int bitrate) {} virtual void setBitrate(const std::string&, const int bitrate) {}
virtual void requestKeyFrame(){} virtual void requestKeyFrame(const std::string& camid){}
virtual void startCapture(const std::string& camid) {} virtual void startCapture(const std::string& camid) {}
virtual void stopCapture(const std::string& camid) {} virtual void stopCapture(const std::string& camid) {}
virtual void decodingStarted(const std::string& id, const std::string& shm_path, int w, int h, bool is_mixer) {} virtual void decodingStarted(const std::string& id, const std::string& shm_path, int w, int h, bool is_mixer) {}
...@@ -443,7 +443,7 @@ public: ...@@ -443,7 +443,7 @@ public:
virtual void getCameraInfo(const std::string& device, std::vector<int> *formats, std::vector<unsigned> *sizes, std::vector<unsigned> *rates){} virtual void getCameraInfo(const std::string& device, std::vector<int> *formats, std::vector<unsigned> *sizes, std::vector<unsigned> *rates){}
virtual void setParameters(const std::string&, const int format, const int width, const int height, const int rate) {} virtual void setParameters(const std::string&, const int format, const int width, const int height, const int rate) {}
virtual void setBitrate(const std::string&, const int bitrate) {} virtual void setBitrate(const std::string&, const int bitrate) {}
virtual void requestKeyFrame(){} virtual void requestKeyFrame(const std::string& camid){}
virtual void startCapture(const std::string& camid) {} virtual void startCapture(const std::string& camid) {}
virtual void stopCapture(const std::string& camid) {} virtual void stopCapture(const std::string& camid) {}
virtual void decodingStarted(const std::string& id, const std::string& shm_path, int w, int h, bool is_mixer) {} virtual void decodingStarted(const std::string& id, const std::string& shm_path, int w, int h, bool is_mixer) {}
......
...@@ -283,12 +283,12 @@ struct DRING_PUBLIC VideoSignal ...@@ -283,12 +283,12 @@ struct DRING_PUBLIC VideoSignal
struct DRING_PUBLIC RequestKeyFrame struct DRING_PUBLIC RequestKeyFrame
{ {
constexpr static const char* name = "RequestKeyFrame"; constexpr static const char* name = "RequestKeyFrame";
using cb_type = void(); using cb_type = void(const std::string& /*device*/);
}; };
struct DRING_PUBLIC SetBitrate struct DRING_PUBLIC SetBitrate
{ {
constexpr static const char* name = "SetBitrate"; constexpr static const char* name = "SetBitrate";
using cb_type = void(const std::string& device, const int bitrate); using cb_type = void(const std::string& /*device*/, const int bitrate);
}; };
#endif #endif
struct DRING_PUBLIC StartCapture struct DRING_PUBLIC StartCapture
......
...@@ -306,8 +306,13 @@ void ...@@ -306,8 +306,13 @@ void
VideoRtpSession::forceKeyFrame() VideoRtpSession::forceKeyFrame()
{ {
std::lock_guard<std::recursive_mutex> lock(mutex_); std::lock_guard<std::recursive_mutex> lock(mutex_);
#if __ANDROID__
if (videoLocal_)
emitSignal<DRing::VideoSignal::RequestKeyFrame>(videoLocal_->getName());
#else
if (sender_) if (sender_)
sender_->forceKeyFrame(); sender_->forceKeyFrame();
#endif
} }
void void
......
...@@ -39,6 +39,7 @@ class MediaRecorder; ...@@ -39,6 +39,7 @@ class MediaRecorder;
namespace jami { namespace jami {
namespace video { namespace video {
class VideoInput;
class VideoMixer; class VideoMixer;
class VideoSender; class VideoSender;
class VideoReceiveThread; class VideoReceiveThread;
...@@ -100,7 +101,7 @@ public: ...@@ -100,7 +101,7 @@ public:
bool hasConference() { return conference_; } bool hasConference() { return conference_; }
std::shared_ptr<VideoFrameActiveWriter>& getVideoLocal() { return videoLocal_; } std::shared_ptr<VideoInput>& getVideoLocal() { return videoLocal_; }
std::shared_ptr<VideoMixer>& getVideoMixer() { return videoMixer_; } std::shared_ptr<VideoMixer>& getVideoMixer() { return videoMixer_; }
...@@ -129,7 +130,7 @@ private: ...@@ -129,7 +130,7 @@ private:
= std::make_shared<VideoFrameActiveWriter>(); = std::make_shared<VideoFrameActiveWriter>();
Conference* conference_ {nullptr}; Conference* conference_ {nullptr};
std::shared_ptr<VideoMixer> videoMixer_; std::shared_ptr<VideoMixer> videoMixer_;
std::shared_ptr<VideoFrameActiveWriter> videoLocal_; std::shared_ptr<VideoInput> videoLocal_;
uint16_t initSeqVal_ = 0; uint16_t initSeqVal_ = 0;
std::function<void(void)> requestKeyFrameCallback_; std::function<void(void)> requestKeyFrameCallback_;
......
...@@ -82,12 +82,6 @@ VideoSender::encodeAndSendVideo(const std::shared_ptr<VideoFrame>& input_frame) ...@@ -82,12 +82,6 @@ VideoSender::encodeAndSendVideo(const std::shared_ptr<VideoFrame>& input_frame)
} }
if (auto packet = input_frame->packet()) { if (auto packet = input_frame->packet()) {
#if __ANDROID__
if (forceKeyFrame_) {
emitSignal<DRing::VideoSignal::RequestKeyFrame>();
--forceKeyFrame_;
}
#endif
videoEncoder_->send(*packet); videoEncoder_->send(*packet);
} else { } else {
bool is_keyframe = forceKeyFrame_ > 0 bool is_keyframe = forceKeyFrame_ > 0
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment