diff --git a/bin/jni/jni_interface.i b/bin/jni/jni_interface.i
index 3a278ee135e00a0642e88f0920206846cce5afd2..ead1d7abc90753c26227dfbebb50aecab7fb207c 100644
--- a/bin/jni/jni_interface.i
+++ b/bin/jni/jni_interface.i
@@ -313,7 +313,7 @@ void init(ConfigurationCallback* confM, Callback* callM, PresenceCallback* presM
         exportable_callback<VideoSignal::SetBitrate>(bind(&VideoCallback::setBitrate, videoM, _1, _2)),
         exportable_callback<VideoSignal::RequestKeyFrame>(bind(&VideoCallback::requestKeyFrame, videoM)),
         exportable_callback<VideoSignal::StartCapture>(bind(&VideoCallback::startCapture, videoM, _1)),
-        exportable_callback<VideoSignal::StopCapture>(bind(&VideoCallback::stopCapture, videoM)),
+        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::DecodingStopped>(bind(&VideoCallback::decodingStopped, videoM, _1, _2, _3)),
     };
diff --git a/bin/jni/videomanager.i b/bin/jni/videomanager.i
index 71f4ee589c0a9115d9c97c1008f201076fc45bcc..9fbf5c4627af314b330a204f2be4cf199e2edfea 100644
--- a/bin/jni/videomanager.i
+++ b/bin/jni/videomanager.i
@@ -47,7 +47,7 @@ public:
     virtual void setBitrate(const std::string&, const int bitrate) {}
     virtual void requestKeyFrame(){}
     virtual void startCapture(const std::string& camid) {}
-    virtual void stopCapture() {}
+    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 decodingStopped(const std::string& id, const std::string& shm_path, bool is_mixer) {}
 };
@@ -445,7 +445,7 @@ public:
     virtual void setBitrate(const std::string&, const int bitrate) {}
     virtual void requestKeyFrame(){}
     virtual void startCapture(const std::string& camid) {}
-    virtual void stopCapture() {}
+    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 decodingStopped(const std::string& id, const std::string& shm_path, bool is_mixer) {}
 };
diff --git a/bin/nodejs/videomanager.i b/bin/nodejs/videomanager.i
index 3d55c272b96da7b5c7952a87651e87b70c4a5153..4f5147accce5d28e5c190500bc0cf5ed1766436e 100644
--- a/bin/nodejs/videomanager.i
+++ b/bin/nodejs/videomanager.i
@@ -33,7 +33,7 @@ public:
     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 startCapture(const std::string& camid) {}
-    virtual void stopCapture() {}
+    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 decodingStopped(const std::string& id, const std::string& shm_path, bool is_mixer) {}
 };
@@ -65,7 +65,7 @@ public:
     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 startCapture(const std::string& camid) {}
-    virtual void stopCapture() {}
+    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 decodingStopped(const std::string& id, const std::string& shm_path, bool is_mixer) {}
 };
diff --git a/src/jami/videomanager_interface.h b/src/jami/videomanager_interface.h
index 337c9d10dd3e1d8409ab26ecf4751f1f688c0eda..261032e6a12b8c205f1137204fecb9d2440c0dc2 100644
--- a/src/jami/videomanager_interface.h
+++ b/src/jami/videomanager_interface.h
@@ -298,7 +298,7 @@ struct DRING_PUBLIC VideoSignal
     struct DRING_PUBLIC StopCapture
     {
         constexpr static const char* name = "StopCapture";
-        using cb_type = void(void);
+        using cb_type = void(const std::string& /*device*/);
     };
     struct DRING_PUBLIC DeviceAdded
     {
diff --git a/src/media/video/video_input.cpp b/src/media/video/video_input.cpp
index aad46f712c5db23085838f30cb3f30558dc98149..c14e2fc5163bcd37dd37623f35ac5e2401037074 100644
--- a/src/media/video/video_input.cpp
+++ b/src/media/video/video_input.cpp
@@ -83,7 +83,7 @@ VideoInput::~VideoInput()
 {
     isStopped_ = true;
     if (videoManagedByClient()) {
-        emitSignal<DRing::VideoSignal::StopCapture>();
+        emitSignal<DRing::VideoSignal::StopCapture>(decOpts_.input);
         capturing_ = false;
         return;
     }
@@ -111,7 +111,6 @@ VideoInput::switchDevice()
             return;
         }
 
-        emitSignal<DRing::VideoSignal::StopCapture>();
         emitSignal<DRing::VideoSignal::StartCapture>(decOpts_.input);
         capturing_ = true;
     }