diff --git a/common_video/frame_instrumentation_data.h b/common_video/frame_instrumentation_data.h
index e6d268a..49a5e66 100644
--- a/common_video/frame_instrumentation_data.h
+++ b/common_video/frame_instrumentation_data.h
@@ -18,12 +18,12 @@
 // TODO: b/358039777 - Error handling: negative values etc.
 struct FrameInstrumentationSyncData {
   int sequence_index;
-  bool is_key_frame;
+  bool communicate_upper_bits;
 };
 
 struct FrameInstrumentationData {
   int sequence_index;
-  bool is_key_frame;
+  bool communicate_upper_bits;
   double std_dev;
   int luma_error_threshold;
   int chroma_error_threshold;
diff --git a/video/corruption_detection/frame_instrumentation_generator.cc b/video/corruption_detection/frame_instrumentation_generator.cc
index e14782d..b5e2869 100644
--- a/video/corruption_detection/frame_instrumentation_generator.cc
+++ b/video/corruption_detection/frame_instrumentation_generator.cc
@@ -132,7 +132,7 @@
       return std::nullopt;
     }
     return FrameInstrumentationSyncData{.sequence_index = sequence_index,
-                                        .is_key_frame = true};
+                                        .communicate_upper_bits = true};
   }
 
   std::optional<FilterSettings> filter_settings =
@@ -153,7 +153,7 @@
 
   FrameInstrumentationData data = {
       .sequence_index = sequence_index,
-      .is_key_frame = is_key_frame,
+      .communicate_upper_bits = is_key_frame,
       .std_dev = filter_settings->std_dev,
       .luma_error_threshold = filter_settings->luma_error_threshold,
       .chroma_error_threshold = filter_settings->chroma_error_threshold};
diff --git a/video/corruption_detection/frame_instrumentation_generator_unittest.cc b/video/corruption_detection/frame_instrumentation_generator_unittest.cc
index 146a3f7..8bdb9a7 100644
--- a/video/corruption_detection/frame_instrumentation_generator_unittest.cc
+++ b/video/corruption_detection/frame_instrumentation_generator_unittest.cc
@@ -152,7 +152,7 @@
   FrameInstrumentationData frame_instrumentation_data =
       absl::get<FrameInstrumentationData>(*data);
   EXPECT_EQ(frame_instrumentation_data.sequence_index, 0);
-  EXPECT_TRUE(frame_instrumentation_data.is_key_frame);
+  EXPECT_TRUE(frame_instrumentation_data.communicate_upper_bits);
   EXPECT_NE(frame_instrumentation_data.std_dev, 0.0);
   EXPECT_NE(frame_instrumentation_data.luma_error_threshold, 0);
   EXPECT_NE(frame_instrumentation_data.chroma_error_threshold, 0);
@@ -192,7 +192,7 @@
   FrameInstrumentationData frame_instrumentation_data =
       absl::get<FrameInstrumentationData>(*data);
   EXPECT_EQ(frame_instrumentation_data.sequence_index, 0);
-  EXPECT_TRUE(frame_instrumentation_data.is_key_frame);
+  EXPECT_TRUE(frame_instrumentation_data.communicate_upper_bits);
   EXPECT_NE(frame_instrumentation_data.std_dev, 0.0);
   EXPECT_NE(frame_instrumentation_data.luma_error_threshold, 0);
   EXPECT_NE(frame_instrumentation_data.chroma_error_threshold, 0);
@@ -234,7 +234,7 @@
   FrameInstrumentationData frame_instrumentation_data =
       absl::get<FrameInstrumentationData>(*data);
   EXPECT_EQ(frame_instrumentation_data.sequence_index, 0);
-  EXPECT_TRUE(frame_instrumentation_data.is_key_frame);
+  EXPECT_TRUE(frame_instrumentation_data.communicate_upper_bits);
   EXPECT_NE(frame_instrumentation_data.std_dev, 0.0);
   EXPECT_NE(frame_instrumentation_data.luma_error_threshold, 0);
   EXPECT_NE(frame_instrumentation_data.chroma_error_threshold, 0);
@@ -322,8 +322,10 @@
 
     ASSERT_TRUE(absl::holds_alternative<FrameInstrumentationData>(*data2));
 
-    EXPECT_TRUE(absl::get<FrameInstrumentationData>(*data1).is_key_frame);
-    EXPECT_TRUE(absl::get<FrameInstrumentationData>(*data2).is_key_frame);
+    EXPECT_TRUE(
+        absl::get<FrameInstrumentationData>(*data1).communicate_upper_bits);
+    EXPECT_TRUE(
+        absl::get<FrameInstrumentationData>(*data2).communicate_upper_bits);
   }
 }
 
@@ -373,16 +375,20 @@
 
       ASSERT_TRUE(absl::holds_alternative<FrameInstrumentationData>(*data2));
 
-      EXPECT_TRUE(absl::get<FrameInstrumentationData>(*data1).is_key_frame);
-      EXPECT_TRUE(absl::get<FrameInstrumentationData>(*data2).is_key_frame);
+      EXPECT_TRUE(
+          absl::get<FrameInstrumentationData>(*data1).communicate_upper_bits);
+      EXPECT_TRUE(
+          absl::get<FrameInstrumentationData>(*data2).communicate_upper_bits);
     } else if (data1.has_value() || data2.has_value()) {
       if (data1.has_value()) {
         ASSERT_TRUE(absl::holds_alternative<FrameInstrumentationData>(*data1));
-        EXPECT_FALSE(absl::get<FrameInstrumentationData>(*data1).is_key_frame);
+        EXPECT_FALSE(
+            absl::get<FrameInstrumentationData>(*data1).communicate_upper_bits);
       }
       if (data2.has_value()) {
         ASSERT_TRUE(absl::holds_alternative<FrameInstrumentationData>(*data2));
-        EXPECT_FALSE(absl::get<FrameInstrumentationData>(*data2).is_key_frame);
+        EXPECT_FALSE(
+            absl::get<FrameInstrumentationData>(*data2).communicate_upper_bits);
       }
       has_found_delta_frame = true;
     }
