diff --git a/java/com/android/dialer/phonelookup/consolidator/PhoneLookupInfoConsolidator.java b/java/com/android/dialer/phonelookup/consolidator/PhoneLookupInfoConsolidator.java
index 4b994e7..c3824dc 100644
--- a/java/com/android/dialer/phonelookup/consolidator/PhoneLookupInfoConsolidator.java
+++ b/java/com/android/dialer/phonelookup/consolidator/PhoneLookupInfoConsolidator.java
@@ -322,6 +322,24 @@
   }
 
   /**
+   * The {@link PhoneLookupInfo} passed to the constructor is associated with a number. This method
+   * returns whether the number can be reached via carrier video calls.
+   */
+  public boolean canSupportCarrierVideoCall() {
+    switch (nameSource) {
+      case NameSource.CP2_DEFAULT_DIRECTORY:
+        return Assert.isNotNull(firstDefaultCp2Contact).getCanSupportCarrierVideoCall();
+      case NameSource.CP2_EXTENDED_DIRECTORY:
+      case NameSource.PEOPLE_API:
+      case NameSource.NONE:
+        return false;
+      default:
+        throw Assert.createUnsupportedOperationFailException(
+            String.format("Unsupported name source: %s", nameSource));
+    }
+  }
+
+  /**
    * Arbitrarily select the first CP2 contact in the default directory. In the future, it may make
    * sense to display contact information from all contacts with the same number (for example show
    * the name as "Mom, Dad" or show a synthesized photo containing photos of both "Mom" and "Dad").
diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2Projections.java b/java/com/android/dialer/phonelookup/cp2/Cp2Projections.java
index 5a211ed..3770912 100644
--- a/java/com/android/dialer/phonelookup/cp2/Cp2Projections.java
+++ b/java/com/android/dialer/phonelookup/cp2/Cp2Projections.java
@@ -41,7 +41,8 @@
         Phone.LABEL, // 5
         Phone.NORMALIZED_NUMBER, // 6
         Phone.CONTACT_ID, // 7
-        Phone.LOOKUP_KEY // 8
+        Phone.LOOKUP_KEY, // 8
+        Phone.CARRIER_PRESENCE
       };
 
   // Projection for performing lookups using the PHONE_LOOKUP table
@@ -58,7 +59,8 @@
         PhoneLookup.LOOKUP_KEY // 8
       };
 
-  // The following indexes should match both PHONE_PROJECTION and PHONE_LOOKUP_PROJECTION above.
+  // The following indexes should match the common columns in
+  // PHONE_PROJECTION and PHONE_LOOKUP_PROJECTION above.
   private static final int CP2_INFO_NAME_INDEX = 0;
   private static final int CP2_INFO_PHOTO_THUMBNAIL_URI_INDEX = 1;
   private static final int CP2_INFO_PHOTO_URI_INDEX = 2;
@@ -116,6 +118,16 @@
     if (!TextUtils.isEmpty(lookupKey)) {
       infoBuilder.setLookupUri(Contacts.getLookupUri(contactId, lookupKey).toString());
     }
+
+    // Only PHONE_PROJECTION has a column containing carrier presence info.
+    int carrierPresenceColumn = cursor.getColumnIndex(Phone.CARRIER_PRESENCE);
+    if (carrierPresenceColumn != -1) {
+      int carrierPresenceInfo = cursor.getInt(carrierPresenceColumn);
+      infoBuilder.setCanSupportCarrierVideoCall(
+          (carrierPresenceInfo & Phone.CARRIER_PRESENCE_VT_CAPABLE)
+              == Phone.CARRIER_PRESENCE_VT_CAPABLE);
+    }
+
     return infoBuilder.build();
   }
 
diff --git a/java/com/android/dialer/phonelookup/phone_lookup_info.proto b/java/com/android/dialer/phonelookup/phone_lookup_info.proto
index 5fa33d4..9612188 100644
--- a/java/com/android/dialer/phonelookup/phone_lookup_info.proto
+++ b/java/com/android/dialer/phonelookup/phone_lookup_info.proto
@@ -18,7 +18,7 @@
   // Information about a PhoneNumber retrieved from CP2.
   message Cp2Info {
     // Information about a single contact.
-    // Next ID: 8
+    // Next ID: 9
     message Cp2ContactInfo {
       // For a contact in the default directory:
       //   android.provider.ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY
@@ -65,6 +65,15 @@
       //   constructed based on
       //   android.provider.ContactsContract.PhoneLookup.LOOKUP_KEY
       optional string lookup_uri = 7;
+
+      // For a contact in the default directory:
+      //    value set based on
+      //    android.provider.ContactsContract.CommonDataKinds.Phone.CARRIER_PRESENCE
+      // For a contact in other directories: always false.
+      //    This is because we lookup contacts in other directories via
+      //    android.provider.ContactsContract.PhoneLookup, to which carrier
+      //    presence info is not directly accessible.
+      optional bool can_support_carrier_video_call = 8;
     }
     // Repeated because one phone number can be associated with multiple CP2
     // contacts.
