diff --git a/pc/rtc_stats_integrationtest.cc b/pc/rtc_stats_integrationtest.cc
index a071786..9d2328a 100644
--- a/pc/rtc_stats_integrationtest.cc
+++ b/pc/rtc_stats_integrationtest.cc
@@ -794,15 +794,14 @@
   bool VerifyRTCInboundRTPStreamStats(
       const RTCInboundRTPStreamStats& inbound_stream) {
     RTCStatsVerifier verifier(report_.get(), &inbound_stream);
-    VerifyRTCReceivedRtpStreamStats(inbound_stream, verifier,
-                                    inbound_stream.kind.is_defined() &&
-                                        *inbound_stream.media_type == "audio");
+    VerifyRTCReceivedRtpStreamStats(
+        inbound_stream, verifier,
+        inbound_stream.kind.is_defined() && *inbound_stream.kind == "audio");
     verifier.TestMemberIsOptionalIDReference(
         inbound_stream.remote_id, RTCRemoteOutboundRtpStreamStats::kType);
     verifier.TestMemberIsDefined(inbound_stream.mid);
     verifier.TestMemberIsDefined(inbound_stream.track_identifier);
-    if (inbound_stream.kind.is_defined() &&
-        *inbound_stream.media_type == "video") {
+    if (inbound_stream.kind.is_defined() && *inbound_stream.kind == "video") {
       verifier.TestMemberIsNonNegative<uint64_t>(inbound_stream.qp_sum);
       verifier.TestMemberIsDefined(inbound_stream.decoder_implementation);
     } else {
@@ -810,8 +809,7 @@
       verifier.TestMemberIsUndefined(inbound_stream.decoder_implementation);
     }
     verifier.TestMemberIsNonNegative<uint32_t>(inbound_stream.packets_received);
-    if (inbound_stream.kind.is_defined() &&
-        *inbound_stream.media_type == "audio") {
+    if (inbound_stream.kind.is_defined() && *inbound_stream.kind == "audio") {
       verifier.TestMemberIsNonNegative<uint64_t>(
           inbound_stream.fec_packets_received);
       verifier.TestMemberIsNonNegative<uint64_t>(
@@ -841,8 +839,7 @@
         inbound_stream.jitter_buffer_delay);
     verifier.TestMemberIsNonNegative<uint64_t>(
         inbound_stream.jitter_buffer_emitted_count);
-    if (inbound_stream.kind.is_defined() &&
-        *inbound_stream.media_type == "video") {
+    if (inbound_stream.kind.is_defined() && *inbound_stream.kind == "video") {
       verifier.TestMemberIsUndefined(inbound_stream.total_samples_received);
       verifier.TestMemberIsUndefined(inbound_stream.concealed_samples);
       verifier.TestMemberIsUndefined(inbound_stream.silent_concealed_samples);
@@ -883,8 +880,7 @@
     // Test runtime too short to get an estimate (at least two RTCP sender
     // reports need to be received).
     verifier.MarkMemberTested(inbound_stream.estimated_playout_timestamp, true);
-    if (inbound_stream.kind.is_defined() &&
-        *inbound_stream.media_type == "video") {
+    if (inbound_stream.kind.is_defined() && *inbound_stream.kind == "video") {
       verifier.TestMemberIsDefined(inbound_stream.frames_decoded);
       verifier.TestMemberIsDefined(inbound_stream.key_frames_decoded);
       verifier.TestMemberIsNonNegative<uint32_t>(inbound_stream.frames_dropped);
@@ -928,8 +924,7 @@
     RTCStatsVerifier verifier(report_.get(), &outbound_stream);
     VerifyRTCRTPStreamStats(outbound_stream, verifier);
     verifier.TestMemberIsDefined(outbound_stream.mid);
-    if (outbound_stream.kind.is_defined() &&
-        *outbound_stream.media_type == "video") {
+    if (outbound_stream.kind.is_defined() && *outbound_stream.kind == "video") {
       verifier.TestMemberIsIDReference(outbound_stream.media_source_id,
                                        RTCVideoSourceStats::kType);
       verifier.TestMemberIsNonNegative<uint32_t>(outbound_stream.fir_count);
@@ -957,8 +952,7 @@
         outbound_stream.header_bytes_sent);
     verifier.TestMemberIsNonNegative<uint64_t>(
         outbound_stream.retransmitted_bytes_sent);
-    if (outbound_stream.kind.is_defined() &&
-        *outbound_stream.media_type == "video") {
+    if (outbound_stream.kind.is_defined() && *outbound_stream.kind == "video") {
       verifier.TestMemberIsDefined(outbound_stream.frames_encoded);
       verifier.TestMemberIsDefined(outbound_stream.key_frames_encoded);
       verifier.TestMemberIsNonNegative<double>(
