diff --git a/java/com/android/incallui/StatusBarNotifier.java b/java/com/android/incallui/StatusBarNotifier.java
index a2fa7e4..becfad4 100644
--- a/java/com/android/incallui/StatusBarNotifier.java
+++ b/java/com/android/incallui/StatusBarNotifier.java
@@ -678,7 +678,8 @@
     if (call.getState() == DialerCall.State.ONHOLD) {
       return R.drawable.ic_phone_paused_white_24dp;
     } else if (call.getVideoTech().getSessionModificationState()
-        == SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST) {
+            == SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST
+        || call.isVideoCall()) {
       return R.drawable.quantum_ic_videocam_white_24;
     } else if (call.hasProperty(PROPERTY_HIGH_DEF_AUDIO)
         && MotorolaUtils.shouldShowHdIconInNotification(mContext)) {
@@ -730,6 +731,11 @@
       }
     } else if (call.getState() == DialerCall.State.ONHOLD) {
       resId = R.string.notification_on_hold;
+    } else if (call.isVideoCall()) {
+      resId =
+          call.getVideoTech().isPaused()
+              ? R.string.notification_ongoing_paused_video_call
+              : R.string.notification_ongoing_video_call;
     } else if (DialerCall.State.isDialing(call.getState())) {
       resId = R.string.notification_dialing;
     } else if (call.getVideoTech().getSessionModificationState()
diff --git a/java/com/android/incallui/videotech/VideoTech.java b/java/com/android/incallui/videotech/VideoTech.java
index e3753bc..410c357 100644
--- a/java/com/android/incallui/videotech/VideoTech.java
+++ b/java/com/android/incallui/videotech/VideoTech.java
@@ -39,6 +39,14 @@
 
   boolean shouldUseSurfaceView();
 
+  /**
+   * Returns true if the video is paused. This is different than if the video stream has been turned
+   * off.
+   *
+   * <p>See {@link #isTransmitting()}
+   */
+  boolean isPaused();
+
   VideoCallScreenDelegate createVideoCallScreenDelegate(
       Context context, VideoCallScreen videoCallScreen);
 
diff --git a/java/com/android/incallui/videotech/empty/EmptyVideoTech.java b/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
index 76766df..f156a14 100644
--- a/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
+++ b/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
@@ -49,6 +49,11 @@
   }
 
   @Override
+  public boolean isPaused() {
+    return false;
+  }
+
+  @Override
   public VideoCallScreenDelegate createVideoCallScreenDelegate(
       Context context, VideoCallScreen videoCallScreen) {
     throw Assert.createUnsupportedOperationFailException();
diff --git a/java/com/android/incallui/videotech/ims/ImsVideoTech.java b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
index c12474d..0ef07d6 100644
--- a/java/com/android/incallui/videotech/ims/ImsVideoTech.java
+++ b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
@@ -108,6 +108,11 @@
   }
 
   @Override
+  public boolean isPaused() {
+    return paused;
+  }
+
+  @Override
   public VideoCallScreenDelegate createVideoCallScreenDelegate(
       Context context, VideoCallScreen videoCallScreen) {
     // TODO move creating VideoCallPresenter here
diff --git a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
index 4b6f5ec..1ddf371 100644
--- a/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
+++ b/java/com/android/incallui/videotech/lightbringer/LightbringerTech.java
@@ -104,6 +104,11 @@
   }
 
   @Override
+  public boolean isPaused() {
+    return false;
+  }
+
+  @Override
   public VideoCallScreenDelegate createVideoCallScreenDelegate(
       Context context, VideoCallScreen videoCallScreen) {
     throw Assert.createUnsupportedOperationFailException();
