diff --git a/Ring/Ring/Calls/CallViewModel.swift b/Ring/Ring/Calls/CallViewModel.swift
index 151a3faa02ba7186af304614ceef8387d4dec791..175524aba139b41bcb09da3e53ed96aa2191d3ed 100644
--- a/Ring/Ring/Calls/CallViewModel.swift
+++ b/Ring/Ring/Calls/CallViewModel.swift
@@ -84,6 +84,10 @@ class CallViewModel: Stateable, ViewModel {
             if oldValue != nil {
                 return
             }
+            if !(self.call?.isAudioOnly ?? true) {
+                self.videoService.startVideoCaptureBeforeCall()
+            }
+            self.subscribeToCallFinished()
             self.callService.currentConferenceEvent
                 .asObservable()
                 .filter({ [weak self] conference-> Bool in
@@ -103,8 +107,6 @@ class CallViewModel: Stateable, ViewModel {
                         }
                         let isModerator = self.callService.isModerator(participantId: account.jamiId, inConference: conf.conferenceID)
                         if isModerator != self.containerViewModel?.isConference {
-//                            guard let updatedCall = self.callService.call(callID: call.callId) else { return }
-//                            self.call = updatedCall
                             self.containerViewModel?.isConference = isModerator
                             self.conferenceMode.accept(isModerator)
                         }
@@ -183,9 +185,6 @@ class CallViewModel: Stateable, ViewModel {
 
     var rendererId = ""
     lazy var capturedFrame: Observable<UIImage?> = {
-        if !(self.call?.isAudioOnly ?? true) {
-            videoService.startVideoCaptureBeforeCall()
-        }
         return videoService.capturedVideoFrame.asObservable().map({ frame in
             return frame
         })
@@ -213,10 +212,6 @@ class CallViewModel: Stateable, ViewModel {
                         return !hide
                     }
                 }
-                if hide {
-                    self?.videoService.setCameraOrientation(orientation: UIDevice.current.orientation)
-                    self?.callsProvider.stopCall(callUUID: call.callUUID)
-                }
                 return hide
             })
     }()
@@ -638,6 +633,21 @@ extension CallViewModel {
     func showDialpad() {
         self.stateSubject.onNext(ConversationState.showDialpad(inCall: true))
     }
+
+    func subscribeToCallFinished() {
+        dismisVC
+            .share()
+            .filter { dismised in
+                return dismised
+            }
+            .subscribe { [weak self ] _ in
+                guard let self = self, let call = self.call else { return }
+                self.videoService.stopCapture()
+                self.videoService.setCameraOrientation(orientation: UIDevice.current.orientation)
+                self.callsProvider.stopCall(callUUID: call.callUUID)
+            }
+            .disposed(by: self.disposeBag)
+    }
 }
 // MARK: conference layout
 extension CallViewModel {